← Documentation
ADS-IDAC Engine 5.0.0
KeyParameterHistoryUnit.cpp
Go to the documentation of this file.
1// KeyParameterHistoryUnit.cpp: implementation of the KeyParameterHistoryUnit class.
2//
4
6#include "../ControlPanel/ControlPanelAlarm.h"
7#include "../ControlPanel/ControlPanelDisplay.h"
8#include "../ControlPanel/ControlPanelControl.h"
9#include "../Crew/KBHardWiredUnit.h"
10#include "../Crew/KB.h"
11#include "fmodule.h"
12#include "../Crew/OperatorDM.h"
13#include "../Crew/OperatorAT.h"
14#include "../ControlPanel/ControlPanel.h"
15#include "../Crew/SymptomUnit.h"
16#include "../Crew/DiagnosisEventUnit.h"
17#include "../Crew/EventSymptomMatrix.h"
18#include "../Crew/SPDS.h"
19#include "../Crew/SPDSUnit.h"
20#include "../Crew/TimeConstrainedUnit.h"
21#include "../Crew/TimeConstrainedModule.h"
22#include <boost/serialization/export.hpp>
23#include "SimulationContext.h"
24#include <boost/archive/binary_oarchive.hpp>
25#include <boost/archive/binary_iarchive.hpp>
26BOOST_CLASS_EXPORT_IMPLEMENT(KeyParameterHistoryUnit)
27using namespace std;
28
29
31// Construction/Destruction
33
35{
36
37}
38
40{
41
42}
46 vector<unique_ptr<DisplayParameterValue>>::iterator dpv_itr;
47 vector<unique_ptr<DisplayParameterValueRate>>::iterator dpvr_itr;
48 vector<unique_ptr<DisplayHeatStructure>>::iterator hs_itr;
49 vector<unique_ptr<DisplayComponentState>>::iterator dcs_itr;
50 vector<unique_ptr<DisplaySupportSystemState>>::iterator dsss_itr;
51 vector<unique_ptr<AlarmParameter>>::iterator ap_itr;
52 vector<unique_ptr<AlarmComponent>>::iterator ac_itr;
53 vector<unique_ptr<AlarmTwoParameterDifference>>::iterator atpd_itr;
54 vector<unique_ptr<ControlState>>::iterator cs_itr;
55 vector<unique_ptr<ControlValue>>::iterator cv_itr;
56 decltype(g_sim.Decision_Maker.knowledge_base.hard_wired_diagnosis)::iterator hwd_itr;
57 decltype(g_sim.Decision_Maker.diagnosis_matrix.symptoms)::iterator symptoms_itr;
58 decltype(g_sim.Decision_Maker.diagnosis_matrix.events)::iterator events_itr;
59 decltype(g_sim.Decision_Maker.safety_parameters.spds_input_array)::iterator spds_input_array_itr;
60 decltype(g_sim.Decision_Maker.time_constrained_load.Time_Constrained_Parameter_Array)::iterator time_constrained_data_itr;
61
62 //
63 current_time = r5pars_.timesno;
64 //Display
65 for(dpv_itr = g_sim.Indicator.indicators.parameter_value_array.begin(); dpv_itr != g_sim.Indicator.indicators.parameter_value_array.end(); dpv_itr++){
66 this->parameter_value_array.push_back((*dpv_itr)->getDisplayedParameterValue());
67 }
68 for(dpvr_itr = g_sim.Indicator.indicators.parameter_trend_array.begin(); dpvr_itr != g_sim.Indicator.indicators.parameter_trend_array.end(); dpvr_itr++){
69 this->parameter_trend_array.push_back((*dpvr_itr)->getRateOfChange());
70 }
71 for(hs_itr = g_sim.Indicator.indicators.heat_structure_array.begin(); hs_itr != g_sim.Indicator.indicators.heat_structure_array.end(); hs_itr++){
72 this->mesh_point_value_array.push_back((*hs_itr)->getDisplayedParameterValue());
73 }
74 for(dcs_itr = g_sim.Indicator.indicators.component_state_array.begin(); dcs_itr != g_sim.Indicator.indicators.component_state_array.end(); dcs_itr++){
75 this->component_state_array.push_back((*dcs_itr)->getDisplayedComponentOperationalState());
76 }
78 this->component_state_array.push_back((*dsss_itr)->getDisplayedSupportSystemOperationalState());
79 }
80 //alarms
82 this->alarm_parameter_value_array.push_back((*ap_itr)->getDisplayedAlarmState());
83 }
85 this->alarm_component_state_array.push_back((*ac_itr)->getDisplayedAlarmState());
86 }
87 for(atpd_itr = g_sim.Indicator.alarms.alarm_value_difference_array.begin(); atpd_itr != g_sim.Indicator.alarms.alarm_value_difference_array.end(); atpd_itr++){
88 this->alarm_value_difference_array.push_back((*atpd_itr)->getDisplayedAlarmState());
89 }
90 //controls
91 for(cs_itr = g_sim.Indicator.controls.control_state_array.begin(); cs_itr != g_sim.Indicator.controls.control_state_array.end(); cs_itr++){
92 // this->control_state_array.push_back((*cs_itr)->getDisplayedControlValue());
93 // modified by kac 1/15/07 to display actual control value for manual actions
94 this->control_state_array.push_back((*cs_itr)->getControlValue());
95 }
96 for(cv_itr = g_sim.Indicator.controls.control_value_array.begin(); cv_itr != g_sim.Indicator.controls.control_value_array.end(); cv_itr++){
97 // this->control_value_array.push_back((*cv_itr)->getDisplayedControlValue());
98 // modified by kac 1/15/07 to display actual control value for manual actions
99 this->control_value_array.push_back((*cv_itr)->getControlValue());
100 }
102 this->ODM_hardwiredKB_confidence.push_back((*hwd_itr)->getConfidenceLevel());
103 }
105 this->OAT_hardwiredKB_confidence.push_back((*hwd_itr)->getConfidenceLevel());
106 }
107 //
108 for(symptoms_itr = g_sim.Decision_Maker.diagnosis_matrix.symptoms.begin();
109 symptoms_itr != g_sim.Decision_Maker.diagnosis_matrix.symptoms.end(); symptoms_itr++){
110 this->ODM_symptom_confidence.push_back((*symptoms_itr)->getConfidence());
111 }
112 for(events_itr = g_sim.Decision_Maker.diagnosis_matrix.events.begin();
113 events_itr != g_sim.Decision_Maker.diagnosis_matrix.events.end(); events_itr++){
114 this->ODM_event_confidence.push_back((*events_itr)->getConfidence());
115 this->ODM_event_lower_bound.push_back((*events_itr)->getLowerBound());
116 this->ODM_event_upper_bound.push_back((*events_itr)->getUpperBound());
117 }
118 for(symptoms_itr = g_sim.Action_Taker.diagnosis_matrix.symptoms.begin();
119 symptoms_itr != g_sim.Action_Taker.diagnosis_matrix.symptoms.end(); symptoms_itr++){
120 this->OAT_symptom_confidence.push_back((*symptoms_itr)->getConfidence());
121 }
122 for(events_itr = g_sim.Action_Taker.diagnosis_matrix.events.begin();
123 events_itr != g_sim.Action_Taker.diagnosis_matrix.events.end(); events_itr++){
124 this->OAT_event_confidence.push_back((*events_itr)->getConfidence());
125 this->OAT_event_lower_bound.push_back((*events_itr)->getLowerBound());
126 this->OAT_event_upper_bound.push_back((*events_itr)->getUpperBound());
127 }
128// add SPDS data
129/* this->spds_array.push_back(g_sim.Indicator.safety_par_display_system.getSPDSValue());
130 this->spds_array.push_back(g_sim.Indicator.safety_par_display_system.getSPDSRate());
131 for(spds_input_array_itr = g_sim.Indicator.safety_par_display_system.spds_input_array.begin();
132 spds_input_array_itr != g_sim.Indicator.safety_par_display_system.spds_input_array.end(); spds_input_array_itr++)
133 {
134 this->spds_array.push_back((*spds_input_array_itr)->getSPDSUnitValue());
135 }
136*/
139 for(spds_input_array_itr = g_sim.Decision_Maker.safety_parameters.spds_input_array.begin(); spds_input_array_itr != g_sim.Decision_Maker.safety_parameters.spds_input_array.end(); spds_input_array_itr++)
140 {
141 this->ODM_safety_parameters.push_back((*spds_input_array_itr)->getSPDSUnitValue());
142 }
145 for(spds_input_array_itr = g_sim.Action_Taker.safety_parameters.spds_input_array.begin(); spds_input_array_itr != g_sim.Action_Taker.safety_parameters.spds_input_array.end(); spds_input_array_itr++)
146 {
147 this->OAT_safety_parameters.push_back((*spds_input_array_itr)->getSPDSUnitValue());
148 }
149// add operator specific time constrained data for Decision Maker
150
151
152 //
154 for(time_constrained_data_itr = g_sim.Decision_Maker.time_constrained_load.Time_Constrained_Parameter_Array.begin();
156 time_constrained_data_itr++)
157 {
158 this->ODM_time_constrained_load.push_back((*time_constrained_data_itr)->getParameterValue());
159 this->ODM_time_constrained_load.push_back((*time_constrained_data_itr)->getParameterRate());
160 this->ODM_time_constrained_load.push_back((*time_constrained_data_itr)->getTimeToNormalThreshold());
161 this->ODM_time_constrained_load.push_back((*time_constrained_data_itr)->getTimeToAccidentThreshold());
162 }
163//
164// add information load data for Decision Maker
166//
167// add operator specific time constrained data for Action Taker
168
169
171 for(time_constrained_data_itr = g_sim.Action_Taker.time_constrained_load.Time_Constrained_Parameter_Array.begin();
173 time_constrained_data_itr++)
174 {
175 this->OAT_time_constrained_load.push_back((*time_constrained_data_itr)->getParameterValue());
176 this->OAT_time_constrained_load.push_back((*time_constrained_data_itr)->getParameterRate());
177 this->OAT_time_constrained_load.push_back((*time_constrained_data_itr)->getTimeToNormalThreshold());
178 this->OAT_time_constrained_load.push_back((*time_constrained_data_itr)->getTimeToAccidentThreshold());
179 }
180//
181// add information load data for Action Taker
183//
184}
185
187 int i;
188 fout << current_time;
189 for(i = 0; i < parameter_value_array.size(); i++){
190 fout << '\t' << parameter_value_array.at(i);
191 }
192 for(i = 0; i < parameter_trend_array.size(); i++){
193 fout << '\t' << parameter_trend_array.at(i);
194 }
195 for(i = 0; i < mesh_point_value_array.size(); i++){
196 fout << '\t' << mesh_point_value_array.at(i);
197 }
198 for(i = 0; i < component_state_array.size(); i++){
199 fout << '\t' << component_state_array.at(i);
200 }
201 for(i = 0; i < alarm_parameter_value_array.size(); i++){
202 fout << '\t' << alarm_parameter_value_array.at(i);
203 }
204 for(i = 0; i < alarm_component_state_array.size(); i++){
205 fout << '\t' << alarm_component_state_array.at(i);
206 }
207 for(i = 0; i < alarm_value_difference_array.size(); i++){
208 fout << '\t' << alarm_value_difference_array.at(i);
209 }
210 for(i = 0; i < control_state_array.size(); i++){
211 fout << '\t' << control_state_array.at(i);
212 }
213 for(i = 0; i < control_value_array.size(); i++){
214 fout << '\t' << control_value_array.at(i);
215 }
216 for(i = 0; i < ODM_hardwiredKB_confidence.size(); i++){
217 fout << '\t' << ODM_hardwiredKB_confidence.at(i);
218 }
219 for(i = 0; i < OAT_hardwiredKB_confidence.size(); i++){
220 fout << '\t' << OAT_hardwiredKB_confidence.at(i);
221 }
222 fout << '\n';
223}
225 int i;
226 fout << current_time;
227 for(i = 0; i < ODM_symptom_confidence.size(); i++){
228 fout << '\t' << ODM_symptom_confidence.at(i);
229 }
230 for(i = 0; i < ODM_event_confidence.size(); i++){
231 fout << '\t' << ODM_event_confidence.at(i);
232// << '\t' << ODM_event_lower_bound.at(i)
233// << '\t' << ODM_event_upper_bound.at(i);
234 }
235 for(i = 0; i < OAT_symptom_confidence.size(); i++){
236 fout << '\t' << OAT_symptom_confidence.at(i);
237 }
238 for(i = 0; i < OAT_event_confidence.size(); i++){
239 fout << '\t' << OAT_event_confidence.at(i);
240// << '\t' << OAT_event_lower_bound.at(i)
241// << '\t' << OAT_event_upper_bound.at(i);
242 }
243 fout << '\n';
244}
245
247 int i;
248 fout << current_time;
249 //
250 for(i = 0; i < ODM_safety_parameters.size(); i++){
251 fout << '\t' << ODM_safety_parameters.at(i);
252 }
253 //
254 for(i = 0; i < OAT_safety_parameters.size(); i++){
255 fout << '\t' << OAT_safety_parameters.at(i);
256 }
257
258
259
260
261 for(i = 0; i < ODM_time_constrained_load.size() ; i++){
262 fout << '\t' << ODM_time_constrained_load.at(i);
263 }
264 for(i = 0; i < OAT_time_constrained_load.size(); i++){
265 fout << '\t' << OAT_time_constrained_load.at(i);
266 }
267
268 for(i = 0; i < ODM_information_load.size() ; i++){
269 fout << '\t' << ODM_information_load.at(i);
270 }
271 for(i = 0; i < OAT_information_load.size(); i++){
272 fout << '\t' << OAT_information_load.at(i);
273 }
274
275 fout << '\n';
276
277}
278
280 fout << "Time";
286 fout << '\n';
287}
289 fout << "Time";
292 fout << '\n';
293}
294
296 fout << "Time";
297 //Indicator.safety_par_display_system.outputSPDSLabelToFile(fout);
298 //
301 //
302
303
306 //
309 //
310 fout << '\n';
311}
312
314 fout << "(sec)";
320 fout << '\n';
321}
323 fout << "(sec)";
326 fout << '\n';
327}
329 fout << "(sec)";
330 //Indicator.safety_par_display_system.outputSPDSUnitToFile(fout);
331 //
334 //
335// Decision_Maker.Relap_PIFs.Time_Constrained_Data.outputTimeConstrainedUnitsToFile(fout);
336// Action_Taker.Relap_PIFs.Time_Constrained_Data.outputTimeConstrainedUnitsToFile(fout);
337 //
340 //
343 //
344 fout << '\n';
345}
347 int num;
351 + 1;
352 return num;
353}
355 int num;
356 num = ODM_symptom_confidence.size()
358 + ODM_event_confidence.size()
359 + OAT_event_confidence.size()
360// + ODM_event_lower_bound.size()
361// + OAT_event_lower_bound.size()
362// + ODM_event_upper_bound.size()
363// + OAT_event_upper_bound.size()
364 + 1;
365 return num;
366}
367
369 int num;
370 num = ODM_safety_parameters.size()
371 + OAT_safety_parameters.size()
372// + ODM_RelapPIFs.size()
373// + OAT_RelapPIFs.size()
376 + ODM_information_load.size()
377 + OAT_information_load.size()
378 + 1;
379 return num;
380}
381
383 parameter_value_array.clear();
384 mesh_point_value_array.clear();
385 component_state_array.clear();
386 parameter_trend_array.clear();
390 control_state_array.clear();
391 control_value_array.clear();
396 ODM_event_confidence.clear();
397 OAT_event_confidence.clear();
398 ODM_event_lower_bound.clear();
399 OAT_event_lower_bound.clear();
400 ODM_event_upper_bound.clear();
401 OAT_event_upper_bound.clear();
402 ODM_safety_parameters.clear();
403 OAT_safety_parameters.clear();
404 //spds_array.clear();
405 ODM_RelapPIFs.clear();
406 OAT_RelapPIFs.clear();
409 ODM_information_load.clear();
410 OAT_information_load.clear();
411}
414 // Vector copy-assignment: one exact-size allocation + memcpy per vector
415 // instead of element-wise push_back growth. Assignment replaces the
416 // target's contents; callers pass freshly constructed (empty) units.
438 // ODM_RelapPIFs / OAT_RelapPIFs are intentionally not copied.
443}
444
446 int i, modi;
447 double xtemp;
448 fout << current_time << '\n';
449 fout << parameter_value_array.size() << '\n';
450 for(i = 0; i < parameter_value_array.size(); i++){
451 //kac added to avoid numerical issues in output file - 9/12/10
452 xtemp = parameter_value_array.at(i);
453 if (xtemp > -1e-30 && xtemp < 1e-30) {
454 xtemp = 0.0;
455 }
456 //kac
457 fout << xtemp;
458 //
459 // add carriage return to avoid long file line lengths
460 modi = (i + 1) % 50;
461 if ( modi == 0) {
462 fout << '\n';
463 }
464 else
465 {
466 fout << ' ';
467 }
468 //
469 //fout << ' ' << parameter_value_array.at(i);
470 }
471 fout << '\n';
472 //
473 fout << parameter_trend_array.size() << ' ';
474 for(i = 0; i < parameter_trend_array.size(); i++){
475 //
476 xtemp = parameter_trend_array.at(i);
477 if (xtemp > -1e-30 && xtemp < 1e-30) {
478 xtemp = 0.0;
479 }
480 //kac
481 fout << xtemp;
482 //
483 // add carriage return to avoid long file line lengths
484 modi = (i + 1) % 50;
485 if ( modi == 0) {
486 fout << '\n';
487 }
488 else
489 {
490 fout << ' ';
491 }
492 //
493 //fout << ' ' << parameter_trend_array.at(i);
494 }
495 fout << '\n';
496 fout << component_state_array.size() ;
497 for(i = 0; i < component_state_array.size(); i++){
498 fout << ' ' << component_state_array.at(i);
499 }
500 fout << '\n';
501 fout << mesh_point_value_array.size();
502 for(i = 0; i < mesh_point_value_array.size(); i++){
503 fout << ' ' << mesh_point_value_array.at(i);
504 }
505 fout << '\n';
506 fout << alarm_parameter_value_array.size();
507 for(i = 0; i < alarm_parameter_value_array.size(); i++){
508 fout << ' ' << alarm_parameter_value_array.at(i);
509 }
510 fout << '\n';
511 fout << alarm_component_state_array.size();
512 for(i = 0; i < alarm_component_state_array.size(); i++){
513 fout << ' ' << alarm_component_state_array.at(i);
514 }
515 fout << '\n';
516 fout << alarm_value_difference_array.size();
517 for(i = 0; i < alarm_value_difference_array.size(); i++){
518 fout << ' ' << alarm_value_difference_array.at(i);
519 }
520 fout << '\n';
521 fout << control_state_array.size();
522 for(i = 0; i < control_state_array.size(); i++){
523 fout << ' ' << control_state_array.at(i);
524 }
525 fout << '\n';
526 fout << control_value_array.size();
527 for(i = 0; i < control_value_array.size(); i++){
528 fout << ' ' << control_value_array.at(i);
529 }
530 fout << '\n';
531 fout << ODM_hardwiredKB_confidence.size();
532 for(i = 0; i < ODM_hardwiredKB_confidence.size(); i++){
533 fout << ' ' << ODM_hardwiredKB_confidence.at(i);
534 }
535 fout << '\n';
536 fout << OAT_hardwiredKB_confidence.size();
537 for(i = 0; i < OAT_hardwiredKB_confidence.size(); i++){
538 fout << ' ' << OAT_hardwiredKB_confidence.at(i);
539 }
540 fout << '\n';
541 fout << ODM_symptom_confidence.size();
542 for(i = 0; i < ODM_symptom_confidence.size(); i++){
543 fout << ' ' << ODM_symptom_confidence.at(i);
544 }
545 fout << '\n';
546 fout << OAT_symptom_confidence.size();
547 for(i = 0; i < OAT_symptom_confidence.size(); i++){
548 fout << ' ' << OAT_symptom_confidence.at(i);
549 }
550 fout << '\n';
551 fout << ODM_event_confidence.size();
552 for(i = 0; i < ODM_event_confidence.size(); i++){
553 fout << ' ' << ODM_event_confidence.at(i);
554 }
555 fout << '\n';
556 fout << OAT_event_confidence.size();
557 for(i = 0; i < OAT_event_confidence.size(); i++){
558 fout << ' ' << OAT_event_confidence.at(i);
559 }
560 fout << '\n';
561 fout << ODM_event_lower_bound.size();
562 for(i = 0; i < ODM_event_lower_bound.size(); i++){
563 fout << ' ' << ODM_event_lower_bound.at(i);
564 }
565 fout << '\n';
566 fout << OAT_event_lower_bound.size();
567 for(i = 0; i < OAT_event_lower_bound.size(); i++){
568 fout << ' ' << OAT_event_lower_bound.at(i);
569 }
570 fout << '\n';
571 fout << ODM_event_upper_bound.size();
572 for(i = 0; i < ODM_event_upper_bound.size(); i++){
573 fout << ' ' << ODM_event_upper_bound.at(i);
574 }
575 fout << '\n';
576 fout << OAT_event_upper_bound.size();
577 for(i = 0; i < OAT_event_upper_bound.size(); i++){
578 fout << ' ' << OAT_event_upper_bound.at(i);
579 }
580 //
581 fout << '\n';
582 fout << ODM_safety_parameters.size() << ' ';
583 for(i = 0; i < ODM_safety_parameters.size(); i++){
584 //
585 xtemp = ODM_safety_parameters.at(i);
586 if (xtemp > -1e-30 && xtemp < 1e-30) {
587 xtemp = 0.0;
588 }
589 //
590 fout << xtemp;
591 //
592 // add carriage return to avoid long file line lengths
593 modi = (i + 1) % 50;
594 if ( modi == 0) {
595 fout << '\n';
596 }
597 else
598 {
599 fout << ' ';
600 }
601 //
602
603 //fout << ' ' << ODM_safety_parameters.at(i);
604 }
605 fout << '\n';
606 fout << OAT_safety_parameters.size() << ' ';
607 for(i = 0; i < OAT_safety_parameters.size(); i++){
608 //
609 xtemp = OAT_safety_parameters.at(i);
610 if (xtemp > -1e-30 && xtemp < 1e-30) {
611 xtemp = 0.0;
612 }
613 //
614 fout << xtemp;
615 //
616 // add carriage return to avoid long file line lengths
617 modi = (i + 1) % 50;
618 if ( modi == 0) {
619 fout << '\n';
620 }
621 else
622 {
623 fout << ' ';
624 }
625 //
626
627 //fout << ' ' << OAT_safety_parameters.at(i);
628 }
629 fout << '\n';
630 //
631 //
632 fout << ODM_time_constrained_load.size() << ' ';
633 for(i = 0; i < ODM_time_constrained_load.size(); i++){
634 //
635 xtemp = ODM_time_constrained_load.at(i);
636 if (xtemp > -1e-30 && xtemp < 1e-30) {
637 xtemp = 0.0;
638 }
639 //
640 fout << xtemp;
641 //
642 // add carriage return to avoid long file line lengths
643 modi = (i + 1) % 50;
644 if ( modi == 0) {
645 fout << '\n';
646 }
647 else
648 {
649 fout << ' ';
650 }
651 //
652
653 //fout << ' ' << ODM_time_constrained_load.at(i);
654 }
655 fout << '\n';
656 //
657 fout << OAT_time_constrained_load.size() << ' ';
658 for(i = 0; i < OAT_time_constrained_load.size(); i++){
659 //
660 xtemp = OAT_time_constrained_load.at(i);
661 if (xtemp > -1e-30 && xtemp < 1e-30) {
662 xtemp = 0.0;
663 }
664 //
665 fout << xtemp;
666 //
667 // add carriage return to avoid long file line lengths
668 modi = (i + 1) % 50;
669 if ( modi == 0) {
670 fout << '\n';
671 }
672 else
673 {
674 fout << ' ';
675 }
676 //
677
678 //fout << ' ' << OAT_time_constrained_load.at(i);
679 }
680 fout << '\n';
681 //
682 fout << ODM_information_load.size();
683 for(i = 0; i < ODM_information_load.size(); i++){
684 fout << ' ' << ODM_information_load.at(i);
685 }
686 fout << '\n';
687 //
688 fout << OAT_information_load.size();
689 for(i = 0; i < OAT_information_load.size(); i++){
690 fout << ' ' << OAT_information_load.at(i);
691 }
692 fout << '\n';
693 //
694}
696 int i, num;
697 int i_value;
698 double d_value;
699 fin >> current_time;
700 fin >> num;
701 for(i = 0; i < num; i++){
702 fin >> d_value;
703 parameter_value_array.push_back(d_value);
704 }
705 fin >> num;
706 for(i = 0; i < num; i++){
707 fin >> d_value;
708 parameter_trend_array.push_back(d_value);
709 }
710 fin >> num;
711 for(i = 0; i < num; i++){
712 fin >> i_value;
713 component_state_array.push_back(i_value);
714 }
715 fin >> num;
716 for(i = 0; i < num; i++){
717 fin >> d_value;
718 mesh_point_value_array.push_back(d_value);
719 }
720 fin >> num;
721 for(i = 0; i < num; i++){
722 fin >> i_value;
723 alarm_parameter_value_array.push_back(i_value);
724 }
725 fin >> num;
726 for(i = 0; i < num; i++){
727 fin >> i_value;
728 alarm_component_state_array.push_back(i_value);
729 }
730 fin >> num;
731 for(i = 0; i < num; i++){
732 fin >> i_value;
733 alarm_value_difference_array.push_back(i_value);
734 }
735 fin >> num;
736 for(i = 0; i < num; i++){
737 fin >> i_value;
738 control_state_array.push_back(i_value);
739 }
740 fin >> num;
741 for(i = 0; i < num; i++){
742 fin >> d_value;
743 control_value_array.push_back(d_value);
744 }
745 fin >> num;
746 for(i = 0; i < num; i++){
747 fin >> d_value;
748 ODM_hardwiredKB_confidence.push_back(d_value);
749 }
750 fin >> num;
751 for(i = 0; i < num; i++){
752 fin >> d_value;
753 OAT_hardwiredKB_confidence.push_back(d_value);
754 }
755 //------------
756 fin >> num;
757 for(i = 0; i < num; i++){
758 fin >> d_value;
759 ODM_symptom_confidence.push_back(d_value);
760 }
761 //------------
762 fin >> num;
763 for(i = 0; i < num; i++){
764 fin >> d_value;
765 OAT_symptom_confidence.push_back(d_value);
766 }
767 //------------
768 fin >> num;
769 for(i = 0; i < num; i++){
770 fin >> d_value;
771 ODM_event_confidence.push_back(d_value);
772 }
773 //------------
774 fin >> num;
775 for(i = 0; i < num; i++){
776 fin >> d_value;
777 OAT_event_confidence.push_back(d_value);
778 }
779 //------------
780 fin >> num;
781 for(i = 0; i < num; i++){
782 fin >> d_value;
783 ODM_event_lower_bound.push_back(d_value);
784 }
785 //------------
786 fin >> num;
787 for(i = 0; i < num; i++){
788 fin >> d_value;
789 OAT_event_lower_bound.push_back(d_value);
790 }
791 //------------
792 fin >> num;
793 for(i = 0; i < num; i++){
794 fin >> d_value;
795 ODM_event_upper_bound.push_back(d_value);
796 }
797 //------------
798 fin >> num;
799 for(i = 0; i < num; i++){
800 fin >> d_value;
801 OAT_event_upper_bound.push_back(d_value);
802 }
803//
804 fin >> num;
805 for(i = 0; i < num; i++){
806 fin >> d_value;
807 ODM_safety_parameters.push_back(d_value);
808 }
809 fin >> num;
810 for(i = 0; i < num; i++){
811 fin >> d_value;
812 OAT_safety_parameters.push_back(d_value);
813 }
814//
815// fin >> num;
816// for(i = 0; i < num; i++){
817// fin >> d_value;
818// ODM_RelapPIFs.push_back(d_value);
819// }
820// fin >> num;
821// for(i = 0; i < num; i++){
822// fin >> d_value;
823// OAT_RelapPIFs.push_back(d_value);
824// }
825 fin >> num;
826 for(i = 0; i < num; i++){
827 fin >> d_value;
828 ODM_time_constrained_load.push_back(d_value);
829 }
830 fin >> num;
831 for(i = 0; i < num; i++){
832 fin >> d_value;
833 OAT_time_constrained_load.push_back(d_value);
834 }
835 fin >> num;
836 for(i = 0; i < num; i++){
837 fin >> d_value;
838 ODM_information_load.push_back(d_value);
839 }
840 fin >> num;
841 for(i = 0; i < num; i++){
842 fin >> d_value;
843 OAT_information_load.push_back(d_value);
844 }
845}
846
SimulationContext g_sim
Global simulation context: the single instance, defined in SimulationContext.cpp.
Single struct holding all mutable simulation state.
document e
std::vector< std::unique_ptr< AlarmTwoParameterDifference > > alarm_value_difference_array
std::vector< std::unique_ptr< AlarmComponent > > alarm_component_state_array
void outputParametersUnitsToFile(std::ofstream &)
std::vector< std::unique_ptr< AlarmParameter > > alarm_parameter_value_array
void outputParametersLabelsToFile(std::ofstream &)
void outputParametersUnitsToFile(std::ofstream &)
std::vector< std::unique_ptr< ControlValue > > control_value_array
void outputParametersLabelsToFile(std::ofstream &)
std::vector< std::unique_ptr< ControlState > > control_state_array
std::vector< std::unique_ptr< DisplayComponentState > > component_state_array
std::vector< std::unique_ptr< DisplayParameterValueRate > > parameter_trend_array
void outputParametersLabelsToFile(std::ofstream &)
void outputParametersUnitsToFile(std::ofstream &)
std::vector< std::unique_ptr< DisplayParameterValue > > parameter_value_array
std::vector< std::unique_ptr< DisplayHeatStructure > > heat_structure_array
std::vector< std::unique_ptr< DisplaySupportSystemState > > support_systems_state_array
ControlPanelDisplay indicators
Definition: ControlPanel.h:53
ControlPanelControl controls
Definition: ControlPanel.h:54
ControlPanelAlarm alarms
Definition: ControlPanel.h:52
void outputEventSymptomMatrixLabelToFile(std::string, std::ofstream &)
std::vector< std::unique_ptr< DiagnosisEventUnit > > events
void outputEventSymptomMatrixUnitToFile(std::ofstream &)
std::vector< std::unique_ptr< SymptomUnit > > symptoms
void outputInformationLoadModuleUnitsToFile(std::ofstream &)
void outputInformationLoadModuleLabelToFile(std::string, std::ofstream &)
void outputHardWiredDiagnosisLabelToFile(std::string, std::ofstream &)
Definition: KB.cpp:316
void outputHardWiredDiagnosisUnitToFile(std::ofstream &)
Definition: KB.cpp:324
std::vector< std::unique_ptr< KBHardWiredUnit > > hard_wired_diagnosis
Definition: KB.h:84
std::vector< double > OAT_symptom_confidence
std::vector< int > alarm_component_state_array
void outputPIFLabelToFile(std::ofstream &)
std::vector< int > component_state_array
std::vector< double > OAT_RelapPIFs
std::vector< double > OAT_time_constrained_load
void outputUnitToFile(std::ofstream &)
std::vector< double > ODM_RelapPIFs
void outputLabelToFile(std::ofstream &)
void outputAllPIFDataToFile(std::ofstream &)
std::vector< double > ODM_event_lower_bound
std::vector< double > OAT_event_upper_bound
void outputPIFUnitToFile(std::ofstream &)
std::vector< double > ODM_information_load
std::vector< double > parameter_trend_array
std::vector< double > ODM_safety_parameters
std::vector< double > OAT_event_lower_bound
std::vector< double > OAT_hardwiredKB_confidence
void retrieveKeyParameterHistoryUnitFromFile(std::ifstream &)
std::vector< double > OAT_safety_parameters
std::vector< double > ODM_event_upper_bound
std::vector< double > control_state_array
std::vector< double > control_value_array
void saveKeyParameterHistoryUnitToFile(std::ofstream &)
std::vector< int > alarm_parameter_value_array
std::vector< double > ODM_hardwiredKB_confidence
void outputDiagnosisLabelToFile(std::ofstream &)
void outputDiagnosisUnitToFile(std::ofstream &)
std::vector< double > mesh_point_value_array
std::vector< double > ODM_time_constrained_load
std::vector< double > OAT_information_load
void outputAllDiagnosisDataToFile(std::ofstream &)
void outputAllDataToFile(std::ofstream &)
std::vector< double > ODM_event_confidence
void copyKeyParameterHistoryUnit(KeyParameterHistoryUnit &)
std::vector< int > alarm_value_difference_array
std::vector< double > parameter_value_array
std::vector< double > ODM_symptom_confidence
std::vector< double > OAT_event_confidence
TimeConstrainedModule time_constrained_load
Definition: Operator.h:132
SPDS safety_parameters
Definition: Operator.h:131
KB knowledge_base
Definition: Operator.h:127
InformationLoadModule information_load
Definition: Operator.h:133
EventSymptomMatrix diagnosis_matrix
Definition: Operator.h:129
double getSPDSRate()
Definition: SPDS.cpp:56
void outputSPDSUnitToFile(std::ofstream &)
Definition: SPDS.cpp:168
double getSPDSValue()
Definition: SPDS.cpp:55
void outputSPDSLabelToFile(std::string, std::ofstream &)
Definition: SPDS.cpp:159
std::vector< std::unique_ptr< SPDSUnit > > spds_input_array
Definition: SPDS.h:43
void outputTimeConstrainedLabelToFile(std::string, std::ofstream &)
void outputTimeConstrainedUnitsToFile(std::ofstream &)
std::vector< std::unique_ptr< TimeConstrainedUnit > > Time_Constrained_Parameter_Array
C/Fortran interop bridge for RELAP5 thermal-hydraulic data exchange.
struct @0 r5pars_
OperatorAT Action_Taker
Crew action execution model.
ControlPanel Indicator
Control room panel state.
OperatorDM Decision_Maker
Crew decision-making model.