Software
-
Analysis Codes
The analysis codes TACO
and TWAFER , developed
at Sandia National Laboratories, have been used to
simulate the thermal properties of CVD reactors.
-
Interface Between Analysis Codes and Optimization Codes
Most analysis codes are not written with the objective to be
used for complex design and performance optimization.
In an optimization framework,
most analysis codes, including TACO
and TWAFER , can be used to evaluate objective
functions and constraints, but they usually do not provide
design sensitivities, essential for derivative based optimization
methods.
The automatic differentiation tool
ADIFOR,
developed at Argonne National Laboratories and Rice University,
generates derivative code that provides design sensitivities
from given analysis codes.
While approximate derivatives can also be computed from
function values via finite differences,
ADIFOR
generates `exact' derivatives in significantly less computing time.
This leads to better designs and faster design cycles.
-
Optimization Codes
The optimization packages
TRICE,
developed at Rice University, and
OPT++
developed at Sandia National Laboratories, are used.
Currently,
OPT++
primarily includes codes
for nonlinear equations, unconstrained optimization and
optimization with simple bound constraints.
TRICE
is an optimization package designed for nonlinear programming
problems arising in optimal control and engineering design problems.
(It is planned to include the
TRICE
algorithms into the
OPT++
package.)
Both packages are object oriented. In the constrained case,
they do not insist on specific matrix factorization based
subproblem solvers, like many other packages do. This
allows users to incorporate their own efficient,
application dependent solvers.
Due to the modular structure of the packages, advancements
in the optimization codes and advancements in the application
codes are immediately utilized in the design and performance
optimization.
For example, in typical applications more than 90%
of the computing time is spend in application routines.
Gains from parallelism in application/analysis codes
result in almost equal gains in the optimization procedure.
The clear separation between optimization and application codes
allows novel approaches for distributed computing.
Application codes and optimization codes can run on different
machines.
The uniform user interface allows simple exchanges of
optimization algorithms.