MURE
Loading...
Searching...
No Matches
Public Member Functions | List of all members
EvolutiveSystem Class Reference

EvolutiveSystem class carries out evolution. More...

#include <EvolutiveSystem.hxx>

Public Member Functions

 EvolutiveSystem (Cell *cell)
 Normal Constructor.
 
 EvolutiveSystem (Material *mat)
 Constructor for ONLY Out Core evolving material (flux=0)
 
 EvolutiveSystem (const EvolutiveSystem &ES)
 Copy Constructor.
 
 ~EvolutiveSystem ()
 Destructor.
 
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.
 
void PredictorTransmogrifyMaterial ()
 Updates the proportion array after a Predictor step.
 
void CorrectorTransmogrifyMaterial ()
 Updates the proportion array after a Corrector step (PCE only).
 
void TransmogrifyGroupCell ()
 Updates the proportion array for group cells.
 
void PredictorTransmogrifyGroupCell ()
 Updates the proportion array for group cells after a Predictor step.
 
void CorrectorTransmogrifyGroupCell ()
 Updates the proportion array for group cells after a Corrector step.
 
void TransmogrifyEvolvingAtoms ()
 Updates the EvolvingAtoms array.
 
int GetEvolvingCompositionSize ()
 
void SetEvolvingCompositionSize (int n)
 
void CalculateEvolvingAtoms ()
 calculate Evolving Proportion
 
void SetEvolvingAtoms (int i, double proportion)
 
double GetEvolvingAtoms (int i)
 
void SetEvolvingAtoms (double *f)
 
double * GetEvolvingAtoms ()
 
bool IsTransmogrify ()
 
void SetTransmogrify (bool flag)
 
Mains attributes of the EvolutiveSystem
CellGetCell ()
 
MaterialGetMaterial ()
 
void SetCell (Cell *c)
 
void SetMaterial (Material *m)
 
Runge-Kutta related methods
void Solve (double t1, double t2)
 the true Runge-Kutta calling method.
 
void SetMatrixToZero ()
 Builds the Bateman equations for integration.
 
void LoadTheMatrix (int index)
 Fill evolution Matrix, index is the place of the current evolutionsystem in the evolutionsystemvector.
 
void SetTheMatrix (double **f)
 
double ** GetTheMatrix ()
 

Miscellaneous methods

BatemanSolverfBatemanSolver
 
MaterialfEvolvingMaterial
 The Evolving material.
 
CellfEvolvingCell
 The cell which IS the Evolving System.
 
double * fEvolvingAtoms
 The evolving atoms copied from Material proportions.
 
double * fPCEvolvingAtoms
 The evolving atoms copied from Material proportions for predictor-corrector method.
 
int fNVar
 fMatrix size
 
double ** fTheMatrix
 The evolution Matrix.
 
double fPower
 Local Power.
 
double fPowerErr
 Error on Local Power.
 
double fPowerDensity
 Local Power Density.
 
double fBurnup
 Local sum of extracted energy per mass initial HM.
 
double fPowerFrac
 Fraction of local power produced.
 
double fAvgQ
 Average Q value of the system.
 
double fInitHNMassInTon
 
bool fNMassInTonInitialized
 
bool fAlreadyTransmodrified
 True if transmogrification is done.
 
bool fEvolve
 
int fIdxTe135
 index of Te-135 in the fEvolvingAtoms array
 
int fIdxI135
 index of I-135 in the fEvolvingAtoms array
 
int fIdxXe135
 index of Xe-135 in the fEvolvingAtoms array
 
double fNI135
 the new I-135 number of atoms (use only for fNXe135 calculation)
 
double fNXe135
 the new Xe 135 number of atoms
 
double fOldFlux
 Old flux stored.
 
double fMeanFlux
 Mean flux=(old+new)/2 to calculate Xe and I135 equilibrium concentration.
 
double fFirstTNF
 value of Tally Normalization factor at the first RK step
 
double GetPower ()
 
double GetPowerErr ()
 
