FFSM++  1.1.0
French Forest Sector Model ++
Init Class Reference

Init the environment, the objects and the agents of the model More...

#include <Init.h>

Inheritance diagram for Init:
Collaboration diagram for Init:

Public Member Functions

 Init (ThreadManager *MTHREAD_h)
 
 ~Init ()
 
void setInitLevel (int level_h)
 Wrapper to the correct setInitLevelX() More...
 
void setInitLevel0 ()
 Unused, reserver for future use. More...
 
void setInitLevel1 ()
 Setting up the space, the model objects and the agents (definitions only) More...
 
void setInitLevel2 ()
 Unused, reserver for future use. More...
 
void setInitLevel3 ()
 Linking object to agents and assigning space proprieties to objects and agents. More...
 
void setInitLevel4 ()
 Unused, reserver for future use. More...
 
void setInitLevel5 ()
 Simulation start. More...
 
void setInitLevel6 ()
 End of simulation (e.g. print summary statistics) More...
 
int getInitState ()
 
- Public Member Functions inherited from BaseClass
 BaseClass ()
 
 ~BaseClass ()
 
void msgOut (const int &msgCode_h, const string &msg_h, const bool &refreshGUI_h=true) const
 Overloaded function to print the output log. More...
 
void msgOut (const int &msgCode_h, const int &msg_h, const bool &refreshGUI_h=true) const
 Overloaded function to print the output log. More...
 
void msgOut (const int &msgCode_h, const double &msg_h, const bool &refreshGUI_h=true) const
 Overloaded function to print the output log. More...
 
int s2i (const string &string_h) const
 string to integer conversion More...
 
double s2d (const string &string_h) const
 string to double conversion More...
 
double s2d (const string &string_h, const bool &replaceComma) const
 string to double conversion More...
 
bool s2b (const string &string_h) const
 string to bool conversion More...
 
string i2s (const int &int_h) const
 integer to string conversion More...
 
string d2s (const double &double_h) const
 double to string conversion More...
 
string b2s (const bool &bool_h) const
 bool to string conversion More...
 
vector< int > s2i (const vector< string > &string_h) const
 string to integer conversion (vector) More...
 
vector< double > s2d (const vector< string > &string_h, const bool &replaceComma=false) const
 string to double conversion (vector) More...
 
vector< bool > s2b (const vector< string > &string_h) const
 string to bool conversion (vector) More...
 
vector< string > i2s (const vector< int > &int_h) const
 integer to string conversion (vector) More...
 
vector< string > d2s (const vector< double > &double_h) const
 double to string conversion (vector) More...
 
vector< string > b2s (const vector< bool > &bool_h) const
 bool to string conversion (vector) More...
 
int getType (const string &type_h) const
 Return a type according to enum TYPE_* from a string (eg: "string" -> TYPE_STRING (2)) More...
 
void refreshGUI () const
 Ping to periodically return the control to the GUI. More...
 
template<typename T >
string toString (const T &x) const
 
template<typename T >
stringTo (const std::string &s) const
 
int vSum (const vector< int > &vector_h) const
 
double vSum (const vector< double > &vector_h) const
 
int vSum (const vector< vector< int > > &vector_h) const
 
double vSum (const vector< vector< double > > &vector_h) const
 
void tokenize (const string &str, vector< string > &tokens, const string &delimiter=" ") const
 Tokenize a string using a delimiter (default is space) More...
 
void untokenize (string &str, vector< string > &tokens, const string &delimiter=" ") const
 
template<typename K , typename V >
findMap (const map< K, V > &mymap, const K &key, const int &error_level=MSG_CRITICAL_ERROR, const V &notFoundValue=numeric_limits< V >::min()) const
 Lookup a map for a value. Return the value starting from the key. More...
 
template<typename K , typename V >
void changeMapValue (map< K, V > &mymap, const K &key, const V &value, const int &error_level=MSG_CRITICAL_ERROR)
 Change the value stored in a map given the key and the new value. More...
 
template<typename K , typename V >
void incrMapValue (map< K, V > &mymap, const K &key, const V &value, const int &error_level=MSG_CRITICAL_ERROR)
 Increments a value stored in a map of the specified value, given the key. More...
 
template<typename K , typename V >
void incrOrAddMapValue (map< K, V > &mymap, const K &key, const V &value)
 Increments a value stored in a map of the specified value, given the key. More...
 
template<typename K , typename V >
void resetMapValues (map< K, V > &mymap, const V &value)
 Reset all values stored in a map to the specified one. More...
 
template<typename K , typename V >
map< K, V > vectorToMap (const vector< K > &keys, const V &value=0.0)
 Returns a map built using the given vector and the given (scalar) value as keys/values pairs. More...
 
