MURE
Loading...
Searching...
No Matches
EvolutionSolver.hxx
Go to the documentation of this file.
1/*
2 This file is part of MURE,
3 Copyright (C) 2007-2021 MURE developers.
4
5 MURE is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 MURE is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public License
16 along with MURE. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#ifndef _EvolutionSolver_HXX_
20#define _EvolutionSolver_HXX_
21
27#include <nlohmann/json.hpp>
28#include <fstream>
29#include <iostream>
30#include <sstream>
31#include <vector>
32#include <string>
33#include <algorithm>
34#include <map>
35
36#include "MUREGlobal.hxx"
37#include "Cell.hxx"
38#include "EvolutionControl.hxx"
39#include "EvolutiveSystem.hxx"
40#include "ControlMaterial.hxx"
41#include "Nucleus.hxx"
42#include "Reaction.hxx"
43#include "libValErr/ValErr.hxx"
44
45class ControlMaterial;
47class EvolutiveSystem;
48class Material;
49class ZAI;
50
51using json = nlohmann::ordered_json; // preserve order of insertion
52
53using namespace std;
54
55
57
69{
70 public:
79
85
106 void Evolution(
107 vector < double > T,
108 int Start = 0,
109 bool BrutalStop = false
110 );
111
113
140 void UseMultiGroupTallies(bool StdTallyFor238U = false);
141
143 {
144 return fU8StdTally;
145 }
147 {
149 }
151 {
153 }
154 void SetMultiGroupLowerEnergy(double Emin = 1e-4)
155 {
156 fMultiGroupEmin = Emin;
157 }
158 void SetMultiGroupUpperEnergy(double Emax = 20e6)
159 {
160 fMultiGroupEmax = Emax;
161 }
163 {
164 return fMultiGroupEmin;
165 }
167 {
168 return fMultiGroupEmax;
169 }
171 {
172 return fMultigroupTallies;
173 }
175
193 void SetXe135Equilibrium(double t = 3 * 9.14 * 3600);
195 {
196 return fXe135Equilibrium;
197 }
199 {
200 return fXe135EquilibriumTime;
201 }
202
204
208 void SetCooling(vector < bool > C);
209 void SetCooling(int i, bool flag){fIsCooling[i] = flag ;}
210
211 bool IsCooling(int MCRunNumber);
212 void FinishOnMCRun(bool flag = true)
213 {
214 fFinishOnMCRun = flag;
215 }
217
226 void AddCellToGroup(Cell *TheCell, int GroupNumber = 0);
227 vector < Cell *> &GetCellGroup(int GroupNumber)
228 {
229 return fGroupCellVector[GroupNumber];
230 }
232 {
233 return fGroupCellVector.size();
234 }
236
237
242 void SetPower(double Power);
243 double GetPower()
244 {
245 return fPower;
246 }
247 vector < double > GetPowerVector()
248 {
249 return fPowerVector;
250 }
251 void UpdateBurnUp();
252 double GetBurnUp();
254
257 void VerifyPower();
258
260
264 void SetBrutalStopKValue(double brutalstopvalue)
265 {
266 fBrutalStopKValue = brutalstopvalue;
267 fBrutalStop = true;
268 }
269
271
278
280 {
281 return fEvolutionControl;
282 }
283
285 {
286 fMaterialControl = true;
287 }
289 {
290 return fMaterialControl;
291 }
294
298 void SetControlRate(Reaction r, ValErr_t rate)
299 {
300 fControlRate[r] = rate;
301 }
302
304
308 void SetControlRate(int ReactionCode, ValErr_t rate)
309 {
310 fControlRate[Reaction(ReactionCode)] = rate;
311 }
313 {
314 return fControlRate[r];
315 }
316 ValErr_t GetControlRate(int ReactionCode)
317 {
318 return fControlRate[Reaction(ReactionCode)];
319 }
320
321 void AddControlRodCell(Cell *TheCell)
322 {
323 fControlRodCell.push_back(TheCell);
324 }
325 vector < Cell *> &GetControlRodCell()
326 {
327 return fControlRodCell;
328 }
329
331 {
332 if ( ! fInitHNMassInTon)
333 {
335 }
336 return fInitHNMassInTon;
337 }
339
340 ValErr_t GetAbs()
341 {
342 return fGlobalAbsorptions;
343 }
344 ValErr_t GetN2N()
345 {
346 return fGlobalN2N;
347 }
348 ValErr_t GetN3N()
349 {
350 return fGlobalN3N;
351 }
352 ValErr_t GetFiss()
353 {
354 return fGlobalFissions;
355 }
356 ValErr_t GetNuFiss()
357 {
358 return fGlobalNuFissions;
359 }
360 ValErr_t GetNu()
361 {
362 return fGlobalNu;
363 }
365 {
366 return fGlobalNeutronLosses;
367 }
368 double GetAvgQ()
369 {
370 return fAvgQ;
371 }
372 void SetNeutronLosses(ValErr_t losses)
373 {
374 fGlobalNeutronLosses = losses;
375 }
377 {
379 }
381 {
383 }
384 void SetGlobalRates();
388
393
395
400 void SetDepletionSolver(string s = "CRAM")
401 {
402 fSolverMethod = s;
403 }
405 {
406 return fSolverMethod;
407 }
412
414
419 void SetCRAMOrder(int order)
420 {
421 fCRAMOrder = order;
422 }
424 {
425 return fCRAMOrder;
426 }
427
429
433 void SetCRAMMethod(string method)
434 {
435 fCRAMMethod = method;
436 }
438 {
439 return fCRAMMethod;
440 }
441
446
448
458 void SetNSubSteps(int NSubStep = 10)
459 {
460 fNSubStep = NSubStep;
461 }
462
464
479 void SetSubDT(double dt = - 1)
480 {
481 fSubDT = dt;
482 }
483
485
500 void SetMaxSubDT(double dtmax = - 1)
501 {
502 fMaxSubDT = dtmax;
503 }
504
506 {
507 return fNSubStep;
508 }
510
515 int FindLastMCRunNumber();
516 void SetCurrentMCTime(double time)
517 {
518 fCurrentMCTime = time;
519 }
521 {
522 return fCurrentMCTime;
523 }
524 void SetNextMCTime(double time)
525 {
526 fNextMCTime = time;
527 }
529 {
530 return fNextMCTime;
531 }
532 void SetCurrentTime(double time)
533 {
534 fCurrentTime = time;
535 }
537 {
538 return fCurrentTime;
539 }
541 {
542 return fCurrentSubStep;
543 }
545 {
546 return fCurrentSubStepNumber;
547 }
549 {
550 return fMCRunNumber;
551 }
552
554 {
555 return fTimeUnitConverter;
556 }
557 string GetTimeUnit()
558 {
559 return fTimeUnit;
560 }
561 void SetTimeUnit(double t);
562
564
568
570
588 void SetPredictorCorrector(bool middle_step = false);
589
591 {
592 return fPredictorCorrector;
593 }
595 {
596 return fPredictorStep;
597 }
598 void SetPredictorStep(bool flag)
599 {
600 fPredictorStep = flag;
601 }
603 {
604 return fPCEvaluationTime;
605 }
606
608
617
622
624
630 void SetPartialMCRun(bool flag = true)
631 {
632 fPartialMCRun = flag;
633 }
635 {
636 return fPartialMCRun;
637 }
639 {
640 return fPartialParticleMCRun;
641 }
642 void SetPartialParticleMCRun(bool flag = true)
643 {
645 }
646 void SetPartialMCRunDirectory(string name = "PartialRun")
647 {
648 fPartialMCRunDir = name;
649 }
651 {
652 return fPartialMCRunDir;
653 }
655 {
657 }
659 {
660 return fSourcePartialFactor;
661 }
662
664
669 void SetWriteBinaryData(bool flag = true)
670 {
671 fWriteBinaryData = flag;
672 }
673 void SetWriteASCIIData(bool flag = true)
674 {
675 fWriteASCIIData = flag;
676 }
677 void SetWriteJsonFormat(bool flag = true)
678 {
679 fWrite2Json = flag;
680 }
682 {
683 return fWrite2Json;
684 }
686 {
687 return fWriteBinaryData;
688 }
690 {
691 return fWriteASCIIData;
692 }
693 void WriteKeffData();
694 void WriteNFissionsData();
695 void ReadEvolutionData(string filename);
696 void ReadEvolutionPowerData(string filename, int version = 1);
697 void WriteEvolutionData(string filename);
698 void ReadBinaryEvolutionData(string filename);
699 void ReadBinaryEvolutionPowerData(string filename, int version = 1);
700 void WriteBinaryEvolutionData(string filename);
702
709
713 void BuildTallies();
715
723
727 void UpdateSigmaPhi();
729
736
738 /*
739 Only for "pertubative material" automatically built, the flux is normalized using the TallyNormalizationFactor.
740 */
741 void UpdateSigma();
743
748
752 void RebuildTallies();
753 void TransMogrify();
754 void PredictorTransMogrify();
756
762
769 void FitSigmaPhi(bool flag = true)
770 {
771 fFitSigmaPhi = flag;
772 }
773
775
780 {
781 return fFittedTNF;
782 }
784 {
785 fFittedTNF = true;
786 }
788 {
789 return fFitSigmaPhi;
790 }
792 {
793 return fFitRange;
794 }
795 void SetFitRangeNumber(int n = 4)
796 {
797 fFitRange = n;
798 }
799
801
808 void SmoothSigmaPhi(bool flag = true)
809 {
810 fSmoothSigmaPhi = flag;
811 }
812
814 {
815 return fSmoothSigmaPhi;
816 }
818 {
819 return fFitSigmaPhiPC;
820 }
821 void SetFitSigmaPhiPC(bool flag = true)
822 {
823 fFitSigmaPhiPC = flag;
824 }
825
826
828
833 vector < EvolutiveSystem *> &GetEvolutiveSystemVector()
834 {
836 }
837 void AddEvolutiveSystem(EvolutiveSystem *theEvolutiveSystem);
838 vector < EvolutiveSystem *> &GetOutCoreEvolutiveSystemVector()
839 {
841 }
842 void AddOutCoreEvolutiveSystem(EvolutiveSystem *theEvolutiveSystem);
843
844 vector < Material *> &GetPerturbativeMaterial()
845 {
846 return fPerturbativeMaterial;
847 }
850
851 void AddZAIThatFissions(ZAI *zai);
852 vector < ZAI *> &GetZAIThatFission()
853 {
854 return fZAIThatFission;
855 }
857
864
865 void SetNuSigmaFisPhiTotal(double value)
866 {
867 fNuSigmaFisPhiTotal = value;
868 }
870 {
871 return fNuSigmaFisPhiTotal;
872 }
873 void AddToNuSigmaFisPhiTotal(double value)
874 {
875 fNuSigmaFisPhiTotal += value;
876 }
877
879
883 {
884 return fMCFissionsPerSecond.size();
885 }
887
891 {
892 return fMCFissionsPerSecond[i];
893 }
895
899 void SetMCFissionsPerSourceNeutron(int i, double val)
900 {
901 fMCFissionsPerSecond[i] = val;
902 }
904
908 void AddToMCFissionsPerSourceNeutron(int i, double val)
909 {
910 fMCFissionsPerSecond[i] += val;
911 }
912
914
918 void SetTallyNormalizationFactor(double val);
920 {
922 }
924 {
926 }
928
934 void SetCorrectNormalizationFactor(bool flag = true)
935 {
937 }
939 {
941 }
942 void ReplaceVector();
944
949
951
953
954
955 protected:
956 void InitEvolution(vector < double > &T, int &Start);
958
961 double NormalizeMCFissionsPerSecond(double fractional_power = 1.);
962
963 void CheckCompositions();
965
966 void InitTNFFit();
968
969 void validate_json_against_schema(json &data, const json &schema);
970
971 vector < EvolutiveSystem *> fEvolutiveSystemVector;
972 vector < EvolutiveSystem *> fOutCoreEvolutiveSystemVector;
973 vector < Material *> fPerturbativeMaterial;
974 vector < ZAI *> fZAIThatFission;
975 vector < Cell *> fControlRodCell;
976 vector < vector < Cell *> > fGroupCellVector;
978
979 double fPower;
981 vector < bool > fIsCooling;
982 vector < double > fPowerVector;
985
988
1000
1008 double fSubDT;
1009 double fMaxSubDT;
1010
1011 double fDeltaK;
1012 double fConstantK;
1016 double fBurnup;
1017 double fAvgQ;
1018
1019 map < Reaction, ValErr_t, EqualReaction > fControlRate ;
1023 ValErr_t fGlobalNu;
1024 ValErr_t fGlobalN2N;
1025 ValErr_t fGlobalN3N;
1028 vector < double > fMCFissionsPerSecond;
1029
1031
1033 string fTimeUnit;
1034
1038 vector < double > fFitTNF;
1039 vector < double > fMCTimeForFit;
1043
1048
1053
1057
1061
1063 static const json EvolDataSchema;
1064};
1065
1066#endif
Header file for Cell class.
Header file for ControlMaterial class.
Header file for EvolutionControl class.
nlohmann::ordered_json json
Definition EvolutionSolver.hxx:51
Header file for EvolutiveSystem class.
Header file for Nucleus class.
A Cell is composed from a Shape and a Material.
Definition Cell.hxx:84
A ControlMaterial.
Definition ControlMaterial.hxx:51
EvolutionControl allows interactions with the evolution.
Definition EvolutionControl.hxx:60
EvolutionSolver class performs the fuel evolution.
Definition EvolutionSolver.hxx:69
double GetPCEvaluationTime()
Definition EvolutionSolver.hxx:602
bool fU8StdTally
True if std tallies are used for U-238 in a multi-group evolution.
Definition EvolutionSolver.hxx:995
double GetBurnUp()
Definition EvolutionSolver.cxx:3226
~EvolutionSolver()
Destructor.
Definition EvolutionSolver.cxx:629
bool GetPowerNormalizationFactorNuOverKeff()
Definition EvolutionSolver.hxx:923
void ReadEvolutionData(string filename)
Read Compositions, time, volume from one evolution step from an ascii file.
Definition EvolutionSolver.cxx:2032
bool IsU8StdTally()
Definition EvolutionSolver.hxx:142
double fPCEvaluationTime
Time at wich the Predictor-Corrector is done : either ~dT/2 or dT.
Definition EvolutionSolver.hxx:1045
vector< EvolutiveSystem * > & GetOutCoreEvolutiveSystemVector()
Definition EvolutionSolver.hxx:838
double fSubDT
wanted DT for RK intergartion.
Definition EvolutionSolver.hxx:1008
int fSourcePartialFactor
factor for multiplying source in the total run/partial run
Definition EvolutionSolver.hxx:1052
double fAvgQ
Definition EvolutionSolver.hxx:1017
void InitTNFFit()
Initialize vectors for TallyNormalizationFactor fitting.
Definition EvolutionSolver.cxx:2848
void SetGlobalLossesTallyNumber(int num)
Definition EvolutionSolver.hxx:376
ValErr_t fGlobalN3N
Total n3n rate in the whole geometry.
Definition EvolutionSolver.hxx:1025
bool IsFitSigmaPhi()
Definition EvolutionSolver.hxx:787
bool fPartialMCRun
True when doing partial run for error evalution.
Definition EvolutionSolver.hxx:1049
void SetCorrectNormalizationFactor(bool flag=true)
Tibor's flag for correcting all tallies.
Definition EvolutionSolver.hxx:934
int GetCRAMOrder()
Definition EvolutionSolver.hxx:423
vector< vector< Cell * > > fGroupCellVector
the vector of Group Cell
Definition EvolutionSolver.hxx:976
bool fFitSigmaPhi
Whether or not fit SigmaPhi between 2 MC steps.
Definition EvolutionSolver.hxx:1035
double GetMCFissionsPerSecond(int i)
returns the ith total number of fissions/s.
Definition EvolutionSolver.hxx:890
void AddToNuSigmaFisPhiTotal(double value)
Definition EvolutionSolver.hxx:873
int GetDataWritingVersion()
Definition EvolutionSolver.hxx:950
void SetTimeUnit(double t)
use only for pretty print (convert a time in second in more readble time
Definition EvolutionSolver.cxx:3100
bool fPartialParticleMCRun
True for partial particle number in a partial run mode, false for total particle.
Definition EvolutionSolver.hxx:1050
string GetDepletionSolver()
Definition EvolutionSolver.hxx:404
double fConstantK
The central value of Keff around which the user wishes to keep reactivity constant....
Definition EvolutionSolver.hxx:1012
ValErr_t GetNuFiss()
Definition EvolutionSolver.hxx:356
void InitEvolution(vector< double > &T, int &Start)
Definition EvolutionSolver.cxx:931
bool fWrite2Json
Evolution data written to JSON format.
Definition EvolutionSolver.hxx:1062
map< Reaction, ValErr_t, EqualReaction > fControlRate
Global reaction rates when evolution is controled by ControlMaterial.
Definition EvolutionSolver.hxx:1019
bool IsCooling(int MCRunNumber)
return true if between MCRunNumber and MCRunNumber+1, the flux is zero
Definition EvolutionSolver.cxx:3194
double GetCurrentTime()
Definition EvolutionSolver.hxx:536
string GetCRAMMethod()
Definition EvolutionSolver.hxx:437
void SetCooling(vector< bool > C)
Set cooling period during the evolution.
Definition EvolutionSolver.cxx:3181
vector< bool > fIsCooling
array (same dim as MC time) say that it is cooling period (no flux)
Definition EvolutionSolver.hxx:981
double GetPower()
Definition EvolutionSolver.hxx:243
double fCurrentTime
Current time in case of Evolution.
Definition EvolutionSolver.hxx:1006
bool IsWriteBinaryData()
Definition EvolutionSolver.hxx:685
double fXe135EquilibriumTime
the time from which Xe-135 equilibrium is "imposed"
Definition EvolutionSolver.hxx:987
double GetNextMCTime()
Definition EvolutionSolver.hxx:528
void SetWriteJsonFormat(bool flag=true)
Definition EvolutionSolver.hxx:677
double fBurnup
Definition EvolutionSolver.hxx:1016
int fMultiGroupDecadeMultiplicator
number of group/decades in multi-group run is multiply by this factor
Definition EvolutionSolver.hxx:992
ValErr_t GetNeutronLosses()
Definition EvolutionSolver.hxx:364
int GetMCFissionsPerSecondSize()
returns the size of fissions/s zai vector.
Definition EvolutionSolver.hxx:882
double GetTallyNormalizationFactor()
returns the tally normalization factor
Definition EvolutionSolver.cxx:2929
void ReadBinaryEvolutionPowerData(string filename, int version=1)
Read Compositions, time, volume from one evolution step from a binary file.
Definition EvolutionSolver.cxx:2387
void SetNuSigmaFisPhiTotal(double value)
Definition EvolutionSolver.hxx:865
int GetFitRangeNumber()
Definition EvolutionSolver.hxx:791
double fFitTNFSlope
current slope value for linear Tally Normalization Factor extrapolation
Definition EvolutionSolver.hxx:1040
void RebuildPerturbativeMaterials()
Rebuild Perturbative Materials.
Definition EvolutionSolver.cxx:2943
void SetSubDT(double dt=- 1)
Set the approximate Runge-Kutta step.
Definition EvolutionSolver.hxx:479
EvolutionControl * fEvolutionControl
Control the Evolution.
Definition EvolutionSolver.hxx:977
ValErr_t fGlobalNuFissions
Total nu fission rate in the whole geometry (-6:-7).
Definition EvolutionSolver.hxx:1022
int GetMCRunNumber()
Definition EvolutionSolver.hxx:548
vector< EvolutiveSystem * > fEvolutiveSystemVector
the vector containing all the evolutive systems considered.
Definition EvolutionSolver.hxx:971
void BuildTalliesMultiGroup()
Build automatic tallies in multigroup run.
Definition EvolutionSolver.cxx:3028
void SetMultiGroupUpperEnergy(double Emax=20e6)
Definition EvolutionSolver.hxx:158
void FinishOnMCRun(bool flag=true)
Definition EvolutionSolver.hxx:212
bool IsXe135Equilibrium()
Definition EvolutionSolver.hxx:194
bool fPredictorStep
True if the step is the Predictor step before a corrector one.
Definition EvolutionSolver.hxx:1046
ValErr_t fGlobalFissions
Total fission rate in the whole geometry (-6).
Definition EvolutionSolver.hxx:1021
double GetAvgQ()
Definition EvolutionSolver.hxx:368
double fNuSigmaFisPhiTotal
Nu*sigma*phi total.
Definition EvolutionSolver.hxx:1027
vector< Cell * > & GetControlRodCell()
Definition EvolutionSolver.hxx:325
void SetWriteASCIIData(bool flag=true)
Definition EvolutionSolver.hxx:673
void SetFitSigmaPhiPC(bool flag=true)
Definition EvolutionSolver.hxx:821
void BuildPerturbativeMaterials()
Definition EvolutionSolver.cxx:666
void SetFitTallyNormalizationFactor()
Definition EvolutionSolver.hxx:783
void Evolution(vector< double > T, int Start=0, bool BrutalStop=false)
Perform the evolution.
Definition EvolutionSolver.cxx:1129
double fMaxSubDT
the maximum DT for RK intergartion.
Definition EvolutionSolver.hxx:1009
double fInterseptTNF
current intersept value for linear Tally Normalization Factor extrapolation
Definition EvolutionSolver.hxx:1041
void TransMogrify()
Update all materials from EvolutiveSystem.
Definition EvolutionSolver.cxx:1574
void SetCurrentMCTime(double time)
Definition EvolutionSolver.hxx:516
void UpdateTHSigmaPhiMultiGroup()
Definition EvolutionSolver.cxx:3049
void WriteEvolutionData(string filename)
Write all the information from one evolution step to an ascii file.
Definition EvolutionSolver.cxx:1644
vector< Material * > & GetPerturbativeMaterial()
Definition EvolutionSolver.hxx:844
void AddZAIThatFissions(ZAI *zai)
Add a zai to the nucleithatfission vector.
Definition EvolutionSolver.cxx:864
vector< Material * > fPerturbativeMaterial
Vector of Perturbative materials for evolution.
Definition EvolutionSolver.hxx:973
double fInitHNMassInTon
Initial mass of Heavy Nucleus in ton.
Definition EvolutionSolver.hxx:1014
void SetEvolutionControl(EvolutionControl *EC)
Set the EvolutionControl object.
Definition EvolutionSolver.cxx:654
double GetXe135EquilibriumTime()
Definition EvolutionSolver.hxx:198
void ReplaceVector()
Replace vector pointers by the new one (from a MURE::Copy())
Definition EvolutionSolver.cxx:533
void SetCRAMMethod(string method)
Set the CRAM method.
Definition EvolutionSolver.hxx:433
void SmoothSigmaPhi(bool flag=true)
Set/Unset a Smooth extrapolation of sigma*phi.
Definition EvolutionSolver.hxx:808
EvolutionControl * GetEvolutionControl()
Definition EvolutionSolver.hxx:279
bool IsSmoothSigmaPhi()
Definition EvolutionSolver.hxx:813
ValErr_t fGlobalNeutronLosses
Total neutron loss in the whole geometry.
Definition EvolutionSolver.hxx:1026
void SetNextMCTime(double time)
Definition EvolutionSolver.hxx:524
void SetTallyNormalizationFactor(double val)
set Flux normalization value.
Definition EvolutionSolver.cxx:3280
void AddEvolutiveSystem(EvolutiveSystem *theEvolutiveSystem)
Add an EvolutiveSystem to the EvolutiveSystem Vector.
Definition EvolutionSolver.cxx:852
void SetCooling(int i, bool flag)
Definition EvolutionSolver.hxx:209
void UpdateMaterial()
Update material for Evolution.
bool fXe135Equilibrium
whether or not to use Xe-135 equilibrium treatment
Definition EvolutionSolver.hxx:986
int fNSubStep
Number of internal Runge-Kutta integration steps between two consecutive MC runs.
Definition EvolutionSolver.hxx:1007
bool IsPredictorStep()
Definition EvolutionSolver.hxx:594
bool fFittedTNF
True when TNF extrapolation is used.
Definition EvolutionSolver.hxx:1042
vector< double > fMCFissionsPerSecond
Vector of total number of fissions per seconds for each zai.
Definition EvolutionSolver.hxx:1028
double GetMultiGroupLowerEnergy()
Definition EvolutionSolver.hxx:162
int fCRAMOrder
Definition EvolutionSolver.hxx:1059
void AddOutCoreEvolutiveSystem(EvolutiveSystem *theEvolutiveSystem)
Add an OutCore EvolutiveSystem to the OutCoreEvolutiveSystem Vector.
Definition EvolutionSolver.cxx:858
double fMultiGroupEmin
lower Energy bin for multgroup
Definition EvolutionSolver.hxx:993
bool fMaterialControl
whether Keff control by a ControlMaterial is be used during evolution.
Definition EvolutionSolver.hxx:1013
string fSolverMethod
CRAM or RungeKutta, CRAM is default.
Definition EvolutionSolver.hxx:1058
void SetBrutalStopKValue(double brutalstopvalue)
Set the Brutal Stop Value.
Definition EvolutionSolver.hxx:264
ValErr_t GetAbs()
Definition EvolutionSolver.hxx:340
void BuildTHTalliesMultiGroup()
Definition EvolutionSolver.cxx:3041
ValErr_t GetControlRate(Reaction r)
Definition EvolutionSolver.hxx:312
int GetGlobalLossesTallyNumber()
Definition EvolutionSolver.hxx:380
vector< ZAI * > fZAIThatFission
Vector of all the zai which fission.
Definition EvolutionSolver.hxx:974
void SetMaterialControl()
Definition EvolutionSolver.hxx:284
void UpdateBurnUp()
Definition EvolutionSolver.cxx:3255
int GetMultiGroupDecadeMultiplicator()
Definition EvolutionSolver.hxx:150
string fCRAMMethod
Definition EvolutionSolver.hxx:1060
ValErr_t fGlobalNu
Total nu.
Definition EvolutionSolver.hxx:1023
void WriteKeffData()
Write only information concerning Keff from one evolution step to file KDATA.
Definition EvolutionSolver.cxx:2204
void RebuildTallies()
Rebuild Tallies.
Definition EvolutionSolver.cxx:2998
double fTimeUnitConverter
use only for pretty print
Definition EvolutionSolver.hxx:1032
bool IsPredictorCorrector()
Definition EvolutionSolver.hxx:590
bool IsPartialMCRun()
Definition EvolutionSolver.hxx:634
string GetPartialMCRunDirectory()
Definition EvolutionSolver.hxx:650
bool fPredictorCorrector
True if Predictor-Corrector evolution scheme is used.
Definition EvolutionSolver.hxx:1044
void SetCurrentTime(double time)
Definition EvolutionSolver.hxx:532
void SetMCFissionsPerSourceNeutron(int i, double val)
set the total number of fissions/s for ZAI i.
Definition EvolutionSolver.hxx:899
void SetMaxSubDT(double dtmax=- 1)
Set the approximate Maximum CRAM/Runge-Kutta sub-step.
Definition EvolutionSolver.hxx:500
void SetNSubSteps(int NSubStep=10)
Set the number of Runge-Kutta step.
Definition EvolutionSolver.hxx:458
int fFitRange
The number of point taken for the fit.
Definition EvolutionSolver.hxx:1037
vector< double > GetPowerVector()
Definition EvolutionSolver.hxx:247
void SetXe135Equilibrium(double t=3 *9.14 *3600)
Set Xe-135 special treatment in RK integration.
Definition EvolutionSolver.cxx:3273
double fMultiGroupEmax
upper Energy bin for multgroup
Definition EvolutionSolver.hxx:994
void CheckCompositions()
Check if no proportions are negative.
Definition EvolutionSolver.cxx:2613
void FitSigmaPhi(bool flag=true)
Set/Unset a fit extrapolation of sigma*phi.
Definition EvolutionSolver.hxx:769
int GetSourcePartialFactor()
Definition EvolutionSolver.hxx:658
bool IsFitTallyNormalizationFactor()
Definition EvolutionSolver.hxx:779
double GetCurrentMCTime()
Definition EvolutionSolver.hxx:520
int fMureDataWritingVersion
The MURE version for data writing in evolving file.
Definition EvolutionSolver.hxx:1056
void UpdateSigmaPhi()
Updates phi and sigma*phi.
Definition EvolutionSolver.cxx:731
void AddCellToGroup(Cell *TheCell, int GroupNumber=0)
Add a Cell to a Group.
Definition EvolutionSolver.cxx:3131
string fPartialMCRunDir
Directory name for Partial Run.
Definition EvolutionSolver.hxx:1051
vector< Cell * > & GetCellGroup(int GroupNumber)
Definition EvolutionSolver.hxx:227
bool fSmoothSigmaPhi
Whether or not to smooth SigmaPhi between 2 MC steps.
Definition EvolutionSolver.hxx:1036
ValErr_t GetN2N()
Definition EvolutionSolver.hxx:344
bool fWriteBinaryData
True if BDATA_ files are wanted (binary MURE data)
Definition EvolutionSolver.hxx:1054
ValErr_t GetNu()
Definition EvolutionSolver.hxx:360
vector< double > fPowerVector
array (same dim as MC time) that store Power at each MC step
Definition EvolutionSolver.hxx:982
void SetPartialParticleMCRun(bool flag=true)
Definition EvolutionSolver.hxx:642
vector< EvolutiveSystem * > fOutCoreEvolutiveSystemVector
the vector containing all theout core evolutive systems considered.
Definition EvolutionSolver.hxx:972
void SetMultiGroupDecadeMultiplicator(int N=1)
Definition EvolutionSolver.hxx:146
void SetControlRate(int ReactionCode, ValErr_t rate)
Set global reaction rates when evolution is controled by ControlMaterial.
Definition EvolutionSolver.hxx:308
double fCurrentMCTime
Current MC time in case of Evolution.
Definition EvolutionSolver.hxx:1004
void UseMultiGroupTallies(bool StdTallyFor238U=false)
Use Multi group tallies in the evolution.
Definition EvolutionSolver.cxx:3292
bool fIsCoolingUsed
true when cooling is set
Definition EvolutionSolver.hxx:980
void UpdateSigma()
Updates phi and sigma.
Definition EvolutionSolver.cxx:737
double GetNuSigmaFisPhiTotal()
Definition EvolutionSolver.hxx:869
void WriteBinaryEvolutionData(string filename)
Write all the information from one evolution step to a binary file.
Definition EvolutionSolver.cxx:2229
EvolutionSolver()
Default constructor. All "numbers" are set to 0.
Definition EvolutionSolver.cxx:275
void SetPredictorCorrector(bool middle_step=false)
Use the Predictor-Corrector method for evolution.
Definition EvolutionSolver.cxx:3150
vector< ZAI * > & GetZAIThatFission()
Definition EvolutionSolver.hxx:852
bool fFromRebuildTallies
flag to know if the RebuildTallies method has been used (for RebuildPerturbativeMaterials)
Definition EvolutionSolver.hxx:989
bool IsPartialParticleMCRun()
Definition EvolutionSolver.hxx:638
int GetNSubSteps()
Definition EvolutionSolver.hxx:505
static const json EvolDataSchema
Definition EvolutionSolver.hxx:1063
vector< EvolutiveSystem * > & GetEvolutiveSystemVector()
Definition EvolutionSolver.hxx:833
void SetControlRate(Reaction r, ValErr_t rate)
Set global reaction rates when evolution is controled by ControlMaterial.
Definition EvolutionSolver.hxx:298
int fMCRunNumber
Current MC Run Number.
Definition EvolutionSolver.hxx:1001
void SetWriteBinaryData(bool flag=true)
Definition EvolutionSolver.hxx:669
double fPower
Power of the critical reactor IN WATTS ! (EFR = 3.6e+9 W)
Definition EvolutionSolver.hxx:979
double GetInitialHNMass()
Definition EvolutionSolver.hxx:330
bool IsFitSigmaPhiPC()
Definition EvolutionSolver.hxx:817
int fGlobalLossesTallyNumber
Number of the Tally counting neutron loss in the whole geometry.
Definition EvolutionSolver.hxx:1030
void validate_json_against_schema(json &data, const json &schema)
Definition EvolutionSolver.cxx:1942
vector< double > fFitTNF
used for Tally Normalization Factor extrapolation (vector of TNF)
Definition EvolutionSolver.hxx:1038
ValErr_t fGlobalN2N
Total n2n rate in the whole geometry.
Definition EvolutionSolver.hxx:1024
bool IsMaterialControl()
Definition EvolutionSolver.hxx:288
bool fTallyRebuild
Allows or not rebuild of tallies (necessary in thermal evolution)
Definition EvolutionSolver.hxx:990
bool fWriteASCIIData
True if DATA_ files are wanted (ASCII MURE data)
Definition EvolutionSolver.hxx:1055
void UpdateTallyNormalizationFactor()
update tally normalization factor according to power
Definition EvolutionSolver.cxx:2684
void SetPowerNormalizationFactorNuOverKeff(bool flag=true)
Definition EvolutionSolver.hxx:919
void SetPartialMCRun(bool flag=true)
Set the Partial Run mode.
Definition EvolutionSolver.hxx:630
void SetPower(double Power)
set the reactor power (in watts)
Definition EvolutionSolver.cxx:3286
bool fCorrectNormalizationFactor
Flag to say if Tibor's correction to tallies will be used or not.
Definition EvolutionSolver.hxx:998
bool fBrutalStop
brutally stop the evolution if Keff falls below BrutalStopValue
Definition EvolutionSolver.hxx:983
bool fPowerNormalizationFactorNuOverKeff
Definition EvolutionSolver.hxx:999
void IntegrateMassInEvolvingCells()
Sum all the evolving masses in the problem.
void FindExtrapolateSigmaPhi()
Find SigmaPhi extrapolation.
Definition EvolutionSolver.cxx:1615
void SetFitRangeNumber(int n=4)
Definition EvolutionSolver.hxx:795
bool fFinishOnMCRun
The envolution ends on a MC run.
Definition EvolutionSolver.hxx:996
void SetPredictorStep(bool flag)
Definition EvolutionSolver.hxx:598
ValErr_t GetFiss()
Definition EvolutionSolver.hxx:352
void SetDepletionSolver(string s="CRAM")
Choose between different solvers.
Definition EvolutionSolver.hxx:400
Material * FindPerturbativeMaterial(Nucleus_ptr TheNucleus)
return the perturbative material which contains Nucleus.
Definition EvolutionSolver.cxx:3054
ValErr_t fGlobalAbsorptions
Global total absorption rate of the whole geometry (code -2).
Definition EvolutionSolver.hxx:1020
double GetCurrentSubStep()
Definition EvolutionSolver.hxx:540
ValErr_t GetN3N()
Definition EvolutionSolver.hxx:348
double NormalizeMCFissionsPerSecond(double fractional_power=1.)
Returns the normalization factor.
Definition EvolutionSolver.cxx:882
double GetTimeUnitConverter()
Definition EvolutionSolver.hxx:553
void SetNeutronLosses(ValErr_t losses)
Definition EvolutionSolver.hxx:372
int NumberOfCellGroup()
Definition EvolutionSolver.hxx:231
void SetSourcePartialFactor(int N=2)
Definition EvolutionSolver.hxx:654
void FitTallyNormalizationFactor()
Find the fitting parameters for TNF.
Definition EvolutionSolver.cxx:2862
int FindLastMCRunNumber()
Find number of last MC run in the MC directory.
Definition EvolutionSolver.cxx:807
void CalculateInitialHNMass()
Calculates the initial Heavy Nuclei mass in Ton.
Definition EvolutionSolver.cxx:3203
bool IsWriteASCIIData()
Definition EvolutionSolver.hxx:689
bool IsMultiGroupTalliesUsed()
Definition EvolutionSolver.hxx:170
bool fMultigroupTallies
True in multigroup calculation.
Definition EvolutionSolver.hxx:991
double fBrutalStopKValue
The brutal stop value.
Definition EvolutionSolver.hxx:984
void SetCRAMOrder(int order)
Set the CRAM options.
Definition EvolutionSolver.hxx:419
double GetTotalAtoms()
calculate total atoms numbrs
void PredictorTransMogrify()
Update all materials from EvolutiveSystem after Predictor step.
Definition EvolutionSolver.cxx:1601
void AddControlRodCell(Cell *TheCell)
Definition EvolutionSolver.hxx:321
bool fFitSigmaPhiPC
True if the in PCE, fit of sigma*phi is done for the corrector step.
Definition EvolutionSolver.hxx:1047
void UpdateSigmaPhiMultiGroup()
Updates phi(E) in multigroup run.
Definition EvolutionSolver.cxx:3035
double fTallyNormalizationFactor
factor to normalized MC tallies.
Definition EvolutionSolver.hxx:997
void VerifyPower()
Check whether Power and real power from fissions are equal.
Definition EvolutionSolver.cxx:2636
void SetGlobalRates()
Set the global rates (over all cells) for fission, n2n, ...
Definition EvolutionSolver.cxx:2522
double fDeltaK
The precision with which the user wishes to remain around the value of Keff = 1. FMS testing.
Definition EvolutionSolver.hxx:1011
vector< double > fMCTimeForFit
used for Tally Normalization Factor extrapolation (vector of time)
Definition EvolutionSolver.hxx:1039
double fCurrentSubStep
Current Runge Kutta step.
Definition EvolutionSolver.hxx:1003
ControlMaterial * GetControlMaterial()
Definition EvolutionSolver.cxx:2216
string fTimeUnit
use only for pretty print
Definition EvolutionSolver.hxx:1033
void SetMultiGroupLowerEnergy(double Emin=1e-4)
Definition EvolutionSolver.hxx:154
double GetMultiGroupUpperEnergy()
Definition EvolutionSolver.hxx:166
vector< Cell * > fControlRodCell
The cell that is a control rod.
Definition EvolutionSolver.hxx:975
double fNextMCTime
Next MC time in case of Evolution.
Definition EvolutionSolver.hxx:1005
void ReadEvolutionPowerData(string filename, int version=1)
Read Compositions, time, volume from one evolution step from an ascii file.
Definition EvolutionSolver.cxx:1966
void ReadBinaryEvolutionData(string filename)
Read Compositions, time, volume from one evolution step from a binary file.
Definition EvolutionSolver.cxx:2421
void WriteNFissionsData()
Write only information concerning Nfissions from one evolution step to file FDATA.
Definition EvolutionSolver.cxx:2567
void SetPartialMCRunDirectory(string name="PartialRun")
Definition EvolutionSolver.hxx:646
bool fHNMassInTonInitialized
Initial mass of Heavy Nucleus in ton.
Definition EvolutionSolver.hxx:1015
string GetTimeUnit()
Definition EvolutionSolver.hxx:557
int GetCurrentSubStepNumber()
Definition EvolutionSolver.hxx:544
void BuildTallies()
Build automatic tallies.
Definition EvolutionSolver.cxx:660
int fCurrentSubStepNumber
Current Runge Kutta Number.
Definition EvolutionSolver.hxx:1002
bool IsWriteJsonData()
Definition EvolutionSolver.hxx:681
void FindPredictorCorrectorStep()
Find the corrector time for PC method.
Definition EvolutionSolver.cxx:3160
ValErr_t GetControlRate(int ReactionCode)
Definition EvolutionSolver.hxx:316
bool GetCorrectNormalizationFactor()
Definition EvolutionSolver.hxx:938
void AddToMCFissionsPerSourceNeutron(int i, double val)
Add val to total number of fissions/s for ZAI i.
Definition EvolutionSolver.hxx:908
EvolutiveSystem class carries out evolution.
Definition EvolutiveSystem.hxx:65
A Material constituing a Cell.
Definition Material.hxx:83
Define a Reaction list for Tally multiplicator inputs.
Definition Reaction.hxx:41
Handle dynamical object creation and pointer affectation.
Definition TReference.hxx:74
A ZAI defined a (Z, A, Isomere) for a Nucleus.
Definition ZAI.hxx:118
the namespace of the Standard C++

MURE Project, documentation generated by Doxygen 1.9.7 - Fri Jan 19 2024