← Documentation
ADS-IDAC Engine 5.0.0
Scheduler.h
Go to the documentation of this file.
1#pragma once
2
14
15#include <typeinfo>
16#ifdef WINDOWS
17#include <direct.h>
18#include <boost/serialization/export.hpp>
19 #define GetCurrentDir _getcwd
20#else
21#include <unistd.h>
22#define GetCurrentDir getcwd
23#endif
24
25#include <stdlib.h>
26#include <string.h>
27#include <string>
28#include <fstream>
29#include <iostream>
30#include <boost/serialization/string.hpp>
31#include <boost/archive/text_iarchive.hpp>
32#include <boost/archive/text_oarchive.hpp>
33#include "../Global/SimConstants.h"
34#include "../Global/TermConversions.h"
35#include <boost/serialization/export.hpp>
36#include <boost/serialization/access.hpp>
37
38
40{
41public:
43 Scheduler();
44 virtual ~Scheduler();
65 void endSimulation();
75 void setProjectDirectory(std::string);
76 void setOutputDirectory(std::string);
77 void setESDirectory(std::string);
78 void setPEDirectory(std::string);
79 void setKPSDirectory(std::string);
80 void setInputDeckFileDirectoryAndName(std::string);
82 int getSolverPort() const;
83 void setEOPDirectory(std::string);
84 void setODMDirectory(std::string);
85 void setOATDirectory(std::string);
86 void setOCTDirectory(std::string);
87 void setHardwareReliabilityDirectory(std::string);
88 void setIndicatorsDirectory(std::string);
89 void setSchedulerDirectory(std::string);
90 void setSystemDirectory(std::string);
91 void setSupportSystemsDirectory(std::string);
106 std::string getProjectDirectory();
107 std::string getOutputDirectory();
108 std::string getESDirectory();
109 std::string getPEDirectory();
110 std::string getKPSDirectory();
112 std::string getEOPDirectory();
113 std::string getODMDirectory();
114 std::string getOATDirectory();
115 std::string getOCTDirectory();
117 std::string getIndicatorsDirectory();
118 std::string getSchedulerDirectory();
119 std::string getSystemDirectory();
120 std::string getSupportSystemsDirectory();
146 void setODMActionTimeMultiplier(double);
148 void setOATActionTimeMultiplier(double);
150 void setOCTActionTimeMultiplier(double);
156 void setInfoOfSequenceTerminatedByAlarm(std::string);
162 void copyScheduler(Scheduler &);
166 void saveSchedulerToFile(std::ofstream &);
169 void retrieveSchedulerFromFile(std::ifstream &);
170 void setFileNameNodeMultiProcessor(std::string);
171 void setFileNameIndeck(std::string);
172 void setFileNameRestart(std::string);
173 void setFileNameES(std::string);
174 std::string getFileNameNodeMultiProcessor();
175 std::string getFileNameIndeck();
176 std::string getFileNameRestart();
177 std::string getFileNameES();
183 void resetScheduler();
225 void parseOptions(int argc, char* argv[]);
227 int getVizPort() const { return viz_port_; }
228
229 // #ifndef _CONSOLE
230 // int getClusterNodeSequenceFromSrv() const;
231 // int getPENodeSequenceFromSrv() const;
232 // int getESNodeSequenceFromSrv() const;
233 // #endif
234private:
247 int solver_port_ = 9090;
248 int viz_port_ = 0;
249
251 template<class Archive>
252 void serialize(Archive &ar, const unsigned int version) {
253 ar & m_iMode;
255 ar & output_directory;
256 ar & es_directory;
257 ar & pe_directory;
258 ar & kps_directory;
260 ar & eop_directory;
261 ar & ODM_directory;
262 ar & OAT_directory;
263 ar & OCT_directory;
268 ar & system_directory;
279 ar & file_name_indeck;
281 ar & file_name_ES;
282 }
283};
284
285
286BOOST_CLASS_EXPORT_KEY(Scheduler)
ConsoleMode
Definition: SimConstants.h:20
std::string getOATDirectory()
Definition: Scheduler.cpp:622
void setSequenceTruncationProbability(double)
void setFileNameNodeMultiProcessor(std::string)
Definition: Scheduler.cpp:945
ConsoleMode getMiMode()
Definition: Scheduler.cpp:1003
void setODMDirectory(std::string)
Definition: Scheduler.cpp:670
int getVizPort() const
Definition: Scheduler.h:227
std::string info_sequence_terminated_by_non_response_action
Definition: Scheduler.h:245
bool getSequenceTerminatedByAlarm()
Definition: Scheduler.cpp:811
void setInfoOfSequenceTerminatedByAlarm(std::string)
Definition: Scheduler.cpp:821
std::string file_name_restart
Definition: Scheduler.h:246
void readInfoFromFile(ConsoleMode iMode=ConsoleMode::Console)
Line-based alternative to parseOptions(); the engine's entry points do not call it.
Definition: Scheduler.cpp:471
void setFileNameRestart(std::string)
Definition: Scheduler.cpp:951
void setKPSDirectory(std::string)
Definition: Scheduler.cpp:661
std::string OAT_directory
Definition: Scheduler.h:238
bool checkForTerminatingCurrentSequence()
Decides whether the running sequence ends at this evaluation point.
Definition: Scheduler.cpp:694
std::string pe_directory
Definition: Scheduler.h:236
double sequence_truncation_probabiliy
Definition: Scheduler.h:240
void setESDirectory(std::string)
Definition: Scheduler.cpp:655
std::string getFileNameIndeck()
Definition: Scheduler.cpp:960
double getODMActionTimeMultiplier()
Definition: Scheduler.cpp:792
void setSequenceTruncationTime(double)
void setInfoSequenceTerminatedByNonResponseAction(std::string)
Definition: Scheduler.cpp:827
Scheduler()
Constructs a scheduler in the state set by resetScheduler().
Definition: Scheduler.cpp:52
std::string kps_directory
Definition: Scheduler.h:236
std::string getProjectDirectory()
Definition: Scheduler.cpp:595
double getSequenceTruncationTime()
Definition: Scheduler.cpp:646
void setSchedulerDirectory(std::string)
Definition: Scheduler.cpp:685
void setSequenceTerminatedByNonResponseAction(bool)
Definition: Scheduler.cpp:814
void setODMActionTimeMultiplier(double)
Definition: Scheduler.cpp:789
void setHardwareReliabilityDirectory(std::string)
Definition: Scheduler.cpp:679
void setSystemDirectory(std::string)
Definition: Scheduler.cpp:688
std::string getIndicatorsDirectory()
Definition: Scheduler.cpp:631
double getSequenceTruncationProbability()
Definition: Scheduler.cpp:643
void setFileNameIndeck(std::string)
Definition: Scheduler.cpp:948
std::string getESDirectory()
Definition: Scheduler.cpp:601
std::string getFileNameNodeMultiProcessor()
Definition: Scheduler.cpp:957
int solver_port_
Definition: Scheduler.h:247
std::string getSupportSystemsDirectory()
Definition: Scheduler.cpp:640
void setSequenceTerminatedByAlarm(bool)
Definition: Scheduler.cpp:808
std::string info_of_sequence_terminated_by_alarm
Definition: Scheduler.h:244
std::string getHardwareReliabilityDirectory()
Definition: Scheduler.cpp:628
std::string getSchedulerDirectory()
Definition: Scheduler.cpp:634
void saveSchedulerToFile(std::ofstream &)
Writes the scheduler to a text restart stream, starting with the label Scheduler. Strings are written...
Definition: Scheduler.cpp:834
bool getSequenceTerminatedByNonResponseAction()
Definition: Scheduler.cpp:817
std::string input_deck_file_directory_and_name
Definition: Scheduler.h:237
void serialize(Archive &ar, const unsigned int version)
Definition: Scheduler.h:252
void setEOPDirectory(std::string)
Definition: Scheduler.cpp:667
void copyScheduler(Scheduler &)
Copies directories, truncation settings, multipliers, termination flags, file names and mode from ano...
Definition: Scheduler.cpp:911
std::string getFileNameRestart()
Definition: Scheduler.cpp:963
std::string getInfoSequenceTerminatedByNonResponseAction()
Definition: Scheduler.cpp:830
std::string project_directory
Definition: Scheduler.h:236
std::string OCT_directory
Definition: Scheduler.h:238
double OCT_action_time_multiplier
Definition: Scheduler.h:241
void setOCTDirectory(std::string)
Definition: Scheduler.cpp:676
std::string ODM_directory
Definition: Scheduler.h:238
double sequence_truncation_time
Definition: Scheduler.h:240
void endSimulation()
Does nothing.
Definition: Scheduler.cpp:469
std::string file_name_NodeMultiProcessor
Definition: Scheduler.h:246
void retrieveSchedulerFromFile(std::ifstream &)
Reads the layout written by saveSchedulerToFile. A stream that does not start with the Scheduler labe...
Definition: Scheduler.cpp:860
std::string getOCTDirectory()
Definition: Scheduler.cpp:625
std::string hardware_reliability_directory
Definition: Scheduler.h:239
std::string getFileNameES()
Definition: Scheduler.cpp:966
std::string file_name_ES
Definition: Scheduler.h:246
std::string system_directory
Definition: Scheduler.h:239
void setProjectDirectory(std::string)
Definition: Scheduler.cpp:649
void setIndicatorsDirectory(std::string)
Definition: Scheduler.cpp:682
void setOATActionTimeMultiplier(double)
Definition: Scheduler.cpp:795
bool sequence_terminated_by_non_response_action
Definition: Scheduler.h:243
void setSupportSystemsDirectory(std::string)
Definition: Scheduler.cpp:691
void setPEDirectory(std::string)
Definition: Scheduler.cpp:658
std::string getInfoOfSequenceTerminatedByAlarm()
Definition: Scheduler.cpp:824
void parseOptions(int argc, char *argv[])
Parses the command line and ZiniADS.txt, fills this scheduler and g_sim.config, and reads ZCtrlPar....
Definition: Scheduler.cpp:59
double ODM_action_time_multiplier
Definition: Scheduler.h:241
void setOCTActionTimeMultiplier(double)
Definition: Scheduler.cpp:801
std::string getPEDirectory()
Definition: Scheduler.cpp:604
int getSolverPort() const
Definition: Scheduler.cpp:613
void setFileNameES(std::string)
Definition: Scheduler.cpp:954
void setOATDirectory(std::string)
Definition: Scheduler.cpp:673
bool sequence_terminated_by_alarm
Definition: Scheduler.h:242
void initiationForSimulation(ConsoleMode iMode=ConsoleMode::Console)
Prepares the RELAP5 bridge and the working directory for a run. Call it after parseOptions().
Definition: Scheduler.cpp:364
friend class boost::serialization::access
Definition: Scheduler.h:250
void setMiMode(ConsoleMode)
Definition: Scheduler.cpp:1000
std::string output_directory
Definition: Scheduler.h:236
double getOATActionTimeMultiplier()
Definition: Scheduler.cpp:798
std::string getSystemDirectory()
Definition: Scheduler.cpp:637
ConsoleMode m_iMode
Definition: Scheduler.h:235
std::string getOutputDirectory()
Definition: Scheduler.cpp:598
std::string support_systems_directory
Definition: Scheduler.h:238
double OAT_action_time_multiplier
Definition: Scheduler.h:241
std::string file_name_indeck
Definition: Scheduler.h:246
void setOutputDirectory(std::string)
Definition: Scheduler.cpp:652
std::string getInputDeckFileDirectoryAndName()
Definition: Scheduler.cpp:610
std::string scheduler_directory
Definition: Scheduler.h:239
std::string getEOPDirectory()
Definition: Scheduler.cpp:616
std::string getODMDirectory()
Definition: Scheduler.cpp:619
std::string getKPSDirectory()
Definition: Scheduler.cpp:607
void resetScheduler()
Resets every member to its default: multipliers 1.0, termination flags off, all directories,...
Definition: Scheduler.cpp:969
void setInputDeckFileDirectoryAndName(std::string)
Definition: Scheduler.cpp:664
std::string indicators_directory
Definition: Scheduler.h:239
double getOCTActionTimeMultiplier()
Definition: Scheduler.cpp:804
std::string es_directory
Definition: Scheduler.h:236
std::string eop_directory
Definition: Scheduler.h:238
virtual ~Scheduler()
Definition: Scheduler.cpp:56
int viz_port_
Definition: Scheduler.h:248