Nemo  2.4.0b
Simulate forward-in-time genetic evolution in a spatially explicit, individual-based stochastic simulator
ParamManager Class Reference

Class to manage the sets of parameters of the simulation components. More...

#include <basicsimulation.h>

+ Inheritance diagram for ParamManager:
+ Collaboration diagram for ParamManager:

Public Member Functions

 ParamManager ()
 Cstor. More...
 
 ~ParamManager ()
 
void add_paramset (ParamSet *paramset)
 Adds a ParamSet to the list of the parameter sets of the simulation. More...
 
ParamSetget_paramset (string &name)
 Looks for paramset with "name" in the list of parameter sets. More...
 
void build_allParams ()
 Clears and fills the _allParams list with the ParamSet's of the simulation components. More...
 
list< ParamSet * > & get_allParams ()
 Accessor of the whole list of the parameter sets. More...
 
bool set_parameters (map< string, string > &simparams, bool silent)
 Sets the parameters of the simulation with the argument strings given in input. More...
 
bool param_consistency_check ()
 Checks if all the mandatory parameters are set so that the simulation can be launched. More...
 
void build_records (map< string, vector< string > > &initParams)
 Builds the list of simulation parameters from the parsed input file(s). More...
 
list< map< string, string > > & get_simRecords ()
 Accessor to the simulations parameter list. More...
 
map< string, string > & get_firstRecord ()
 Accessor to the first element in the simulations parameter list. More...
 
int get_nbSims ()
 Accessor to the size of the simulations parameter list, i.e. More...
 
- Public Member Functions inherited from ComponentManager
 ComponentManager ()
 
 ~ComponentManager ()
 
void build_component_list ()
 Clears and builds the list of all components from the lists of trait prototype templates and life cycle event templates. More...
 
void add_component (SimComponent *cmpt)
 Push a component at the back of the component list. More...
 
void add_trait (TraitPrototype *trait)
 Add a trait prototype to the template and component lists. More...
 
void add_LCE (LifeCycleEvent *event)
 Add a life cycle event to the template and component lists. More...
 
TraitPrototypeget_trait (string name)
 Search for component with "name" in the trait prototype list. More...
 
LifeCycleEventget_LCE (string name)
 Search for component with "name" in the life cycle events list. More...
 

Protected Attributes

list< ParamSet * > _allParams
 A list of all the parameter sets of all the simulation components loaded in the _component list of the ComponentManager. More...
 
map< string, string > _inputParams
 A map of the parameters and their arguments of the current (running) simulation. More...
 
map< unsigned int, list< pair< string, string > > > _temporalParams
 Lists of parameters to be updated during a simulation indexed by generation update time. More...
 
list< map< string, string > > _simRecords
 Sets of parameters of all the simulations to perform. More...
 
ParamSet _paramSet
 The ParamSet param set of the simulation. More...
 
- Protected Attributes inherited from ComponentManager
list< SimComponent * > _components
 List of all the simulation components. More...
 
list< TraitPrototype * > _TTrait_Templates
 List of all trait prototypes of the simulation, a subset of _components list. More...
 
list< LifeCycleEvent * > _LCE_Templates
 List of all the life-cycle events of the simulation, a subset of _components list. More...
 

Private Member Functions

string setFilename (string &fstring, unsigned int sim, vector< string > &args, vector< unsigned int > &arg_no, bool check_arg_no)
 
string stripFormatString (string &str, unsigned int &index)
 
string setArgString (string &fmt, string &arg, unsigned int arg_pos)
 
string lowercase (string &input)
 

Detailed Description

Class to manage the sets of parameters of the simulation components.

This class performs parameters setting and checking for the whole set of the simulation components. Provides access to derived classes to the complete list of parameter sets. Also sets the list of simulations parameters in case of sequential parameters found in input. It stores and builds the simulation parameters set.

See also
ParamsParser and derived classes. These are the input parameters providers.

Constructor & Destructor Documentation

◆ ParamManager()

ParamManager::ParamManager ( )

Cstor.

Builds the simulation PramaSet.