template<typename T >
vector< T > positionsToContent (const vector< T > &vector_h, const vector< int > &positions)
 Return a vector of content from a vector and a vector of positions (int) More...
 
template<typename V >
void debugMap (const map< iisskey, V > &mymap)
 Debug a map. More...
 
template<typename K , typename V >
void debugMap (const map< K, V > &mymap, const K &key)
 
template<typename K >
int getMaxPos (const vector< K > &v)
 Returns the position of the maximum element in the vector (the last one in case of multiple equivalent maxima) More...
 
template<typename K >
int getMinPos (const vector< K > &v)
 Returns the position of the minimum element in the vector (the first one in case of multiple equivalent minima) More...
 
template<typename K >
getMax (const vector< K > &v)
 Returns the value of the maximum element in the vector (the last one in case of multiple equivalent maxima) More...
 
template<typename K >
getMin (const vector< K > &v)
 Returns the value of the minimum element in the vector (the first one in case of multiple equivalent minima) More...
 
template<typename K >
double getAvg (const vector< K > &v)
 Returns the average of the elements in the vector. More...
 
template<typename K >
double getSd (const vector< K > &v, bool sample=true)
 
template<typename K >
int getPos (const K &element, const vector< K > &v, const int &msgCode_h=MSG_CRITICAL_ERROR)
 
template<typename K >
bool inVector (const K &element, const vector< K > &v)
 
double normSample (const double &avg, const double &stdev, const double &minval=NULL, const double &maxval=NULL) const
 Sample from a normal distribution with bounds. Slower (double time, but still you see the diff only after milion of loops). More...
 
template<typename K >
normSample (normal_distribution< K > &d, std::mt19937 &gen, const K &minval=NULL, const K &maxval=NULL) const
 Sample from a normal distribution with bounds. Faster (half time) as the normal_distribution is made only once. More...
 
template<typename T >
std::string toString (const T &x) const
 

Private Attributes

int InitState
 One of the 7 possible init states (0..6) More...
 
struct tm * current
 
time_t now
 

Additional Inherited Members

- Protected Attributes inherited from BaseClass
ThreadManagerMTHREAD
 Pointer to the Thread manager. More...
 

Detailed Description

Init the environment, the objects and the agents of the model

The Init class is responsable to ask to the various objects to Init themself, in a 7-steps procedures.
The basic idea is to first init the environment: options, settings and space.
Then objects and agents are mould up, objects are assigned to agents and finally agents and objects are collocated in the space.

Author
Antonello Lobianco

Definition at line 45 of file Init.h.

Constructor & Destructor Documentation

Init ( ThreadManager MTHREAD_h)

Definition at line 38 of file Init.cpp.

38  {
39  MTHREAD=MTHREAD_h;
40  InitState=0;
41 }
ThreadManager * MTHREAD
Pointer to the Thread manager.
Definition: BaseClass.h:467
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67
~Init ( )

Definition at line 43 of file Init.cpp.

44 {
45 }

Member Function Documentation

int getInitState ( )
inline

Definition at line 67 of file Init.h.

67 {return InitState;};
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67
void setInitLevel ( int  level_h)

Wrapper to the correct setInitLevelX()

Definition at line 48 of file Init.cpp.

Referenced by MainProgram::run().

48  {
49 
50  switch (level_h){
51  case 0:
52  this->setInitLevel0();
53  break;
54  case 1:
55  this->setInitLevel1();
56  break;
57  case 2:
58  this->setInitLevel2();
59  break;
60  case 3:
61  this->setInitLevel3();
62  break;
63  case 4:
64  this->setInitLevel4();
65  break;
66  case 5:
67  this->setInitLevel5();
68  break;
69  case 6:
70  this->setInitLevel6();
71  break;
72  default:
73  msgOut(MSG_ERROR,"unexpected Init level");
74  }
75 }
Print an ERROR message, but don&#39;t stop the model.
Definition: BaseClass.h:61
void setInitLevel6()
End of simulation (e.g. print summary statistics)
Definition: Init.cpp:181
void msgOut(const int &msgCode_h, const string &msg_h, const bool &refreshGUI_h=true) const
Overloaded function to print the output log.
Definition: BaseClass.cpp:50
void setInitLevel2()
Unused, reserver for future use.
Definition: Init.cpp:148
void setInitLevel0()
Unused, reserver for future use.
Definition: Init.cpp:78
void setInitLevel5()
Simulation start.
Definition: Init.cpp:175
void setInitLevel3()
Linking object to agents and assigning space proprieties to objects and agents.
Definition: Init.cpp:156
void setInitLevel1()
Setting up the space, the model objects and the agents (definitions only)
Definition: Init.cpp:94
void setInitLevel4()
Unused, reserver for future use.
Definition: Init.cpp:167

Here is the call graph for this function:

Here is the caller graph for this function:

void setInitLevel0 ( )

