The main purposes of TriKota are to:
Note: The Trilinos 10.2 release is compatible with the Dakota 5.0 release. The development/VOTD versions are kept compatible through continuous integration testing.
Dakota needs to be untarred within the TriKota directory. To verify the paths, make sure that the following file exists: trilinos-dir/packages/TriKota/Dakota/src/DakotaOptimizer.H
After that, just enable TriKota in the cmake build system for Trilinos with
-D Trilinos_ENABLE_TriKota:BOOL=ON \ -D TriKota_ENABLE_TESTS:BOOL=ON \
and do the usual "./cmake-script; make; make install;".
The TriKota::Driver class wraps the library-mode usage of Dakota into two simple steps. The constructor parses the dakota input file and initializes the Dakota (e.g. strategy, model, problem). The run method takes as input an object of Dakota's DirectApplicInterface class, and performs the requested analysis.
The TriKota::DirectApplicInterface class is an adapter between the Trilinos and Dakota interfaces to codes. This class inherits from Dakota's DirectApplicInterface class so it can be passed to the TriKota::Driver::run method. It is constructed with an EpetrExt::ModelEvaluator, which is a standard Trilinos interface to codes. Note: the initial guess for the problem parameters are taken from the ModelEvaluator and overwrite any initial guess from the dakota input file. This is an example of the hybrid version of library-mode Dakota.
The TriKota::ThyraDirectApplicInterface class is also an adapter, but between the Thyra::ModelEvaluator (instead of Epetra). This class is used in the Piro package.
The test problem Simple_Main.cpp shows the use case for taking a problem that presents itself as a EpetrExt::ModelEvaluator, and uses Dakota to solve an optimiztion problem. This example allows for Dakota to pick the MPI_Comm during the TriKota::Driver constructor, and the application (presenting itself as an EpetrExt::ModelEvaluator) is constructed using this communicator.