Front-end class for Evolution(): enables easy and comprehensive specification of operation history, as well as core reshuffling.
More...
|
| EvolutionWrapper () |
| Normal constructor. More...
|
|
| EvolutionWrapper (const EvolutionWrapper &ev) |
| Copy constructor. More...
|
|
EvolutionControl * | Clone () |
| Object cloning. More...
|
|
| ~EvolutionWrapper () |
| Destructor. More...
|
|
void | Evolve (int start=0, string startd="") |
| Start the evolution. More...
|
|
vector< vector< ValErr_t > > & | GetTallyValues () |
|
vector< double > & | GetBurnup () |
|
void | AddSumTally (Cell *c, Reaction *r, int *index) |
|
vector< ValErr_t > & | GetSumTallyValues (int SumTally) |
|
void | SetSumTallyEnergies (int nE, double *E) |
|
|
Use these methods to print a summary file for evolution.
|
void | PrintMaterialDensity (Material *M) |
| Require printing of density of M. More...
|
|
void | PrintMaterialTemperature (Material *M) |
| Require printing of temperature of M. More...
|
|
void | PrintMaterialBoron (Material *M) |
| Require printing of boron content of M. More...
|
|
void | PrintFinalComposition (Material *M, string Title) |
| Dump final composition of M with title. More...
|
|
void | PrintFinalCompositionNuclide (int Z, int A) |
| Dump final composition of M with title. More...
|
|
void | SetOutFile (string fn) |
| Setup printing to file fn. More...
|
|
|
These are methods for controlling the evolution at every step.
|
void | ControlAtEachMCNPStep () |
| from EvolutionControl More...
|
|
void | ControlAtEachRKStep () |
| from EvolutionControl More...
|
|
void | ControlAfterEndOfRKIntegration () |
| from EvolutionControl More...
|
|
|
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. More...
|
|
void | SetPowerConstant (float P) |
| This phase is burn phase, power is constant. More...
|
|
void | SetPowerLinear (float P1, float P2) |
| This phase is burn phase, power is linearly changing. More...
|
|
void | SetPowerCooling () |
| This phase is cooling (no flux). More...
|
|
void | SetMaterialTemperature (Material *M, float X) |
| Set temperature of a material during this phase. More...
|
|
void | SetMaterialBoron (Material *M, float X) |
| Set boron content in a material during this phase. More...
|
|
void | SetMaterialBoronLinear (Material *M, float Content1, float Content2) |
| Set linearly changing boron content in a material during this phase. More...
|
|
void | SetMaterialDensity (Material *M, float X) |
| Set boron content in a material during this phase. More...
|
|
|
void | AddTally (Tally *t, int *index) |
|
|
Methods allowing reshuffle core (based on moving universes in a lattice) at a MCNP step.
|
void | Reshuffle (Cell *CLatGen) |
| Reshuffle at beginning of this phase. More...
|
|
void | ReshuffleAddChain (vector< Cell * > Chain) |
| Add a new reshuffling chain (fresh->a->b->..->z, z goes out) More...
|
|
void | ReshuffleStartChain () |
| Add a new empty reshuffling chain. More...
|
|
void | ReshuffleAddToChain (Cell *C) |
| Add a cell to the last reshuffling chain. More...
|
|
| EvolutionControl () |
| Default Constructor. More...
|
|
| EvolutionControl (const EvolutionControl &ev) |
| Copy constructor. More...
|
|
virtual | ~EvolutionControl () |
| destructor More...
|
|
virtual void | ControlBeforeMCNPStep () |
| control at each MCNP step (just before a MCNP run) More...
|
|
void | SetTimeCutting (vector< double >T) |
| Set Time at which MCNP run is performed. More...
|
|
vector< double > & | GetMCNPRunTimes () |
| returns Time at which MCNP run is performed More...
|
|
void | SetWantedKeff (double keff=1.) |
| set the wanted keff value More...
|
|
void | SetWantedHNProportion (double HNproportion=0.01) |
| set the wanted Heavy Nucleus proportion More...
|
|
double | GetWantedHNProportion () |
| return the wanted Heavy Nucleus proportion More...
|
|
void | SetLockToInitialKeff (bool flag=true) |
| set keff control to keep keff at its initial value. (tang) More...
|
|
void | SetConstantPower (bool flag=true) |
| say whether the power is kept constant or not More...
|
|
bool | IsConstantPower () |
| return whether the power is kept constant or not More...
|
|
void | SetFuelReprocessing (FuelReprocessing *processing) |
| add the FuelReprocessing More...
|
|
FuelReprocessing * | GetFuelReprocessing () |
| get the FuelReprocessing More...
|
|
virtual void | CalculateCoeffsAtStep (int s) |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | SetRunFuelTemperatureCoeff (bool flag=true) |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | SetRunVoidCoeff (bool flag=true) |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | SetRunModeratorTemperatureCoeff (bool flag=true) |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | SetRunPoisonReactivityWorth (bool flag=true) |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | SetCriticalitySource (MCNPSource *s) |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | LaunchReactivityCoeffsCalculations () |
| Abstract method ; to be overlaoded. More...
|
|
virtual void | ControlKeff (double Time) |
| Abstract method ; to be overlaoded. More...
|
|
void | RunMCNPCriticality (string FileName) |
| Run MCNP only for a Kcode (no tally) More...
|
|
virtual double | EstimatedKeff () |
| Extrapolation of Keff on the next step from a linear fit. More...
|
|
virtual void | FindKeffSlope () |
| Find the slope of Keff base on previous run (fit) More...
|
|
virtual void | FindAbsorptionSlope () |
| Find the slope of Aborption base on previous run (fit) More...
|
|
virtual void | FindFissionSlope () |
| Find the slope of Fission base on previous run (fit) More...
|
|
virtual void | FindNuFissionSlope () |
| Find the slope of Fission*nu base on previous run (fit) More...
|
|
virtual void | ExtrapolateRates () |
| Extrapolation of reaction rates on the next step from a linear fit. More...
|
|
virtual void | WriteControlParameters () |
| Write poison/fissile proportions etc. More...
|
|
virtual void | WriteCurrentRates () |
| Write absorpstion, fission, ... rates in ABS, FISS, ... files. More...
|
|
void | PrintKeffWarning () |
| Print Keff estimation warnings. More...
|
|
void | FindNextCoefs (double value, vector< double > &V, double &Slope, double &Intersept, int &LastMCNPRunNumber) |
| Fit a vector and return the fitted parameters. More...
|
|
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 MCNP step. This is done via ControlAtEachMCNPStep() and ControlAfterEndOfRKIntegration() methods, inherited from EvolutionControl.
Basic usage
Concept of EvolutionWrapper is to specify phases of evolution (which consist of one or more MCNP/RK 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):
Internal details
How history data are stored
All data are stored as vectors; all have the same size, being number of MCNP steps. Only the first two have size equal of number of phases.
Vector name | Item |
fPhaseStep | no. of MCNP steps in this phase |
fPhaseCum | no. of MCNP 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