double GetPowerDensity ()
 
void SetPowerFrac (double powerfrac)
 
double GetPowerFrac ()
 
double GetAvgQ ()
 
void SetAvgQ (double AvgQ)
 
void Init ()
 
double GetBurnup ()
 
void UpdateBurnupHistory (double deltaT, bool cool)
 
bool IsEvolving ()
 
void SetEvolve (bool flag=true)
 
string PrintEvolvingAtoms ()
 Prints out the Atoms vector.
 
void CalculateNuSigmaFisPhis ()
 Calculate $N\sigma_{fis}\phi\nu_{prompt+delayed}$ for an evolutive system.
 
void FindIndexMass135 ()
 
void FindXe135Equilibrium ()
 Calculate the "equilibrium" Xe concentration.
 
void CalculatePower ()
 Calculate the local power in this evolving system.
 
void UpdateBurnupHistory (double deltaT)
 
void CalculateInitialHNMass ()
 
void SetSolver ()
 set fBatemanSolver
 

Detailed Description

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.

Author
PTO.
FMS.
JW.
Version
1.5

Constructor & Destructor Documentation

◆ EvolutiveSystem() [1/3]

EvolutiveSystem::EvolutiveSystem ( Cell cell)

Normal Constructor.

◆ EvolutiveSystem() [2/3]

EvolutiveSystem::EvolutiveSystem ( Material mat)

Constructor for ONLY Out Core evolving material (flux=0)

◆ EvolutiveSystem() [3/3]

EvolutiveSystem::EvolutiveSystem ( const EvolutiveSystem ES)

Copy Constructor.

◆ ~EvolutiveSystem()

EvolutiveSystem::~EvolutiveSystem ( )

Destructor.

Member Function Documentation

◆ CalculateEvolvingAtoms()

void EvolutiveSystem::CalculateEvolvingAtoms ( )

calculate Evolving Proportion

◆ CalculateInitialHNMass()

void EvolutiveSystem::CalculateInitialHNMass ( )
protected

◆ CalculateNuSigmaFisPhis()

void EvolutiveSystem::CalculateNuSigmaFisPhis ( )

Calculate $N\sigma_{fis}\phi\nu_{prompt+delayed}$ for an evolutive system.

◆ CalculatePower()

void EvolutiveSystem::CalculatePower ( )
protected

Calculate the local power in this evolving system.

◆ CorrectorTransmogrifyGroupCell()

void EvolutiveSystem::CorrectorTransmogrifyGroupCell ( )

Updates the proportion array for group cells after a Corrector step.

see EvolutiveSystem::CorrectorTransmogrifyMaterial()

◆ CorrectorTransmogrifyMaterial()

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.

  • If MURE::IsFitSigmaPhiPC() the evolved fEvolvingAtoms is copied into Material Proportion.
  • else, the mean of (Evolved atoms at predictor step) with (Evolved atoms at corrector step) is copied into Material Proportion.

◆ FindIndexMass135()

void EvolutiveSystem::FindIndexMass135 ( )

Find Index of mass 135 Te, I and Xe in the fEvolvingMaterial

◆ FindXe135Equilibrium()

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 $ 3\times T_{1/2}$ 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

\[ N_{Xe}=\frac{y_{Xe}\Sigma_{fis}\phi+\lambda_{^{135}I}N_{^{135}I}}{\sigma^{Xe}_{n, \gamma}\phi+\lambda_{^{135}Xe}N_{^{135}Xe}}\]

where

\[\phi=\frac{\phi^{previous MC run}+\phi^{current MC run}}{2}\]

if the ratio between the 2 flux is greater than 1.5 else

\[\phi=\phi^{current MC run}\]

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.

◆ GetAvgQ()

double EvolutiveSystem::GetAvgQ ( )
inline

◆ GetBurnup()

double EvolutiveSystem::GetBurnup ( )
inline

< Calculates and returns the local power in this evolving cell

◆ GetCell()

Cell * EvolutiveSystem::GetCell ( )
inline

