queso-0.56.1
MLSamplingOptions.C
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // QUESO - a library to support the Quantification of Uncertainty
5 // for Estimation, Simulation and Optimization
6 //
7 // Copyright (C) 2008-2015 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #include <queso/MLSamplingOptions.h>
26 #include <queso/Miscellaneous.h>
27 
28 namespace QUESO {
29 
31  :
32  m_prefix ((std::string)(prefix) + "ml_" ),
33  m_help (UQ_ML_SAMPLING_HELP),
35  m_restartOutput_levelPeriod (UQ_ML_SAMPLING_RESTART_OUTPUT_LEVEL_PERIOD_ODV ),
36  m_restartOutput_baseNameForFiles (UQ_ML_SAMPLING_RESTART_OUTPUT_BASE_NAME_FOR_FILES_ODV),
37  m_restartOutput_fileType (UQ_ML_SAMPLING_RESTART_OUTPUT_FILE_TYPE_ODV ),
38  m_restartInput_baseNameForFiles (UQ_ML_SAMPLING_RESTART_INPUT_BASE_NAME_FOR_FILES_ODV ),
39  m_restartInput_fileType (UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV ),
40 #else
41  m_restartInputFileName (UQ_ML_SAMPLING_RESTART_INPUT_FILE_NAME_ODV),
42  m_restartInputFileType (UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV),
43  m_restartChainSize (UQ_ML_SAMPLING_RESTART_CHAIN_SIZE_ODV ),
44 #endif
45  m_dataOutputFileName (UQ_ML_SAMPLING_DATA_OUTPUT_FILE_NAME_ODV ),
46  //m_dataOutputAllowedSet (),
47  m_env (env),
48 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
49  m_parser(new BoostInputOptionsParser(env.optionsInputFileName())),
50 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
51  m_option_help (m_prefix + "help" ),
53  m_option_restartOutput_levelPeriod (m_prefix + "restartOutput_levelPeriod" ),
54  m_option_restartOutput_baseNameForFiles(m_prefix + "restartOutput_baseNameForFiles"),
55  m_option_restartOutput_fileType (m_prefix + "restartOutput_fileType" ),
56  m_option_restartInput_baseNameForFiles (m_prefix + "restartInput_baseNameForFiles" ),
57  m_option_restartInput_fileType (m_prefix + "restartInput_fileType" ),
58 #else
59  m_option_restartInputFileName (m_prefix + "restartInputFileName"),
60  m_option_restartInputFileType (m_prefix + "restartInputFileType"),
61  m_option_restartChainSize (m_prefix + "restartChainSize" ),
62 #endif
63  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
64  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet")
65 {
66 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
67  m_parser->registerOption<std::string >(m_option_help, UQ_ML_SAMPLING_HELP, "produce help msg for ML sampling options" );
68 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
69  m_parser->registerOption<unsigned int>(m_option_restartOutput_levelPeriod, UQ_ML_SAMPLING_RESTART_OUTPUT_LEVEL_PERIOD_ODV, "restartOutput_levelPeriod" );
70  m_parser->registerOption<std::string >(m_option_restartOutput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_OUTPUT_BASE_NAME_FOR_FILES_ODV, "restartOutput_baseNameForFiles" );
71  m_parser->registerOption<std::string >(m_option_restartOutput_fileType, UQ_ML_SAMPLING_RESTART_OUTPUT_FILE_TYPE_ODV, "restartOutput_fileType" );
72  m_parser->registerOption<std::string >(m_option_restartInput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_INPUT_BASE_NAME_FOR_FILES_ODV, "restartInput_baseNameForFiles" );
73  m_parser->registerOption<std::string >(m_option_restartInput_fileType, UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV, "restartInput_fileType" );
74 #else
78 #endif
79  m_parser->registerOption<std::string >(m_option_dataOutputFileName, UQ_ML_SAMPLING_DATA_OUTPUT_FILE_NAME_ODV , "name of generic output file" );
80  m_parser->registerOption<std::string >(m_option_dataOutputAllowedSet, UQ_ML_SAMPLING_DATA_OUTPUT_ALLOWED_SET_ODV, "subEnvs that will write to generic output file");
81 
83 
84  m_parser->getOption<std::string >(m_option_help, m_help);
85 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
86  m_parser->getOption<unsigned int>(m_option_restartOutput_levelPeriod, m_restartOutput_levelPeriod);
87  m_parser->getOption<std::string >(m_option_restartOutput_baseNameForFiles, m_restartOutput_baseNameForFiles);
88  m_parser->getOption<std::string >(m_option_restartOutput_fileType, m_restartOutput_fileType);
89  m_parser->getOption<std::string >(m_option_restartInput_baseNameForFiles, m_restartInput_baseNameForFiles);
90  m_parser->getOption<std::string >(m_option_restartInput_fileType, m_restartInput_fileType);
91 #else
95 #endif
98 #else
99  m_help = m_env.input()(m_option_help, UQ_ML_SAMPLING_HELP);
100 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
101  m_restartOutput_levelPeriod = m_env.input()(m_option_restartOutput_levelPeriod, UQ_ML_SAMPLING_RESTART_OUTPUT_LEVEL_PERIOD_ODV);
102  m_restartOutput_baseNameForFiles = m_env.input()(m_option_restartOutput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_OUTPUT_BASE_NAME_FOR_FILES_ODV);
103  m_restartOutput_fileType = m_env.input()(m_option_restartOutput_fileType, UQ_ML_SAMPLING_RESTART_OUTPUT_FILE_TYPE_ODV);
104  m_restartInput_baseNameForFiles = m_env.input()(m_option_restartInput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_INPUT_BASE_NAME_FOR_FILES_ODV);
105  m_restartInput_fileType = m_env.input()(m_option_restartInput_fileType, UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV);
106 #else
110 #endif
112 
113  // UQ_ML_SAMPLING_DATA_OUTPUT_ALLOWED_SET_ODV is the empty set (string) by
114  // default
115  unsigned int size = m_env.input().vector_variable_size(m_option_dataOutputAllowedSet);
116  for (unsigned int i = 0; i < size; i++) {
117  // We default to empty set, so the default values are actually never used
118  // here
119  unsigned int allowed = m_env.input()(m_option_dataOutputAllowedSet, i, i);
120  m_dataOutputAllowedSet.insert(allowed);
121  }
122 
123 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
124 
125  checkOptions(&env);
126 }
127 
129 {
130 }
131 
132 void
134 {
135  // DM: I'm printing here because I'm not sure where this object is created
136  // in the statistical inverse problem
137  if (m_help != "") {
138  if (env->subDisplayFile()) {
139  *(env->subDisplayFile()) << (*this) << std::endl;
140  }
141  }
142 
143 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
144  if ((m_restartOutput_levelPeriod > 0)) queso_require_not_equal_to_msg(m_restartOutput_baseNameForFiles, std::string("."), std::string("Option 'restartOutput_levelPeriod' is > 0, but 'restartOutput_baseNameForFiles' is not specified..."));
145 #endif
146 }
147 
148 void
149 MLSamplingOptions::print(std::ostream& os) const
150 {
151 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
152  os << m_option_restartOutput_levelPeriod << " = " << m_restartOutput_levelPeriod
153  << "\n" << m_option_restartOutput_baseNameForFiles << " = " << m_restartOutput_baseNameForFiles
154  << "\n" << m_option_restartOutput_fileType << " = " << m_restartOutput_fileType
155  << "\n" << m_option_restartInput_baseNameForFiles << " = " << m_restartInput_baseNameForFiles
156  << "\n" << m_option_restartInput_fileType << " = " << m_restartInput_fileType
157 #else
160  << "\n" << m_option_restartChainSize << " = " << m_restartChainSize
161 #endif
163  << "\n" << m_option_dataOutputAllowedSet << " = ";
164  for (std::set<unsigned int>::iterator setIt = m_dataOutputAllowedSet.begin(); setIt != m_dataOutputAllowedSet.end(); ++setIt) {
165  os << *setIt << " ";
166  }
167  os << "\n";
168 
169  return;
170 }
171 
172 std::ostream& operator<<(std::ostream& os, const MLSamplingOptions& obj)
173 {
174 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
175  os << (*(obj.m_parser)) << std::endl;
176 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
177 
178  obj.print(os);
179  return os;
180 }
181 
182 } // End namespace QUESO
BoostInputOptionsParser * m_parser
const GetPot & input() const
The GetPot input file parser.
Definition: Environment.C:1148
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
#define UQ_ML_SAMPLING_DATA_OUTPUT_ALLOWED_SET_ODV
#define ML_CODE_HAS_NEW_RESTART_CAPABILITY
Definition: Defines.h:78
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:197
std::string m_restartInputFileName
Name of restart input file.
MLSamplingOptions(const BaseEnvironment &env, const char *prefix)
Default constructor.
#define UQ_ML_SAMPLING_DATA_OUTPUT_FILE_NAME_ODV
void checkOptions(const BaseEnvironment *env)
virtual ~MLSamplingOptions()
Destructor.
std::string m_dataOutputFileName
Name of generic output file.
unsigned vector_variable_size(const char *VarName) const
Definition: getpot.h:2532
void getOption(std::string &name, T &value)
Get option name from the parser and set value to the parsed value.
This class provides options for the Multilevel sequence generator if no input file is available...
#define UQ_ML_SAMPLING_RESTART_INPUT_FILE_NAME_ODV
#define UQ_ML_SAMPLING_RESTART_CHAIN_SIZE_ODV
const BaseEnvironment & m_env
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
unsigned int m_restartChainSize
Size of restart chain.
void scanInputFile()
This is the method that parses the input file.
std::string m_restartInputFileType
Type of restart input file.
#define queso_require_not_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:74
std::string m_option_dataOutputFileName
std::string m_option_restartInputFileType
void registerOption(std::string name, T defaultValue, std::string description)
Call this to register an option with the parser.
std::set< unsigned int > m_dataOutputAllowedSet
std::string m_option_restartInputFileName
std::string m_option_dataOutputAllowedSet
void print(std::ostream &os) const
It prints the option values.
std::string m_help
If non-empty string, options and values are printed to the output file.
#define UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV

Generated on Thu Dec 15 2016 13:23:11 for queso-0.56.1 by  doxygen 1.8.5