FuelReprocessing allows Fuel reprocessing during Evolution. More...
#include <FuelReprocessing.hxx>
Public Member Functions | |
FuelReprocessing () | |
Default Constructor. More... | |
FuelReprocessing (const FuelReprocessing &m) | |
Copy constructor. More... | |
virtual FuelReprocessing * | Clone () |
Correct way to copy a FuelReprocessing in case of derivation. More... | |
virtual | ~FuelReprocessing () |
Destructor. More... | |
Fuel Cell displacement methods | |
void | AddReprocessing (Material *InMat, Cell *ToCell, Material *EquiliBriumMat=0, double EquilibriumTime=-1) |
Add Fresh Fuel to a Cell. More... | |
void | EmptyCell (Cell *DepletedCell, double CoolingTime, bool NewInterimStorage=true) |
Extract Depleted Fuel from a Cell. More... | |
void | AddReprocessing (Cell *FromCell, Cell *ToCell, int level=0) |
Replace Fuel from a Cell. More... | |
Reprocessing methods | |
virtual void | CoreRefuel () |
Put new fuel in the core. More... | |
virtual void | ContinuousCoreRefuel () |
Put new fuel in the core continuoulsy. NOT DONE. More... | |
virtual void | StepCoreRefuel () |
Put new fuel in the core at time step of fReprocessingTime. More... | |
virtual void | DepletedFuelExtractor () |
Extract depleted fuel and store it in Interim Storage. More... | |
virtual void | AddFreshFuel () |
Add fresh fuel in "Fresh" cells. More... | |
virtual void | ReprocessInterimStorage () |
Reprocess Interim Storage. More... | |
void | SetFissileFertile (int N, int *Zarray) |
Set the Fissile/Fertile elements. More... | |
void | SetExtractionFractionFromReprocessingPlant (int N, int *Zarray, double *Efficiency) |
Set the Depleted Fuel extraction fraction. More... | |
void | SetExtractionFractionFromFuel (int N, int *Zarray, double *Efficiency) |
Set the Fuel extraction fraction. More... | |
void | UseReprocessedStorage () |
Build n Reprocessed Storage. More... | |
int | GetNumberOfReprocessedStorage () |
return the number of Reprocessed Storage More... | |
void | SetFreshCellinReprocessedStorageLink (vector< int > Link) |
Set the links between Fresh Cells and Reprocessed Storages. More... | |
void | SetReprocessedStorage2FreshCellLink (vector< int > Link) |
Set the links between Reprocessed Storages and Fresh Cells. More... | |
Processing Time methods | |
void | SetRefuellingTime (vector< double > Time) |
Refuelling Time. More... | |
int | GetReprocessingIndex () |
The current index in the fRefuellingTime vector. More... | |
double | GetCurentRefuellingTime () |
Current refuelling time if it is discret. More... | |
void | SetFuelFabricationTime (double Time=2 *365.25 *24 *3600) |
Set the fuel fabrication time. More... | |
double | GetFuelFabricationTime () |
void | SetContinuousReprocessing (bool flag=true) |
Reprocessing is continuous. More... | |
bool | IsContinuousReprocessing () |
true for continuous reprocessing More... | |
void | SetContinuousReprocessingTimeVector (vector< vector< double > > ContinuousTime) |
set the continuous reprocessing time vector More... | |
vector< vector< double > > & | GetContinuousReprocessingTimeVector () |
return the continuous reprocessing time vector More... | |
Miscellaneous methods | |
void | SetStorageEvolution (bool flag=true) |
Force the storage evolution. More... | |
bool | IsStorageEvolution () |
return true when storages evolved More... | |
void | SetBuildMCNPFileBeforeReprocessing (bool build=true) |
Builds MCNP file just before each refuelling. More... | |
bool | GetBuildMCNPFileBeforeReprocessing () |
void | SetMCNPInputFileNameBeforeReprocessing (string name="post") |
Set the name of post evolution MCNP file. More... | |
string | GetMCNPInputFileNameBeforeReprocessing () |
return the name of post evolution MCNP file. More... | |
virtual void | BuildStorages () |
Build Interim & Waste Storage. More... | |
void | SetFuelForm (int Z, int A, double MolarProp) |
Set the chemical form of the fuel. More... | |
virtual void | PrintStorageMass () |
print storage masses More... | |
string | PrintMass (double m) |
return a string of mass value+unit More... | |
virtual void | InitIndexes () |
Init storage indexes when starting an evolution from T>0. More... | |
virtual void | PrintIndexes () |
Print storage indexes (debug method) More... | |
Protected Attributes | |
vector< double > | fRefuellingTime |
vector of refuelling time More... | |
int | fRefuellingIndex |
The current reprocessing index in the fReprocessingTime vector. More... | |
vector< Material * > | fFreshFuel |
the fresh fuel to add More... | |
vector< Cell * > | fFreshCell |
The cell vector that receive fresh fuel. More... | |
vector< vector< Cell * > > | fChainCell |
The cell vector that exchange fuel. More... | |
vector< Cell * > | fDepletedCell |
The cell vector that will be discharged. More... | |
vector< Material * > | fEquilibriumFreshFuel |
Fresh fuel material used when T>fEquilibriumTime. More... | |
vector< double > | fEquilibriumTime |
Time from which fEquilibriumFreshFueln is used instead of fFreshFuel. More... | |
vector< TemporalStorage * > | fInterimStorage |
Interim Storage vector. More... | |
vector< TemporalStorage * > | fReprocessedStorage |
Reprocessed Storage vector. More... | |
TemporalStorage * | fCoreMARS |
Minor Act. Reprocessed Storage from the core. More... | |
Storage * | fWasteStorage |
Waste Storage. More... | |
vector< int > | fDP_2_IS |
vector linking Depleted Cell to Interim Storage More... | |
vector< int > | fFC_in_RS |
vector linking Reprocessed Storage to Fresh Cells More... | |
vector< int > | fRS_2_FC |
vector linking Reprocessed Storage to Fresh Cells More... | |
bool | fUseReprocessedStorage |
True to build Reprocessed Storages. More... | |
vector< vector< double > > | fContinuousReprocessingTimeVector |
vector of Z and EvolutiveSystem dependant reprocessing time in case of continuous reprocessing More... | |
bool | fContinuousReprocessing |
true for continuous reprocessing More... | |
bool | fBuildMCNPFileBeforeReprocessing |
must be true if you want to generate the MCNP file describing your system just before the reprocessing More... | |
string | fMCNPInputFileNameBeforeReprocessing |
the MCNP file generated just before the reprocessing will have this name, followed by the last MCNP run number More... | |
vector< int > | fZFissileFertile |
vector of Z of fissile or fertile nuclei More... | |
vector< int > | fZtoExtractFromFuel |
vector of Z of nuclei to extract when fuel is reprocessed More... | |
vector< double > | fZEfficiencyExtractionFromFuel |
vector of extraction efficiency: 1=100%=this Z is completly extract, 0=0% More... | |
vector< int > | fZtoExtractFromRP |
vector of Z of nuclei to extract from depleted fuel to reprocess More... | |
vector< double > | fZEfficiencyExtractionFromRP |
vector of extraction efficiency: 1=100%=this Z is completly extract, 0=0% More... | |
double | fFuelFabricationTime |
time to wait before doing something with reprocessed storage More... | |
bool | fEvolvingStorage |
true if the outcore storage (interim & waste) are evolving More... | |
ZAI * | fFuelFormZAI |
The ZAI of the "form" of the fuel (O for oxide, C for Carbide, ...) More... | |
double | fFuelFormMolProp |
Molar proportion of the FuelFormZAI (2 for O2, 1 for C, ...) More... | |
double | fLastMassExtractedfromCore |
Last mass extracted from core (used only for print) More... | |
double | fLastMassExtractedfromRP |
Last mass extracted from Reprocessed Storage (used only for print) More... | |
double | fLastMassPutinWaste |
Last mass put in Waste Storage (used only for print) More... | |
vector< double > | fInitExtractedAtoms |
The initial number of atoms of the first extracted assemblies. More... | |
FuelReprocessing allows Fuel reprocessing during Evolution.
The aim of this class is to removed, at a given time for discret refuelling, depleted fuel from a cells, "reshuffle" of other cells, and add fresh fuel. Removed fuels go first in an Interim Storage (in fact, 1 Interim Storage per refuelling time) for a Cooling period. Then, the content of the Interim storage is sent to either a Waste Storage and/or (at least a part) to a Reprocessed Storage for further use. A third storage (Minor Actinide Core Storage) may be used to separate, after the cooling time, the "recycled fuel" from "MA". This extra separation is done via FuelReprocessing::SetFissileFertile() method
Only after a Refabrication period (FuelReprocessing::SetFuelFabricationTime()) the Reprocessed and MA Core storage may be used (recycling).
See examples/Evolution/Reprocess.cxx for more detail.
For example, for 3 cellsof volume V, C1, C2 and C3, if one want to remove depleted fuel of C3, replace it by the contains of C2 and replace the conatins of C2 by the one of C1 and add fresh fuel in C1:
Extracted fuels are stored (as a function of the refuelling time) in Interim Storage (1 storage for each refuelling time). After a cooling period, Interim storage (or part of them) are sent to a Waste storage, which stores the final waste, and/or to Reprocessed & MA Core Storages for further use after the Refabrication time ; thus, the availability of these storage are at time TCooling+TRefabrication
Interim Storage are virtually emptied: they evolve (if one has not disable this option) until the cooling time, then their compositions are kept constant until then end (for seek of simplicity, one thus can read their compositions in the last [B]DATA_xxx file).
The FuelReprocessing::ReprocessInterimStorage method defines the reprocessing treatment of interim storage ;
FuelReprocessing::FuelReprocessing | ( | ) |
Default Constructor.
FuelReprocessing::FuelReprocessing | ( | const FuelReprocessing & | m | ) |
Copy constructor.
|
inlinevirtual |
Destructor.
|
virtual |
Add fresh fuel in "Fresh" cells.
Reimplemented in BlanketReprocessing.
void FuelReprocessing::AddReprocessing | ( | Material * | InMat, |
Cell * | ToCell, | ||
Material * | EquiliBriumMat = 0 , |
||
double | EquilibriumTime = -1 |
||
) |
Add Fresh Fuel to a Cell.
Just build the link between object.
EquiliBriumMat
and EquilibriumTime
are not defined, the ToCell
cell is filled at each reprocessing time with InMat
material.EquiliBriumMat
and EquilibriumTime
are defined, then the ToCell
cell is filled with InMat
material until reprocessing time > EquilibriumTime ; then, the EquiliBriumMat
material is used as fresh fuel. This can be useful to define a starting fresh material (e.g. U/Pu) and then, when Reprocessed storages are available, a new fresh material is used (e.g. depleted U for a breeder system), as well as the recycled U/Pu from the reprocessed storage.InMat | : The fresh fuel to add if T<EquilibriumTime. |
ToCell | : The cell that will be fill with the fresh fuel |
EquiliBriumMat | : The fresh fuel to add if T>=EquilibriumTime. |
EquilibriumTime | : The time from which EquiliBriumMat will be used. |
Replace Fuel from a Cell.
The Fuel of the FromCell is put in the ToCell. Just build the link between object. !!!!WARNING: if Cell C1 content goes in C2, C2 in C3, C3 in ... you have to write
and NOT
FromCell | : The cell that will be discharged of its fuel. |
ToCell | : The cell that will be filled with the FromCell's Fuel. |
level | : order in the chain |
|
virtual |
Build Interim & Waste Storage.
Build necessary materials & cells for waste storage (call in MURE::Evolution)
Reimplemented in BlanketReprocessing.
|
inlinevirtual |
Correct way to copy a FuelReprocessing in case of derivation.
Reimplemented in BlanketReprocessing.
|
virtual |
Put new fuel in the core continuoulsy. NOT DONE.
|
virtual |
Put new fuel in the core.
This calls either FuelReprocessing::ContinuousCoreRefuel or FuelReprocessing::StepCoreRefuel depending on the fContinuousReprocessing flag. Fuel may be reprocessed.
|
virtual |
Extract depleted fuel and store it in Interim Storage.
Reimplemented in BlanketReprocessing.
void FuelReprocessing::EmptyCell | ( | Cell * | DepletedCell, |
double | CoolingTime, | ||
bool | NewInterimStorage = true |
||
) |
|
inline |
|
inline |
return the continuous reprocessing time vector
double FuelReprocessing::GetCurentRefuellingTime | ( | ) |
Current refuelling time if it is discret.
|
inline |
return refabrication time in second!
|
inline |
return the name of post evolution MCNP file.
|
inline |
return the number of Reprocessed Storage
|
inline |
The current index in the fRefuellingTime vector.
|
virtual |
Init storage indexes when starting an evolution from T>0.
Reimplemented in BlanketReprocessing.
|
inline |
true for continuous reprocessing
|
inline |
return true when storages evolved
|
virtual |
Print storage indexes (debug method)
Reimplemented in BlanketReprocessing.
string FuelReprocessing::PrintMass | ( | double | m | ) |
return a string of mass value+unit
|
virtual |
print storage masses
Reimplemented in BlanketReprocessing.
|
virtual |
Reprocess Interim Storage.
Reprocess interim storages after a cooling period. The FuelReprocessing::ReprocessInterimStorage method defines the reprocessing treatment of interim storage ;
Reimplemented in BlanketReprocessing.
|
inline |
Builds MCNP file just before each refuelling.
This method allows to build a MCNP file just before each refuelling (with compositions at the end of the step before any fuel displacement) to be used later for completing results with MCNP run "by hand". Each MCNP file just before reprocessing has the same number than its corresponding MCNP file built just after reprocessing, at the same time.
|
inline |
Reprocessing is continuous.
The reprocessing is done at each Runge-Kutta step (quasi continuous).
void FuelReprocessing::SetContinuousReprocessingTimeVector | ( | vector< vector< double > > | ContinuousTime | ) |
set the continuous reprocessing time vector
void FuelReprocessing::SetExtractionFractionFromFuel | ( | int | N, |
int * | Zarray, | ||
double * | Efficiency | ||
) |
Set the Fuel extraction fraction.
When removing fuel from old depleted cells, one can remove 100% of all nuclei (the default), or define explicitely a fraction for given isotopes. For example, if one want to extract 100% of all nuclei except for Uranium and plutonium where the efficiency is 1% and 2% respectively (that is to say 99% of U and 98% of Pu are left in the "depleted" cells), one call this method with SetExtractionFractionFromFuel(2,Zarray, Effeciency); where it has been defined:
N | : size of the 2 following arrays. |
Zarray | : Array of Z to defined extraction efficiency for this Z isotope. |
Efficiency | : Array of Efficiency for the extraction (1=100%). |
void FuelReprocessing::SetExtractionFractionFromReprocessingPlant | ( | int | N, |
int * | Zarray, | ||
double * | Efficiency | ||
) |
Set the Depleted Fuel extraction fraction.
When removing nuclei from depleted fuel, one can remove 100% of all nuclei (the default) to put them in the Waste Storage, or define explicitely a fraction for given isotopes that will be stored in a Reprocessed fuel Storage. For example, if one want to extract 100% of all nuclei except for Uranium and plutonium where the efficiency is 1% and 2% respectively (that is to say 99% of U and 98% of Pu are left in the Waste Storage), one calls this method as:
N | : size of the 2 following arrays. |
Zarray | : Array of Z to defined extraction efficiency for this Z isotope. |
Efficiency | : Array of Efficiency for the extraction (1=100%). |
void FuelReprocessing::SetFissileFertile | ( | int | N, |
int * | Zarray | ||
) |
Set the Fissile/Fertile elements.
Fissiles and fertiles elements have special treatment:
Example 1: Recycling in a Core U/Pu and MA (losses 0.1%), every thing else is sent to waste:
Example 2: Recycling in a Core U/Pu and separating MA (losses 0.1%), every thing else is sent to waste:
N | : size of the following array. |
Zarray | : Array of Z to defined fissiles and fertiles. |
|
inline |
Set the links between Fresh Cells and Reprocessed Storages.
If a Reprocessed Storage is used to fill more than one fresh cell (say N), the storage fuel will be equally divided in N to fill part of these cells. The Link vector is such as Link[fresh_cell_idx]=storage_num ; for example Link[0]=0, Link[1]=0 mean that the 2 first declared fresh cells used the fuel of Reprocessed Storage number 0, which is the first RS defined by FuelReprocessing::EmptyCell() method.
Defining a negative value in the Link array (e.g. Link[1]=-1) will prevent the use of storage (here 1) to fill the corresponding fresh cell (index=1 here). This allows for example to used the contents of RS from a cell to fill an other one (see FuelReprocessing::SetReprocessedStorage2FreshCellLink().
Link | : vector of storage number for each fresh cell (index). |
|
inline |
Set the fuel fabrication time.
The fuel fabrication time is the time to wait before doing something with a Reprocessed Storage. Depleted fuel goes to Interim Storage for a Cooling Time, then it is extract to either Waste Storage, and/or to a Processed Storage ; then one waits a fabrication time before reusing this "new" fuel
Time | : refabrication time in second [default= 2years]. |
void FuelReprocessing::SetFuelForm | ( | int | Z, |
int | A, | ||
double | MolarProp | ||
) |
Set the chemical form of the fuel.
When using Reprocessed Storage for refuelling the core, one has to know the "chemical" form of the fuel: indeed, if one reprocess U/Pu for example from the depleted fuel, the new fuel made from that must be of the same form than the initial one. If fuel is oxide such as PuO2/UO2, for each mole of Pu, one has to add 2 (the MolarProp
param) mol of O (Z=8, A=16).
Z | : Z of the annex chemical element (Z of O for UO2 fuel). |
A | : A of the annex chemical element (A of O for UO2 fuel). |
MolarProp | : Molar proportion of the annex chemical element (2 for UO2 fuel). |
|
inline |
Set the name of post evolution MCNP file.
This name is the name of the MCNP file just before each refuelling at the end of the evolution. see FuelReprocessing::SetBuildMCNPFileBeforeReprocessing
|
inline |
Refuelling Time.
Set the time vector at which the refuelling is done. In fact, the real refuelling time Tr will be done just before a MCNP step (at t=T_MCNP[j]); thus the ith refuelling is done at Tr=T_MCNP[j], if T_MCNP[j-1]<fRefuellingTime[i]<=T_MCNP[j] ; defining this refuelling time as a multiple of T_MCNP will assure that Tr is exactly one of the given value of the Time
vector parameter.
This is only needed when the reprocessing is not continuous.
Time | : vector of reprocessing time. |
|
inline |
Set the links between Reprocessed Storages and Fresh Cells.
When Reprocessed Storage are used, this method indicates in which cells one put the content of a given RS. The array Link[RS_idx]=Fresh_Cell_number ; for example Link[0]=FreshCell_1->GetNumber(), Link[1]=FreshCell_1->GetNumber() mean that the 2 first declared Reprocessed Storages (idx 0 and 1) are used to fill the same fresh cell (FreshCell_1).
This method is closely linked with FuelReprocessing::SetFreshCellinReprocessedStorageLink().
Link | : vector of fresh cell number for each Reprocessed Storage. |
|
inline |
Force the storage evolution.
Interim storages, Waste Storage, ... are by default evolving (i.e., materials of these storages evolve outside of the core (only decays). Setting the flag to false will prevent them to evolve.
flag | : true if one want to make storage evolution (out core). |
|
virtual |
Put new fuel in the core at time step of fReprocessingTime.
|
inline |
Build n Reprocessed Storage.
|
protected |
must be true if you want to generate the MCNP file describing your system just before the reprocessing
|
protected |
The cell vector that exchange fuel.
|
protected |
true for continuous reprocessing
|
protected |
vector of Z and EvolutiveSystem dependant reprocessing time in case of continuous reprocessing
|
protected |
Minor Act. Reprocessed Storage from the core.
|
protected |
The cell vector that will be discharged.
|
protected |
Fresh fuel material used when T>fEquilibriumTime.
|
protected |
Time from which fEquilibriumFreshFueln is used instead of fFreshFuel.
|
protected |
true if the outcore storage (interim & waste) are evolving
|
protected |
vector linking Reprocessed Storage to Fresh Cells
|
protected |
The cell vector that receive fresh fuel.
|
protected |
the fresh fuel to add
|
protected |
time to wait before doing something with reprocessed storage
|
protected |
Molar proportion of the FuelFormZAI (2 for O2, 1 for C, ...)
|
protected |
The ZAI of the "form" of the fuel (O for oxide, C for Carbide, ...)
|
protected |
The initial number of atoms of the first extracted assemblies.
|
protected |
Interim Storage vector.
|
protected |
Last mass extracted from core (used only for print)
|
protected |
Last mass extracted from Reprocessed Storage (used only for print)
|
protected |
Last mass put in Waste Storage (used only for print)
|
protected |
the MCNP file generated just before the reprocessing will have this name, followed by the last MCNP run number
|
protected |
The current reprocessing index in the fReprocessingTime vector.
|
protected |
vector of refuelling time
|
protected |
Reprocessed Storage vector.
|
protected |
vector linking Reprocessed Storage to Fresh Cells
|
protected |
True to build Reprocessed Storages.
|
protected |
vector of extraction efficiency: 1=100%=this Z is completly extract, 0=0%
|
protected |
vector of extraction efficiency: 1=100%=this Z is completly extract, 0=0%
|
protected |
vector of Z of fissile or fertile nuclei
|
protected |
vector of Z of nuclei to extract when fuel is reprocessed
|
protected |
vector of Z of nuclei to extract from depleted fuel to reprocess