97 {
98  _paramSet.setName("simulation");
100  _paramSet.setOwner(NULL);
101  _paramSet.add_param("filename",STR,true,false,0,0);
102  _paramSet.add_param("root_dir",STR,false,false,0,0);
103  _paramSet.add_param("logfile",STR,false,false,0,0);
104  _paramSet.add_param("postexec_script",STR,false,false,0,0);
105  _paramSet.add_param("postexec_args",STR,false,false,0,0);
106  _paramSet.add_param("postexec_replicate_wise", BOOL, 0,0,0,0);
107  _paramSet.add_param("random_seed",INT,false,false,0,0);
108  _paramSet.add_param("replicates",INT,true,false,0,0);
109  _paramSet.add_param("generations",INT,true,false,0,0);
110  _paramSet.add_param("run_mode",STR,false,false,0,0);
111 }
ParamSet _paramSet
The ParamSet param set of the simulation.
Definition: basicsimulation.h:151
void add_param(Param *param)
Adds the param argument to the list.
Definition: param.h:243
void setName(string value)
Sets the container's name.
Definition: param.h:282
void setOwner(SimComponent *owner)
Sets the pointer to the SimComponents that owns this set.
Definition: param.h:286
void setIsRequired(bool value)
Sets the _isRequired flag meaning this container is mandatory and must be set in order to run a simul...
Definition: param.h:284
@ BOOL
Definition: types.h:78
@ STR
Definition: types.h:78
@ INT
Definition: types.h:78

References _paramSet, ParamSet::add_param(), BOOL, INT, ParamSet::setIsRequired(), ParamSet::setName(), ParamSet::setOwner(), and STR.

◆ ~ParamManager()

ParamManager::~ParamManager ( )
inline
93 {/*message("ParamManager::~ParamManager\n");*/}

Member Function Documentation

◆ add_paramset()

void ParamManager::add_paramset ( ParamSet paramset)
inline

Adds a ParamSet to the list of the parameter sets of the simulation.

96  {
97  _allParams.push_back(paramset);
98  }
list< ParamSet * > _allParams
A list of all the parameter sets of all the simulation components loaded in the _component list of th...
Definition: basicsimulation.h:143

Referenced by BinaryDataLoader::extractPop().

◆ build_allParams()

void ParamManager::build_allParams ( )

Clears and fills the _allParams list with the ParamSet's of the simulation components.

116 {
117  list< SimComponent* >::iterator cmpt = _components.begin();
118 
119  _allParams.clear();
120 
121  _allParams.push_back(&_paramSet);
122 
123  while(cmpt != _components.end()) {
124  _allParams.push_back( (*cmpt)->get_paramset() );
125  cmpt++;
126  }
127 }
list< SimComponent * > _components
List of all the simulation components.
Definition: basicsimulation.h:71

References _allParams, ComponentManager::_components, and _paramSet.

Referenced by SIMenv::loadDefaultComponents(), SimRunner::run(), and SimBuilder::SimBuilder().

◆ build_records()

void ParamManager::build_records ( map< string, vector< string > > &  initParams)

Builds the list of simulation parameters from the parsed input file(s).

