MURE
|
A Material constituing a Cell. More...
#include <Material.hxx>
Public Member Functions | |
Material () | |
Normal Constructor. | |
Material (int theNumber) | |
Special Constructor. | |
Material (const Material &m) | |
Copy constructor. | |
virtual | ~Material () |
Destructor. | |
virtual Material * | Copy () |
Copy a Material. | |
virtual Material * | Clone (double Temperature=- 1) |
Clone a Material. | |
Nucleus &Proportion methods | |
void | AddNucleus (int Z, int A, double Proportion=1., ProportionUnitType ProportionUnit=kpMOL, string ModeratorCategory="") |
Add a new Nucleus to the Material composition in the ground state. | |
void | AddNucleus (int Z, int A, int I, double Proportion, ProportionUnitType ProportionUnit=kpMOL, string ModeratorCategory="") |
Add a new Nucleus to the Material composition. | |
void | AddNucleus (ZAI *zai, double Proportion=1., ProportionUnitType ProportionUnit=kpMOL, string ModeratorCategory="") |
Add a new Nucleus to the Material composition. | |
void | AddNucleus (Nucleus_ptr nucleus, double Proportion=1., ProportionUnitType ProportionUnit=kpMOL) |
Add a new Nucleus to the Material composition. | |
vector< Nucleus_ptr > & | GetComposition () |
Nucleus_ptr | GetComposition (int i) |
void | SetComposition (vector< Nucleus_ptr > f) |
Nucleus_ptr | GetNucleus (int Z, int A, int I=0) |
return the Nucleus Z, A, I | |
double | GetProportion (int i, ProportionUnitType ProportionUnit) |
void | SetProportion (int i, double proportion, ProportionUnitType ProportionUnit) |
Set the Proportion of the ith nucleus. | |
void | ResetProportion () |
set all proprtion to 0. | |
Material * | Mix (Material *M2, double part, ProportionUnitType ProportionUnit=kpMOL) |
Mix 2 Materials. | |
virtual vector< Material * > | Duplicate (int N, bool TrueClone=true) |
Duplicate material n times over. | |
void | Proportion2AtomCM3 () |
Convert proportion unit (kpMOL or kpMASS) in at/cm3. | |
ProportionUnitType | GetProportionUnit () |
double | SumProportion () |
return the sum of Proportion of each nucleus | |
int | GetZAIIndex (ZAI *zai) |
Get the index of a given zai in the composition vector. Return -1 if not there. | |
int | GetZAIIndex (int Z, int A, int I) |
Get the index of a given zai in the composition vector. Return -1 if not there. | |
void | UpdateZAI (bool WithReactions=true, bool WithSF=true) |
Update all ZAI of material (With reactions&decays or just decays). | |
void | AddToGlobalNucleiVector () |
add all nuclei of this material to GlobalNucleiVector | |
void | AddZAIDaughters (ZAI *zai) |
add the daughters of zai in this with proportion=0 | |
void | CFAddElement (int Z, double p) |
void | CFAddElement (double h, int Z, double p) |
void | CFAddElement (double h, string Z, double p) |
void | CFAddElement (string Z, double p) |
void | CFAddElementNucleus (int Z, int A, int I, double frac, ProportionUnitType unit) |
void | CFAddElementNucleus (int Z, int A, double frac, ProportionUnitType unit) |
void | CFCalculateMaterial () |
void | CFSetDensity (double dens, DensityUnitType unit) |
Physical attributes methods | |
double | GetDensity (DensityUnitType DensityUnit) |
void | SetDensity (double Density, DensityUnitType DensityUnit=kdGCM3) |
Set the density. | |
DensityUnitType | GetDensityUnit () |
double | GetTemperature () |
void | SetTemperature (double T=293.6) |
Set the temperature in K. | |
bool | HasModerator () |
void | SetModeratorName (string name) |
string | GetModeratorName () |
double | MeanMolarMass () |
return the mean molar mass (in gram) | |
bool | IsFuel () |
bool | IsModerator () |
bool | IsCladding () |
bool | IsCoolant () |
bool | IsCoolantGap () |
bool | IsModeratorBox () |
bool | IsControlMaterial () |
void | SetFuel (bool flag=true) |
void | SetModerator (bool flag=true) |
void | SetCladding (bool flag=true) |
void | SetCoolant (bool flag=true) |
void | SetCoolantGap (bool flag=true) |
void | SetModeratorBox (bool flag=true) |
Printing methods | |
string | PrintAll () |
Print the Material (and its Nuclei) in MCNP format. | |
string | PrintCompositionInfo () |
void | ForbidPrint () |
Forbid Material print in MCNP. | |
void | EnablePrint () |
void | SetPseudoMaterial () |
Define a pesudo material. | |
bool | IsPseudoMaterial () |
bool | IsPrintable () |
string | PrintDensityUnit (DensityUnitType DensityUnit=kdUNDEFINED) |
Pretty print of density units. | |
string | PrintProportionUnit (ProportionUnitType ProportionUnit=kpUNDEFINED) |
Pretty print of proportion units. | |
void | DumpMaterial (string filename="material.dat") |
Make a nuclear chart &ascii tree of the material &write them to disk. | |
void | DumpCompositionInfo (string name="CompInfo.dat") |
Write the full composition information to a file. | |
void | DumpMaterial (string Filename, double Mass, double Volume) |
Dump a material which can be open with MureGui -onlytox. | |
Miscellaneous methods | |
int | fNumber |
Number of the Material in MCNP file. | |
double | fDensity |
Density of the Material. | |
DensityUnitType | fDensityUnit |
Density unit (either g/cm3 (default), at/cm3 or at/barn.cm) | |
ProportionUnitType | fProportionUnit |
Proportion vector unit (mol (default), at/barn.cm, at/cm3 or g/cm3) | |
double | fTemperature |
Temperature (in K) at which the Material is used (to find the right MCNP code) | |
bool | fEvolution |
whether or not will this Material will evolve with the time | |
bool | fTemperatureEvolution |
whether or not temperature will evolve | |
bool | fPerturbative |
whether this Material is a virtual (perturbative) material for MCNP input | |
string | fModeratorName |
Name of the moderator to be print in MT card (e.g. grph.06t) | |
string | fMaterialName |
Name of the material (uo2, water, ... used when thermal coupling) | |
string | fDefaultXSExtension |
Give a default extension to all nucleus. | |
bool | fUpdated |
true if ZAI have been updated (UpdateZAI) for evolution only | |
vector< Nucleus_ptr > | fComposition |
the Composition vector | |
vector< double > | fProportion |
the Proportion vector | |
map< int, map< int, map< int, int > > > | fIndex |
The index of the ZAI in the material composition. | |
Material * | fFatherOfPseudoClone |
the father to used in cell in case of Pseudo clone | |
bool | fFuel |
whether or not this material is considered fuel. | |
bool | fModerator |
whether or not this material is considered moderator. | |
bool | fModeratorBox |
whether or not this material is considered ModeratorBox. | |
bool | fCladding |
whether or not this material is considered cladding. | |
bool | fCoolant |
whether or not this material is considered Coolant. | |
bool | fCoolantGap |
whether or not this material is considered WaterGap. | |
bool | fPrintable |
whether or not material is printable in MCNP input file (default) | |
bool | fOutCore |
whether or not material is an Out core evolving material | |
bool | fPseudoMaterial |
Is the material a pseudomaterial? | |
bool | fControlMaterial |
This is a control material (e.g. for poison) | |
bool | fIsPerturbativeTallyMaterial |
vector< int > | CFElements |
vector< double > | CFps |
vector< double > | CFhs |
vector< vector< ZAI * > > | CFIsotopes |
vector< vector< double > > | CFIsotopeProportions |
vector< double > | CFElementMolarMass |
vector< double > | CFElementRho |
vector< ProportionUnitType > | CFPropElement |
double | fCFMeanMolarMass |
double | CFDensity |
DensityUnitType | CFDensityUnit |
int | GetNumber () |
void | SetNumber (int n) |
void | SetDefaultXSExtension (string name) |
Set a default extension for all nuclei of the material. | |
string | GetDefaultXSExtension () |
void | SetEvolution () |
Say that this Material will evolve. | |
bool | IsEvolving () |
bool | IsPerturbative () |
void | SetPerturbative (bool flag=true) |
void | SortCompositionByAmount () |
Sort the proportions/compositions in proportion order (highest first). | |
void | SortCompositionByMass () |
Sort the proportions/compositions in atomic mass order (highest first). | |
void | FindTotalSigmaPerNucleus () |
Find total cross-section. | |
Material * | GetFatherOfPseudoClone () |
void | SetTemperatureEvolution (bool flag=true) |
set the Temperature evolution flag | |
bool | IsOutCore () |
Cell * | SetOutCore (int TheNumber, double TheVolume) |
return a out core cell of volume TheVolume and number TheNumber | |
void | SetMaterialName (string name) |
string | GetMaterialName () |
void | SetIsPerturbativeTallyMaterial (bool f=true) |
bool | IsPerturbativeTallyMaterial () |
bool | IsZAIInTree (ZAI *zai) |
bool | IsZAIInTree (int Z, int A, int I) |
ZAI * | GetZAIInTree (ZAI *zai) |
ZAI * | GetZAIInTree (int Z, int A, int I) |
Material (Material *m) | |
Private Constructor. | |
A Material constituing a Cell.
Each time a Material is created it is declared to MURE class (via gMURE) except if a Material is created from a Clone of a non evolving one.
Default Proportion units are mol. Default Density unit is g/cm3. Legal unit values are:
Proportions are printed in mol in MCNP file and density in g/cm3. In the evolution, proportion units are at/cm3 and the density evolve according to the composition evolution (sum of proportion in at/cm3).
Default temperature is 293.6K.
Note: if density is not provided, it is calculated automatically if proportions are in atoms/barn.cm or atoms/cm3.
Material::Material | ( | ) |
Normal Constructor.
Default: theDensity=0, T=293.6K and Evolution=0.
Material::Material | ( | int | theNumber | ) |
Special Constructor.
Use when the geometry is not a MURE one but a standard MCNP(X) one Default: theDensity=0, T=293.6K and Evolution=0.
theNumber | : the number of the material used in the user provide MCNP(X) geometry |
Material::Material | ( | const Material & | m | ) |
Copy constructor.
|
virtual |
Destructor.
|
protected |
Private Constructor.
It is used by Material::Clone to copy non vector attributs
m | : the Material to be cloned |
void Material::AddNucleus | ( | int | Z, |
int | A, | ||
double | Proportion = 1. , |
||
ProportionUnitType | ProportionUnit = kpMOL , |
||
string | ModeratorCategory = "" |
||
) |
Add a new Nucleus to the Material composition in the ground state.
If ModeratorCategory is a non empty string, S(alpha, Beta) thermal treatment will be take into account in MCNP. This category is used in automatic moderator name assignement. H2O is for H in light water, D2O is for D in heavy water, H/Zr for H in ZrH, poly for polyethylene, BeO is for Be in Be oxyde, Be is for Be in Be metal and so on. If moderator name is given with Material::SetModeratorName(), the content of ModeratorCategory is unused.
Z | : number of protons of nucleus |
A | : number of nucleons (A=0 means natural isotopes) |
Proportion | : proportion of Nucleus (to be used in a Composition) |
ProportionUnit | : unit of proportion of Nucleus (possible values are kpMOL, kpMASS, kpATCM3, kpATBCM) |
ModeratorCategory | : The catergory of the moderator ("H2O", "D2O", "H/Zr", "poly", "benz", "BeO", "Be", "Gr" or "Zr/H") |
void Material::AddNucleus | ( | int | Z, |
int | A, | ||
int | I, | ||
double | Proportion, | ||
ProportionUnitType | ProportionUnit = kpMOL , |
||
string | ModeratorCategory = "" |
||
) |
Add a new Nucleus to the Material composition.
If ModeratorCategory is a non empty string, S(alpha, Beta) thermal treatment will be take into account in MCNP. This category is used in automatic moderator name assignement. H2O is for H in light water, D2O is for D in heavy water, H/Zr for H in ZrH, poly for polyethylene, BeO is for Be in Be oxyde, Be is for Be in Be metal and so on. If moderator name is given with Material::SetModeratorName(), the content of ModeratorCategory is unused.
Z | : number of protons of nucleus |
A | : number of nucleons (A=0 means natural isotopes) |
I | : Isomeric state (Ground State, ith excited) |
Proportion | : proportion of Nucleus (to be used in a Composition) |
ProportionUnit | : unit of proportion of Nucleus (possible values are kpMOL, kpMASS, kpATCM3, kpATBCM) |
ModeratorCategory | : The catergory of the moderator ("H2O", "D2O", "H/Zr", "poly", "benz", "BeO", "Be", "Gr" or "Zr/H") |
void Material::AddNucleus | ( | Nucleus_ptr | nucleus, |
double | Proportion = 1. , |
||
ProportionUnitType | ProportionUnit = kpMOL |
||
) |
void Material::AddNucleus | ( | ZAI * | zai, |
double | Proportion = 1. , |
||
ProportionUnitType | ProportionUnit = kpMOL , |
||
string | ModeratorCategory = "" |
||
) |
Add a new Nucleus to the Material composition.
If ModeratorCategory is a non empty string, S(alpha, Beta) thermal treatment will be take into account in MCNP. This category is used in automatic moderator name assignement. H2O is for H in light water, D2O is for D in heavy water, H/Zr for H in ZrH, poly for polyethylene, BeO is for Be in Be oxyde, Be is for Be in Be metal and so on. If moderator name is given with Material::SetModeratorName(), the content of ModeratorCategory is unused.
zai | : the zai of the nucleus |
Proportion | : proportion of Nucleus (to be used in a Composition) |
ProportionUnit | : unit of proportion of Nucleus (possible values are kpMOL, kpMASS, kpATCM3, kpATBCM) |
ModeratorCategory | : The catergory of the moderator ("H2O", "D2O", "H/Zr", "poly", "benz", "BeO", "Be", "Gr" or "Zr/H") |
void Material::AddToGlobalNucleiVector | ( | ) |
add all nuclei of this material to GlobalNucleiVector
void Material::AddZAIDaughters | ( | ZAI * | zai | ) |
add the daughters of zai in this with proportion=0
void Material::CFAddElement | ( | double | h, |
int | Z, | ||
double | p | ||
) |
void Material::CFAddElement | ( | double | h, |
string | Z, | ||
double | p | ||
) |
|
inline |
void Material::CFAddElement | ( | string | Z, |
double | p | ||
) |
|
inline |
void Material::CFAddElementNucleus | ( | int | Z, |
int | A, | ||
int | I, | ||
double | frac, | ||
ProportionUnitType | unit | ||
) |
void Material::CFCalculateMaterial | ( | ) |
|
inline |
|
virtual |
Clone a Material.
This method acts in 2 different ways depending on: - (1) The Material is an evolving one and/or the Temperature argument >=0 - (2) The Material is not evolving and the Temperature argument <0.
In case (1) the clone is a real clone with same nuclei, proportion, ... (except Temperature if it is specified in argument).
In case (2) the clone is just used in cells with the new density (set with Material::SetDensity or in the argument of Clone).
WARNING: on a clone Material the used of Material::SetTemperature() may be miss understanding: If the Material has been clone in the case (1) it is not a problem ; but in case (2), because nuclei are not duplicated, this has no effect.
Temperature | : if given, the new temperature (in K) of the clone, else the "original" temperature is used (see the warning above). |
Reimplemented in ControlMaterial.
|
virtual |
Copy a Material.
Because of inheritance, you must use this method instead of copy constructors.
Reimplemented in ControlMaterial.
void Material::DumpCompositionInfo | ( | string | name = "CompInfo.dat" | ) |
Write the full composition information to a file.
void Material::DumpMaterial | ( | string | Filename, |
double | Mass, | ||
double | Volume | ||
) |
Dump a material which can be open with MureGui -onlytox.
void Material::DumpMaterial | ( | string | filename = "material.dat" | ) |
Make a nuclear chart &ascii tree of the material &write them to disk.
|
virtual |
Duplicate material n times over.
Reimplemented in ControlMaterial.
void Material::FindTotalSigmaPerNucleus | ( | ) |
Find total cross-section.
|
inline |
|
inline |
< return the Composition vector
|
inline |
< return the Composition vector
|
inline |
< return default extension for all nuclei of the material.
double Material::GetDensity | ( | DensityUnitType | DensityUnit | ) |
Returns the density of this Material in DensityUnit
|
inline |
< return the density units
|
inline |
< returns the father ("original") of a pseudo clone
|
inline |
< returns the name of material
|
inline |
< return the moderatior name (e.g. lwtr.01t)
Nucleus_ptr Material::GetNucleus | ( | int | Z, |
int | A, | ||
int | I = 0 |
||
) |
return the Nucleus Z, A, I
double Material::GetProportion | ( | int | i, |
ProportionUnitType | ProportionUnit | ||
) |
return the ith Proportion
|
inline |
< return the proportion units
|
inline |
< returns the temperature in K.
int Material::GetZAIIndex | ( | int | Z, |
int | A, | ||
int | I | ||
) |
Get the index of a given zai in the composition vector. Return -1 if not there.
int Material::GetZAIIndex | ( | ZAI * | zai | ) |
Get the index of a given zai in the composition vector. Return -1 if not there.
ZAI * Material::GetZAIInTree | ( | int | Z, |
int | A, | ||
int | I | ||
) |
|
inline |
< Whether or not will this Material contains a Moderator
|
inline |
< return true if material has been declared as a cladding
|
inline |
< return true if material is a control material (see ControlMaterial class)
|
inline |
< return true if material has been declared as a coolant
|
inline |
< return true if material has been declared as a Coolant gap
|
inline |
< Whether or not will this Material will evolve with the time
|
inline |
< return true if material has been declared as a Fuel
|
inline |
< return true if material has been declared as a moderator
|
inline |
< return true if material has been declared as a moderator box
|
inline |
< whether or not the Material is evolving out of the core
|
inline |
< Whether the material is a virtual (perturbative) material
|
inline |
|
inline |
< whether or not the Material is printable
|
inline |
< Is pesudo material
bool Material::IsZAIInTree | ( | int | Z, |
int | A, | ||
int | I | ||
) |
|
inline |
double Material::MeanMolarMass | ( | ) |
return the mean molar mass (in gram)
Material * Material::Mix | ( | Material * | M2, |
double | part, | ||
ProportionUnitType | ProportionUnit = kpMOL |
||
) |
Mix 2 Materials.
Material M2 is mixed with M1 ("this") to produced a new Material M12 with proportion M12=part*M2+(1-part)*this. It is assumed that M2 and this (M1) are only used for the mixture ; thus they will not be printed (Material::IsPrintable() is false). The new density is calculated as
where
M2 | : the Material to be mixed with this |
part | : the part of M2 used for mixing (50% => part=0.5) |
ProportionUnit | : the unit of part used in the mixing (i.e., kpMOL, kpMASS, ...) |
string Material::PrintAll | ( | ) |
string Material::PrintCompositionInfo | ( | ) |
Print out material composition
string Material::PrintDensityUnit | ( | DensityUnitType | DensityUnit = kdUNDEFINED | ) |
Pretty print of density units.
DensityUnit | : unit of density (possible values are kdGCM3, kdATCM3 and kdATBCM) |
string Material::PrintProportionUnit | ( | ProportionUnitType | ProportionUnit = kpUNDEFINED | ) |
Pretty print of proportion units.
ProportionUnit | : unit of proportion of Nucleus (possible values are kpMOL, kpMASS, kpATCM3, kpATBCM) |
void Material::Proportion2AtomCM3 | ( | ) |
Convert proportion unit (kpMOL or kpMASS) in at/cm3.
void Material::ResetProportion | ( | ) |
set all proprtion to 0.
|
inline |
< declares material as a cladding
|
inline |
< set the composition vector
|
inline |
< declares material as a Coolant
|
inline |
< declares material as a Coolant Gap
void Material::SetDefaultXSExtension | ( | string | name | ) |
Set a default extension for all nuclei of the material.
This is usefull if you don't have BaseSummary.dat file to find automatically the MCNP extension. See example Material_test.cxx
name | : extension name (e.g. ".60c") |
void Material::SetDensity | ( | double | Density, |
DensityUnitType | DensityUnit = kdGCM3 |
||
) |
Set the density.
Density | : the density in the specified units |
DensityUnit | : either kdGCM3 (g/cm3) (default), kdATCM3(at/cm3) or kdATBCM(at/barn.cm) |
void Material::SetEvolution | ( | ) |
Say that this Material will evolve.
|
inline |
< declares material as a Fuel
|
inline |
|
inline |
< declares the name of the material (used when thermal coupling)
|
inline |
< declares material as a moderator
|
inline |
< declares material as a ModeratorBox
|
inline |
< set the moderatior name (e.g. lwtr.01t)
Cell * Material::SetOutCore | ( | int | TheNumber, |
double | TheVolume | ||
) |
return a out core cell of volume TheVolume and number TheNumber
|
inline |
< Whether the material is a virtual (perturbative) material
void Material::SetProportion | ( | int | i, |
double | proportion, | ||
ProportionUnitType | ProportionUnit | ||
) |
Set the Proportion of the ith nucleus.
Give units to proportion (% mol, % mass, at/barn.cm, at/cm3 or atoms). If any nuclides are already present in the material, Proportion vector is recalculated.
i | : index of the nucleus in the composition |
proportion | : the proportion of the nucleus |
ProportionUnit | : unit of proportion of Nucleus (possible values are kpMOL, kpMASS, kpATCM3, kpATBCM) Sets the ith proportion. |
void Material::SetPseudoMaterial | ( | ) |
Define a pesudo material.
A pseudo-material composed by a mixture of identicals nuclei at different temperatures to simulate a missing temperature ins nuclear data bases. Suppose, one needs 1 nucleus (code N) with a proportion p at temperature T but it is only avalaible at temperature T1 (code N1) and T2 (code N2) such as T1<T<T2. A "pseudo material" is then created with
void Material::SetTemperature | ( | double | T = 293.6 | ) |
Set the temperature in K.
void Material::SetTemperatureEvolution | ( | bool | flag = true | ) |
set the Temperature evolution flag
void Material::SortCompositionByAmount | ( | ) |
Sort the proportions/compositions in proportion order (highest first).
void Material::SortCompositionByMass | ( | ) |
Sort the proportions/compositions in atomic mass order (highest first).
double Material::SumProportion | ( | ) |
return the sum of Proportion of each nucleus
void Material::UpdateZAI | ( | bool | WithReactions = true , |
bool | WithSF = true |
||
) |
Update all ZAI of material (With reactions&decays or just decays).
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
whether or not this material is considered cladding.
|
protected |
the Composition vector
|
protected |
This is a control material (e.g. for poison)
|
protected |
whether or not this material is considered Coolant.
|
protected |
whether or not this material is considered WaterGap.
|
protected |
Give a default extension to all nucleus.
|
protected |
Density of the Material.
|
protected |
Density unit (either g/cm3 (default), at/cm3 or at/barn.cm)
|
protected |
whether or not will this Material will evolve with the time
|
protected |
the father to used in cell in case of Pseudo clone
|
protected |
whether or not this material is considered fuel.
|
protected |
The index of the ZAI in the material composition.
|
protected |
|
protected |
Name of the material (uo2, water, ... used when thermal coupling)
|
protected |
whether or not this material is considered moderator.
|
protected |
whether or not this material is considered ModeratorBox.
|
protected |
Name of the moderator to be print in MT card (e.g. grph.06t)
|
protected |
whether or not material is an Out core evolving material
|
protected |
|
protected |
whether or not material is printable in MCNP input file (default)
|
protected |
the Proportion vector
|
protected |
Proportion vector unit (mol (default), at/barn.cm, at/cm3 or g/cm3)
|
protected |
Is the material a pseudomaterial?
|
protected |
|
protected |
whether or not temperature will evolve
|
protected |
true if ZAI have been updated (UpdateZAI) for evolution only