Front-end class for Evolution(): enables easy and comprehensive specification of operation history, as well as core reshuffling.
More...
|
| EvolutionWrapper () |
| Normal constructor.
|
|
| EvolutionWrapper (const EvolutionWrapper &ev) |
| Copy constructor.
|
|
EvolutionControl * | Clone () override |
| Object cloning.
|
|
| ~EvolutionWrapper () override |
| Destructor.
|
|
|
Use these methods to print a summary file for evolution.
|
void | PrintMaterialDensity (Material *M) |
|
void | PrintMaterialTemperature (Material *M) |
|
void | PrintMaterialBoron (Material *M) |
|
void | PrintFinalComposition (Material *M, string Title) |
| Dump final composition of M with title.
|
|
void | PrintFinalCompositionNuclide (int Z, int A) |
| Dump final composition of M with title.
|
|
void | SetOutFile (string fn) |
|
|
These are methods for controlling the evolution at every step.
|
void | ControlAfterEachMCRun () override |
| from EvolutionControl
|
|
void | ControlBeforeEachSubStep () override |
| from EvolutionControl
|
|
void | ControlAfterEachEvolutionStep () override |
| from EvolutionControl
|
|
void | Evolve (int start=0, string startd="") |
| Start the evolution.
|
|
|
Adding depletion phases, setting temperatures/densities/boron, setting power etc.
|
void | AddPhase (float T, int steps, int dlog=0, float bas=2) |
| Add new depletion phase.
|
|
void | SetPowerConstant (float P) |
| This phase is burn phase, power is constant.
|
|
void | SetPowerLinear (float P1, float P2) |
| This phase is burn phase, power is linearly changing.
|
|
void | SetPowerCooling () |
| This phase is cooling (no flux).
|
|
void | SetMaterialTemperature (Material *M, float X) |
| Set temperature of a material during this phase.
|
|
void | SetMaterialBoron (Material *M, float X) |
| Set boron content in a material during this phase.
|
|
void | SetMaterialBoronLinear (Material *M, float Content1, float Content2) |
| Set linearly changing boron content in a material during this phase.
|
|
void | SetMaterialDensity (Material *M, float X) |
| Set boron content in a material during this phase.
|
|
void | SetMaterialNumberDensity (Material *M, int X) |
| Set number density of isotopes in a material during this phase.
|
|
|
void | AddTally (MureTally *t, int *index) |
|
| EvolutionControl () |
| Default Constructor.
|
|
| EvolutionControl (const EvolutionControl &ev) |
| Copy constructor.
|
|
virtual EvolutionControl * | Clone () |
|
virtual | ~EvolutionControl () |
| destructor
|
|
virtual void | ControlBeforeFirstMCRun () |
|
virtual void | ControlAfterRestart (int RestartRun) |
| control at the very beginning of the evolution, before any MC run
|
|
virtual void | ControlAfterLastMCRun () |
|
void | SetMCRunTime (vector< double > T) |
| Control at the end of evolution, after the last Evolution Step (or MC run if evolution end on a MC run)
|
|
vector< double > & | GetMCRunTimes () |
|
void | SetWantedKeff (double keff=1.) |
|
void | SetWantedHNProportion (double HNproportion=0.01) |
|
double | GetWantedHNProportion () |
|
void | SetLockToInitialKeff (bool flag=true) |
|
void | SetConstantPower (bool flag=true) |
|
bool | IsConstantPower () |
|
void | SetFuelReprocessing (FuelReprocessing *processing) |
|
FuelReprocessing * | GetFuelReprocessing () |
|
virtual void | CalculateCoeffsAtStep (int s) |
| Abstract method ; to be overloaded.
|
|
virtual void | SetRunFuelTemperatureCoeff (bool flag=true) |
| Abstract method ; to be overloaded.
|
|
virtual void | SetRunVoidCoeff (bool flag=true) |
| Abstract method ; to be overloaded.
|
|
virtual void | SetRunModeratorTemperatureCoeff (bool flag=true) |
| Abstract method ; to be overloaded.
|
|
virtual void | SetRunPoisonReactivityWorth (bool flag=true) |
| Abstract method ; to be overloaded.
|
|
virtual void | SetCriticalitySource (MCSource *s) |
| Abstract method ; to be overloaded.
|
|
virtual void | LaunchReactivityCoeffsCalculations () |
| Abstract method ; to be overloaded.
|
|
virtual void | ControlKeff (double Time) |
| Abstract method ; to be overloaded.
|
|
void | RunMCCriticality (string FileName) |
| Run MC only for a Kcode (no tally)
|
|
virtual double | EstimatedKeff () |
| Extrapolation of Keff on the next step from a linear fit.
|
|
virtual void | FindKeffSlope () |
| Find the slope of Keff base on previous run (fit)
|
|
virtual void | FindAbsorptionSlope () |
| Find the slope of Aborption base on previous run (fit)
|
|
virtual void | FindFissionSlope () |
| Find the slope of Fission base on previous run (fit)
|
|
virtual void | FindNuFissionSlope () |
| Find the slope of Fission*nu base on previous run (fit)
|
|
virtual void | ExtrapolateRates () |
| Extrapolation of reaction rates on the next step from a linear fit.
|
|
virtual void | WriteControlParameters () |
| Write poison/fissile proportions etc.
|
|
virtual void | WriteCurrentRates () |
| Write absorpstion, fission, ... rates in ABS, FISS, ... files.
|
|
void | PrintKeffWarning () |
| Print Keff estimation warnings.
|
|
void | FindNextCoefs (double value, vector< double > &V, double &Slope, double &Intersept, int &LastMCRunNumber) |
| Fit a vector and return the fitted parameters.
|
|
Front-end class for Evolution(): enables easy and comprehensive specification of operation history, as well as core reshuffling.
Specifying the operation history using EvolutionWrapper
Introduction
For simulating a reactor operation with given history of power/downtimes/temperatures/boron content, extension of standard MURE->Evolution() method was developed. It allows specifying detailed operation history, including core reshuffling (not treated in this section).
EvolutionWrapper is a descendant of EvolutionControl, since it sets operational parameters after each MC step. This is done via ControlAfterEachMCRun() and ControlAfterEachEvolutionStep() methods, inherited from EvolutionControl.
Basic usage
Concept of EvolutionWrapper is to specify phases of evolution (which consist of one or more MC/CRAM or RK solver runs) and to give all parameters of evolution for each phase. When any of the parameters is not defined, it retains it's initial/previous value.
After creating the EvolutionWrapper object, add a phase via EvolutionWrapper::AddPhase() and then set power/boron/temperature/density of any material. When any history parameters are specified, they apply to the current phase - so you cannot specify all phases and then assign parameters to them.
Important: when referring to any material (e.g. setting temperature), always use Cell->GetMaterial() instead of Material itself. Material is often copied and the original instance may not be used anymore.
When the history is specified, EvolutionWrapper::Evolve() can be called to proceed with the evolution (it calls the gMURE->Evolution(), so do not call that method again).
Simple example
Simple example follows (Power ramp, downtime, constant power; boron depletion in the first 100 days):
Front-end class for Evolution(): enables easy and comprehensive specification of operation history,...
Definition EWrapper.hxx:289
EvolutionWrapper()
Normal constructor.
Definition EWrapper.cxx:100
void SetPowerConstant(float P)
This phase is burn phase, power is constant.
Definition EWrapper.cxx:760
void SetMaterialBoronLinear(Material *M, float Content1, float Content2)
Set linearly changing boron content in a material during this phase.
Definition EWrapper.cxx:726
void AddPhase(float T, int steps, int dlog=0, float bas=2)
Add new depletion phase.
Definition EWrapper.cxx:811
void SetPowerCooling()
This phase is cooling (no flux).
Definition EWrapper.cxx:801
void SetPowerLinear(float P1, float P2)
This phase is burn phase, power is linearly changing.
Definition EWrapper.cxx:770
void Evolve(int start=0, string startd="")
Start the evolution.
Definition EWrapper.cxx:858
Internal details
How history data are stored
All data are stored as vectors; all have the same size, being number of MC steps. Only the first two have size equal of number of phases.
Vector name | Item |
fPhaseStep | no. of MC steps in this phase |
fPhaseCum | no. of MC steps before this phase, e.g. fPhaseCum[n]=sum(i=0..n-1)fPhaseStep[i] |
fTime | time of end of the step |
fPower | power in watts in this step/phase |
fCool | boolean - is this step/phase cooling? (e.g. no power, no flux, only decay) |
MatTTs | vector of MatX (Material+double); in this step, temperature of material is set for every element in this vector |
MatBBs | same as MatTTs, but ppms of natural boron |
MatDDs | same as MatTTs, but material densities (g.cm-3) |
Using EvolutionWrapper for core reshuffling during operation
Introduction
When simulating more complex depletion (when full-core or more assemblies are specified in the problem), it is usually needed to move around the fuel, extract some assemblies from the core and introduce new, fresh ones. Doing this by hand could be enormously laborous, but EvolutionWrapper class offers easy-to-use methods for reshuffling implementation.
Reshuffling is based on moving cells in lattice, not transfering the materials. Therefore reshuffling is not usable for non-latice cells. Other important thing to understand is that cell numbers remain linked to the fuel assemblies, not to the positions in the core. Therefore, reshuffling scheme is different every time, although the geometry of flow of assemblies through the core remains the same.
Basic usage and sample case
The idea is explained on sample case, containing four assemblies (e.g. four cells with fuel - one cell can of course represent multiple assemblies) and during three depletion phases, two new assemblies are introduced into the core and two are removed.
- we define six fuel cells, e.g. 1, 2, 3, 4, 5, 6
- in core lattice we place cells 1, 2, 3, 4; the other two, 5, 6, remain unused
- history will be defined by three phases
- into second phase we insert a reshuffling chain 5->1->2->3->4
- into third phase we insert a reshuffling chain 6->5->1->2->3
- when evolution starts, depletion is performed in lattice [1 2 3 4]
- after the first phase, lattice changes to [5 1 2 3], so 4 is not in the lattice and therefore is not depleted anymore
- after the second phase, lattice gets to be [6 5 1 2]
- so 1+2 were depleted for three cycles, 3+5 for two and 4+6 only for one cycle
Sample code for this case follows: (only the parts concerning reshuffling are given)
Presume that EW
is the EvolutionWrapper object, Lattice
is a lattice generating cell for the core and Fuel
[] is array of fuel cells.
EW->AddPhase(100, 2);
EW->AddPhase(100, 2);
EW->Reshuffle(Lattice);
EW->StartChain();
EW->AddToChain(Fuel[5]);
EW->AddToChain(Fuel[1]);
EW->AddToChain(Fuel[2]);
EW->AddToChain(Fuel[3]);
EW->AddToChain(Fuel[4]);
EW->AddPhase(100, 2);
EW->Reshuffle(Lattice);
EW->StartChain();
EW->AddToChain(Fuel[6]);
EW->AddToChain(Fuel[5]);
EW->AddToChain(Fuel[1]);
EW->AddToChain(Fuel[2]);
EW->AddToChain(Fuel[3]);
Alternatively, AddChain() can be used, vector of cells is given as a parameter. Multiple chains can be defined in one phase.
- Author
- Frantisek Havluj