EvolutiveSystem class carries out evolution. More...
#include <EvolutiveSystem.hxx>
Public Member Functions | |
EvolutiveSystem (Cell *cell) | |
Normal Constructor. More... | |
EvolutiveSystem (Material *mat) | |
Constructor for ONLY Out Core evolving material (flux=0) More... | |
EvolutiveSystem (const EvolutiveSystem &ES) | |
Copy Constructor. More... | |
~EvolutiveSystem () | |
Destructor. More... | |
Update Material & Atoms at evolution step methods | |
These methods modify (transmogrify!!!) atoms, material compositions when needed (after an evoltion step). | |
void | TransmogrifyMaterial () |
Updates the proportion array. More... | |
void | PredictorTransmogrifyMaterial () |
Updates the proportion array after a Predictor step. More... | |
void | CorrectorTransmogrifyMaterial () |
Updates the proportion array after a Corrector step (PCE only). More... | |
void | TransmogrifyGroupCell () |
Updates the proportion array for group cells. More... | |
void | PredictorTransmogrifyGroupCell () |
Updates the proportion array for group cells after a Predictor step. More... | |
void | CorrectorTransmogrifyGroupCell () |
Updates the proportion array for group cells after a Corrector step. More... | |
void | TransmogrifyEvolvingAtoms () |
Updates the EvolvingAtoms array. More... | |
int | GetEvolvingCompositionSize () |
returns composition vector size. More... | |
void | SetEvolvingCompositionSize (int n) |
sets composition vector size. More... | |
void | CalculateEvolvingAtoms () |
calculate Evolving Proportion More... | |
void | SetEvolvingAtoms (int i, double proportion) |
Sets the ith proportion. More... | |
double | GetEvolvingAtoms (int i) |
returns ith atoms. More... | |
void | SetEvolvingAtoms (double *f) |
Set the array. More... | |
double * | GetEvolvingAtoms () |
returns the array More... | |
bool | IsTransmogrify () |
return true when transmogrification has been done. More... | |
void | SetTransmogrify (bool flag) |
set fAlreadyTransmodrified to flag. More... | |
Mains attributes of the EvolutiveSystem | |
Cell * | GetCell () |
returns the evolving Cell. More... | |
Material * | GetMaterial () |
returns the evolving material More... | |
void | SetCell (Cell *c) |
set the evolving cell. More... | |
void | SetMaterial (Material *m) |
set the evolving material More... | |
Runge-Kutta related methods | |
void | RungeKutta (double t1, double t2) |
Pre-treatment Runge-Kutta method. More... | |
void | BuildEqns (double t, double *N, double *dNdt) |
Builds the Bateman equations for integration. More... | |
void | SetMatrixToZero () |
Initialize the evolution Matrix. More... | |
void | LoadTheMatrix (int index) |
Fill evolution Matrix, index is the place of the current evolutionsystem in the evolutionsystemvector. More... | |
void | SetTheMatrix (double **f) |
Set the Evolution Matrix (Bateman equations) More... | |
double ** | GetTheMatrix () |
return the Evolution Matrix (Bateman equations) More... | |
Miscellaneous methods | |
double | GetPower () |
Calculates and returns the local power in this evolving cell. More... | |
double | GetPowerErr () |
Returns the error on local power in this evolving cell (from MCNP SigmaPhi error) must be called after a each GetPower. More... | |
double | GetPowerDensity () |
Calculates and returns the local power density in this evolving cell. More... | |
bool | IsEvolving () |
True if this evolving system really evolve (default) More... | |
void | SetEvolve (bool flag=true) |
Set evolve flag to true or false. More... | |
string | PrintEvolvingAtoms () |
Prints out the Atoms vector. More... | |
void | CalculateNuSigmaFisPhis () |
Calculate for an evolutive system. More... | |
void | FindIndexMass135 () |
void | FindXe135Equilibrium () |
Calculate the "equilibrium" Xe concentration. More... | |
Public Member Functions inherited from DynamicalSystem | |
DynamicalSystem () | |
Normal Constructor. More... | |
DynamicalSystem (const DynamicalSystem &DS) | |
Copy Constructor. More... | |
virtual | ~DynamicalSystem () |
Destructor. More... | |
int | GetNumberOfEquationSize () |
return the number of equations. More... | |
void | SetNumberOfEquationSize (int n) |
set the number of equations. More... | |
void | SetPrecision (double eps=1e-5) |
set RK precision to change the integration step More... | |
void | SetForbidNegativeValue () |
Forbid negative value during integration. More... | |
void | RungeKutta (double *YStart, double t1, double t2) |
Runge Kutta calling method. More... | |
Protected Member Functions | |
void | CalculatePower () |
Calculate the local power in this evolving system. More... | |
Protected Member Functions inherited from DynamicalSystem | |
void | RK4 (double *y, double *dydx, double x, double h, double *yout) |
Runge Kutta main method. More... | |
void | AdaptStepSize (double *y, double *dydx, double *x, double htry, double eps, double *yscal, double *hdid, double *hnext) |
Adaptative Step Size method for RK. More... | |
Protected Attributes | |
Material * | fEvolvingMaterial |
The Evolving material. More... | |
Cell * | fEvolvingCell |
The cell which IS the Evolving System. More... | |
double * | fEvolvingAtoms |
The evolving atoms copied from Material proportions. More... | |
double * | fPCEvolvingAtoms |
The evolving atoms copied from Material proportions for predictor-corrector method. More... | |
double | fTmin |
The lowest value of the decay constant considered. More... | |
double ** | fTheMatrix |
The evolution Matrix. More... | |
double | fPower |
Local Power. More... | |
double | fPowerErr |
Error on Local Power. More... | |
double | fPowerDensity |
Local Power Density. More... | |
bool | fAlreadyTransmodrified |
True if transmogrification is done. More... | |
bool | fEvolve |
int | fIdxTe135 |
index of Te-135 in the fEvolvingAtoms array More... | |
int | fIdxI135 |
index of I-135 in the fEvolvingAtoms array More... | |
int | fIdxXe135 |
index of Xe-135 in the fEvolvingAtoms array More... | |
double | fNI135 |
the new I-135 number of atoms (use only for fNXe135 calculation) More... | |
double | fNXe135 |
the new Xe 135 number of atoms More... | |
double | fOldFlux |
Old flux stored. More... | |
double | fMeanFlux |
Mean flux=(old+new)/2 to calculate Xe and I135 equilibrium concentration. More... | |
double | fFirstTNF |
value of Tally Normalization factor at the first RK step More... | |
Protected Attributes inherited from DynamicalSystem | |
int | fNVar |
The size of the composition vector and /or number of ZAIs involved. More... | |
double | fPrecision |
Precision of the RungeKutta. More... | |
double | fHestimate |
RK Step estimation. More... | |
double | fHmin |
RK minimum Step. More... | |
double | fMaxHdid |
store the effective RK max step More... | |
double | fMinHdid |
store the effective RK min step More... | |
bool | fIsNegativeValueAllowed |
whether or not negative value are physical. More... | |
EvolutiveSystem class carries out evolution.
An EvolutiveSystem is attached to a (evolving) Cell with its evolving Material. When the evolution begin, all nuclei that could appear during the evolution are present. There proportions evolve and are actually modified when EvolutiveSystem::TransmogrifyMaterial is called. Bateman equations are built in EvolutiveSystem::BuildEqns. They are solved using an adaptative step Runge Kutta method. The integration over a given time is performed trough MURE::Evolution method, that calls EvolutiveSystem::RungeKutta. During a RK step, flux as well as cross-sections are supposed to be constant.
EvolutiveSystem::EvolutiveSystem | ( | Cell * | cell | ) |
Normal Constructor.
EvolutiveSystem::EvolutiveSystem | ( | Material * | mat | ) |
Constructor for ONLY Out Core evolving material (flux=0)
EvolutiveSystem::EvolutiveSystem | ( | const EvolutiveSystem & | ES | ) |
Copy Constructor.
EvolutiveSystem::~EvolutiveSystem | ( | ) |
Destructor.
|
virtual |
Builds the Bateman equations for integration.
t | : time at which the equations are built (needed by RK but useless here) |
N | : Nucleus Proportions a time t |
dNdt | : ode's for each element. |
Reimplemented from DynamicalSystem.
void EvolutiveSystem::CalculateEvolvingAtoms | ( | ) |
calculate Evolving Proportion
void EvolutiveSystem::CalculateNuSigmaFisPhis | ( | ) |
Calculate for an evolutive system.
|
protected |
Calculate the local power in this evolving system.
void EvolutiveSystem::CorrectorTransmogrifyGroupCell | ( | ) |
Updates the proportion array for group cells after a Corrector step.
void EvolutiveSystem::CorrectorTransmogrifyMaterial | ( | ) |
Updates the proportion array after a Corrector step (PCE only).
This method is only called for Predictor-corrector at end step method. It is used after the corrector step before any new predictor step for the time step.
void EvolutiveSystem::FindIndexMass135 | ( | ) |
Find Index of mass 135 Te, I and Xe in the fEvolvingMaterial
void EvolutiveSystem::FindXe135Equilibrium | ( | ) |
Calculate the "equilibrium" Xe concentration.
Due to instabillity in the flux (weak coupled problem) and large Xe-135 capture cross-section, the evolution could show unphysical Xe-135 oscillations. The solution proposed is to:
1) calculate the equilibrium growth value of Xe-135 for short time (default is of the Xe-135)
2) suppose that Xe-135 is then at equilibrium (impose by dN/dt=0 in Batemann eqs), and calculate the Xe concentration as
where
if the ratio between the 2 flux is greater than 1.5 else
and I-135 calculation is calculated in the same way (but not used in Bateman eqs where the "normal" way seems to work).
This is done via the MURE::SetXe135Equilibrium() method.
|
inline |
returns ith atoms.
|
inline |
returns the array
|
inline |
returns composition vector size.
|
inline |
returns the evolving material
|
inline |
Calculates and returns the local power in this evolving cell.
|
inline |
Calculates and returns the local power density in this evolving cell.
|
inline |
Returns the error on local power in this evolving cell (from MCNP SigmaPhi error) must be called after a each GetPower.
|
inline |
return the Evolution Matrix (Bateman equations)
|
inline |
True if this evolving system really evolve (default)
|
inline |
return true when transmogrification has been done.
void EvolutiveSystem::LoadTheMatrix | ( | int | index | ) |
Fill evolution Matrix, index is the place of the current evolutionsystem in the evolutionsystemvector.
void EvolutiveSystem::PredictorTransmogrifyGroupCell | ( | ) |
Updates the proportion array for group cells after a Predictor step.
void EvolutiveSystem::PredictorTransmogrifyMaterial | ( | ) |
Updates the proportion array after a Predictor step.
Copy original composition stored in PCEvolvingAtoms in Material Proportion ; Store evolved EvolvingAtoms in PCEvolvingAtoms over the predictor step and keep the original composition stored in EvolvingAtoms in order to begin the corrector
string EvolutiveSystem::PrintEvolvingAtoms | ( | ) |
Prints out the Atoms vector.
void EvolutiveSystem::RungeKutta | ( | double | t1, |
double | t2 | ||
) |
Pre-treatment Runge-Kutta method.
This method does initialisation and then call DynamicalSystem::RungeKutta
t1 | : initial time |
t2 | : final time |
|
inline |
set the evolving cell.
|
inline |
Set evolve flag to true or false.
|
inline |
Sets the ith proportion.
|
inline |
Set the array.
|
inline |
sets composition vector size.
|
inline |
set the evolving material
void EvolutiveSystem::SetMatrixToZero | ( | ) |
Initialize the evolution Matrix.
|
inline |
Set the Evolution Matrix (Bateman equations)
|
inline |
set fAlreadyTransmodrified to flag.
void EvolutiveSystem::TransmogrifyEvolvingAtoms | ( | ) |
Updates the EvolvingAtoms array.
This method takes the proportions (in atoms) of the fEvolvingMaterial (that is to say the proportions of an evolving cell) and put them in the fEvolvingAtoms in order to update evolution compositions for RK.
This method is normally called only after FuelReprocessing because the reprocessing concern Cell material thus one has to copy.
void EvolutiveSystem::TransmogrifyGroupCell | ( | ) |
Updates the proportion array for group cells.
This method takes the proportions (in atoms) of fEvolvingAtoms (that is to say the proportions that have evolved by RK) and put them in the fEvolvingMaterial in order that MCNP really see the new composition. In group cells, the material is a homogeneisation of all Materials of the group.
usually done just before a new MCNP run (end of MURE::Evolution()).
void EvolutiveSystem::TransmogrifyMaterial | ( | ) |
Updates the proportion array.
This method takes the proportions (in atoms) of fEvolvingAtoms (that is to say the proportions that have evolved by RK) and put them in the fEvolvingMaterial in order that MCNP really see the new composition.
usually done just before a new MCNP run (end of MURE::Evolution()).
|
protected |
True if transmogrification is done.
|
protected |
|
protected |
The evolving atoms copied from Material proportions.
|
protected |
The cell which IS the Evolving System.
|
protected |
The Evolving material.
|
protected |
value of Tally Normalization factor at the first RK step
|
protected |
index of I-135 in the fEvolvingAtoms array
|
protected |
index of Te-135 in the fEvolvingAtoms array
|
protected |
index of Xe-135 in the fEvolvingAtoms array
|
protected |
Mean flux=(old+new)/2 to calculate Xe and I135 equilibrium concentration.
|
protected |
the new I-135 number of atoms (use only for fNXe135 calculation)
|
protected |
the new Xe 135 number of atoms
|
protected |
Old flux stored.
|
protected |
The evolving atoms copied from Material proportions for predictor-corrector method.
|
protected |
Local Power.
|
protected |
Local Power Density.
|
protected |
Error on Local Power.
|
protected |
The evolution Matrix.
|
protected |
The lowest value of the decay constant considered.