NOX  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
LOCA User Information


Since LOCA is built upon NOX, using LOCA is quite similar to using NOX and an understanding of how to use NOX is a prerequisite for using LOCA. See NOX User Information for a description of how to use NOX. Here we will discuss the additional steps required to use LOCA.

Step 1: Download, Configure, Compile, and Install LOCA

LOCA is part of NOX, so by downloading NOX you have LOCA. Note that LOCA is dependent on some Trilinos packages (namely Teuchos), and greatly benefits from others (in particular, Anasazi). Therefore LOCA can only be configured and built inside of Trilinos. To enable LOCA during configuration and compilation, supply the –enable-loca configuration option. LOCA LAPACK and Epetra support and examples are automatically enabled if they are enabled in NOX (see NOX Configuration Options). In addition, Trilinos must be configured with –enable-teuchos, and if LAPACK support is enabled, –enable-teuchos-complex. LOCA is capable of using the Anasazi eigensolver to compute eigenvalues/eigenvectors at each continuation step, and this can be enabled by adding the –enable-anasazi and –with-loca-anasazi configure flags. See NOX Configuration Options for other available configure options. Typing "make" and "make install" in the top-level NOX directory will then compile and install LOCA as well as NOX.

Step 2: Create concrete implementations of the LOCA AbstractGroup classes

See LOCA Class Overview for a description of the LOCA AbstractGroup class hierarchy used to supply interfaces for various parameter continuation and bifurcation tracking algorithms. These AbstractGroups extended the interface supplied by the NOX::Abstract::Group to provided the functionality needed for continuation and bifurcation tracking, and to use LOCA, concrete implementations of these interfaces must be provided.

Writing your own implementation

As in NOX, we recommend using the LOCA::LAPACK::Group as a guide for writing your own implementation. The simplest approach is to derive your group from the LOCA::Abstract::Group and provide implementations of the appropriate AbstractGroup methods for the level of functionality you desire. At a minimum for parameter continuation, you must provide implementations of the parameter setting/retrieval methods. Note there is no additional LOCA abstract vector interface to implement to use LOCA.

Implementations provided with LOCA

LOCA provides two ready-made implementations:

Step 3: Call LOCA from your code

See LOCA Continuation Tutorial for a tutorial describing how to use LOCA to perform a simple continuation. The example problems in the examples-lapack and examples-epetra directories can serve as templates as well.

Step 4: Link your code to LOCA

Linking with LOCA is very similar to linking with NOX. You must additionally link against -lloca and one of the concrete implementations, either -llocalapack (if using the LOCA::LAPACK), -llocaepetra (if using LOCA::Epetra),or a custom implementation.

If you have problems...

If you have problems with LOCA, please report them using Bugzilla; see Reporting Bugs and Making Enhancement Requests for more information.