NOX's flexibility is based on the fact that it does not depend on any particular linear algebra package. In order to interface to NOX, the user needs to supply methods that derive from the following abstract classes:
The Vector supports basic vector operations such as dot products and so on. The Group supports the linear algebra functionality as well as the interface to evaluate the function and, optionally, the Jacobian. Complete details are provided in the class descriptions.
In order to link your code to NOX, you have to write your own instantiation of the NOX::Abstract::Vector and NOX::Abstract::Group classes (see Writing your own instantiation) or use one of the predefined implementations (see Instantiations provided with NOX).
We recommend using the NOX::LAPACK framework as a guide. In this case, the underlying vectors of C++ STL vector<double> objects, and the matrices are stored in our own NOX::LAPACK::Matrix class. Both the vectors and matrices are manipulated using LAPACK. The NOX::LAPACK::Vector is straightforward; see NOX_LAPACK_Vector.H and NOX_LAPACK_Vector.C. The NOX::LAPACK::Group uses the NOX::LAPACK::Vector and NOX::LAPACK::Matrix objects. The interface with the application is handled in a separate class (NOX::LAPACK::Interface) that is passed to the NOX::LAPACK::Group when it is constructed.
NOX includes three ready-made instantiations.
- The NOX header files should be installed in /usr/local/include/nox.
If you have problems configuring and compiling NOX, please report them using Bugzilla; see Reporting Bugs and Making Enhancement Requests for more information.
Go on to Step 3: Call NOX from your code.
The NOX::LAPACK instantiation is an interface to the BLAS/LAPACK library. It is not intended for large-scale computations, but to serve as an easy-to-understand example of how one might interface to NOX. To compile the NOX::LAPACK library and examples, use the --enable-nox-lapack and --enable-nox-lapack-examples options to configure; see NOX Configuration Options. For instructions on interfacing your code to the lapack implementation see lapack_interface.
The NOX::Epetra instantiation is an interface to the Trilinos/Epetra library developed by Sandia National Labs; for more information see the Trilinos Home Page. If you download NOX with Trilinos (see Downloads), then Epetra is included in the distribution. To compile the NOX::Epetra library and examples, use the --enable-nox-epetra and --enable-nox-epetra-examples options to configure; see NOX Configuration Options. For instructions on interfacing your code to the epetra implementation see The Epetra interface.
The NOX::PETSc instantiation is an interface with the PETSc library. PETSc was developed at Argonne National Labs; for more information see the PETSc Home Page To compile the NOX::Petsc library and examples, use the --enable-nox-petsc and --enable-nox-petsc-examples options to configure; see NOX Configuration Options. For instructions on interfacing your code to the petsc implementation see The PETSc interface.
Generated on Thu Sep 18 12:42:22 2008 for NOX by 220.127.116.11