250 {
251  map< string, string > params;
252  map< string, string > paramsToExpand;
253  map< string, string >::iterator param_iter;
254  map< string, vector<string> >::iterator Pit;
255  unsigned int RecNb = 1, ArgNb, SeqParam = 0, BlockSize, seq_pos, num_seq_arg = 0;
256  vector<unsigned int> sequence; //stores the number of args of each sequence parameters
257  vector<string> currSeqArg;
258  vector<unsigned int> currSeqPos;
259  vector<string> currCombinArg;
260  vector<unsigned int> currCombinPos;
261  string NAME;
262  string ARG;
263  bool SEQUENCE = 0;
264 
265  //find sequential and combinatorial parameters:
266  for(Pit = initParams.begin(); Pit != initParams.end(); ++Pit) {
267 
268  if(Pit->second.size() > 1) {
269  //fetch the number of the current sequence parameter:
270  sequence.push_back(Pit->second.size());
271  num_seq_arg++;
272  //increase the total number of simulations records:
273  RecNb *= Pit->second.size();
274 
275  } else if(Pit->second[0].find_first_of('[') != string::npos) {
276  //@TODO process true sequential arg
277  }
278 
279  }
280 
281  if(RecNb > 1)
282  //we have a sequence of simulations:
283  SEQUENCE = true;
284 
285  for(unsigned int i = 0; i < RecNb; ++i) {
286  //now build the simulation records with the right params!
287  //the map 'param' will get all the params used for one simulation
288  //it is then added to the list of simulations' parameters map
289 
290  SeqParam = 0;//used as index of the 'sequence' vector
291 
292  for(Pit = initParams.begin(); Pit != initParams.end(); ++Pit) {
293 
294  if(!(Pit->first.compare("filename")==0) &&
295  !(Pit->first.compare("stat")==0) &&
296  !(Pit->first.compare("postexec_args")==0)) {
297 
298  //get the number of arguments for the current parameter:
299  ArgNb = Pit->second.size();
300 
301  if(ArgNb > 1) {
302  //the current param is a sequence param
303  //increase the index of the sequence parameter
304  SeqParam++;
305  //then compute the right argument to give to the current simulation record:
306  BlockSize = RecNb;
307 
308  for(unsigned int j = 0; j < SeqParam; ++j)
309  BlockSize /= sequence[j];
310 
311  seq_pos = (i/BlockSize) % ArgNb;
312  //we store the argument position in its sequence and the actual argument string to build the filename:
313  currSeqPos.push_back( seq_pos );
314  currSeqArg.push_back(Pit->second[ seq_pos ]);
315 
316  //assign the right argument to the parameter:
317  //params[Pit->first] = Pit->second[ seq_pos ];
318 
319  ARG = Pit->second[ seq_pos ];
320  //we can expand a string argument of a sequential parameter as well
321  if(ARG.find_first_of('%') != string::npos) {
322 
323  if(!SEQUENCE) fatal("found name expansion string '%' without multi-value parameters in the input file.\n");
324 
325  paramsToExpand[Pit->first] = ARG;
326 
327  } else
328  params[Pit->first] = ARG;
329 
330  } else if (ArgNb == 1) {
331  //the current param isn't a sequence param but gets an argument
332  //we might have to do some name expansion:
333  ARG = Pit->second[0];
334 
335  if(ARG.find_first_of('%') != string::npos) {
336 
337  if(!SEQUENCE) fatal("found name expansion string '%' without multi-value parameters in the input file.\n");
338 
339  paramsToExpand[Pit->first] = ARG;
340 
341  } else
342  params[Pit->first] = ARG;
343 
344  } else
345  //current param has no argument (bool type param) we give it value 1 (true)
346  params[Pit->first] = "1";
347 
348  } else if (Pit->first.compare("stat") == 0){
349 
350  params["stat"].assign("");
351  //build a string with all the stats arguments
352  for(unsigned int k = 0; k < Pit->second.size(); ++k)
353  params["stat"] += Pit->second[k] + " ";
354 
355  } else if (Pit->first.compare("filename")==0) {
356 
357  if(SEQUENCE)
358  NAME = Pit->second[0];
359  else
360  params["filename"] = Pit->second[0];
361 
362  } else if (Pit->first.compare("postexec_args") == 0){
363 
364  ARG = "";
365 
366  //build a string with all the postexec arguments
367  for(unsigned int k = 0; k < Pit->second.size(); ++k)
368  ARG += Pit->second[k] + " ";
369 
370  params["postexec_args"] = ARG;
371 
372 //#ifdef NEMOSUB
373  if(ARG.find_first_of('%') != string::npos)
374  paramsToExpand["postexec_args"] = ARG;
375 //#endif
376 
377  }
378  }
379 
380  if(SEQUENCE) { //perform expansion of param arguments containing the '%' marker
381 
382  params["filename"] = setFilename(NAME, i+1, currSeqArg, currSeqPos, true);
383 
384  for(param_iter = paramsToExpand.begin(); param_iter != paramsToExpand.end(); param_iter++)
385  params[param_iter->first] = setFilename(param_iter->second, i+1, currSeqArg, currSeqPos, false);
386  }
387 
388  //add all the params previously computed to the main simulation recorder list (of maps)
389  _simRecords.push_back(params);
390 
391  currSeqArg.clear();
392  currSeqPos.clear();
393  }
394  /*
395  RecNb = 1;
396  for(RecIt = SimRecorder.begin();RecIt != SimRecorder.end();++RecIt){
397  message("\nSimulation "<<RecNb++;
398  for(P2 = RecIt->begin();P2 != RecIt->end();++P2)
399  message("\n "<<P2->first<<"\t"<<P2->second;
400  }
401 */
402 }
list< map< string, string > > _simRecords
Sets of parameters of all the simulations to perform.
Definition: basicsimulation.h:149
string setFilename(string &fstring, unsigned int sim, vector< string > &args, vector< unsigned int > &arg_no, bool check_arg_no)
Definition: basicsimulation.cc:406
void fatal(const char *str,...)
Definition: output.cc:96