< returns the evolving Cell.

◆ GetEvolvingAtoms() [1/2]

double * EvolutiveSystem::GetEvolvingAtoms ( )
inline

< returns the array

◆ GetEvolvingAtoms() [2/2]

double EvolutiveSystem::GetEvolvingAtoms ( int  i)
inline

< returns ith atoms.

◆ GetEvolvingCompositionSize()

int EvolutiveSystem::GetEvolvingCompositionSize ( )
inline

< returns composition vector size.

◆ GetMaterial()

Material * EvolutiveSystem::GetMaterial ( )
inline

< returns the evolving material

◆ GetPower()

double EvolutiveSystem::GetPower ( )
inline

< Calculates and returns the local power in this evolving cell

◆ GetPowerDensity()

double EvolutiveSystem::GetPowerDensity ( )
inline

< Calculates and returns the local power density in this evolving cell

◆ GetPowerErr()

double EvolutiveSystem::GetPowerErr ( )
inline

< Returns the error on local power in this evolving cell (from MC SigmaPhi error) must be called after a each GetPower

◆ GetPowerFrac()

double EvolutiveSystem::GetPowerFrac ( )
inline

◆ GetTheMatrix()

double ** EvolutiveSystem::GetTheMatrix ( )
inline

< return the Evolution Matrix (Bateman equations)

◆ Init()

void EvolutiveSystem::Init ( )
inline

◆ IsEvolving()

bool EvolutiveSystem::IsEvolving ( )
inline

< True if this evolving system really evolve (default)

◆ IsTransmogrify()

bool EvolutiveSystem::IsTransmogrify ( )
inline

< return true when transmogrification has been done.

◆ LoadTheMatrix()

void EvolutiveSystem::LoadTheMatrix ( int  index)

Fill evolution Matrix, index is the place of the current evolutionsystem in the evolutionsystemvector.

◆ PredictorTransmogrifyGroupCell()

void EvolutiveSystem::PredictorTransmogrifyGroupCell ( )

Updates the proportion array for group cells after a Predictor step.

see EvolutiveSystem::PredictorTransmogrifyMaterial()

◆ PredictorTransmogrifyMaterial()

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

◆ PrintEvolvingAtoms()

string EvolutiveSystem::PrintEvolvingAtoms ( )

Prints out the Atoms vector.

◆ SetAvgQ()

void EvolutiveSystem::SetAvgQ ( double  AvgQ)
inline

◆ SetCell()

void EvolutiveSystem::SetCell ( Cell c)
inline

< set the evolving cell.

◆ SetEvolve()

void EvolutiveSystem::SetEvolve ( bool  flag = true)
inline

< Set evolve flag to true or false

◆ SetEvolvingAtoms() [1/2]

void EvolutiveSystem::SetEvolvingAtoms ( double *  f)
inline

< Set the array

◆ SetEvolvingAtoms() [2/2]

void EvolutiveSystem::SetEvolvingAtoms ( int  i,
double  proportion 
)
inline

<Sets the ith proportion.

◆ SetEvolvingCompositionSize()

void EvolutiveSystem::SetEvolvingCompositionSize ( int  n)
inline

< sets composition vector size.

◆ SetMaterial()

void EvolutiveSystem::SetMaterial ( Material m)
inline

< set the evolving material

◆ SetMatrixToZero()

void EvolutiveSystem::SetMatrixToZero ( )

Builds the Bateman equations for integration.

 \f[ \frac{d\vec{N}}{dt}=A\vec{N}\f]
Parameters
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. Initialize the evolution Matrix

◆ SetPowerFrac()

void EvolutiveSystem::SetPowerFrac ( double  powerfrac)
inline

◆ SetSolver()

void EvolutiveSystem::SetSolver ( )
protected

set fBatemanSolver

◆ SetTheMatrix()

void EvolutiveSystem::SetTheMatrix ( double **  f)
inline

< Set the Evolution Matrix (Bateman equations)

◆ SetTransmogrify()

void EvolutiveSystem::SetTransmogrify ( bool  flag)
inline

