MURE
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
EvolutiveSystem Class Reference

EvolutiveSystem class carries out evolution. More...

#include <EvolutiveSystem.hxx>

Inheritance diagram for EvolutiveSystem:
DynamicalSystem

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
CellGetCell ()
 returns the evolving Cell. More...
 
MaterialGetMaterial ()
 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 $N\sigma_{fis}\phi\nu_{prompt+delayed}$ 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

MaterialfEvolvingMaterial
 The Evolving material. More...
 
CellfEvolvingCell
 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...
 

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::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.

Member Function Documentation

void EvolutiveSystem::BuildEqns ( double  t,
double *  N,
double *  dNdt 
)
virtual

Builds the Bateman equations for integration.

\[ \frac{d\vec{N}}{dt}=A\vec{N}\]

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.

Reimplemented from DynamicalSystem.

void EvolutiveSystem::CalculateEvolvingAtoms ( )

calculate Evolving Proportion

void EvolutiveSystem::CalculateNuSigmaFisPhis ( )

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

void EvolutiveSystem::CalculatePower ( )
protected

Calculate the local power in this evolving system.

void EvolutiveSystem::CorrectorTransmogrifyGroupCell ( )

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

see EvolutiveSystem::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.
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 $ 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 MCNP run}+\phi^{current MCNP run}}{2}\]

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

\[\phi=\phi^{current MCNP 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.

Cell* EvolutiveSystem::GetCell ( )
inline

returns the evolving Cell.

double EvolutiveSystem::GetEvolvingAtoms ( int  i)
inline

returns ith atoms.

double* EvolutiveSystem::GetEvolvingAtoms ( )
inline

returns the array

int EvolutiveSystem::GetEvolvingCompositionSize ( )
inline

returns composition vector size.

Material* EvolutiveSystem::GetMaterial ( )
inline

returns the evolving material

double EvolutiveSystem::GetPower ( )
inline

Calculates and returns the local power in this evolving cell.

double EvolutiveSystem::GetPowerDensity ( )
inline

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

double EvolutiveSystem::GetPowerErr ( )
inline

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

double** EvolutiveSystem::GetTheMatrix ( )
inline

return the Evolution Matrix (Bateman equations)

bool EvolutiveSystem::IsEvolving ( )
inline

True if this evolving system really evolve (default)

bool EvolutiveSystem::IsTransmogrify ( )
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.

see EvolutiveSystem::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

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

Parameters
t1: initial time
t2: final time
void EvolutiveSystem::SetCell ( Cell c)
inline

set the evolving cell.

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

Set evolve flag to true or false.

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

Sets the ith proportion.

void EvolutiveSystem::SetEvolvingAtoms ( double *  f)
inline

Set the array.

void EvolutiveSystem::SetEvolvingCompositionSize ( int  n)
inline

sets composition vector size.

void EvolutiveSystem::SetMaterial ( Material m)
inline

set the evolving material

void EvolutiveSystem::SetMatrixToZero ( )

Initialize the evolution Matrix.

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

Set the Evolution Matrix (Bateman equations)

void EvolutiveSystem::SetTransmogrify ( bool  flag)
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()).

Member Data Documentation

bool EvolutiveSystem::fAlreadyTransmodrified
protected

True if transmogrification is done.

bool EvolutiveSystem::fEvolve
protected
double* EvolutiveSystem::fEvolvingAtoms
protected

The evolving atoms copied from Material proportions.

Cell* EvolutiveSystem::fEvolvingCell
protected

The cell which IS the Evolving System.

Material* EvolutiveSystem::fEvolvingMaterial
protected

The Evolving material.

double EvolutiveSystem::fFirstTNF
protected

value of Tally Normalization factor at the first RK step

int EvolutiveSystem::fIdxI135
protected

index of I-135 in the fEvolvingAtoms array

int EvolutiveSystem::fIdxTe135
protected

index of Te-135 in the fEvolvingAtoms array

int EvolutiveSystem::fIdxXe135
protected

index of Xe-135 in the fEvolvingAtoms array

double EvolutiveSystem::fMeanFlux
protected

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

double EvolutiveSystem::fNI135
protected

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

double EvolutiveSystem::fNXe135
protected

the new Xe 135 number of atoms

double EvolutiveSystem::fOldFlux
protected

Old flux stored.

double* EvolutiveSystem::fPCEvolvingAtoms
protected

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

double EvolutiveSystem::fPower
protected

Local Power.

double EvolutiveSystem::fPowerDensity
protected

Local Power Density.

double EvolutiveSystem::fPowerErr
protected

Error on Local Power.

double** EvolutiveSystem::fTheMatrix
protected

The evolution Matrix.

double EvolutiveSystem::fTmin
protected

The lowest value of the decay constant considered.


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

MURE Project, documentation generated by Doxygen 1.8.5 - Mon Nov 17 2014