New Features and Changes in TAO
We will continually add new features and enhance functionality in upcoming
releases of TAO. Small changes in usage and calling sequences of TAO routines
will continue to occur. Although keeping one's code accordingly up-to-date can be
annoying, all TAO users will be rewarded in the long run with a cleaner, better designed,
and easier-to-use interface.
New Features and Changes in TAO 1.6
General:
Specific:
- TaoPetscApplicationCreate() changed to TaoApplicationCreate().
New
Features and Changes in TAO 1.5
General:
- New support for mesh-based applications includes mesh sequencing, easier matrix
assembly, ADIC support for gradient computations, and finite differences with coloring for
Hessian computations.
- Updated to operate with PETSc version 2.1.4.
- New semismooth method and reduced space method for nonlinear complementarity
applications.
- Use of the TAO solvers with Global
Arrays.
- A SIDL interface and
adherence to the Common
Component Architecture specification.
Specific:
- TaoSetPetscFunctionGradient() changes to TaoAppSetObjectiveandGradientRoutine()
- The gradient vector does not have to be provided to the application object.
- The variable vector must be given to the application in a separate routine:
TaoAppSetVariableVec().
- TaoSetPetscHessian() changed to TaoAppSetHessianRoutine().
- The Hessian matrix must be supplied in a separate routine: TaoAppSetHessianMat().
- TaoSolveApplication() should be used instead of TaoSolve().
- TaoSetOptions() should be used instead of TaoSetFromOptions().
- TaoPetscApplicationCreate() changed to TaoApplicationCreate().
New Features and Changes in TAO 1.4
General:
- TAO's interface to PETSc uses version 2.1.2.
- User Manual available in PDF format.
- Some vector and matrix methods changes spellings so that all methods begin with a
capital letter.
- Add component model that adheres to the specification of the Common Component
Architecture.
New Features and Changes in TAO 1.3
General:
- We introduced a new object that represents the optimization application. This
object must contain relevant objective function, constraint, and derivation information.
Users may provide this application information using one of several interfaces.
In particular, users may write these routines using PETSc or ESI data
structures instead of the TAO data structures.
- TAO now supports ESI data objects.
- TAO now provides limited interface capabilities with external packages APPS and OOQP.
- New nonlinear least squares solvers have been implemented.
- Several vector and matrix methods have been renamed.
- TAO's interface to PETSc uses version 2.1.1.
New Features and Changes in TAO 1.2
General:
- TAO now uses C++. Although the library still provides an interface familiar to C
programmers and stubs that can be used by Fortran programmers, the TAO libraries and
application programs must be compiled using a C++ compiler (e.g., make
BOPT=g_c++ all will compile a debugging version of TAO, while make BOPT=O_c++ will compile an
optimized version.)
- TAO's interface to PETSc uses version 2.1.0.
TaoVec (Vector Class):
- The vector class used within TAO is now called TaoVec.
We implement this object using C++ and include a set of methods used by the
solvers. The TaoVec class does not contain any
data. Instead, classes derived from the TaoVec object
contain the data. One vector class derived from this base class uses the PETSc Vec object to represent a vector. The TaoWrapPetscVec()
routine creates a TaoVec object using a PETSc
vector.
TaoMat (Linear Operator Class):
- The TaoMat class describes matrices and linear
operators. We implement this object using C++ and include a set of methods used by
the solvers. The TaoMat class does not contain any
data. Instead, classes derived from the TaoMat object
contain the data. One matrix class derived from this base class uses the PETSc Mat object to represent a matrix. The TaoWrapPetscMat()
routine creates a TaoMat object using a PETSc matrix.
TaoIndexSet (Indices Class):
- The TaoIndexSet class identifies a set of elements of a
vector or rows of a matrix. We implement this object using C++ and include a set of
methods used by the solvers. The TaoIndexSet class
does not contain any data. Instead, classes derived from the TaoIndexSet
object contain the data. One index set class derived from this base class uses the
PETSc IS object to represent an index set. The TapWrapIS() routine creates a TaoIndexSet
object using a PETSc index set.
TaoLinearSolver (Linear Solver Class):
- We use the TaoLinearSolver class to describe linear
solvers. We implement this object using C++ and include a set of methods used by the
solvers. The TaoLinearSolver class does not contain
particular algorithms or implementations. Instead, classes derived from the TaoLinearSolver contain contain the algorithm and solve the linear
system. One linear solver class derived from this base class uses the PETSc SLES object to solve linear systems. The TaoWrapSLES()
routine creates a TaoLinearSolver object using SLES.
TAO Solvers:
- All TAO routines now use pointers to TaoVec, TaoMat, TaoIndexSet, and TaoLinearSolver objects instead of their PETSc equivalents.
- The TaoCreate() routine now has five arguments. These
arguments are vector of variables, a solution method, an options prefix, an MPI
communicator, and a pointer to the new solver. The second and third arguments are
optional and can be set to 0.
- The TaoSolve() routine now contains a second argument that
indicates whether a solution has been found.
- The TaoSetFunction() routine requires a vector that will be
used to represent the gradient of the objective function and a location to store the
objective value. The variable vector is no longer an input argument since it
has been moved to the TaoCreate() routine.
- The routine TaoSetGradient() no longer exists; instead use TaoSetFunctionGradient().
- The TaoSetFunctionGradient() routine
also requires a location to store the objective value and no longer requires a variable
vector.
- The TaoSetHessian() routine no longer asks for a
preconditioning matrix. The preconditioning matrix and related flags can be set
using the routine TaoSetPreconditioningMatrix().
- The TaoView() routine no longer asks for a Viewer object.
- The TaoGetLinearSolver() routine gets a pointer to the
linear solver used by the TAO solver. From this pointer, options can be set and
underlying data, such as a SLES object. can be accessed.
- The TaoGetIterationData() routine obtains the iteration
number, objective value, and residual norms for the current solution. This routine
replaces routines that returned each piece of information separately.
Fortran Interface:
- Fortran users should declare TAO objects as follows: vectors as TaoVecF, matrices as TaoMatF, index sets as TaoIndexSetF, and linear solvers as
TaoLinearSolverF.