queso-0.56.0
MonteCarloSGOptions.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 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
26 #include <boost/program_options.hpp>
27 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
28 
29 #include <queso/MonteCarloSGOptions.h>
30 #include <queso/Miscellaneous.h>
31 
32 // -------------------------------------------------
33 // McOptionsValues --------------------------
34 // -------------------------------------------------
35 
36 namespace QUESO {
37 
38 // Default constructor -----------------------------
40 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
41  const SsOptionsValues* alternativePSsOptionsValues,
42  const SsOptionsValues* alternativeQSsOptionsValues
43 #endif
44  )
45  :
46  m_prefix ("mc_"),
47  m_help (UQ_MOC_SG_HELP),
48  m_dataOutputFileName (UQ_MOC_SG_DATA_OUTPUT_FILE_NAME_ODV ),
49  //m_dataOutputAllowedSet (),
50  m_pseqDataOutputPeriod (UQ_MOC_SG_PSEQ_DATA_OUTPUT_PERIOD_ODV ),
51  m_pseqDataOutputFileName (UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_NAME_ODV),
52  m_pseqDataOutputFileType (UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_TYPE_ODV),
53  //m_pseqDataOutputAllowedSet (),
54 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
55  m_pseqComputeStats (UQ_MOC_SG_PSEQ_COMPUTE_STATS_ODV ),
56 #endif
57  m_qseqDataInputFileName (UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_NAME_ODV ),
58  m_qseqDataInputFileType (UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_TYPE_ODV ),
59  m_qseqSize (UQ_MOC_SG_QSEQ_SIZE_ODV ),
60  m_qseqDisplayPeriod (UQ_MOC_SG_QSEQ_DISPLAY_PERIOD_ODV ),
61  m_qseqMeasureRunTimes (UQ_MOC_SG_QSEQ_MEASURE_RUN_TIMES_ODV ),
62  m_qseqDataOutputPeriod (UQ_MOC_SG_QSEQ_DATA_OUTPUT_PERIOD_ODV ),
63  m_qseqDataOutputFileName (UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_NAME_ODV),
64  m_qseqDataOutputFileType (UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_TYPE_ODV),
65  //m_qseqDataOutputAllowedSet (),
66 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
67  m_qseqComputeStats (UQ_MOC_SG_QSEQ_COMPUTE_STATS_ODV ),
68  m_alternativePSsOptionsValues(),
69  m_alternativeQSsOptionsValues(),
70 #endif
71 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
72  m_parser(NULL),
73 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
74  m_option_help (m_prefix + "help" ),
75  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
76  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
77  m_option_pseq_dataOutputPeriod (m_prefix + "pseq_dataOutputPeriod" ),
78  m_option_pseq_dataOutputFileName (m_prefix + "pseq_dataOutputFileName" ),
79  m_option_pseq_dataOutputFileType (m_prefix + "pseq_dataOutputFileType" ),
80  m_option_pseq_dataOutputAllowedSet(m_prefix + "pseq_dataOutputAllowedSet" ),
81 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
82  m_option_pseq_computeStats (m_prefix + "pseq_computeStats" ),
83 #endif
84  m_option_qseq_dataInputFileName (m_prefix + "qseq_dataInputFileName" ),
85  m_option_qseq_dataInputFileType (m_prefix + "qseq_dataInputFileType" ),
86  m_option_qseq_size (m_prefix + "qseq_size" ),
87  m_option_qseq_displayPeriod (m_prefix + "qseq_displayPeriod" ),
88  m_option_qseq_measureRunTimes (m_prefix + "qseq_measureRunTimes" ),
89  m_option_qseq_dataOutputPeriod (m_prefix + "qseq_dataOutputPeriod" ),
90  m_option_qseq_dataOutputFileName (m_prefix + "qseq_dataOutputFileName" ),
91  m_option_qseq_dataOutputFileType (m_prefix + "qseq_dataOutputFileType" ),
92  m_option_qseq_dataOutputAllowedSet(m_prefix + "qseq_dataOutputAllowedSet" )
93 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
94  ,
95  m_option_qseq_computeStats (m_prefix + "qseq_computeStats" )
96 #endif
97 {
98 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
99  if (alternativePSsOptionsValues) m_alternativePSsOptionsValues = *alternativePSsOptionsValues;
100  if (alternativeQSsOptionsValues) m_alternativeQSsOptionsValues = *alternativeQSsOptionsValues;
101 #endif
102 }
103 
105 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
106  const SsOptionsValues* alternativePSsOptionsValues,
107  const SsOptionsValues* alternativeQSsOptionsValues,
108 #endif
109  const BaseEnvironment * env, const char * prefix
110  )
111  :
112  m_prefix ((std::string)(prefix) + "mc_"),
113  m_help (UQ_MOC_SG_HELP),
114  m_dataOutputFileName (UQ_MOC_SG_DATA_OUTPUT_FILE_NAME_ODV ),
115  //m_dataOutputAllowedSet (),
116  m_pseqDataOutputPeriod (UQ_MOC_SG_PSEQ_DATA_OUTPUT_PERIOD_ODV ),
117  m_pseqDataOutputFileName (UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_NAME_ODV),
118  m_pseqDataOutputFileType (UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_TYPE_ODV),
119  //m_pseqDataOutputAllowedSet (),
120 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
121  m_pseqComputeStats (UQ_MOC_SG_PSEQ_COMPUTE_STATS_ODV ),
122 #endif
123  m_qseqDataInputFileName (UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_NAME_ODV ),
124  m_qseqDataInputFileType (UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_TYPE_ODV ),
125  m_qseqSize (UQ_MOC_SG_QSEQ_SIZE_ODV ),
126  m_qseqDisplayPeriod (UQ_MOC_SG_QSEQ_DISPLAY_PERIOD_ODV ),
127  m_qseqMeasureRunTimes (UQ_MOC_SG_QSEQ_MEASURE_RUN_TIMES_ODV ),
128  m_qseqDataOutputPeriod (UQ_MOC_SG_QSEQ_DATA_OUTPUT_PERIOD_ODV ),
129  m_qseqDataOutputFileName (UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_NAME_ODV),
130  m_qseqDataOutputFileType (UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_TYPE_ODV),
131  //m_qseqDataOutputAllowedSet (),
132 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
133  m_qseqComputeStats (UQ_MOC_SG_QSEQ_COMPUTE_STATS_ODV ),
134  m_alternativePSsOptionsValues(),
135  m_alternativeQSsOptionsValues(),
136 #endif
137 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
138  m_parser(new BoostInputOptionsParser(env->optionsInputFileName())),
139 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
140  m_option_help (m_prefix + "help" ),
141  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
142  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
143  m_option_pseq_dataOutputPeriod (m_prefix + "pseq_dataOutputPeriod" ),
144  m_option_pseq_dataOutputFileName (m_prefix + "pseq_dataOutputFileName" ),
145  m_option_pseq_dataOutputFileType (m_prefix + "pseq_dataOutputFileType" ),
146  m_option_pseq_dataOutputAllowedSet(m_prefix + "pseq_dataOutputAllowedSet" ),
147 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
148  m_option_pseq_computeStats (m_prefix + "pseq_computeStats" ),
149 #endif
150  m_option_qseq_dataInputFileName (m_prefix + "qseq_dataInputFileName" ),
151  m_option_qseq_dataInputFileType (m_prefix + "qseq_dataInputFileType" ),
152  m_option_qseq_size (m_prefix + "qseq_size" ),
153  m_option_qseq_displayPeriod (m_prefix + "qseq_displayPeriod" ),
154  m_option_qseq_measureRunTimes (m_prefix + "qseq_measureRunTimes" ),
155  m_option_qseq_dataOutputPeriod (m_prefix + "qseq_dataOutputPeriod" ),
156  m_option_qseq_dataOutputFileName (m_prefix + "qseq_dataOutputFileName" ),
157  m_option_qseq_dataOutputFileType (m_prefix + "qseq_dataOutputFileType" ),
158  m_option_qseq_dataOutputAllowedSet(m_prefix + "qseq_dataOutputAllowedSet" )
159 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
160  ,
161  m_option_qseq_computeStats (m_prefix + "qseq_computeStats" )
162 #endif
163 {
164 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
165  if (alternativePSsOptionsValues) m_alternativePSsOptionsValues = *alternativePSsOptionsValues;
166  if (alternativeQSsOptionsValues) m_alternativeQSsOptionsValues = *alternativeQSsOptionsValues;
167 #endif
168 
169 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
170  m_parser->registerOption<std::string >(m_option_help, UQ_MOC_SG_HELP , "produce help message for Monte Carlo distribution calculator");
171  m_parser->registerOption<std::string >(m_option_dataOutputFileName, UQ_MOC_SG_DATA_OUTPUT_FILE_NAME_ODV , "name of generic data output file" );
172  m_parser->registerOption<std::string >(m_option_dataOutputAllowedSet, UQ_MOC_SG_DATA_OUTPUT_ALLOWED_SET_ODV , "subEnvs that will write to generic data output file" );
173  m_parser->registerOption<unsigned int>(m_option_pseq_dataOutputPeriod, UQ_MOC_SG_PSEQ_DATA_OUTPUT_PERIOD_ODV , "period of message display during param sequence generation" );
174  m_parser->registerOption<std::string >(m_option_pseq_dataOutputFileName, UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_NAME_ODV , "name of data output file for parameters" );
175  m_parser->registerOption<std::string >(m_option_pseq_dataOutputFileType, UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_TYPE_ODV , "type of data output file for parameters" );
176  m_parser->registerOption<std::string >(m_option_pseq_dataOutputAllowedSet, UQ_MOC_SG_PSEQ_DATA_OUTPUT_ALLOWED_SET_ODV, "subEnvs that will write to data output file for parameters" );
177 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
178  m_parser->registerOption<bool >(m_option_pseq_computeStats, UQ_MOC_SG_PSEQ_COMPUTE_STATS_ODV , "compute statistics on sequence of parameter" );
179 #endif
180  m_parser->registerOption<std::string >(m_option_qseq_dataInputFileName, UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_NAME_ODV , "name of data input file for qois" );
181  m_parser->registerOption<std::string >(m_option_qseq_dataInputFileType, UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_TYPE_ODV , "type of data input file for qois" );
182  m_parser->registerOption<unsigned int>(m_option_qseq_size, UQ_MOC_SG_QSEQ_SIZE_ODV , "size of qoi sequence" );
183  m_parser->registerOption<unsigned int>(m_option_qseq_displayPeriod, UQ_MOC_SG_QSEQ_DISPLAY_PERIOD_ODV , "period of message display during qoi sequence generation" );
185  m_parser->registerOption<unsigned int>(m_option_qseq_dataOutputPeriod, UQ_MOC_SG_QSEQ_DATA_OUTPUT_PERIOD_ODV , "period of message display during qoi sequence generation" );
186  m_parser->registerOption<std::string >(m_option_qseq_dataOutputFileName, UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_NAME_ODV , "name of data output file for qois" );
187  m_parser->registerOption<std::string >(m_option_qseq_dataOutputFileType, UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_TYPE_ODV , "type of data output file for qois" );
188  m_parser->registerOption<std::string >(m_option_qseq_dataOutputAllowedSet, UQ_MOC_SG_QSEQ_DATA_OUTPUT_ALLOWED_SET_ODV, "subEnvs that will write to data output file for qois" );
189 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
190  m_parser->registerOption<bool >(m_option_qseq_computeStats, UQ_MOC_SG_QSEQ_COMPUTE_STATS_ODV , "compute statistics on sequence of qoi" );
191 #endif
192 
194 
195  m_parser->getOption<std::string >(m_option_help, m_help);
202 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
203  m_parser->getOption<bool >(m_option_pseq_computeStats, m_pseq_computeStats);
204 #endif
214 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
215  m_parser->getOption<bool >(m_option_qseq_computeStats, m_qseq_computeStats);
216 #endif
217 #else
218  m_help = env->input()(m_option_help, UQ_MOC_SG_HELP);
220 
221  // UQ_MOC_SG_DATA_OUTPUT_ALLOWED_SET_ODV is the empty set (string) by default
222  unsigned int size = env->input().vector_variable_size(m_option_dataOutputAllowedSet);
223  for (unsigned int i = 0; i < size; i++) {
224  // We default to empty set, so the default values are actually never
225  // used here
226  unsigned int allowed = env->input()(m_option_dataOutputAllowedSet, i, i);
227  m_dataOutputAllowedSet.insert(allowed);
228  }
229 
233 
234  // UQ_MOC_SG_PSEQ_DATA_OUTPUT_ALLOWED_SET_ODV is the empty set (string) by default
235  size = env->input().vector_variable_size(m_option_pseq_dataOutputAllowedSet);
236  for (unsigned int i = 0; i < size; i++) {
237  // We default to empty set, so the default values are actually never
238  // used here
239  unsigned int allowed = env->input()(m_option_pseq_dataOutputAllowedSet, i, i);
240  m_pseqDataOutputAllowedSet.insert(allowed);
241  }
242 
243 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
244  m_pseq_computeStats = env->input()(m_option_pseq_computeStats, UQ_MOC_SG_PSEQ_COMPUTE_STATS_ODV);
245 #endif
254 
255  // UQ_MOC_SG_QSEQ_DATA_OUTPUT_ALLOWED_SET_ODV is the empty set (string) by default
256  size = env->input().vector_variable_size(m_option_qseq_dataOutputAllowedSet);
257  for (unsigned int i = 0; i < size; i++) {
258  // We default to empty set, so the default values are actually never
259  // used here
260  unsigned int allowed = env->input()(m_option_qseq_dataOutputAllowedSet, i, i);
261  m_qseqDataOutputAllowedSet.insert(allowed);
262  }
263 
264 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
265  m_qseq_computeStats = env->input()(m_option_qseq_computeStats, UQ_MOC_SG_QSEQ_COMPUTE_STATS_ODV);
266 #endif
267 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
268 }
269 
270 // Copy constructor --------------------------------
272 {
273  this->copy(src);
274 }
275 // Destructor ---------------------------------------
277 {
278 }
279 // Set methods --------------------------------------
282 {
283  this->copy(rhs);
284  return *this;
285 }
286 // Private methods-----------------------------------
287 void
289 {
290  // Do nothing
291 }
292 
293 void
295 {
302 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
303  m_pseqComputeStats = src.m_pseqComputeStats;
304 #endif
307  m_qseqSize = src.m_qseqSize;
314 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
315  m_qseqComputeStats = src.m_qseqComputeStats;
316 #endif
317 
318 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
319  m_alternativePSsOptionsValues = src.m_alternativePSsOptionsValues;
320  m_alternativeQSsOptionsValues = src.m_alternativeQSsOptionsValues;
321 #endif
322 
323  return;
324 }
325 
326 std::ostream & operator<<(std::ostream & os, const McOptionsValues & obj)
327 {
328 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
329  os << (*(obj.m_parser)) << std::endl;
330 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
331 
332  os << obj.m_option_dataOutputFileName << " = " << obj.m_dataOutputFileName
333  << "\n" << obj.m_option_dataOutputAllowedSet << " = ";
334  for (std::set<unsigned int>::iterator setIt = obj.m_dataOutputAllowedSet.begin(); setIt != obj.m_dataOutputAllowedSet.end(); ++setIt) {
335  os << *setIt << " ";
336  }
337  os << "\n" << obj.m_option_pseq_dataOutputPeriod << " = " << obj.m_pseqDataOutputPeriod
338  << "\n" << obj.m_option_pseq_dataOutputFileName << " = " << obj.m_pseqDataOutputFileName
339  << "\n" << obj.m_option_pseq_dataOutputFileType << " = " << obj.m_pseqDataOutputFileType
340  << "\n" << obj.m_option_pseq_dataOutputAllowedSet << " = ";
341  for (std::set<unsigned int>::iterator setIt = obj.m_pseqDataOutputAllowedSet.begin(); setIt != obj.m_pseqDataOutputAllowedSet.end(); ++setIt) {
342  os << *setIt << " ";
343  }
344  os
345 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
346  << "\n" << obj.m_option_pseq_computeStats << " = " << obj.m_pseqComputeStats
347 #endif
348  << "\n" << obj.m_option_qseq_dataInputFileName << " = " << obj.m_qseqDataInputFileName
349  << "\n" << obj.m_option_qseq_dataInputFileType << " = " << obj.m_qseqDataInputFileType
350  << "\n" << obj.m_option_qseq_size << " = " << obj.m_qseqSize
351  << "\n" << obj.m_option_qseq_displayPeriod << " = " << obj.m_qseqDisplayPeriod
352  << "\n" << obj.m_option_qseq_measureRunTimes << " = " << obj.m_qseqMeasureRunTimes
353  << "\n" << obj.m_option_qseq_dataOutputPeriod << " = " << obj.m_qseqDataOutputPeriod
354  << "\n" << obj.m_option_qseq_dataOutputFileName << " = " << obj.m_qseqDataOutputFileName
355  << "\n" << obj.m_option_qseq_dataOutputFileType << " = " << obj.m_qseqDataOutputFileType
356  << "\n" << obj.m_option_qseq_dataOutputAllowedSet << " = ";
357  for (std::set<unsigned int>::iterator setIt = obj.m_qseqDataOutputAllowedSet.begin(); setIt != obj.m_qseqDataOutputAllowedSet.end(); ++setIt) {
358  os << *setIt << " ";
359  }
360 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
361  os << "\n" << obj.m_option_qseq_computeStats << " = " << obj.m_qseqComputeStats;
362 #endif
363 
364  return os;
365 }
366 
367 // --------------------------------------------------
368 //MonteCarloSGOptions ------------------------
369 // --------------------------------------------------
370 
371 // Default constructor -----------------------------
373  const BaseEnvironment& env,
374  const char* prefix)
375  :
376 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
377  m_ov (NULL,NULL),
378  m_pseqStatisticalOptionsObj (NULL),
379  m_qseqStatisticalOptionsObj (NULL),
380 #else
381  m_ov (),
382 #endif
383  m_prefix ((std::string)(prefix) + "mc_"),
384  m_env (env),
385 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
386  m_optionsDesc (new boost::program_options::options_description("Monte Carlo options")),
387 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
388  m_option_help (m_prefix + "help" ),
389  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
390  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
391  m_option_pseq_dataOutputPeriod (m_prefix + "pseq_dataOutputPeriod" ),
392  m_option_pseq_dataOutputFileName (m_prefix + "pseq_dataOutputFileName" ),
393  m_option_pseq_dataOutputFileType (m_prefix + "pseq_dataOutputFileType" ),
394  m_option_pseq_dataOutputAllowedSet(m_prefix + "pseq_dataOutputAllowedSet" ),
395 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
396  m_option_pseq_computeStats (m_prefix + "pseq_computeStats" ),
397 #endif
398  m_option_qseq_dataInputFileName (m_prefix + "qseq_dataInputFileName" ),
399  m_option_qseq_dataInputFileType (m_prefix + "qseq_dataInputFileType" ),
400  m_option_qseq_size (m_prefix + "qseq_size" ),
401  m_option_qseq_displayPeriod (m_prefix + "qseq_displayPeriod" ),
402  m_option_qseq_measureRunTimes (m_prefix + "qseq_measureRunTimes" ),
403  m_option_qseq_dataOutputPeriod (m_prefix + "qseq_dataOutputPeriod" ),
404  m_option_qseq_dataOutputFileName (m_prefix + "qseq_dataOutputFileName" ),
405  m_option_qseq_dataOutputFileType (m_prefix + "qseq_dataOutputFileType" ),
406  m_option_qseq_dataOutputAllowedSet(m_prefix + "qseq_dataOutputAllowedSet" )
407 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
408  ,
409  m_option_qseq_computeStats (m_prefix + "qseq_computeStats" )
410 #endif
411 {
413  queso_require_not_equal_to_msg(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the absence of an options input file"));
414 }
415 // Constructor 2 -----------------------------------
417  const BaseEnvironment& env,
418  const char* prefix,
419  const McOptionsValues& alternativeOptionsValues)
420  :
421  m_ov (alternativeOptionsValues),
422 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
423  m_pseqStatisticalOptionsObj (NULL),
424  m_qseqStatisticalOptionsObj (NULL),
425 #endif
426  m_prefix ((std::string)(prefix) + "mc_"),
427  m_env (env),
428 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
429  m_optionsDesc (NULL),
430 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
431  m_option_help (m_prefix + "help" ),
432  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
433  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
434  m_option_pseq_dataOutputPeriod (m_prefix + "pseq_dataOutputPeriod" ),
435  m_option_pseq_dataOutputFileName (m_prefix + "pseq_dataOutputFileName" ),
436  m_option_pseq_dataOutputFileType (m_prefix + "pseq_dataOutputFileType" ),
437  m_option_pseq_dataOutputAllowedSet(m_prefix + "pseq_dataOutputAllowedSet"),
438 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
439  m_option_pseq_computeStats (m_prefix + "pseq_computeStats" ),
440 #endif
441  m_option_qseq_dataInputFileName (m_prefix + "qseq_dataInputFileName" ),
442  m_option_qseq_dataInputFileType (m_prefix + "qseq_dataInputFileType" ),
443  m_option_qseq_size (m_prefix + "qseq_size" ),
444  m_option_qseq_displayPeriod (m_prefix + "qseq_displayPeriod" ),
445  m_option_qseq_measureRunTimes (m_prefix + "qseq_measureRunTimes" ),
446  m_option_qseq_dataOutputPeriod (m_prefix + "qseq_dataOutputPeriod" ),
447  m_option_qseq_dataOutputFileName (m_prefix + "qseq_dataOutputFileName" ),
448  m_option_qseq_dataOutputFileType (m_prefix + "qseq_dataOutputFileType" ),
449  m_option_qseq_dataOutputAllowedSet(m_prefix + "qseq_dataOutputAllowedSet")
450 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
451  ,
452  m_option_qseq_computeStats (m_prefix + "qseq_computeStats" )
453 #endif
454 {
456  queso_require_equal_to_msg(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the existence of an options input file"));
457 
458  if (m_env.subDisplayFile() != NULL) {
459  *m_env.subDisplayFile() << "In MonteCarloSGOptions::constructor(2)"
460  << ": after setting values of options with prefix '" << m_prefix
461  << "', state of object is:"
462  << "\n" << *this
463  << std::endl;
464  }
465 
466  // dakota
467 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
468  if (m_ov.m_pseqComputeStats) m_pseqStatisticalOptionsObj =
469  new SequenceStatisticalOptions(m_env,m_prefix + "pseq_",m_ov.m_alternativePSsOptionsValues);
470  if (m_ov.m_qseqComputeStats) m_qseqStatisticalOptionsObj =
471  new SequenceStatisticalOptions(m_env,m_prefix + "qseq_",m_ov.m_alternativeQSsOptionsValues);
472 #endif
473 }
474 // Destructor --------------------------------------
476 {
478 
479 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
480  if (m_pseqStatisticalOptionsObj) delete m_pseqStatisticalOptionsObj; // dakota
481  if (m_qseqStatisticalOptionsObj) delete m_qseqStatisticalOptionsObj; // dakota
482 #endif
483 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
484  if (m_optionsDesc ) delete m_optionsDesc;
485 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
486 }
487 // I/O methods -------------------------------------
488 void
490 {
492 
493 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
494  queso_require_msg(m_optionsDesc, "m_optionsDesc variable is NULL");
495 
499 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
500 
501  if (m_env.subDisplayFile() != NULL) {
502  *m_env.subDisplayFile() << "In MonteCarloSGOptions::scanOptionsValues()"
503  << ": after reading values of options with prefix '" << m_prefix
504  << "', state of object is:"
505  << "\n" << *this
506  << std::endl;
507  }
508 
509  // dakota
510 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
511  if (m_ov.m_pseqComputeStats) m_pseqStatisticalOptionsObj =
512  new SequenceStatisticalOptions(m_env,m_prefix + "pseq_");
513  if (m_ov.m_qseqComputeStats) m_qseqStatisticalOptionsObj =
514  new SequenceStatisticalOptions(m_env,m_prefix + "qseq_");
515 #endif
516  return;
517 }
518 // Private methods ---------------------------------
519 #ifndef DISABLE_BOOST_PROGRAM_OPTIONS
520 void
521 MonteCarloSGOptions::defineMyOptions(boost::program_options::options_description& optionsDesc) const
522 {
524 
525  optionsDesc.add_options()
526  (m_option_help.c_str(), "produce help message for Monte Carlo distribution calculator")
527  (m_option_dataOutputFileName.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_DATA_OUTPUT_FILE_NAME_ODV ), "name of generic data output file" )
528  (m_option_dataOutputAllowedSet.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write to generic data output file" )
529  (m_option_pseq_dataOutputPeriod.c_str(), boost::program_options::value<unsigned int>()->default_value(UQ_MOC_SG_PSEQ_DATA_OUTPUT_PERIOD_ODV ), "period of message display during param sequence generation" )
530  (m_option_pseq_dataOutputFileName.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_NAME_ODV ), "name of data output file for parameters" )
531  (m_option_pseq_dataOutputFileType.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_TYPE_ODV ), "type of data output file for parameters" )
532  (m_option_pseq_dataOutputAllowedSet.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_PSEQ_DATA_OUTPUT_ALLOWED_SET_ODV), "subEnvs that will write to data output file for parameters" )
533 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
534  (m_option_pseq_computeStats.c_str(), boost::program_options::value<bool >()->default_value(UQ_MOC_SG_PSEQ_COMPUTE_STATS_ODV ), "compute statistics on sequence of parameter" )
535 #endif
536  (m_option_qseq_dataInputFileName.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_NAME_ODV ), "name of data input file for qois" )
537  (m_option_qseq_dataInputFileType.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_TYPE_ODV ), "type of data input file for qois" )
538  (m_option_qseq_size.c_str(), boost::program_options::value<unsigned int>()->default_value(UQ_MOC_SG_QSEQ_SIZE_ODV ), "size of qoi sequence" )
539  (m_option_qseq_displayPeriod.c_str(), boost::program_options::value<unsigned int>()->default_value(UQ_MOC_SG_QSEQ_DISPLAY_PERIOD_ODV ), "period of message display during qoi sequence generation" )
540  (m_option_qseq_measureRunTimes.c_str(), boost::program_options::value<bool >()->default_value(UQ_MOC_SG_QSEQ_MEASURE_RUN_TIMES_ODV ), "measure run times" )
541  (m_option_qseq_dataOutputPeriod.c_str(), boost::program_options::value<unsigned int>()->default_value(UQ_MOC_SG_QSEQ_DATA_OUTPUT_PERIOD_ODV ), "period of message display during qoi sequence generation" )
542  (m_option_qseq_dataOutputFileName.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_NAME_ODV ), "name of data output file for qois" )
543  (m_option_qseq_dataOutputFileType.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_TYPE_ODV ), "type of data output file for qois" )
544  (m_option_qseq_dataOutputAllowedSet.c_str(), boost::program_options::value<std::string >()->default_value(UQ_MOC_SG_QSEQ_DATA_OUTPUT_ALLOWED_SET_ODV), "subEnvs that will write to data output file for qois" )
545 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
546  (m_option_qseq_computeStats.c_str(), boost::program_options::value<bool >()->default_value(UQ_MOC_SG_QSEQ_COMPUTE_STATS_ODV ), "compute statistics on sequence of qoi" )
547 #endif
548  ;
549 
550  return;
551 }
552 
553 void
554 MonteCarloSGOptions::getMyOptionValues(boost::program_options::options_description& optionsDesc)
555 {
557 
558  if (m_env.allOptionsMap().count(m_option_help)) {
559  if (m_env.subDisplayFile()) {
560  *m_env.subDisplayFile() << optionsDesc
561  << std::endl;
562  }
563  }
564 
566  m_ov.m_dataOutputFileName = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_dataOutputFileName]).as<std::string>();
567  }
568 
571  std::vector<double> tmpAllow(0,0.);
572  std::string inputString = m_env.allOptionsMap()[m_option_dataOutputAllowedSet].as<std::string>();
573  MiscReadDoublesFromString(inputString,tmpAllow);
574 
575  if (tmpAllow.size() > 0) {
576  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
577  m_ov.m_dataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
578  }
579  }
580  }
581 
583  m_ov.m_pseqDataOutputPeriod = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_pseq_dataOutputPeriod]).as<unsigned int>();
584  }
585 
587  m_ov.m_pseqDataOutputFileName = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_pseq_dataOutputFileName]).as<std::string>();
588  }
589 
591  m_ov.m_pseqDataOutputFileType = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_pseq_dataOutputFileType]).as<std::string>();
592  }
593 
596  std::vector<double> tmpAllow(0,0.);
597  std::string inputString = m_env.allOptionsMap()[m_option_pseq_dataOutputAllowedSet].as<std::string>();
598  MiscReadDoublesFromString(inputString,tmpAllow);
599 
600  if (tmpAllow.size() > 0) {
601  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
602  m_ov.m_pseqDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
603  }
604  }
605  }
606 
607 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
608  if (m_env.allOptionsMap().count(m_option_pseq_computeStats)) {
609  m_ov.m_pseqComputeStats = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_pseq_computeStats]).as<bool>();
610  }
611 #endif
613  m_ov.m_qseqDataInputFileName = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_dataInputFileName]).as<std::string>();
614  }
615 
617  m_ov.m_qseqDataInputFileType = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_dataInputFileType]).as<std::string>();
618  }
619 
620  if (m_env.allOptionsMap().count(m_option_qseq_size)) {
621  m_ov.m_qseqSize = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_size]).as<unsigned int>();
622  }
623 
625  m_ov.m_qseqDisplayPeriod = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_displayPeriod]).as<unsigned int>();
626  }
627 
629  m_ov.m_qseqMeasureRunTimes = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_measureRunTimes]).as<bool>();
630  }
631 
633  m_ov.m_qseqDataOutputPeriod = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_dataOutputPeriod]).as<unsigned int>();
634  }
635 
637  m_ov.m_qseqDataOutputFileName = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_dataOutputFileName]).as<std::string>();
638  }
639 
641  m_ov.m_qseqDataOutputFileType = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_dataOutputFileType]).as<std::string>();
642  }
643 
646  std::vector<double> tmpAllow(0,0.);
647  std::string inputString = m_env.allOptionsMap()[m_option_qseq_dataOutputAllowedSet].as<std::string>();
648  MiscReadDoublesFromString(inputString,tmpAllow);
649 
650  if (tmpAllow.size() > 0) {
651  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
652  m_ov.m_qseqDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
653  }
654  }
655  }
656 
657 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
658  if (m_env.allOptionsMap().count(m_option_qseq_computeStats)) {
659  m_ov.m_qseqComputeStats = ((const boost::program_options::variable_value&) m_env.allOptionsMap()[m_option_qseq_computeStats]).as<bool>();
660  }
661 #endif
662  return;
663 }
664 #endif // DISABLE_BOOST_PROGRAM_OPTIONS
665 
666 void
667 MonteCarloSGOptions::print(std::ostream& os) const
668 {
670 
672  << "\n" << m_option_dataOutputAllowedSet << " = ";
673  for (std::set<unsigned int>::iterator setIt = m_ov.m_dataOutputAllowedSet.begin(); setIt != m_ov.m_dataOutputAllowedSet.end(); ++setIt) {
674  os << *setIt << " ";
675  }
679  << "\n" << m_option_pseq_dataOutputAllowedSet << " = ";
680  for (std::set<unsigned int>::iterator setIt = m_ov.m_pseqDataOutputAllowedSet.begin(); setIt != m_ov.m_pseqDataOutputAllowedSet.end(); ++setIt) {
681  os << *setIt << " ";
682  }
683  os
684 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
685  << "\n" << m_option_pseq_computeStats << " = " << m_ov.m_pseqComputeStats
686 #endif
689  << "\n" << m_option_qseq_size << " = " << m_ov.m_qseqSize
695  << "\n" << m_option_qseq_dataOutputAllowedSet << " = ";
696  for (std::set<unsigned int>::iterator setIt = m_ov.m_qseqDataOutputAllowedSet.begin(); setIt != m_ov.m_qseqDataOutputAllowedSet.end(); ++setIt) {
697  os << *setIt << " ";
698  }
699 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
700  os << "\n" << m_option_qseq_computeStats << " = " << m_ov.m_qseqComputeStats;
701 #endif
702 
703  return;
704 }
705 
706 std::ostream& operator<<(std::ostream& os, const MonteCarloSGOptions& obj)
707 {
709 
710  obj.print(os);
711 
712  return os;
713 }
714 
715 } // End namespace QUESO
std::string m_option_qseq_dataOutputFileName
#define UQ_MOC_SG_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_TYPE_ODV
std::string m_option_qseq_dataInputFileType
virtual ~McOptionsValues()
Destructor.
std::set< unsigned int > m_dataOutputAllowedSet
std::string m_option_dataOutputFileName
#define UQ_MOC_SG_DATA_OUTPUT_ALLOWED_SET_ODV
#define UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_NAME_ODV
std::string m_option_pseq_dataOutputAllowedSet
void scanOptionsValues()
It scans the option values from the options input file.
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
#define UQ_MOC_SG_HELP
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:353
std::string m_option_pseq_dataOutputPeriod
McOptionsValues()
Default constructor.
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:197
void defineMyOptions(boost::program_options::options_description &optionsDesc) const
Defines the options for the Monte Carlo sequence generator as the default options.
void getMyOptionValues(boost::program_options::options_description &optionsDesc)
Gets the sequence options.
void print(std::ostream &os) const
It prints the option values.
std::string m_option_pseq_dataOutputFileName
#define UQ_MOC_SG_QSEQ_DATA_OUTPUT_PERIOD_ODV
#define UQ_MOC_SG_QSEQ_DATA_OUTPUT_FILE_NAME_ODV
void getOption(std::string &name, T &value)
Get option name from the parser and set value to the parsed value.
void MiscReadDoublesFromString(const std::string &inputString, std::vector< double > &outputDoubles)
Definition: Miscellaneous.C:40
#define UQ_MOC_SG_QSEQ_MEASURE_RUN_TIMES_ODV
#define queso_require_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:73
#define UQ_MOC_SG_PSEQ_COMPUTE_STATS_ODV
boost::program_options::variables_map & allOptionsMap() const
Definition: Environment.C:385
#define UQ_MOC_SG_PSEQ_DATA_OUTPUT_PERIOD_ODV
#define UQ_MOC_SG_PSEQ_DATA_OUTPUT_FILE_TYPE_ODV
#define UQ_MOC_SG_PSEQ_DATA_OUTPUT_ALLOWED_SET_ODV
#define UQ_MOC_SG_QSEQ_DATA_OUTPUT_ALLOWED_SET_ODV
#define queso_deprecated()
Definition: Defines.h:134
std::string m_option_qseq_dataOutputAllowedSet
void scanInputFileForMyOptions(const boost::program_options::options_description &optionsDesc) const
This method scans the input file provided by the user to QUESO.
Definition: Environment.C:396
void scanInputFile()
This is the method that parses the input file.
std::set< unsigned int > m_qseqDataOutputAllowedSet
#define UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_TYPE_ODV
std::string m_option_qseq_dataOutputAllowedSet
std::string m_option_dataOutputAllowedSet
#define queso_require_not_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:74
std::string m_option_qseq_measureRunTimes
std::string m_option_qseq_dataInputFileName
void registerOption(std::string name, T defaultValue, std::string description)
Call this to register an option with the parser.
#define queso_require_msg(asserted, msg)
Definition: asserts.h:69
std::set< unsigned int > m_pseqDataOutputAllowedSet
std::string m_option_qseq_dataOutputPeriod
void copy(const McOptionsValues &src)
Copies the option values from src to this.
#define UQ_MOC_SG_QSEQ_DATA_INPUT_FILE_NAME_ODV
#define UQ_MOC_SG_QSEQ_SIZE_ODV
std::string m_option_qseq_dataOutputFileType
#define UQ_MOC_SG_QSEQ_DISPLAY_PERIOD_ODV
McOptionsValues & operator=(const McOptionsValues &rhs)
Assignment operator; it copies rhs to this.
boost::program_options::options_description * m_optionsDesc
std::string m_option_pseq_dataOutputAllowedSet
std::string m_option_pseq_dataOutputFileType
BoostInputOptionsParser * m_parser
std::string m_option_qseq_displayPeriod
#define UQ_MOC_SG_QSEQ_COMPUTE_STATS_ODV
This class reads the options for the Monte Carlo sequence generator from an input file...
const BaseEnvironment & m_env
This class provides options for the Monte Carlo sequence generator if no input file is available...
MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix)
Constructor: reads options from the input file.
std::string m_help
If non-empty string, print options and values to output file.

Generated on Tue Nov 29 2016 10:53:11 for queso-0.56.0 by  doxygen 1.8.5