References _simRecords, fatal(), and setFilename().

Referenced by SimRunner::run().

◆ get_allParams()

list<ParamSet*>& ParamManager::get_allParams ( )
inline

Accessor of the whole list of the parameter sets.

Returns
the reference to the list of ParamSet
109  {
110  return _allParams;
111  }

◆ get_firstRecord()

map< string,string >& ParamManager::get_firstRecord ( )
inline

Accessor to the first element in the simulations parameter list.

137 {return (*_simRecords.begin());}

◆ get_nbSims()

int ParamManager::get_nbSims ( )
inline

Accessor to the size of the simulations parameter list, i.e.

the number of simulations to perform.

139 {return _simRecords.size();}

◆ get_paramset()

ParamSet * ParamManager::get_paramset ( string &  name)

Looks for paramset with "name" in the list of parameter sets.

Returns
NULL if parameter set "name" not found
232 {
233  list<ParamSet*>::iterator pset = _allParams.begin();
234 
235  while(pset != _allParams.end()) {
236 
237  if( (*pset)->getName().compare(name) == 0)
238  return (*pset);
239 
240  pset++;
241  }
242 
243  return NULL;
244 }

References _allParams.

Referenced by SimRunner::Replicate_LOOP().

◆ get_simRecords()

list< map< string,string > >& ParamManager::get_simRecords ( )
inline

Accessor to the simulations parameter list.

135 {return _simRecords;}

◆ lowercase()

string ParamManager::lowercase ( string &  input)
private
603 {
604  for(unsigned int i=0;i<input.size();++i)
605  input[i] = tolower(input[i]);
606  return input;
607 }

◆ param_consistency_check()

bool ParamManager::param_consistency_check ( )

Checks if all the mandatory parameters are set so that the simulation can be launched.

Returns
TRUE if all ParamSet::check_consistency() returned true
132 {
133  list<ParamSet*>::iterator current_paramset = _allParams.begin();
134 
135  bool check = true;
136 
137  while(current_paramset != _allParams.end()){
138  if(!(*current_paramset)->check_consistency()){
139  error("ParamManager::param_consistency_check::consistency not satisfied for \"%s\"\n",
140  (*current_paramset)->getName().c_str());
141  check = false;
142  }
143  current_paramset++;
144  }
145  return check;
146 }
int error(const char *str,...)
Definition: output.cc:77

References _allParams, and error().

Referenced by set_parameters().

◆ set_parameters()

bool ParamManager::set_parameters ( map< string, string > &  simparams,
bool  silent 
)

Sets the parameters of the simulation with the argument strings given in input.

Scans the _allParams list to set the parameters present in the input map simparams. Each ParamSet checks internally for the presence of a Param with the given name string and sets its value with the given argument, if present.

Note: all ParamSet owning a Param with the same name will use the same argument string. The input map is not a multimap, each param name is present only once.

Parameters
simparamsa map containing the parameter names and their argument string
silentwill be silent about parameters that could not be set.
Returns
the status of the param_consistency_check() function
151 {
152  _inputParams = simparams;
153  list<ParamSet*>::iterator current_paramset = _allParams.begin();
154  map< string,string >::iterator IT = _inputParams.begin();
155  bool set = false;
156  bool found = false;
157 
158  vector< string > unset;
159  vector< string > notfound;
160 
161  // we try and assign recorded parameters to a paramset
162  while(IT != _inputParams.end()) {
163 
164  current_paramset = _allParams.begin();
165 
166  // go through the list of all paramsets to assign the param to at least one paramset
167  // one parameter can be in multiple paramsets because of inheritance between components
168  while(current_paramset != _allParams.end()){
169 
170  found |= ( (*current_paramset)->find_param((string&)IT->first) != NULL );
171 
172  if(found)
173  set |= (*current_paramset)->set_param((string&)IT->first, IT->second);
174 
175  current_paramset++;
176  }
177 
178  // if not found, add param to list for warnings
179  if(!found){
180 
181  notfound.push_back(IT->first);
182 
183  }
184 
185  // if found but set failed, add param to list for warnings
186  if(found && !set){
187 
188  unset.push_back(IT->first);
189 
190  }
191 
192  // reset the flags
193  found = false;
194  set = false;
195 
196  // move to next input parameter
197  IT++;
198  }
199 
200 
201  if(!silent && _myenv->isMaster()) {
202 
203  if(notfound.size() > 0) {
204 
205  warning(" Orphan parameters!\n>>>> The following parameters do not belong to any simulation component:\n");
206 
207  for(unsigned i = 0; i < notfound.size(); ++i)
208  message(">>>> \"%s\" \n",notfound[i].c_str());
209 
210  message("\n");
211  }
212 
213  if(unset.size() > 0) {
214 
215  error(" Unset parameters!\n>>>> The following parameters could not be set (wrong value):\n");
216 
217  for(unsigned i = 0; i < unset.size(); ++i)
218  message(">>>> \"%s\" \n",unset[i].c_str());
219 
220  fatal("Please check the input parameter file and correct the error.\n");
221  }
222 
223  }
224 
225 
226  return param_consistency_check();
227 }
MPIenv * _myenv
Definition: MPImanager.cc:36
bool isMaster() const
Definition: MPImanager.h:128
map< string, string > _inputParams
A map of the parameters and their arguments of the current (running) simulation.
Definition: basicsimulation.h:145
bool param_consistency_check()
Checks if all the mandatory parameters are set so that the simulation can be launched.
Definition: basicsimulation.cc:131
void warning(const char *str,...)
Definition: output.cc:58
void message(const char *message,...)
Definition: output.cc:40