< set fAlreadyTransmodrified to flag.

◆ Solve()

void EvolutiveSystem::Solve ( double  t1,
double  t2 
)

the true Runge-Kutta calling method.

Pre-treatment Runge-Kutta method.

This method does initialisation and then call DynamicalSystem::RungeKutta

Parameters
t1: initial time
t2: final time

◆ TransmogrifyEvolvingAtoms()

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.

◆ TransmogrifyGroupCell()

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 MC 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 MC run (end of MURE::Evolution()).

◆ TransmogrifyMaterial()

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 MC really see the new composition.

usually done just before a new MC run (end of MURE::Evolution()).

◆ UpdateBurnupHistory() [1/2]

void EvolutiveSystem::UpdateBurnupHistory ( double  deltaT)
protected

◆ UpdateBurnupHistory() [2/2]

void EvolutiveSystem::UpdateBurnupHistory ( double  deltaT,
bool  cool 
)

Member Data Documentation

◆ fAlreadyTransmodrified

bool EvolutiveSystem::fAlreadyTransmodrified
protected

True if transmogrification is done.

◆ fAvgQ

double EvolutiveSystem::fAvgQ
protected

Average Q value of the system.

◆ fBatemanSolver

BatemanSolver* EvolutiveSystem::fBatemanSolver
protected

◆ fBurnup

double EvolutiveSystem::fBurnup
protected

Local sum of extracted energy per mass initial HM.

◆ fEvolve

bool EvolutiveSystem::fEvolve
protected

◆ fEvolvingAtoms

double* EvolutiveSystem::fEvolvingAtoms
protected

The evolving atoms copied from Material proportions.

◆ fEvolvingCell

Cell* EvolutiveSystem::fEvolvingCell
protected

The cell which IS the Evolving System.

◆ fEvolvingMaterial

Material* EvolutiveSystem::fEvolvingMaterial
protected

The Evolving material.

◆ fFirstTNF

double EvolutiveSystem::fFirstTNF
protected

value of Tally Normalization factor at the first RK step

◆ fIdxI135

int EvolutiveSystem::fIdxI135
protected

index of I-135 in the fEvolvingAtoms array

◆ fIdxTe135

int EvolutiveSystem::fIdxTe135
protected

index of Te-135 in the fEvolvingAtoms array

◆ fIdxXe135

int EvolutiveSystem::fIdxXe135
protected

index of Xe-135 in the fEvolvingAtoms array

◆ fInitHNMassInTon

double EvolutiveSystem::fInitHNMassInTon
protected

◆ fMeanFlux

double EvolutiveSystem::fMeanFlux
protected

Mean flux=(old+new)/2 to calculate Xe and I135 equilibrium concentration.

◆ fNI135

double EvolutiveSystem::fNI135
protected

the new I-135 number of atoms (use only for fNXe135 calculation)

◆ fNMassInTonInitialized

bool EvolutiveSystem::fNMassInTonInitialized
protected

◆ fNVar

int EvolutiveSystem::fNVar
protected

fMatrix size

◆ fNXe135

double EvolutiveSystem::fNXe135
protected

the new Xe 135 number of atoms

◆ fOldFlux

double EvolutiveSystem::fOldFlux
protected

Old flux stored.

◆ fPCEvolvingAtoms

double* EvolutiveSystem::fPCEvolvingAtoms
protected

The evolving atoms copied from Material proportions for predictor-corrector method.

◆ fPower

double EvolutiveSystem::fPower
protected

Local Power.

◆ fPowerDensity

double EvolutiveSystem::fPowerDensity
protected

Local Power Density.

◆ fPowerErr

double EvolutiveSystem::fPowerErr
protected

Error on Local Power.

◆ fPowerFrac

double EvolutiveSystem::fPowerFrac
protected

Fraction of local power produced.

◆ fTheMatrix

double** EvolutiveSystem::fTheMatrix
protected

The evolution Matrix.


The documentation for this class was generated from the following files:

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