Unused, reserver for future use.

Definition at line 78 of file Init.cpp.

Referenced by setInitLevel().

78  {
79  //unused now
80  InitState=0;
81 }
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67

Here is the caller graph for this function:

void setInitLevel1 ( )

Setting up the space, the model objects and the agents (definitions only)

Setting up the space
Level 1 :

Definition at line 94 of file Init.cpp.

Referenced by setInitLevel().

94  {
95  //Loading data from file.
96  InitState=1;
97  msgOut(MSG_DEBUG,"Entering Init state "+i2s(InitState));
98  time(&now);
99  current = localtime(&now);
100  string timemessage = "Local time is "+i2s(current->tm_hour)+":"+i2s(current->tm_min)+":"+ i2s(current->tm_sec);
101  msgOut(MSG_INFO, timemessage);
102  string scenarioName = MTHREAD->getScenarioName();
103  MTHREAD->MD->setScenarioData(); // set the characteristics (including overriding tables of the scneario)
106  if(MTHREAD->MD->getBoolSetting("newRandomSeed")){
107  // See here for how to use the new C++11 random functions:
108  // http://www.johndcook.com/cpp_TR1_random.html
109  // usage example:
110  // std::normal_distribution<double> d(100000,3);
111  // double x = d(*MTHREAD->gen);
112  srand(time(NULL)+getpid());
113  //std::random_device randev;
114  //MTHREAD->gen = new std::mt19937(randev());
115  MTHREAD->gen = new std::mt19937(time(0)+getpid());
116 
117  //TO.DO change scenarioname to scenarioname_random number
118  uniform_int_distribution<> ud(1, 1000000);
119  int randomscenario = ud(*MTHREAD->gen);
120 
121  MTHREAD->setScenarioName(scenarioName+"_"+i2s(randomscenario));
122 
123  } else {
124  MTHREAD->gen = new std::mt19937(NULL);
125  }
126  MTHREAD->SCD->setYear(MTHREAD->MD->getIntSetting("initialYear"));
128 
136  MTHREAD->MD->applyOverrides(); // Cancel all reg1 level data and trasform them in reg2 level if not already existing. Acts on forDataMap, prodDataMap and reclRules vectors
142  MTHREAD->GIS->setSpace();
144  MTHREAD->TEST->fullTest(); // normally empty function
145 }
int getIntSetting(const string &name_h, int position=0, int reg=WORLD) const
Definition: ModelData.cpp:1105
void setDefaultPathogenRules()
Definition: ModelData.cpp:678
void setDefaultForData()
Definition: ModelData.cpp:481
bool getBoolSetting(const string &name_h, int position=0, int reg=WORLD) const
Definition: ModelData.cpp:1117
void setScenarioProdData()
Definition: ModelData.cpp:561
string i2s(const int &int_h) const
integer to string conversion
Definition: BaseClass.cpp:219
ThreadManager * MTHREAD
Pointer to the Thread manager.
Definition: BaseClass.h:467
ModelData * MD
the model data object
Definition: ThreadManager.h:72
void applyForestReclassification()
Apply the forest reclassification with the rules defined in reclRules sheet.
Definition: Gis.cpp:439
Scheduler * SCD
the scheduler object (simulation-loops scheduler)
Definition: ThreadManager.h:75
void msgOut(const int &msgCode_h, const string &msg_h, const bool &refreshGUI_h=true) const
Overloaded function to print the output log.
Definition: BaseClass.cpp:50
void setDefaultSettings()
Definition: ModelData.cpp:194
Gis * GIS
GIS information and methods.
Definition: ThreadManager.h:73
void setScenarioForData()
Definition: ModelData.cpp:500
void setScenarioName(const string &scenarioName_h)
void fullTest()
Tests that require a full sandbox object including MTHREAD. Normally empty.
Definition: Sandbox.cpp:599
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67
void applyDebugMode()
Works only a specified subset of regions and products.
Definition: ModelData.cpp:957
void applyOverrides()
Cancel all reg1 level data and trasform them in reg2 level if not already existing.
Definition: ModelData.cpp:749
Print a debug message, normally filtered out.
Definition: BaseClass.h:58
void setScenarioProductResourceMatrixLink()
Definition: ModelData.cpp:632
void setSpace()
Set the initial space environment, including loading data from files.
Definition: Gis.cpp:57
string getScenarioName()
void cacheSettings()
Called after input reading, it fix frequently used data;.
Definition: ModelData.cpp:305
void setReclassificationRules()
Definition: ModelData.cpp:663
void setForestTypes()
Definition: ModelData.cpp:648
std::mt19937 * gen
used in the sampling from normal distribution
Definition: ThreadManager.h:83
struct tm * current
Definition: Init.h:71
void setScenarioSettings()
Definition: ModelData.cpp:224
Print an INFO message.
Definition: BaseClass.h:59
void setYear(const int &year_h)
Definition: Scheduler.h:50
void createRegions()
Definition: ModelData.cpp:317
void setDefaultProductResourceMatrixLink()
Definition: ModelData.cpp:618
void setScenarioPathogenRules()
Definition: ModelData.cpp:706
void setScenarioData()
Set the infos about this scenario (long description and overriding tables)
Definition: ModelData.cpp:170
void setDefaultProdData()
Definition: ModelData.cpp:531
Sandbox * TEST
Various debugging code for development.
Definition: ThreadManager.h:80
time_t now
Definition: Init.h:72