References _allParams, _inputParams, _myenv, error(), fatal(), MPIenv::isMaster(), message(), param_consistency_check(), and warning().

Referenced by SimBuilder::build_currentParams().

◆ setArgString()

string ParamManager::setArgString ( string &  fmt,
string &  arg,
unsigned int  arg_pos 
)
private
518 {
519  unsigned int width, digits;
520  double value;
521  bool is_dotless = 0;
522  string out, arg_str;
523  size_t pos = 0;
524 
525  if(fmt.size() != 0) {
526 
527  if(fmt[0] == '.') {
528  is_dotless = true;
529  fmt = fmt.substr(1, string::npos);
530  }
531 
532  if( !isdigit(fmt[0]) ) {
533  error("syntax error in format string for filename parameter:\n");
534  fatal("first character within \' \' must be a number\n");
535  }
536 
537  width = (unsigned int) strtol(fmt.c_str(), NULL, 10);
538 
539  digits = (unsigned int) log10((double)width) +1;
540 
541  fmt = fmt.substr(digits, string::npos);
542 
543  if(fmt[0] == '[') {
544 
545  if( (pos = fmt.find(']')) == string::npos){
546  error("syntax error in format string for filename parameter:\n");
547  fatal("enclosing ']' was not found\n");
548  }
549 
550  arg_str = fmt.substr(1, pos-1);
551 
552  if(arg_str[0] == '+') {
553 
554  ostringstream ostr;
555  ostr.width(width);
556  ostr.fill('0');
557  ostr << arg_pos+1;
558 
559  out = ostr.str();
560 
561  } else {
562 
563  if (arg_str.size() < (arg_pos+1)*width) {
564  error("syntax error in format string for filename parameter:\n");
565  fatal("the number of characters within [ ] is not sufficient.\n");
566  }
567 
568  for(unsigned int i = 0, start = arg_pos*width; i < width; i++)
569  out += arg_str[start + i];
570  }
571 
572  } else {
573 
574  value = strtod(arg.c_str(), 0);
575 
576  if(is_dotless) {
577  //take the decimal part:
578  double dummy;
579  value = modf(value, &dummy);
580  value *= pow(10.0, (double)width);
581  }
582 
583  ostringstream ostr;
584  ostr.width(width);
585  ostr.fill('0');
586  ostr << value;
587 
588  out = ostr.str();
589  }
590 
591  } else {
592 
593  out = arg;
594 
595  }
596 
597  return out;
598 }

References error(), and fatal().

Referenced by setFilename().

◆ setFilename()

