← Documentation
ADS-IDAC Engine 5.0.0
ControlPanelControl.cpp
Go to the documentation of this file.
1// ControlPanelControl.cpp: implementation of the ControlPanelControl class.
2//
4
6#include "../Branch/BranchRecord.h"
7#include <boost/serialization/export.hpp>
8#include "../Global/SimulationContext.h"
9#include <boost/archive/binary_oarchive.hpp>
10#include <boost/archive/binary_iarchive.hpp>
11BOOST_CLASS_EXPORT_IMPLEMENT(ControlPanelControl)
12using namespace std;
13
15// Construction/Destruction
17
19{
20}
21
23{
25}
26typedef map<string, SystemControl *> cp_type;
27
29 int n_control, i;
30 SystemControl *element_ptr;
31 string control_type, control_name, control_unit;
32
33//
34 //Control Value
35 fin >> control_type >> n_control;
36 for(i = 0; i < n_control; i++){
37 auto cv_ptr = make_unique<ControlValue>();
38 cv_ptr->readInfoFromFile(fin);
39 control_value_array.push_back(std::move(cv_ptr));
40 }
41 //Control State
42 fin >> control_type >> n_control;
43 for(i = 0; i < n_control; i++){
44 auto cs_ptr = make_unique<ControlState>();
45 cs_ptr->readInfoFromFile(fin);
46 control_state_array.push_back(std::move(cs_ptr));
47 }
48 //build up control Map====================================
49 //Control Value
50 for(i = 0; i < control_value_array.size(); i++){
51 element_ptr = control_value_array.at(i).get();
52 control_map.insert(cp_type::value_type(control_value_array.at(i)->getDisplayName(), element_ptr));
53 }
54 //Control State
55 for(i = 0; i < control_state_array.size(); i++){
56 element_ptr = control_state_array.at(i).get();
57 control_map.insert(cp_type::value_type(control_state_array.at(i)->getDisplayName(), element_ptr));
58 }
59 return 0;
60}
62 decltype(control_state_array)::iterator cs_itr;
63 decltype(control_value_array)::iterator cv_itr;
64 for(cs_itr = control_state_array.begin(); cs_itr != control_state_array.end(); cs_itr++){
65 (*cs_itr)->initiateControlValue();
66 (*cs_itr)->getDisplayedControlState();
67 }
68 for(cv_itr = control_value_array.begin(); cv_itr != control_value_array.end(); cv_itr++){
69 (*cv_itr)->initiateControlValue();
70 (*cv_itr)->getDisplayedControlValue();
71 }
72}
74 decltype(control_state_array)::iterator cs_itr;// control_state_array;
75 decltype(control_value_array)::iterator cv_itr;// control_value_array;
76 for(cs_itr = control_state_array.begin(); cs_itr != control_state_array.end(); cs_itr++){
77 fout << '\t' << (*cs_itr)->getDisplayName();
78 }
79 for(cv_itr = control_value_array.begin(); cv_itr != control_value_array.end(); cv_itr++){
80 fout << '\t' << (*cv_itr)->getDisplayName();
81 }
82}
84 int i;
85 for(i = 0; i < control_state_array.size(); i++){
86 fout << '\t' << "Cntrl Value";
87 }
88 for(i = 0; i < control_value_array.size(); i++){
89 fout << '\t' << "Cntrl Value";
90 }
91}
92
94 decltype(control_state_array)::iterator cs_itr;// control_state_array;
95 decltype(control_value_array)::iterator cv_itr;// control_value_array;
96 for(cs_itr = control_state_array.begin(); cs_itr != control_state_array.end(); cs_itr++){
97 fout << '\t' << (*cs_itr)->getDisplayedControlStateString();
98 }
99 for(cv_itr = control_value_array.begin(); cv_itr != control_value_array.end(); cv_itr++){
100 fout << '\t' << (*cv_itr)->getDisplayedControlValue();
101 }
102}
104 return (control_value_array.size() + control_state_array.size());
105}
106
108 map<string, SystemControl *>::iterator map_itr;
109 SystemControl *ce = 0;
110 map_itr = control_map.find(_ctrl_name);
111 if (map_itr == control_map.end()){
112 ofstream fout("err messages.txt", ios::app);
113 cout << "ControlPanelControl::getControlFromMap " << _ctrl_name
114 << " can not be found." << endl;
115 fout << r5pars_.timesno << " ControlPanelControl::getControlFromMap " << _ctrl_name
116 << " can not be found.\n";
117 fout.close();
118 r5pars_.sim_err = true;
119 g_sim.Branch_center.setTempESMessage("ControlPanelControl::getControlFromMap err.");
121 return ce;
122 }
123 else{
124 return map_itr->second;
125 }
126}
127void ControlPanelControl::executeValueControl(string _ctrl_name, double _ctrl_value){
128 map<string, SystemControl *>::iterator m_itr;
129 SystemControl *sc_pt;
130 ControlState *ctrl_state_pt;
131 ControlValue *ctrl_value_pt;
132 //
133 m_itr = control_map.find(_ctrl_name);
134 if(m_itr == control_map.end()){
135 ofstream fout("err messages.txt", ios::app);
136 cout << "ControlPanelControl::executeValueControl control name: " << _ctrl_name << " can not be found." << endl;
137 fout << r5pars_.timesno << " ControlPanelControl::executeValueControl control name: " << _ctrl_name << " can not be found.\n";
138 fout.close();
139 r5pars_.sim_err = true;
140 g_sim.Branch_center.setTempESMessage("ControlPanelControl::executeValueControl err.");
142 }
143 else if((sc_pt = m_itr->second)->getTypeOfControl() == DisplayType::ControlValue){
144 ctrl_value_pt = (ControlValue *) sc_pt;
145 ctrl_value_pt->performControl(g_sim.Plant, _ctrl_value);
146 }
147 else{
148 ctrl_state_pt = (ControlState *) sc_pt;
149 ctrl_state_pt->performValueControl(g_sim.Plant, _ctrl_value);
150 }
151};
152void ControlPanelControl::executeStateControl(string _ctrl_name, int _ctrl_state){
153 map<string, SystemControl *>::iterator m_itr;
154 SystemControl *sc_pt;
155 ControlState *ctrl_state_pt;
156 //
157 m_itr = control_map.find(_ctrl_name);
158 if(m_itr == control_map.end()){
159 ofstream fout("err messages.txt", ios::app);
160 cout << "ControlPanelControl::executeStateControl control name: " << _ctrl_name << " can not be found." << endl;
161 fout << r5pars_.timesno << " ControlPanelControl::executeStateControl control name: " << _ctrl_name << " can not be found.\n";
162 fout.close();
163 r5pars_.sim_err = true;
164 g_sim.Branch_center.setTempESMessage("ControlPanelControl::executeStateControl err.");
166 }
167 else if((sc_pt = m_itr->second)->getTypeOfControl() == DisplayType::ControlState){
168 ctrl_state_pt = (ControlState *) sc_pt;
169 ctrl_state_pt->performDisplayedControlState(g_sim.Plant, _ctrl_state);
170 }
171 else{
172 ofstream fout("err messages.txt", ios::app);
173 cout << "ControlPanelControl::executeValueControl control name: " << _ctrl_name << " is a value control not state control" << endl;
174 fout << r5pars_.timesno << " ControlPanelControl::executeValueControl control name: " << _ctrl_name << " is a value control not state control.\n";
175 fout.close();
176 r5pars_.sim_err = true;
177 g_sim.Branch_center.setTempESMessage("ControlPanelControl::executeStateControl err.");
179 }
180};
182 for(auto& src : _cp.control_state_array){
183 auto ptr = make_unique<ControlState>();
184 ptr->copyControlState(*src);
185 this->control_map.insert(cp_type::value_type(ptr->getDisplayName(), ptr.get()));
186 this->control_state_array.push_back(std::move(ptr));
187 }
188 for(auto& src : _cp.control_value_array){
189 auto ptr = make_unique<ControlValue>();
190 ptr->copyControlValue(*src);
191 this->control_map.insert(cp_type::value_type(ptr->getDisplayName(), ptr.get()));
192 this->control_value_array.push_back(std::move(ptr));
193 }
194}
196 control_value_array.clear();
197 control_state_array.clear();
198 control_map.clear();
199}
201 int i, num;
202 num = control_value_array.size();
203 fout << "ControlPanelControl\n" << num << '\n';
204 for(i = 0; i < num; i++){
205 control_value_array.at(i)->saveControlValueToFile(fout);
206 }
207 num = control_state_array.size();
208 fout << num << '\n';
209 for(i = 0; i < num; i++){
210 control_state_array.at(i)->saveControlStateToFile(fout);
211 }
212}
214 int n_control, i;
215 SystemControl *element_ptr;
216 string control_type, control_name, control_unit, str;
217
218//
219 //Control Value
220 fin >> str >> n_control;
221 for(i = 0; i < n_control; i++){
222 auto cv_ptr = make_unique<ControlValue>();
223 cv_ptr->retrieveControlValueFromFile(fin);
224 control_value_array.push_back(std::move(cv_ptr));
225 }
226 //Control State
227 fin >> n_control;
228 for(i = 0; i < n_control; i++){
229 auto cs_ptr = make_unique<ControlState>();
230 cs_ptr->retrieveControlStateFromFile(fin);
231 control_state_array.push_back(std::move(cs_ptr));
232 }
233 //build up control Map====================================
234 //Control Value
235 for(i = 0; i < control_value_array.size(); i++){
236 element_ptr = control_value_array.at(i).get();
237 control_map.insert(cp_type::value_type(control_value_array.at(i)->getDisplayName(), element_ptr));
238 }
239 //Control State
240 for(i = 0; i < control_state_array.size(); i++){
241 element_ptr = control_state_array.at(i).get();
242 control_map.insert(cp_type::value_type(control_state_array.at(i)->getDisplayName(), element_ptr));
243 }
244}
map< string, SystemControl * > cp_type
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
void setTempTypeOfConsequence(Consequence)
Stores the consequence of the end state the running sequence will get.
void setTempESMessage(std::string)
Stores the description of the end state the running sequence will get if it is terminated (set by mod...
void outputParametersUnitsToFile(std::ofstream &)
void saveControlPanelControlToFile(std::ofstream &)
std::vector< std::unique_ptr< ControlValue > > control_value_array
std::map< std::string, SystemControl * > control_map
SystemControl * getControlFromMap(std::string)
void outputParametersValuesToFile(std::ofstream &)
void outputParametersLabelsToFile(std::ofstream &)
std::vector< std::unique_ptr< ControlState > > control_state_array
int readInfoFromFile(std::ifstream &)
void executeValueControl(std::string, double)
void executeStateControl(std::string, int)
void copyControlPanelControl(ControlPanelControl &)
void retrieveControlPanelControlFromFile(std::ifstream &)
void performValueControl(SystemModule &, double)
void performDisplayedControlState(SystemModule &, int)
void performControl(SystemModule &, double)
struct @0 r5pars_
SystemModule Plant
Maps RELAP5 card numbers to C++ objects.
BranchRecord Branch_center
Dynamic event tree state.