rSQP++ is an object-oriented framework that allows
efficient SAND optimization for a broad variety of
engineering modeling systems. It is designed to support
many different SQP algorithms and to allow for external
configuration of specialized application-specific linear
algebra objects such as matrices and linear solvers. In
addition, it is possible for a client to modify the SQP
algorithms to meet other specialized needs without having
to modify any of the source code within the rSQP++
framework, or even having to recompile existing SQP
algorithms. Much of this capability is accomplished
through a set of carefully constructed interfaces to
various linear algebra objects such as matrices and
In order to support parallelism more effectively, we
are adding and integrating a flexible abstract vector
interface in rSQP++ to allow more flexibility in vector
implementations. This vector encapsulation will allow
fully parallel linear algebra. The rSQP++ framework has
been benchmarked on a wide variety of math programming
problems and has been demonstrated on nonlinear model
predictive control problems as well as preliminary
optimization of CVD reactors.
Visit the rSQP++ web page.
Veltisto is also a SAND optimization package, and has
been designed specifically for PDE-constrained
optimization. It it is an extension of the PETSc
library and thus provides full support for
MPI-based parallelism and a seamless integration of
optimization and PDE-solution algorithms within the PETSc
environment. Veltisto has been tested on optimal control
of Navier-Stokes flows for problems with up to a million
unknowns on hundreds of processors.
Visit the Veltisto web page.
TRICE is another SAND optimization package designed for
PDE-constrained optimization. The optimization algorithms
are matrix free. TRICE communicates with the application
through a set of interfaces. TRICE will be reimplemented
in an object-oriented framework using the abstract vector
interface of rSQP++. Among other PDE constrained
problems, TRICE has been applied to the thermal control
of a CVD reactor.
Visit the TRICE web page.
IPOPT is an implementation of a primal-dual interior
point algorithm for solving Large-Scale Nonlinear
Optimization Problems (NLPs) (with interfaces to AMPL and
CUTEr) of the form
(1) min f(x)
(2) s.t. c(x) = 0
(3) x_L <= x <= x_U
The objective function f: R^n ---> R and the equality
constraints c: R^n ---> R^m (m <= n) are assumed to be
twice continuously differentiable and can be nonlinear
and nonconvex. In (3), not all variables need to have
lower and upper bounds.
the IPOPT web page.
The C++ library Multivac provides an object-oriented
framework for front tracking with level set methods
in two dimensions. It features efficient algorithms,
including the narrow band level set method and the
fast marching method. Several numerical integration
schemes are available, which support fairly general
front advance functions ("speed functions") but also
allow the user to take advantage of features of
simple speed functions. A simulation is defined by a
set of objects (initialization, numerical solver,
speed function, etc.). Therefore, Multivac is very
flexible and may easily be extended. Multivac has
been successfully used for wildland firespread
modelling and for the growth of Si-based nanofilms,
and its development is currently driven by these two
applications. It is an open source code provided
under the GNU General Public License.
Visit the Multivac web page.