string ParamManager::setFilename ( string &  fstring,
unsigned int  sim,
vector< string > &  args,
vector< unsigned int > &  arg_no,
bool  check_arg_no 
)
private
410 {
411  string out, tail, fmt;
412  string::size_type pos = fstring.find_first_of('%');
413  string::size_type next;
414  unsigned int index, nstr_args = (pos != string::npos ? 1 : 0);
415  bool add_sim_no = false;
416  static bool has_warned = false;
417 
418  while(pos != string::npos)
419  nstr_args += ( (pos = fstring.find('%', pos+1)) != string::npos);
420 
421  if(check_arg_no && nstr_args < args.size()) {
422  if(!has_warned) warning("missing sequential arguments in filename parameter, adding simulation number to filename.\n");
423  has_warned = true;
424  add_sim_no = true;
425  }
426 
427  pos = fstring.find_first_of('%');
428 
429  if(pos != string::npos) {
430 
431  if(pos > 0) out = fstring.substr(0, pos);
432 
433  tail = fstring.substr(pos+1, string::npos);
434 
435  fmt = stripFormatString(tail, index);
436 
437  if(index > args.size()) fatal("too many sequential arguments in \"%s\"\n",fstring.c_str());
438 
439  out += setArgString(fmt, args[index-1], arg_no[index-1]);
440 
441  next = tail.find_first_of('%');
442 
443  while(next != string::npos){
444 
445  out += tail.substr(0, next);
446 
447  tail = tail.substr(next+1, string::npos);
448 
449  fmt = stripFormatString(tail, index);
450 
451  if(index > args.size()) fatal("too many sequential arguments in \"%s\"\n",fstring.c_str());
452 
453  out += setArgString(fmt, args[index-1], arg_no[index-1]);
454 
455  next = tail.find_first_of('%');
456  }
457 
458  out += tail.substr(0, next);
459 
460  } else
461  out = fstring;
462 
463  if(add_sim_no) {
464 
465  ostringstream ostr;
466  ostr << sim;
467 
468  out += "-" + ostr.str();
469  }
470 
471  return out;
472 }
string setArgString(string &fmt, string &arg, unsigned int arg_pos)
Definition: basicsimulation.cc:517
string stripFormatString(string &str, unsigned int &index)
Definition: basicsimulation.cc:476

References fatal(), setArgString(), stripFormatString(), and warning().

Referenced by build_records().

◆ stripFormatString()

string ParamManager::stripFormatString ( string &  str,
unsigned int &  index 
)
private
477 {
478  string fmt;
479  unsigned int digits;
480  size_t fmt_end;
481 
482  //check for the presence of a format string, enclose by two \'
483  if(str[0] == '\'') {
484 
485  fmt_end = str.find('\'', 1);
486 
487  if(fmt_end == string::npos) fatal("format string not closed in filename parameter\n");
488 
489  fmt = str.substr(1, fmt_end-1);
490 
491  str = str.substr(fmt_end +1, string::npos);
492 
493  } else {
494 
495  // check that the placement character '%' is directly followed by a digit (if not by ' )
496  if( !isdigit(str[0]) ) {
497  error("found a mal-formed format string \"%s\" for parameter substitutions in the input file.\n", str.c_str());
498  fatal("Please check that the placement character \"\%\" is directly followed by the reference number of the sequential parameter, or by a format string starting with a \'.\n");
499  }
500  // no formating string provided
501  fmt = "";
502 
503  }
504 
505  index = (unsigned int) strtol(str.c_str(), NULL, 10);
506 
507  digits = (unsigned int) log10((double)index) +1;
508 
509  str = str.substr(digits, string::npos);
510 
511  return fmt;
512 
513 }

References error(), and fatal().

Referenced by setFilename().

Member Data Documentation

◆ _allParams

list< ParamSet* > ParamManager::_allParams
protected

A list of all the parameter sets of all the simulation components loaded in the _component list of the ComponentManager.

Referenced by build_allParams(), SimBuilder::build_currentParams(), get_paramset(), param_consistency_check(), SimRunner::reset(), and set_parameters().

◆ _inputParams

map< string, string > ParamManager::_inputParams
protected

A map of the parameters and their arguments of the current (running) simulation.

Referenced by set_parameters().

◆ _paramSet

ParamSet ParamManager::_paramSet
protected

◆ _simRecords

list< map< string, string > > ParamManager::_simRecords
protected

Sets of parameters of all the simulations to perform.

Referenced by build_records(), and SimRunner::run().

◆ _temporalParams

map< unsigned int, list < pair< string, string> > > ParamManager::_temporalParams
protected

Lists of parameters to be updated during a simulation indexed by generation update time.


The documentation for this class was generated from the following files:

Generated for Nemo v2.4.0b by  doxygen 1.9.1 -- Nemo is hosted on  Download Nemo

Locations of visitors to this page
Catalogued on GSR