MURE
|
This abstract class is used to built a reactor assembly. More...
#include <GenericReactorAssembly.hxx>
Public Member Functions | |
Constructor &destructor | |
GenericReactorAssembly (double Pitch, int NRadialZones=1, int NZLevels=1, string AssemblyName="GenericAss") | |
Normal constructor. | |
GenericReactorAssembly (const GenericReactorAssembly &m) | |
virtual GenericReactorAssembly * | Clone ()=0 |
virtual | ~GenericReactorAssembly () |
Default destructor. | |
Assembly definition | |
void | SetAssemblyDuct (double DuctThickness, Material *DuctMat) |
void | SetPlenum (double PlenumThickness, Material *UpperPlenumMat, Material *LowerPlenumMat=nullptr) |
void | SetAssemblyShape (Shape_ptr TheOuterShape, Shape_ptr TheRealShape=Shape_ptr(nullptr)) |
void | AddFuelPin (PinCell *pin, int Ix=99999, int Iy=99999, int ZoneNumber=- 1) |
void | AddGuideTube (PinCell *pin, int Ix, int Iy, int ZoneNumber=- 1) |
void | AddControlRod (PinCell *pin, int Ix, int Iy, int ZoneNumber=- 1) |
bool | IsGuideTubes () |
true if some guide tubes have been defined | |
bool | IsControlRods () |
true if some control rods have been defined | |
bool | IsPlenum () |
true if plenums have been defined | |
bool | IsDuct () |
true if a asembly duct has been defined | |
Cell * | GetUpperCellPlenum () |
return the upper cell plenum | |
Cell * | GetLowerCellPlenum () |
return the lower cell plenum | |
Cell * | GetDuctCell () |
return the Duct cell | |
vector< double > | GetGuideTubeOuterRadius () |
return the most outer guide tube layer radius (clad) | |
vector< double > | GetControlRodOuterRadius () |
return the most outer control rod layer radius (outer clad) | |
vector< PinCell * > | GetPinCellOfDifferentShape (string PinType) |
return the vector of all pincell of a given type ("Fuel", "GuideTube", ...) | |
int | GetNumberOfRadialZones () |
Zoning methods. | |
int | GetNumberOfAxialLevels () |
void | AddRadialZone2Mesh (double Radius, int ZoneNum) |
void | AddRadialZone2Mesh (int Ix, int Iy, int ZoneNum) |
int | GetRadialLatticeMeshZone (int x, int y, int z) |
vector< Cell * > | GetFuelCell (int RadialZoneNumber, int AxialLevelNumber) |
vector< PinCell * > & | GetPinCellVector (int RadialZoneNumber, int AxialLevelNumber) |
vector< vector< vector< int > > > | GetGlobalLatticeMesh () |
int | GetGlobalLatticeMeshUniverse (int x, int y, int z) |
MC mesh methods. | |
PinCell * | GetGlobalLatticeMeshPin (int x, int y, int z) |
return the PinCell located at (x, y, z) in the global lattice mesh | |
int | GetMCXMeshSize () |
int | GetMCYMeshSize () |
int | GetMCMeshXmin () |
int | GetMCMeshXmax () |
int | GetMCMeshYmin () |
int | GetMCMeshYmax () |
int | GetMCMeshZmin () |
int | GetMCMeshZmax () |
virtual void | BuildAssemblyGeometry ()=0 |
Geometry methods. | |
Shape_ptr | GetAssemblyShape () |
bool | IsHexagonalAssembly () |
double | GetPitch () |
double | GetWidth () |
double | GetSide () |
double | GetHeight () |
double | GetAxialLevelHeight () |
double | GetPlenumThickness () |
double | GetDuctThickness () |
void | Translate (double dx, double dy, double dz) |
double | GetPrimitiveCellXCenter () |
double | GetPrimitiveCellYCenter () |
void | SetBorderPin (PinCell *pin) |
Shape_ptr | GetInfiniteAssemblyShape () |
Methods when a ReactorAssembly is used in a Lattice | |
void | SetSpatialVariable (PinCell *pin, string RadialZoneName, double RadialZoneValue, string ZLevelName, double ZLevelValue) |
void | SetNumberOfInstance (int N) |
Other methods | |
void | SetUniverse (int u=- 1) |
int | GetUniverse () |
vector< int > & | GetNumberOfFuelPinsPerZone () |
vector< int > & | GetNumberOfGuideTubesPerZone () |
vector< int > & | GetNumberOfControlRodsPerZone () |
vector< int > & | GetNumberOfCoolantPinsPerZone () |
int | GetNumberOfFuelPinsPerLevel () |
number of all fuel pins of a level (may be an approximation for an hexagons) | |
int | GetNumberOfGuideTubesPerLevel () |
number of all Guide Tubes of a level | |
int | GetNumberOfControlRodsPerLevel () |
number of all Control Rods of a level | |
virtual void | SetSource (int NPS=5000, int ActivesCycles=100, int InactivesCycles=100)=0 |
Sets a volumic neutron source. | |
string | GetAssemblyName () |
Protected Member Functions | |
Internal methods | |
void | Copy (const GenericReactorAssembly &m) |
< Copy ReactorMesh object m attributs in this | |
virtual void | CreatePlenum ()=0 |
Creates plenum shapes for the upper and lower plenum. | |
virtual void | CreateDuct ()=0 |
Creates Duct shapes. | |
void | Init () |
Initialization of arrays. | |
int | FindNumInArray (int num, vector< int > Array) |
Find the position of Num in the vector Array (-1 if not found) | |
void | FillRadialZone2MeshFromRadius () |
Fill Radial Zone lattice from the assembly lattice mesh. | |
void | ApplyRadialZone2Mesh () |
apply the radial zoning to each pins (if a pin is in 2 zones, it is duplicated to have 2 different pins, one per zone. | |
void | SetGasSpaceData (double GasThickness, double GasPressure, double HeFraMol, double XeFraMol, int Zone) |
void | AddPin (PinCell *pin, int Ix, int Iy) |
add a generic pin (Fuel, GuideTube, .. Call by AddFuelPin, ... | |
void | ReplaceBorderPins () |
void | CheckZoning () |
verify that all the lattice has a zone and that the zone numbers are 0, 1, ..fNRadialZones. | |
void | PrintData () |
Print output files. | |
void | Closing () |
Some routines to execute before exiting. | |
void | CountPinsPerTypePerRadialZone () |
Count the number of each pin type per radial zone. | |
void | CountUniversePerRadialZone (int Rzone, vector< int > Universe, vector< int > &Nb_Of_Count) |
vector< int > | FindUniversesInRadialZones () |
void | FillAssemblyMesh () |
Fill the global (R, Z) assembly mesh. | |
void | SetSpatialVariable () |
Fill all Pin's spatial variables. | |
void | SetSpatialVariable (PinCell *pin, int RadialZoneNum, string RadialZoneName, double RadialZoneValue, string ZLevelName, double ZLevelValue) |
Fill a Pin's spatial variables. | |
Protected Attributes | |
Assembly | |
Shape_ptr | fSAssemblyZone |
Assembly shape (could have holes in it) | |
Shape_ptr | fSOuterShape |
Assembly shape (either a Brick or an Hexagon) | |
Shape_ptr | fSInnerShape |
Assembly inner shape (a small brick/hexa if plenum and/or Duct is defined) | |
double | fPitch |
The pitch of channels. | |
double | fAssemblyWidth |
The assembly x-side for Brick case or width between 2 opposite planes for Hexagon case. | |
double | fAssemblySide |
The assembly y-side for Brick case or side for Hexagon case. | |
double | fAssemblyHeight |
The total assembly height (including plenums) | |
double | fAxialLevelHeight |
The height of each axial level=(fAssemblyHeight-2*fPlenumThickness)/fAxialLevels. | |
string | fAssemblyName |
name of the assembly for output | |
bool | fIsHexagon |
Whether the assembly shape is hexagonal or cuboid. | |
vector< double > | fHexaXplaneNormalVector |
Normal vector to the right plane of an hexagonal assembly. | |
int | fUniverse |
Assembly universe for filling core lattice. | |
double | fDxAssemblyTrans |
x assembly translation vector | |
double | fDyAssemblyTrans |
y assembly translation vector | |
double | fDzAssemblyTrans |
z assembly translation vector | |
bool | fIsTranslated |
whether or not an assembly has been tranlated | |
bool | fIsAssemblyShapeDefined |
to allow or not the AddXXXpin methods | |
bool | fIsAssemblyGeometryBuilt |
whether or not the assembly geometry has been built | |
Plenum | |
Shape_ptr | fSPlenumUp |
Top Plenum shape. | |
Shape_ptr | fSPlenumDown |
Bottom Plenum shape. | |
Shape_ptr | fBetweenPlenums |
space between plenum if fUniverse>0 | |
Material * | fLowerPlenumMaterial |
Lower Plenum material. | |
Material * | fUpperPlenumMaterial |
Upper Plenum material. | |
Cell * | fCPlenumUp |
Top Plenum cell. | |
Cell * | fCPlenumDown |
Bottom Plenum cell. | |
double | fPlenumThickness |
Width of the plenum up and down. | |
bool | fCanDefinePlenum |
Whether or not plenum can be defined. | |
bool | fIsPlenum |
True if lower and upper plenums are defined. | |
Duct of the assembly | |
double | fDuctThickness |
Thickness of the Duct. | |
Material * | fDuctMaterial |
Material of the Duct. | |
Cell * | fCellDuct |
Cell of the Duct. | |
Shape_ptr | fSAssemblyDuct |
Assembly Duct shape. | |
bool | fIsDuct |
true if a duct has been added | |
Zoning data | |
int | fAxialLevels |
The number of axial levels (number of differents cells in z direction) | |
int | fRadialZones |
The number of radial zones (number of differents cells in x, y direction) | |
vector< vector< int > > | fRadialMeshZone |
radial zone mesh fNx*fNy : zone number of a mesh position (same for All Level) PTO ASK NICO* | |
vector< double > | fVirtualRadiusCircle |
virtual circle radius to define zones (0..fRadialZones) | |
vector< int > | fVirtualRadiusZone |
associated zone to the previous vector (0..fRadialZones) | |
Mesh | |
int | fNx |
size of the x lattice mesh | |
int | fNy |
size of the y lattice mesh | |
int | fIXmin |
int | fIXmax |
extremal value of the x lattice mesh | |
int | fIYmin |
int | fIYmax |
extremal value of the y lattice mesh | |
int | fIZmin |
int | fIZmax |
extremal value of the z lattice mesh | |
double | fPrimitiveCellXCenter |
X center of the primitive lattice cell of the mesh. | |
double | fPrimitiveCellYCenter |
Y center of the primitive lattice cell of the mesh. | |
double | fXMeshCenter |
double | fYMeshCenter |
double | fZMeshCenter |
vector< vector< int > > | fRadialMeshLattice |
radial mesh (only for assembly definition, fNx x fNy) | |
vector< vector< vector< int > > > | fMeshLattice |
Complete Assembly mesh (x, y, z) | |
Pin stuff | |
vector< PinCell * > | fRadialPinCell |
pin for the radial mesh | |
vector< vector< vector< PinCell * > > > | fPinCellVector |
full pin vector per radial zone, axial level for each universe type [nr][nz][nu] | |
PinCell * | fBorderPin |
special pin (surrounding material only) to fill assembly border | |
bool | fIsGuideTubes |
whether GuideTube pins have been added | |
bool | fIsControlRods |
whether ControlRod pins have been added | |
vector< int > | fNumberOfFuelPinsPerZone |
Number of fuel pins in each radial zone. | |
vector< int > | fNumberOfGuideTubesPerZone |
Number of fuel pins in each radial zone. | |
vector< int > | fNumberOfControlRodsPerZone |
Number of fuel pins in each radial zone. | |
vector< int > | fNumberOfCoolantPinsPerZone |
Number of fuel pins in each radial zone. | |
Others | |
vector< ofstream * > | fFiles |
Output files. | |
bool | fIsGasSpace |
Whether gas space is simulated between cladding and fuel pin. | |
vector< double > | fGasThickness |
Thickness of the gas space. | |
double | fGasPressure |
Cold fill gas pressure (Pa) | |
double | fHeFraMol |
Molar fraction of Helium in the gas. | |
double | fXeFraMol |
Molar fraction of Xenon in the gas. | |
This abstract class is used to built a reactor assembly.
Assemblies built with this class are basic cuboid or hexagonal VERTICAL assemblies that can be rotated by +/-Pi/2. User sould use the concrete classes, namely MCNP::ReactorAssembly or Serpent::ReactorAssembly.
They are filled with fuel pins, guide tubes and control rods. Each GenericReactorAssembly can be discretized in radial zones and axial levels either for evolution purpose, or for thermohydraulics (coupled or not with evolution) purposed. By default only 1 radial zone and 1 axial level is created. In each zone, all material of a given type of Pincell is the same (composition &temperature).
Data must be given in SI (dimensions in meters) All GenericReactorAssembly are created at (0, 0, 0) ; use GenericReactorAssembly::Translate to move it (before any call to GenericReactorAssembly::BuildAssemblyGeometry().
WARNING: Some methods must be called before others ; even if error messages are provided, read the user guide.
GenericReactorAssembly::GenericReactorAssembly | ( | double | Pitch, |
int | NRadialZones = 1 , |
||
int | NZLevels = 1 , |
||
string | AssemblyName = "GenericAss" |
||
) |
Normal constructor.
Copy constructor.
Pitch | The pitch of the assembly mesh. |
NRadialZones | Number of radial zones (default = 1) |
NZLevels | Number of axial levels (default = 1) |
AssemblyName | Name of the assembly (needed to results directories and identification) |
GenericReactorAssembly::GenericReactorAssembly | ( | const GenericReactorAssembly & | m | ) |
|
virtual |
Default destructor.
void GenericReactorAssembly::AddControlRod | ( | PinCell * | pin, |
int | Ix, | ||
int | Iy, | ||
int | ZoneNumber = - 1 |
||
) |
Add a Control Rod to the assembly.
A control rod contains absorbent material ; if the assembly has guide tubes, they are inserted in these guide tubes.
When adding a PincCell at a given position, one can set in the same time the "radial" zone of that position if ZoneNumber>=0 ; in that case, GenericReactorAssembly::AddRadialZone2Mesh(Ix, Iy, ZoneNumber) is automatically called.
RESTRICTION: For Thermohydraulics(COBRA) use, only 1 type of control rod can be defined by a pin with 4 layers: the absorbent rod, its clad a coolant layer arround the rod clad and a Guide Tube's clad into which the rod is moving. The pin is added to the fControlRodPin vector (if not already added) and the pin universe is stored at the position (Ix, Iy) in the assembly mesh. The (Ix=0, Iy=0) is the central lattice element for odd x odd lattice mesh.
pin | : a Control Rod pin (central rod+its clad+ coolant ring+ guide tube's clad) |
Ix | : the X index position in the assembly lattice mesh. |
Iy | : the Y index position in the assembly lattice mesh. |
ZoneNumber | : the zone number at this position if ZoneNumber>=0 set the radial zone to that value. |
void GenericReactorAssembly::AddFuelPin | ( | PinCell * | pin, |
int | Ix = 99999 , |
||
int | Iy = 99999 , |
||
int | ZoneNumber = - 1 |
||
) |
Add a fuel pin to the assembly.
The pin is added to the fRadialPinCell vector (if not already added) and the pin universe is stored at the position (Ix, Iy) in the assembly mesh. The (Ix=0, Iy=0) is the central lattice element for odd*odd lattice mesh and the first right-up lattice cell for a even*even lattice mesh.
if (Ix=99999, Iy=99999) then the pin fill the whole assembly mesh.
When adding a PincCell at a given position, one can set in the same time the "radial" zone of that position if ZoneNumber>=0 ; in that case, GenericReactorAssembly::AddRadialZone2Mesh(Ix, Iy, ZoneNumber) is automatically called.
RESTRICTION: For Thermohydraulics(COBRA) use, each pin must have a clad and at least an inner zone (fuel part) ; this means that the number of layers of the pin should be at least 2. Some special pins may also be defined ; they have then a third layer compose of a ring (Gd, ...) between the fuel and its clad.
pin | : a pin of fuel (with its clad) |
Ix | : the X index position in the assembly lattice mesh. |
Iy | : the Y index position in the assembly lattice mesh. |
ZoneNumber | : the zone number at this position if ZoneNumber>=0 set the radial zone to that value. |
void GenericReactorAssembly::AddGuideTube | ( | PinCell * | pin, |
int | Ix, | ||
int | Iy, | ||
int | ZoneNumber = - 1 |
||
) |
Add a Guide Tube to the assembly.
Guide Tube are specific hole in the (PWR)) assembly, generally full of water.
When adding a Guide Tube PincCell at a given position, one can set in the same time the "radial" zone of that position if ZoneNumber>=0 ; in that case, GenericReactorAssembly::AddRadialZone2Mesh(Ix, Iy, ZoneNumber) is automatically called.
RESTRICTION: For Thermohydraulics(COBRA) use, a guide tube is defined by a pin with 2 layers: a inner coolant zone and the clad. The pin is added to the fGuideTubePin vector (if not already added) and the pin universe is stored at the position (Ix, Iy) in the assembly mesh. The (Ix=0, Iy=0) is the central lattice element for odd x odd lattice mesh.
pin | : a Guide Tube pin (with its clad) |
Ix | : the X index position in the assembly lattice mesh. |
Iy | : the Y index position in the assembly lattice mesh. |
ZoneNumber | : the zone number at this position if ZoneNumber>=0 set the radial zone to that value. |
|
protected |
add a generic pin (Fuel, GuideTube, .. Call by AddFuelPin, ...
void GenericReactorAssembly::AddRadialZone2Mesh | ( | double | Radius, |
int | ZoneNum | ||
) |
Add a radial zone to the mesh.
Radial Zones correspond to thermohydraulics and/or evolution zones: all fuels pins in a given zone will have the same temperature Tf and their clads will have the same Tc (given by a thermohydraulics calculation) ; idem for coolant, Guide Tubes, ... Radial zone can be added in 2 ways: 1)using virtual circles (current method). 2)specifying the mesh positions.
For 1) user provides Radii of the virtual concentric circles associated to a zone number. Then each pin (fuel, guide tube, ...) completly included inside this virtual circle (and outside the inner one if it exist) belong to the zone. If a zone has been set before in a lattice mesh (by method 2) inside this virtual circle, the zone is preserved. For a cuboid assembly, the minimum radius of the last zone is Side/sqrt(2). For an hexagon assembly, the minium radius of the last zone is Side*2.
For 2) see .AddRadialZone2Mesh(int, int, int)
Radius | : radius of the virtual circle |
ZoneNum | : the zone number associated to that radius. |
void GenericReactorAssembly::AddRadialZone2Mesh | ( | int | Ix, |
int | Iy, | ||
int | ZoneNum | ||
) |
Add a radial zone to the mesh.
Radial Zones correspond to thermohydraulics and/or evolution zones: all fuels pins in a given zone will have the same temperature Tf and their clads will have the same Tc (given by a thermohydraulics calculation) ; idem for coolant, Guide Tubes, ... Radial zone can be added in 2 ways: 1)using virtual circles (see above). 2)specifying the mesh positions(current method).
For 2) user provides, for the given index position in the lattice mesh, the zone number.
Ix | : the X index position in the assembly lattice mesh. |
Iy | : the Y index position in the assembly lattice mesh. |
ZoneNum | : the zone number. |
|
protected |
apply the radial zoning to each pins (if a pin is in 2 zones, it is duplicated to have 2 different pins, one per zone.
|
pure virtual |
Geometry methods.
Build the Assembly
After calling this method, the assembly can not be modified. THIS MUST BE THE LAST CALLED METHOD FOR THE ReactorAssembly..
Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.
|
protected |
verify that all the lattice has a zone and that the zone numbers are 0, 1, ..fNRadialZones.
|
pure virtual |
Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.
|
protected |
Some routines to execute before exiting.
|
protected |
< Copy ReactorMesh object m attributs in this
|
protected |
Count the number of each pin type per radial zone.
|
protected |
Count the number of time a universe appears in a radial zone
Rzone | : the radial zone number (0:innerest) |
Universe | : input vector that stores all universes present in the radial zone (see GenericReactorAssembly::FindUniversesInRadialZones()). |
Nb_Of_Count | : output vector containing the number of time a given universe is present in the radial zone Rzone. |
|
protectedpure virtual |
Creates Duct shapes.
Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.
|
protectedpure virtual |
Creates plenum shapes for the upper and lower plenum.
Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.
|
protected |
Fill the global (R, Z) assembly mesh.
|
protected |
Fill Radial Zone lattice from the assembly lattice mesh.
|
protected |
Find the position of Num in the vector Array (-1 if not found)
|
protected |
Find all the universe numbers belonging to a radial zone. The output vector has the size of the total number of universes in all radial zones (for 1 level). Eache vector value is the universe of the given PinCell in one of the radial zone.
|
inline |
< return the assembly name
|
inline |
< return the Assembly shape
|
inline |
< return the height of each axial level (fuel part)
vector< double > GenericReactorAssembly::GetControlRodOuterRadius | ( | ) |
return the most outer control rod layer radius (outer clad)
|
inline |
return the Duct cell
|
inline |
< return the total plenum thickness
vector< Cell * > GenericReactorAssembly::GetFuelCell | ( | int | RadialZoneNumber, |
int | AxialLevelNumber | ||
) |
return the MURE cell vector of cells belonging the radial zone and axial level.
WARNING: this method is used internally when needed ; but of course the user can use it. If so he must call before the gMURE->GetConnectorPlugin()->BuildPinCells(). The call to this last method should be done *ONLY *after all Reactor Assemblies object has been built (via ReactorAssembly::BuildAssemblyGeometry()).
|
inline |
< return the matrix of universe number of all Pincells of the assembly.
PinCell * GenericReactorAssembly::GetGlobalLatticeMeshPin | ( | int | x, |
int | y, | ||
int | z | ||
) |
return the PinCell located at (x, y, z) in the global lattice mesh
int GenericReactorAssembly::GetGlobalLatticeMeshUniverse | ( | int | x, |
int | y, | ||
int | z | ||
) |
MC mesh methods.
return the universe of the PinCell located at (x, y, z) in the global lattice mesh
vector< double > GenericReactorAssembly::GetGuideTubeOuterRadius | ( | ) |
return the most outer guide tube layer radius (clad)
|
inline |
< return the assembly full height (with plenums if exist)
Shape_ptr GenericReactorAssembly::GetInfiniteAssemblyShape | ( | ) |
return an infinite clone of Assembly outer shape
This method is called ONLY if one want to use the assembly as a mesh element in a core. The outer shape of the core is cloned and set inifinite in the Z direction. It will be used as tthe lattice generato of the Core LatticeCell mesh. This avoid error message of MCNP "surface xx appears more than once in a chain".
|
inline |
return the lower cell plenum
|
inline |
< Upper X-index in the lattice mesh
|
inline |
< Lower X-index in the lattice mesh
|
inline |
< Upper Y-index in the lattice mesh
|
inline |
< Lower Y-index in the lattice mesh
|
inline |
< Upper Z-index in the lattice mesh
|
inline |
< Lower Z-index in the lattice mesh
|
inline |
< Number of lattice cells in X
|
inline |
< Number of lattice cells in Y
|
inline |
< Number of axial levels
int GenericReactorAssembly::GetNumberOfControlRodsPerLevel | ( | ) |
number of all Control Rods of a level
|
inline |
< number of control rods in each radial zone
|
inline |
< approximate number of full border pins in the last radial zone of an hexagon
int GenericReactorAssembly::GetNumberOfFuelPinsPerLevel | ( | ) |
number of all fuel pins of a level (may be an approximation for an hexagons)
|
inline |
< number of fuel pins in each radial zone
int GenericReactorAssembly::GetNumberOfGuideTubesPerLevel | ( | ) |
number of all Guide Tubes of a level
|
inline |
< number of guide tubes in each radial zone
|
inline |
Zoning methods.
< Number of radial zones
vector< PinCell * > GenericReactorAssembly::GetPinCellOfDifferentShape | ( | string | PinType | ) |
return the vector of all pincell of a given type ("Fuel", "GuideTube", ...)
|
inline |
return the PinCell vector of PinCells belonging to the radial zone and axial level. The vector is a [r][z][nu] size ; the [nu] index is global for the assembly (i.e. all universe present in the assembly) ; this means that lot of elements of this vectors are empty (null pointers). In general, one can have many PinCell types in a given radial zone and axial level (Fuel, GuideTube, ...) ; but some time there is no PinCell of a given type.
<
|
inline |
< return the assembly Pitch
|
inline |
< return the total plenum thickness
|
inline |
< X-center of the mesh primitive cell
|
inline |
< Y-center of the mesh primitive cell
|
inline |
< return the radial zone in the lattice mesh (yet, independent of z)
|
inline |
< return the assembly side for hexagonal assembly or Y-side for cuboid one (without duct if exists)
|
inline |
< return the universe number of the ReactorAssembly
|
inline |
return the upper cell plenum
|
inline |
< return the assembly width for hexagonal assembly or X-side for cuboid one (without duct if exists)
|
protected |
Initialization of arrays.
|
inline |
true if some control rods have been defined
|
inline |
true if a asembly duct has been defined
|
inline |
true if some guide tubes have been defined
|
inline |
< Whether the assembly shape is hexagonal (true) or Cuboid (false)
|
inline |
true if plenums have been defined
|
protected |
Print output files.
|
protected |
Replace border pins by coolant ones. For hexagon assemblies, pins close to the border are generally cut by the border. All cut pins are replaced by "coolant's" ones. This method is called only if GenericReactorAssembly::SetBorderPin() has been called.
void GenericReactorAssembly::SetAssemblyDuct | ( | double | DuctThickness, |
Material * | DuctMat | ||
) |
Add a assembly duct.
Assembly duct (or assembly channel) can be added for SFR, BWR, ... assemblies. The assembly side for cuboid assembly or witdh for hexagonal assembly is then reduced by 2*DuctThickness (the side of a hexagonal assembly is reduced by 2*DuctThickness/sqrt(3). Thus take this into account for your assembly dimensions!
This method MUST be used called before GenericReactorAssembly::SetAssemblyShape().
RESTRICTION: For Thermohydraulics(COBRA) use, this is not yet allowed. WARNING: if GenericReactorAssembly::SetAssemblyDuct have been called, the real "fuel" part of the assembly is reduced. See these methods for more details.
DuctThickness | : duct thickness |
DuctMat | : duct material |
void GenericReactorAssembly::SetAssemblyShape | ( | Shape_ptr | TheOuterShape, |
Shape_ptr | TheRealShape = Shape_ptr(nullptr) |
||
) |
Set the reactor mesh assembly shape.
The shape of the assembly must be either cuboid (Brick class) or hexagonal (Hexagon class). It must be center at (0, 0, 0) ; all translations are then taken into account by GenericReactorAssembly::Translate().
If the Assembly is more complex (e.g. a hole in its center), 2 shapes should be provided: the outer shape TheOuterShape (either a Brick or an Hexagon) and the real complex assembly shape (e.g. the "same" shape with the hole in its center). When the assembly is a standard Brick or Hexagon, TheOuterShape is taken as the real assembly shape.
WARNING: if GenericReactorAssembly::SetPlenum have been called, the real "fuel" part of the assembly is reduced. See these methods for more details.
TheOuterShape | : Assembly outer shape (either Brick or Hexagons) |
TheRealShape | : the real assembly shape if the shape is complex (hole inside, ...). |
void GenericReactorAssembly::SetBorderPin | ( | PinCell * | pin | ) |
Set Border pins.
In general, Hexagonal assemblies have their border pins cut by the hexagon sides. To avoid this, user can provide a pure coolant pin (only with a surrounding material) to replace all border pins by this "coolant" one. This method is HIGHLY recommanded for hexagonal assembly.
For cuboid assembly with a pitch that does match assembly width, this can also be useful.
|
protected |
void GenericReactorAssembly::SetNumberOfInstance | ( | int | N | ) |
Set the number of time a ReactorAssembly is used.
This method is very IMPORTANT if a ReactorAssembly is used more than once in a geometry ; By default PinCell volumes have bin set to their real volume in 1 ReactorAssembly (e.g. for a fuel pin of a PWR assembly with 25 guide tubes, the volume is set to: volume_all_pin_in_ass=(17*17-25)*volume_of_1_pin). But if this assembly is used more than one (N), the volume of the PinCell should be N*volume_all_pin_in_ass. This method take care of that.
void GenericReactorAssembly::SetPlenum | ( | double | PlenumThickness, |
Material * | UpperPlenumMat, | ||
Material * | LowerPlenumMat = nullptr |
||
) |
Sets plenum at the top and at the bottom.
Top and bottom plenums of egal thickness are added to the assembly ; thus the assembly length is reduced by 2*PlenumThickness. If only the upper plenum material (coolant) is given, a (true) clone at the same temperature is performed for the lower plenum material.
This method MUST be used called before GenericReactorAssembly::SetAssemblyShape().
PlenumThickness | : top and plenum thickness |
UpperPlenumMat | : coolant material for the upper plenum |
LowerPlenumMat | : coolant material for the lower plenum |
|
pure virtual |
Sets a volumic neutron source.
Define a cylindrical source (Watt fission spectrum) thats fills all the external shape specified by the user. MCNP Only.
NPS | Number of source particles |
ActivesCycles | Number of actives cycles in KCODE |
InactivesCycles | Number of inactives cycles in KCODE |
Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.
|
protected |
Fill all Pin's spatial variables.
|
protected |
Fill a Pin's spatial variables.
void GenericReactorAssembly::SetSpatialVariable | ( | PinCell * | pin, |
string | RadialZoneName, | ||
double | RadialZoneValue, | ||
string | ZLevelName, | ||
double | ZLevelValue | ||
) |
Fill all Pin's spatial variables
It first reset FuelPin "old" spatial variables and add new ones
void GenericReactorAssembly::SetUniverse | ( | int | u = - 1 | ) |
Give a Universe to assembly
This method is called ONLY if one want to use the assembly as a mesh element in a core. If the universe is <0 then MURE chooses the number automatically. Method is 1) define the ReactorAssembly RA (assign its shape, fill pins, ...) 2) give a universe to the assembly via this method 3) BuildAssemblyGeometry() 4) Define a core shape Core 5) Define a Shape_ptr InfinitAss=RA->GetInfiniteAssemblyShape(); 6) InfinitAss->SetUniverse(); 7) InfinitAss>>Core 8) define a new LatticeCell(InfinitAss); 9) Fill the lattice via LatticeCell::FillLattice(RA->GetUniverse(), ...)
void GenericReactorAssembly::Translate | ( | double | dx, |
double | dy, | ||
double | dz | ||
) |
Translate the whole assembly
Translation is only performed in the GenericReactorAssembly::BuildAssemblyGeometry() ; this allow more simple calculation for pin positions, ... Thus this method must be called before GenericReactorAssembly::BuildAssemblyGeometry().
dx | X translation |
dy | Y translation |
dz | Z translation |
|
protected |
The total assembly height (including plenums)
|
protected |
name of the assembly for output
|
protected |
The assembly y-side for Brick case or side for Hexagon case.
|
protected |
The assembly x-side for Brick case or width between 2 opposite planes for Hexagon case.
|
protected |
The height of each axial level=(fAssemblyHeight-2*fPlenumThickness)/fAxialLevels.
|
protected |
The number of axial levels (number of differents cells in z direction)
|
protected |
space between plenum if fUniverse>0
|
protected |
special pin (surrounding material only) to fill assembly border
|
protected |
Whether or not plenum can be defined.
|
protected |
Bottom Plenum cell.
|
protected |
Top Plenum cell.
|
protected |
Thickness of the Duct.
|
protected |
x assembly translation vector
|
protected |
y assembly translation vector
|
protected |
z assembly translation vector
|
protected |
Output files.
|
protected |
Cold fill gas pressure (Pa)
|
protected |
Thickness of the gas space.
|
protected |
Molar fraction of Helium in the gas.
|
protected |
Normal vector to the right plane of an hexagonal assembly.
|
protected |
whether or not the assembly geometry has been built
|
protected |
to allow or not the AddXXXpin methods
|
protected |
whether ControlRod pins have been added
|
protected |
true if a duct has been added
|
protected |
Whether gas space is simulated between cladding and fuel pin.
|
protected |
whether GuideTube pins have been added
|
protected |
Whether the assembly shape is hexagonal or cuboid.
|
protected |
True if lower and upper plenums are defined.
|
protected |
whether or not an assembly has been tranlated
|
protected |
extremal value of the x lattice mesh
|
protected |
|
protected |
extremal value of the y lattice mesh
|
protected |
|
protected |
extremal value of the z lattice mesh
|
protected |
|
protected |
Lower Plenum material.
|
protected |
Complete Assembly mesh (x, y, z)
|
protected |
Number of fuel pins in each radial zone.
|
protected |
Number of fuel pins in each radial zone.
|
protected |
Number of fuel pins in each radial zone.
|
protected |
Number of fuel pins in each radial zone.
|
protected |
size of the x lattice mesh
|
protected |
size of the y lattice mesh
|
protected |
full pin vector per radial zone, axial level for each universe type [nr][nz][nu]
|
protected |
The pitch of channels.
|
protected |
Width of the plenum up and down.
|
protected |
X center of the primitive lattice cell of the mesh.
|
protected |
Y center of the primitive lattice cell of the mesh.
|
protected |
radial mesh (only for assembly definition, fNx x fNy)
|
protected |
radial zone mesh fNx*fNy : zone number of a mesh position (same for All Level) PTO ASK NICO*
|
protected |
pin for the radial mesh
|
protected |
The number of radial zones (number of differents cells in x, y direction)
|
protected |
Assembly Duct shape.
|
protected |
Assembly shape (could have holes in it)
|
protected |
Assembly inner shape (a small brick/hexa if plenum and/or Duct is defined)
|
protected |
Assembly shape (either a Brick or an Hexagon)
|
protected |
Bottom Plenum shape.
|
protected |
Top Plenum shape.
|
protected |
Assembly universe for filling core lattice.
|
protected |
Upper Plenum material.
|
protected |
virtual circle radius to define zones (0..fRadialZones)
|
protected |
associated zone to the previous vector (0..fRadialZones)
|
protected |
Molar fraction of Xenon in the gas.
|
protected |
|
protected |
|
protected |