Here is the call graph for this function:

Here is the caller graph for this function:

void setInitLevel2 ( )

Unused, reserver for future use.

Definition at line 148 of file Init.cpp.

Referenced by setInitLevel().

148  {
149  InitState=2;
150 }
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67

Here is the caller graph for this function:

void setInitLevel3 ( )

Linking object to agents and assigning space proprieties to objects and agents.

Init 3 run the simulation/assign the values for the pre-optimisation year(s)

Definition at line 156 of file Init.cpp.

Referenced by setInitLevel().

156  {
157  InitState=3;
158  MTHREAD->DO->initOutput(); // initialize the output files
159  if(MTHREAD->MD->getBoolSetting("usePixelData")){
161  } else {
163  }
164 }
void initOutput()
Definition: Output.cpp:48
void runInitPeriod()
Definition: ModelCore.cpp:50
bool getBoolSetting(const string &name_h, int position=0, int reg=WORLD) const
Definition: ModelData.cpp:1117
ThreadManager * MTHREAD
Pointer to the Thread manager.
Definition: BaseClass.h:467
ModelData * MD
the model data object
Definition: ThreadManager.h:72
ModelCore * CORE
Core of the model.
Definition: ThreadManager.h:77
ModelCoreSpatial * SCORE
Core of the model (spatial version)
Definition: ThreadManager.h:78
Output * DO
data output
Definition: ThreadManager.h:76
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67

Here is the call graph for this function:

Here is the caller graph for this function:

void setInitLevel4 ( )

Unused, reserver for future use.

Definition at line 167 of file Init.cpp.

Referenced by setInitLevel().

167  {
168  InitState=4;
169 }
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67

Here is the caller graph for this function:

void setInitLevel5 ( )

Simulation start.

Init level 5 pass the controll to the Scheduler object for the running of the simulations.

Definition at line 175 of file Init.cpp.

Referenced by setInitLevel().

175  {
176  InitState=5;
177  MTHREAD->SCD->run(); // !!!! go "bello" !!!! start the simulation !!!!!
178 }
void run()
Definition: Scheduler.cpp:41
ThreadManager * MTHREAD
Pointer to the Thread manager.
Definition: BaseClass.h:467
Scheduler * SCD
the scheduler object (simulation-loops scheduler)
Definition: ThreadManager.h:75
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67

Here is the call graph for this function:

Here is the caller graph for this function:

void setInitLevel6 ( )

End of simulation (e.g. print summary statistics)

Definition at line 181 of file Init.cpp.

Referenced by setInitLevel().

181  {
182  InitState=6;
184  msgOut(MSG_INFO, "Model has ended scheduled simulation in a regular way.");
185  time(&now);
186  current = localtime(&now);
187  string timemessage = "Local time is "+i2s(current->tm_hour)+":"+i2s(current->tm_min)+":"+ i2s(current->tm_sec);
188  msgOut(MSG_INFO, timemessage);
189 }
string i2s(const int &int_h) const
integer to string conversion
Definition: BaseClass.cpp:219
ThreadManager * MTHREAD
Pointer to the Thread manager.
Definition: BaseClass.h:467
void msgOut(const int &msgCode_h, const string &msg_h, const bool &refreshGUI_h=true) const
Overloaded function to print the output log.
Definition: BaseClass.cpp:50
Output * DO
data output
Definition: ThreadManager.h:76
int InitState
One of the 7 possible init states (0..6)
Definition: Init.h:67
void printFinalOutput()
Definition: Output.cpp:462
struct tm * current
Definition: Init.h:71
Print an INFO message.
Definition: BaseClass.h:59
time_t now
Definition: Init.h:72

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

struct tm* current
private

Definition at line 71 of file Init.h.

Referenced by setInitLevel1(), and setInitLevel6().

int InitState
private

One of the 7 possible init states (0..6)

Definition at line 67 of file Init.h.

Referenced by Init(), setInitLevel0(), setInitLevel1(), setInitLevel2(), setInitLevel3(), setInitLevel4(), setInitLevel5(), and setInitLevel6().

time_t now
private

Definition at line 72 of file Init.h.

Referenced by setInitLevel1(), and setInitLevel6().


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