The database containing information parsed from the DAKOTA input file. More...
Public Member Functions | |
ProblemDescDB () | |
default constructor | |
ProblemDescDB (ParallelLibrary ¶llel_lib) | |
standard constructor | |
ProblemDescDB (const ProblemDescDB &db) | |
copy constructor | |
~ProblemDescDB () | |
destructor | |
ProblemDescDB | operator= (const ProblemDescDB &db) |
assignment operator | |
void | manage_inputs (CommandLineHandler &cmd_line_handler) |
invokes manage_inputs(const char*, ...) using the dakota input filename passed with the "-input" option on the DAKOTA command line. This is the normal API employed in main.C. | |
void | manage_inputs (const char *dakota_input_file, const char *parser_options=NULL, void(*callback)(void *)=NULL, void *callback_data=NULL) |
invokes parse_inputs() to populate the problem description database and execute any callback function, broadcast() to propagate DB data to all processors, and post_process() to construct default variables/response vectors. This is an alternate API used by the file parsing mode in library_mode.C. | |
void | parse_inputs (const char *dakota_input_file, const char *parser_options=NULL, void(*callback)(void *)=NULL, void *callback_data=NULL) |
parses the input file and populates the problem description database. This function reads from the dakota input filename passed in and allows subsequent modifications to be done by a callback function. This API is used by the mixed mode option in library_mode.C since it allows broadcast() and post_process() to be deferred until all inputs have been provided. | |
void | check_input () |
verifies that there is at least one of each of the required keywords in the dakota input file. Used by parse_inputs(). | |
void | broadcast () |
invokes send_db_buffer() and receive_db_buffer() to broadcast DB data across the processor allocation. Used by manage_inputs(). | |
void | post_process () |
post-processes the (minimal) input specification to assign default variables/responses specification arrays. Used by manage_inputs(). | |
void | lock () |
Locks the database in order to prevent data access when the list nodes may not be set properly. Unlocked by a set nodes operation. | |
void | unlock () |
Explicitly unlocks the database. Use with care. | |
void | set_db_list_nodes (const String &method_tag) |
set dataMethodIter based on a method identifier string to activate a particular method specification in dataMethodList and use pointers from this method specification to set all other list iterators. | |
void | set_db_list_nodes (const size_t &method_index) |
set dataMethodIter based on an index within dataMethodList to activate a particular method specification and use pointers from this method specification to set all other list iterators. | |
void | resolve_top_method () |
For a (default) strategy lacking a method pointer, this function is used to determine which of several potential method specifications corresponds to the top method and then sets the list nodes accordingly. | |
void | set_db_method_node (const String &method_tag) |
set dataMethodIter based on a method identifier string to activate a particular method specification (only). | |
void | set_db_method_node (const size_t &method_index) |
set dataMethodIter based on an index within dataMethodList to activate a particular method specification (only). | |
size_t | get_db_method_node () |
return the index of the active node in dataMethodList | |
void | set_db_model_nodes (const String &model_tag) |
set the model list iterators (dataModelIter, dataVariablesIter, dataInterfaceIter, and dataResponsesIter) based on the model identifier string | |
void | set_db_model_nodes (const size_t &model_index) |
set the model list iterators (dataModelIter, dataVariablesIter, dataInterfaceIter, and dataResponsesIter) based on an index within dataModelList | |
size_t | get_db_model_node () |
return the index of the active node in dataModelList | |
void | set_db_variables_node (const String &variables_tag) |
set dataVariablesIter based on the variables identifier string | |
void | set_db_interface_node (const String &interface_tag) |
set dataInterfaceIter based on the interface identifier string | |
void | set_db_responses_node (const String &responses_tag) |
set dataResponsesIter based on the responses identifier string | |
ParallelLibrary & | parallel_library () const |
return the parallelLib reference | |
IteratorList & | iterator_list () |
return a list of all Iterator objects that have been instantiated | |
ModelList & | model_list () |
return a list of all Model objects that have been instantiated | |
VariablesList & | variables_list () |
return a list of all Variables objects that have been instantiated | |
InterfaceList & | interface_list () |
return a list of all Interface objects that have been instantiated | |
ResponseList & | response_list () |
return a list of all Response objects that have been instantiated | |
const RealVector & | get_rdv (const String &entry_name) const |
get a RealVector out of the database based on an identifier string | |
const IntVector & | get_idv (const String &entry_name) const |
get an IntVector out of the database based on an identifier string | |
const UShortArray & | get_dusa (const String &entry_name) const |
get an UShortArray out of the database based on an identifier string | |
const RealSymMatrix & | get_rsdm (const String &entry_name) const |
get a RealSymMatrix out of the database based on an identifier string | |
const RealVectorArray & | get_rdva (const String &entry_name) const |
get a RealVectorArray out of the database based on an identifier string | |
const IntList & | get_dil (const String &entry_name) const |
get an IntList out of the database based on an identifier string | |
const IntSet & | get_dis (const String &entry_name) const |
get an IntSet out of the database based on an identifier string | |
const IntSetArray & | get_disa (const String &entry_name) const |
get an IntSetArray out of the database based on an identifier string | |
const RealSetArray & | get_drsa (const String &entry_name) const |
get a RealSetArray out of the database based on an identifier string | |
const StringArray & | get_dsa (const String &entry_name) const |
get a StringArray out of the database based on an identifier string | |
const String2DArray & | get_ds2a (const String &entry_name) const |
get a String2DArray out of the database based on an identifier string | |
const String & | get_string (const String &entry_name) const |
get a String out of the database based on an identifier string | |
const Real & | get_real (const String &entry_name) const |
get a Real out of the database based on an identifier string | |
int | get_int (const String &entry_name) const |
get an int out of the database based on an identifier string | |
short | get_short (const String &entry_name) const |
get a short out of the database based on an identifier string | |
unsigned short | get_ushort (const String &entry_name) const |
get an unsigned short out of the database based on an identifier string | |
size_t | get_sizet (const String &entry_name) const |
get a size_t out of the database based on an identifier string | |
bool | get_bool (const String &entry_name) const |
get a bool out of the database based on an identifier string | |
void ** | get_voidss (const String &entry_name) const |
for getting a void**, e.g., &dlLib | |
void | insert_node (const DataStrategy &data_strategy) |
set the DataStrategy object | |
void | insert_node (const DataMethod &data_method) |
add a DataMethod object to the dataMethodList | |
void | insert_node (const DataModel &data_model) |
add a DataModel object to the dataModelList | |
void | insert_node (DataVariables &data_variables) |
add a DataVariables object to the dataVariablesList | |
void | insert_node (const DataInterface &data_interface) |
add a DataInterface object to the dataInterfaceList | |
void | insert_node (const DataResponses &data_responses) |
add a DataResponses object to the dataResponsesList | |
void | set (const String &entry_name, const RealVector &rdv) |
set a RealVector within the database based on an identifier string | |
void | set (const String &entry_name, const IntVector &idv) |
set an IntVector within the database based on an identifier string | |
void | set (const String &entry_name, const RealSymMatrix &rsdm) |
set a RealMatrix within the database based on an identifier string | |
void | set (const String &entry_name, const RealVectorArray &rdva) |
set a RealVectorArray within the database based on an identifier string | |
void | set (const String &entry_name, const StringArray &dsa) |
set a StringArray within the database based on an identifier string | |
bool | is_null () const |
function to check dbRep (does this envelope contain a letter) | |
Protected Member Functions | |
ProblemDescDB (BaseConstructor, ParallelLibrary ¶llel_lib) | |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139) | |
virtual void | derived_parse_inputs (const char *dakota_input_file, const char *parser_options) |
derived class specifics within parse_inputs() | |
virtual void | derived_broadcast () |
derived class specifics within broadcast() | |
virtual void | derived_post_process () |
derived class specifics within post_process() | |
Protected Attributes | |
DataStrategy | strategySpec |
the strategy specification (only one allowed) resulting from a call to strategy_kwhandler() or insert_node() | |
std::list< DataMethod > | dataMethodList |
list of method specifications, one for each call to method_kwhandler() or insert_node() | |
std::list< DataModel > | dataModelList |
list of model specifications, one for each call to model_kwhandler() or insert_node() | |
std::list< DataVariables > | dataVariablesList |
list of variables specifications, one for each call to variables_kwhandler() or insert_node() | |
std::list< DataInterface > | dataInterfaceList |
list of interface specifications, one for each call to interface_kwhandler() or insert_node() | |
std::list< DataResponses > | dataResponsesList |
list of responses specifications, one for each call to responses_kwhandler() or insert_node() | |
size_t | strategyCntr |
counter for strategy specifications used in check_input | |
Private Member Functions | |
const Iterator & | get_iterator (Model &model) |
retrieve an existing Iterator, if it exists, or instantiate a new one | |
const Model & | get_model () |
retrieve an existing Model, if it exists, or instantiate a new one | |
const Variables & | get_variables () |
retrieve an existing Variables, if it exists, or instantiate a new one | |
const Interface & | get_interface () |
retrieve an existing Interface, if it exists, or instantiate a new one | |
const Response & | get_response (const Variables &vars) |
retrieve an existing Response, if it exists, or instantiate a new one | |
ProblemDescDB * | get_db (ParallelLibrary ¶llel_lib) |
Used by the envelope constructor to instantiate the correct letter class. | |
void | send_db_buffer () |
MPI send of a large buffer containing strategySpec and all objects in dataMethodList, dataModelList, dataVariablesList, dataInterfaceList, and dataResponsesList. Used by manage_inputs(). | |
void | receive_db_buffer () |
MPI receive of a large buffer containing strategySpec and all objects in dataMethodList, dataModelList, dataVariablesList, dataInterfaceList, and dataResponsesList. Used by manage_inputs(). | |
Private Attributes | |
ParallelLibrary & | parallelLib |
reference to the parallel_lib object passed from main | |
std::list< DataMethod >::iterator | dataMethodIter |
iterator identifying the active list node in dataMethodList | |
std::list< DataModel >::iterator | dataModelIter |
iterator identifying the active list node in dataModelList | |
std::list< DataVariables > ::iterator | dataVariablesIter |
iterator identifying the active list node in dataVariablesList | |
std::list< DataInterface > ::iterator | dataInterfaceIter |
iterator identifying the active list node in dataInterfaceList | |
std::list< DataResponses > ::iterator | dataResponsesIter |
iterator identifying the active list node in dataResponsesList | |
IteratorList | iteratorList |
list of iterator objects, one for each method specification | |
ModelList | modelList |
list of model objects, one for each model specification | |
VariablesList | variablesList |
list of variables objects, one for each variables specification | |
InterfaceList | interfaceList |
list of interface objects, one for each interface specification | |
ResponseList | responseList |
list of response objects, one for each responses specification | |
bool | methodDBLocked |
prevents use of get_<type> retrieval and set_<type> update functions prior to setting the list node for the active method specification | |
bool | modelDBLocked |
prevents use of get_<type> retrieval and set_<type> update functions prior to setting the list node for the active model specification | |
bool | variablesDBLocked |
prevents use of get_<type> retrieval and set_<type> update functions prior to setting the list node for the active variables specification | |
bool | interfaceDBLocked |
prevents use of get_<type> retrieval and set_<type> update functions prior to setting the list node for the active interface specification | |
bool | responsesDBLocked |
prevents use of get_<type> retrieval and set_<type> update functions prior to setting the list node for the active responses specification | |
ProblemDescDB * | dbRep |
pointer to the letter (initialized only for the envelope) | |
int | referenceCount |
number of objects sharing dbRep | |
Friends | |
class | Model |
Model requires access to get_variables() and get_response() | |
class | SingleModel |
SingleModel requires access to get_interface() | |
class | HierarchSurrModel |
HierarchSurrModel requires access to get_model() | |
class | DataFitSurrModel |
DataFitSurrModel requires access to get_iterator() and get_model() | |
class | NestedModel |
NestedModel requires access to get_interface(), get_response(), get_iterator(), and get_model() | |
class | Strategy |
Strategy requires access to get_iterator() | |
class | SingleMethodStrategy |
SingleMethodStrategy requires access to get_model() | |
class | HybridStrategy |
HybridStrategy requires access to get_model() | |
class | SequentialHybridStrategy |
SequentialStrategy requires access to get_iterator() | |
class | ConcurrentStrategy |
ConcurrentStrategy requires access to get_model() | |
class | SurrBasedLocalMinimizer |
SurrBasedLocalMinimizer requires access to get_iterator() | |
class | SurrBasedGlobalMinimizer |
SurrBasedGlobalMinimizer requires access to get_iterator() |
The database containing information parsed from the DAKOTA input file.
The ProblemDescDB class is a database for DAKOTA input file data that is populated by a parser defined in a derived class. When the parser reads a complete keyword, it populates a data class object (DataStrategy, DataMethod, DataVariables, DataInterface, or DataResponses) and, for all cases except strategy, appends the object to a linked list (dataMethodList, dataVariablesList, dataInterfaceList, or dataResponsesList). No strategy linked list is used since only one strategy specification is allowed.
ProblemDescDB | ( | ) |
default constructor
The default constructor: dbRep is NULL in this case. This makes it necessary to check for NULL in the copy constructor, assignment operator, and destructor.
ProblemDescDB | ( | ParallelLibrary & | parallel_lib | ) |
standard constructor
This is the envelope constructor which uses problem_db to build a fully populated db object. It only needs to extract enough data to properly execute get_db(problem_db), since the constructor overloaded with BaseConstructor builds the actual base class data inherited by the derived classes.
References Dakota::abort_handler(), ProblemDescDB::dbRep, and ProblemDescDB::get_db().
ProblemDescDB | ( | const ProblemDescDB & | db | ) |
copy constructor
Copy constructor manages sharing of dbRep and incrementing of referenceCount.
References ProblemDescDB::dbRep, and ProblemDescDB::referenceCount.
~ProblemDescDB | ( | ) |
destructor
Destructor decrements referenceCount and only deletes dbRep when referenceCount reaches zero.
References Dakota::Dak_pddb, ProblemDescDB::dbRep, and ProblemDescDB::referenceCount.
ProblemDescDB | ( | BaseConstructor | , |
ParallelLibrary & | parallel_lib | ||
) | [protected] |
constructor initializes the base class part of letter classes (BaseConstructor overloading avoids infinite recursion in the derived class constructors - Coplien, p. 139)
This constructor is the one which must build the base class data for all derived classes. get_db() instantiates a derived class letter and the derived constructor selects this base class constructor in its initialization list (to avoid the recursion of the base class constructor calling get_db() again). Since the letter IS the representation, its representation pointer is set to NULL (an uninitialized pointer causes problems in ~ProblemDescDB).
ProblemDescDB operator= | ( | const ProblemDescDB & | db | ) |
assignment operator
Assignment operator decrements referenceCount for old dbRep, assigns new dbRep, and increments referenceCount for new dbRep.
References ProblemDescDB::dbRep, and ProblemDescDB::referenceCount.
void manage_inputs | ( | CommandLineHandler & | cmd_line_handler | ) |
invokes manage_inputs(const char*, ...) using the dakota input filename passed with the "-input" option on the DAKOTA command line. This is the normal API employed in main.C.
Manage command line inputs using the CommandLineHandler class and parse the input file.
References ProblemDescDB::dbRep, ProblemDescDB::manage_inputs(), ProblemDescDB::parallelLib, GetLongOpt::retrieve(), and ParallelLibrary::world_rank().
Referenced by main(), ProblemDescDB::manage_inputs(), run_dakota(), and run_dakota_parse().
void manage_inputs | ( | const char * | dakota_input_file, |
const char * | parser_options = NULL , |
||
void(*)(void *) | callback = NULL , |
||
void * | callback_data = NULL |
||
) |
invokes parse_inputs() to populate the problem description database and execute any callback function, broadcast() to propagate DB data to all processors, and post_process() to construct default variables/response vectors. This is an alternate API used by the file parsing mode in library_mode.C.
Parse the input file, broadcast it to all processors, and post-process the data on all processors.
References ProblemDescDB::broadcast(), ProblemDescDB::dbRep, ProblemDescDB::manage_inputs(), ProblemDescDB::parse_inputs(), and ProblemDescDB::post_process().
void parse_inputs | ( | const char * | dakota_input_file, |
const char * | parser_options = NULL , |
||
void(*)(void *) | callback = NULL , |
||
void * | callback_data = NULL |
||
) |
parses the input file and populates the problem description database. This function reads from the dakota input filename passed in and allows subsequent modifications to be done by a callback function. This API is used by the mixed mode option in library_mode.C since it allows broadcast() and post_process() to be deferred until all inputs have been provided.
Parse the input file, execute the callback function (if present), and perform basic checks on keyword counts.
References ProblemDescDB::check_input(), ProblemDescDB::dbRep, ProblemDescDB::derived_parse_inputs(), ProblemDescDB::parallelLib, ProblemDescDB::parse_inputs(), and ParallelLibrary::world_rank().
Referenced by ProblemDescDB::manage_inputs(), ProblemDescDB::parse_inputs(), and run_dakota_mixed().
void post_process | ( | ) |
post-processes the (minimal) input specification to assign default variables/responses specification arrays. Used by manage_inputs().
When using library mode in a parallel application, post_process() should be called on all processors following broadcast() of a minimal problem specification.
References ProblemDescDB::dbRep, and ProblemDescDB::derived_post_process().
Referenced by ProblemDescDB::manage_inputs(), Dakota::run_dakota_data(), and run_dakota_mixed().
ProblemDescDB * get_db | ( | ParallelLibrary & | parallel_lib | ) | [private] |
Used by the envelope constructor to instantiate the correct letter class.
Initializes dbRep to the appropriate derived type. The standard derived class constructors are invoked.
References Dakota::Dak_pddb.
Referenced by ProblemDescDB::ProblemDescDB().