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.
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.
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.
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.
LOCA provides two ready-made implementations:
The LOCA::LAPACK implementation extends the NOX::LAPACK implementation to LOCA. LAPACK support and examples are automatically enabled if they are enabled in NOX. The LOCA::LAPACK implementation supports all levels of functionality provided by LOCA and can be used in any continuation or bifurcation calculation.
The LOCA::Epetra implementation extends the NOX::Epetra implementation to LOCA. Epetra support and examples are automatically enabled if they are enabled in NOX. All levels of functionality provided by LOCA are supported, including recently added Hopf and generalized eigenvalue support.
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.
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.