MURE
Loading...
Searching...
No Matches
List of all members
GenericReactorAssembly Class Referenceabstract

This abstract class is used to built a reactor assembly. More...

#include <GenericReactorAssembly.hxx>

Inheritance diagram for GenericReactorAssembly:
MCNP::ReactorAssembly Serpent::ReactorAssembly

Public Member Functions

Constructor &destructor
 GenericReactorAssembly (double Pitch, int NRadialZones=1, int NZLevels=1, string AssemblyName="GenericAss")
 Normal constructor.
 
 GenericReactorAssembly (const GenericReactorAssembly &m)
 
virtual GenericReactorAssemblyClone ()=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
 
CellGetUpperCellPlenum ()
 return the upper cell plenum
 
CellGetLowerCellPlenum ()
 return the lower cell plenum
 
CellGetDuctCell ()
 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.
 
PinCellGetGlobalLatticeMeshPin (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
 
MaterialfLowerPlenumMaterial
 Lower Plenum material.
 
MaterialfUpperPlenumMaterial
 Upper Plenum material.
 
CellfCPlenumUp
 Top Plenum cell.
 
CellfCPlenumDown
 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.
 
MaterialfDuctMaterial
 Material of the Duct.
 
CellfCellDuct
 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]
 
PinCellfBorderPin
 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.
 

Detailed Description

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.

Author
Nico*
pto
Version
3.0

Constructor & Destructor Documentation

◆ GenericReactorAssembly() [1/2]

GenericReactorAssembly::GenericReactorAssembly ( double  Pitch,
int  NRadialZones = 1,
int  NZLevels = 1,
string  AssemblyName = "GenericAss" 
)

Normal constructor.

Copy constructor.

Parameters
PitchThe pitch of the assembly mesh.
NRadialZonesNumber of radial zones (default = 1)
NZLevelsNumber of axial levels (default = 1)
AssemblyNameName of the assembly (needed to results directories and identification)

◆ GenericReactorAssembly() [2/2]

GenericReactorAssembly::GenericReactorAssembly ( const GenericReactorAssembly m)

◆ ~GenericReactorAssembly()

GenericReactorAssembly::~GenericReactorAssembly ( )
virtual

Default destructor.

Member Function Documentation

◆ AddControlRod()

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.

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

◆ AddFuelPin()

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.

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

◆ AddGuideTube()

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.

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

◆ AddPin()

void GenericReactorAssembly::AddPin ( PinCell pin,
int  Ix,
int  Iy 
)
protected

add a generic pin (Fuel, GuideTube, .. Call by AddFuelPin, ...

◆ AddRadialZone2Mesh() [1/2]

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)

Parameters
Radius: radius of the virtual circle
ZoneNum: the zone number associated to that radius.

◆ AddRadialZone2Mesh() [2/2]

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.

Parameters
Ix: the X index position in the assembly lattice mesh.
Iy: the Y index position in the assembly lattice mesh.
ZoneNum: the zone number.

◆ ApplyRadialZone2Mesh()

void GenericReactorAssembly::ApplyRadialZone2Mesh ( )
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.

◆ BuildAssemblyGeometry()

virtual void GenericReactorAssembly::BuildAssemblyGeometry ( )
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.

◆ CheckZoning()

void GenericReactorAssembly::CheckZoning ( )
protected

verify that all the lattice has a zone and that the zone numbers are 0, 1, ..fNRadialZones.

◆ Clone()

virtual GenericReactorAssembly * GenericReactorAssembly::Clone ( )
pure virtual

◆ Closing()

void GenericReactorAssembly::Closing ( )
protected

Some routines to execute before exiting.

◆ Copy()

void GenericReactorAssembly::Copy ( const GenericReactorAssembly m)
protected

< Copy ReactorMesh object m attributs in this

◆ CountPinsPerTypePerRadialZone()

void GenericReactorAssembly::CountPinsPerTypePerRadialZone ( )
protected

Count the number of each pin type per radial zone.

◆ CountUniversePerRadialZone()

void GenericReactorAssembly::CountUniversePerRadialZone ( int  Rzone,
vector< int >  Universe,
vector< int > &  Nb_Of_Count 
)
protected

Count the number of time a universe appears in a radial zone

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

◆ CreateDuct()

virtual void GenericReactorAssembly::CreateDuct ( )
protectedpure virtual

Creates Duct shapes.

Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.

◆ CreatePlenum()

virtual void GenericReactorAssembly::CreatePlenum ( )
protectedpure virtual

Creates plenum shapes for the upper and lower plenum.

Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.

◆ FillAssemblyMesh()

void GenericReactorAssembly::FillAssemblyMesh ( )
protected

Fill the global (R, Z) assembly mesh.

◆ FillRadialZone2MeshFromRadius()

void GenericReactorAssembly::FillRadialZone2MeshFromRadius ( )
protected

Fill Radial Zone lattice from the assembly lattice mesh.

◆ FindNumInArray()

int GenericReactorAssembly::FindNumInArray ( int  num,
vector< int >  Array 
)
protected

Find the position of Num in the vector Array (-1 if not found)

◆ FindUniversesInRadialZones()

vector< int > GenericReactorAssembly::FindUniversesInRadialZones ( )
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.

◆ GetAssemblyName()

string GenericReactorAssembly::GetAssemblyName ( )
inline

< return the assembly name

◆ GetAssemblyShape()

Shape_ptr GenericReactorAssembly::GetAssemblyShape ( )
inline

< return the Assembly shape

◆ GetAxialLevelHeight()

double GenericReactorAssembly::GetAxialLevelHeight ( )
inline

< return the height of each axial level (fuel part)

◆ GetControlRodOuterRadius()

vector< double > GenericReactorAssembly::GetControlRodOuterRadius ( )

return the most outer control rod layer radius (outer clad)

◆ GetDuctCell()

Cell * GenericReactorAssembly::GetDuctCell ( )
inline

return the Duct cell

◆ GetDuctThickness()

double GenericReactorAssembly::GetDuctThickness ( )
inline

< return the total plenum thickness

◆ GetFuelCell()

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()).

◆ GetGlobalLatticeMesh()

vector< vector< vector< int > > > GenericReactorAssembly::GetGlobalLatticeMesh ( )
inline

< return the matrix of universe number of all Pincells of the assembly.

◆ GetGlobalLatticeMeshPin()

PinCell * GenericReactorAssembly::GetGlobalLatticeMeshPin ( int  x,
int  y,
int  z 
)

return the PinCell located at (x, y, z) in the global lattice mesh

◆ GetGlobalLatticeMeshUniverse()

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

◆ GetGuideTubeOuterRadius()

vector< double > GenericReactorAssembly::GetGuideTubeOuterRadius ( )

return the most outer guide tube layer radius (clad)

◆ GetHeight()

double GenericReactorAssembly::GetHeight ( )
inline

< return the assembly full height (with plenums if exist)

◆ GetInfiniteAssemblyShape()

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

◆ GetLowerCellPlenum()

Cell * GenericReactorAssembly::GetLowerCellPlenum ( )
inline

return the lower cell plenum

◆ GetMCMeshXmax()

int GenericReactorAssembly::GetMCMeshXmax ( )
inline

< Upper X-index in the lattice mesh

◆ GetMCMeshXmin()

int GenericReactorAssembly::GetMCMeshXmin ( )
inline

< Lower X-index in the lattice mesh

◆ GetMCMeshYmax()

int GenericReactorAssembly::GetMCMeshYmax ( )
inline

< Upper Y-index in the lattice mesh

◆ GetMCMeshYmin()

int GenericReactorAssembly::GetMCMeshYmin ( )
inline

< Lower Y-index in the lattice mesh

◆ GetMCMeshZmax()

int GenericReactorAssembly::GetMCMeshZmax ( )
inline

< Upper Z-index in the lattice mesh

◆ GetMCMeshZmin()

int GenericReactorAssembly::GetMCMeshZmin ( )
inline

< Lower Z-index in the lattice mesh

◆ GetMCXMeshSize()

int GenericReactorAssembly::GetMCXMeshSize ( )
inline

< Number of lattice cells in X

◆ GetMCYMeshSize()

int GenericReactorAssembly::GetMCYMeshSize ( )
inline

< Number of lattice cells in Y

◆ GetNumberOfAxialLevels()

int GenericReactorAssembly::GetNumberOfAxialLevels ( )
inline

< Number of axial levels

◆ GetNumberOfControlRodsPerLevel()

int GenericReactorAssembly::GetNumberOfControlRodsPerLevel ( )

number of all Control Rods of a level

◆ GetNumberOfControlRodsPerZone()

vector< int > & GenericReactorAssembly::GetNumberOfControlRodsPerZone ( )
inline

< number of control rods in each radial zone

◆ GetNumberOfCoolantPinsPerZone()

vector< int > & GenericReactorAssembly::GetNumberOfCoolantPinsPerZone ( )
inline

< approximate number of full border pins in the last radial zone of an hexagon

◆ GetNumberOfFuelPinsPerLevel()

int GenericReactorAssembly::GetNumberOfFuelPinsPerLevel ( )

number of all fuel pins of a level (may be an approximation for an hexagons)

◆ GetNumberOfFuelPinsPerZone()

vector< int > & GenericReactorAssembly::GetNumberOfFuelPinsPerZone ( )
inline

< number of fuel pins in each radial zone

◆ GetNumberOfGuideTubesPerLevel()

int GenericReactorAssembly::GetNumberOfGuideTubesPerLevel ( )

number of all Guide Tubes of a level

◆ GetNumberOfGuideTubesPerZone()

vector< int > & GenericReactorAssembly::GetNumberOfGuideTubesPerZone ( )
inline

< number of guide tubes in each radial zone

◆ GetNumberOfRadialZones()

int GenericReactorAssembly::GetNumberOfRadialZones ( )
inline

Zoning methods.

< Number of radial zones

◆ GetPinCellOfDifferentShape()

vector< PinCell * > GenericReactorAssembly::GetPinCellOfDifferentShape ( string  PinType)

return the vector of all pincell of a given type ("Fuel", "GuideTube", ...)

◆ GetPinCellVector()

vector< PinCell * > & GenericReactorAssembly::GetPinCellVector ( int  RadialZoneNumber,
int  AxialLevelNumber 
)
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.

<

◆ GetPitch()

double GenericReactorAssembly::GetPitch ( )
inline

< return the assembly Pitch

◆ GetPlenumThickness()

double GenericReactorAssembly::GetPlenumThickness ( )
inline

< return the total plenum thickness

◆ GetPrimitiveCellXCenter()

double GenericReactorAssembly::GetPrimitiveCellXCenter ( )
inline

< X-center of the mesh primitive cell

◆ GetPrimitiveCellYCenter()

double GenericReactorAssembly::GetPrimitiveCellYCenter ( )
inline

< Y-center of the mesh primitive cell

◆ GetRadialLatticeMeshZone()

int GenericReactorAssembly::GetRadialLatticeMeshZone ( int  x,
int  y,
int  z 
)
inline

< return the radial zone in the lattice mesh (yet, independent of z)

◆ GetSide()

double GenericReactorAssembly::GetSide ( )
inline

< return the assembly side for hexagonal assembly or Y-side for cuboid one (without duct if exists)

◆ GetUniverse()

int GenericReactorAssembly::GetUniverse ( )
inline

< return the universe number of the ReactorAssembly

◆ GetUpperCellPlenum()

Cell * GenericReactorAssembly::GetUpperCellPlenum ( )
inline

return the upper cell plenum

◆ GetWidth()

double GenericReactorAssembly::GetWidth ( )
inline

< return the assembly width for hexagonal assembly or X-side for cuboid one (without duct if exists)

◆ Init()

void GenericReactorAssembly::Init ( )
protected

Initialization of arrays.

◆ IsControlRods()

bool GenericReactorAssembly::IsControlRods ( )
inline

true if some control rods have been defined

◆ IsDuct()

bool GenericReactorAssembly::IsDuct ( )
inline

true if a asembly duct has been defined

◆ IsGuideTubes()

bool GenericReactorAssembly::IsGuideTubes ( )
inline

true if some guide tubes have been defined

◆ IsHexagonalAssembly()

bool GenericReactorAssembly::IsHexagonalAssembly ( )
inline

< Whether the assembly shape is hexagonal (true) or Cuboid (false)

◆ IsPlenum()

bool GenericReactorAssembly::IsPlenum ( )
inline

true if plenums have been defined

◆ PrintData()

void GenericReactorAssembly::PrintData ( )
protected

Print output files.

◆ ReplaceBorderPins()

void GenericReactorAssembly::ReplaceBorderPins ( )
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.

◆ SetAssemblyDuct()

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.

Parameters
DuctThickness: duct thickness
DuctMat: duct material

◆ SetAssemblyShape()

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.

Parameters
TheOuterShape: Assembly outer shape (either Brick or Hexagons)
TheRealShape: the real assembly shape if the shape is complex (hole inside, ...).

◆ SetBorderPin()

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.

◆ SetGasSpaceData()

void GenericReactorAssembly::SetGasSpaceData ( double  GasThickness,
double  GasPressure,
double  HeFraMol,
double  XeFraMol,
int  Zone 
)
protected

◆ SetNumberOfInstance()

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.

◆ SetPlenum()

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().

Parameters
PlenumThickness: top and plenum thickness
UpperPlenumMat: coolant material for the upper plenum
LowerPlenumMat: coolant material for the lower plenum

◆ SetSource()

virtual void GenericReactorAssembly::SetSource ( int  NPS = 5000,
int  ActivesCycles = 100,
int  InactivesCycles = 100 
)
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.

Parameters
NPSNumber of source particles
ActivesCyclesNumber of actives cycles in KCODE
InactivesCyclesNumber of inactives cycles in KCODE

Implemented in MCNP::ReactorAssembly, and Serpent::ReactorAssembly.

◆ SetSpatialVariable() [1/3]

void GenericReactorAssembly::SetSpatialVariable ( )
protected

Fill all Pin's spatial variables.

◆ SetSpatialVariable() [2/3]

void GenericReactorAssembly::SetSpatialVariable ( PinCell pin,
int  RadialZoneNum,
string  RadialZoneName,
double  RadialZoneValue,
string  ZLevelName,
double  ZLevelValue 
)
protected

Fill a Pin's spatial variables.

◆ SetSpatialVariable() [3/3]

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

◆ SetUniverse()

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(), ...)

◆ Translate()

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().

Parameters
dxX translation
dyY translation
dzZ translation

Member Data Documentation

◆ fAssemblyHeight

double GenericReactorAssembly::fAssemblyHeight
protected

The total assembly height (including plenums)

◆ fAssemblyName

string GenericReactorAssembly::fAssemblyName
protected

name of the assembly for output

◆ fAssemblySide

double GenericReactorAssembly::fAssemblySide
protected

The assembly y-side for Brick case or side for Hexagon case.

◆ fAssemblyWidth

double GenericReactorAssembly::fAssemblyWidth
protected

The assembly x-side for Brick case or width between 2 opposite planes for Hexagon case.

◆ fAxialLevelHeight

double GenericReactorAssembly::fAxialLevelHeight
protected

The height of each axial level=(fAssemblyHeight-2*fPlenumThickness)/fAxialLevels.

◆ fAxialLevels

int GenericReactorAssembly::fAxialLevels
protected

The number of axial levels (number of differents cells in z direction)

◆ fBetweenPlenums

Shape_ptr GenericReactorAssembly::fBetweenPlenums
protected

space between plenum if fUniverse>0

◆ fBorderPin

PinCell* GenericReactorAssembly::fBorderPin
protected

special pin (surrounding material only) to fill assembly border

◆ fCanDefinePlenum

bool GenericReactorAssembly::fCanDefinePlenum
protected

Whether or not plenum can be defined.

◆ fCellDuct

Cell* GenericReactorAssembly::fCellDuct
protected

Cell of the Duct.

◆ fCPlenumDown

Cell* GenericReactorAssembly::fCPlenumDown
protected

Bottom Plenum cell.

◆ fCPlenumUp

Cell* GenericReactorAssembly::fCPlenumUp
protected

Top Plenum cell.

◆ fDuctMaterial

Material* GenericReactorAssembly::fDuctMaterial
protected

Material of the Duct.

◆ fDuctThickness

double GenericReactorAssembly::fDuctThickness
protected

Thickness of the Duct.

◆ fDxAssemblyTrans

double GenericReactorAssembly::fDxAssemblyTrans
protected

x assembly translation vector

◆ fDyAssemblyTrans

double GenericReactorAssembly::fDyAssemblyTrans
protected

y assembly translation vector

◆ fDzAssemblyTrans

double GenericReactorAssembly::fDzAssemblyTrans
protected

z assembly translation vector

◆ fFiles

vector< ofstream *> GenericReactorAssembly::fFiles
protected

Output files.

◆ fGasPressure

double GenericReactorAssembly::fGasPressure
protected

Cold fill gas pressure (Pa)

◆ fGasThickness

vector< double > GenericReactorAssembly::fGasThickness
protected

Thickness of the gas space.

◆ fHeFraMol

double GenericReactorAssembly::fHeFraMol
protected

Molar fraction of Helium in the gas.

◆ fHexaXplaneNormalVector

vector< double > GenericReactorAssembly::fHexaXplaneNormalVector
protected

Normal vector to the right plane of an hexagonal assembly.

◆ fIsAssemblyGeometryBuilt

bool GenericReactorAssembly::fIsAssemblyGeometryBuilt
protected

whether or not the assembly geometry has been built

◆ fIsAssemblyShapeDefined

bool GenericReactorAssembly::fIsAssemblyShapeDefined
protected

to allow or not the AddXXXpin methods

◆ fIsControlRods

bool GenericReactorAssembly::fIsControlRods
protected

whether ControlRod pins have been added

◆ fIsDuct

bool GenericReactorAssembly::fIsDuct
protected

true if a duct has been added

◆ fIsGasSpace

bool GenericReactorAssembly::fIsGasSpace
protected

Whether gas space is simulated between cladding and fuel pin.

◆ fIsGuideTubes

bool GenericReactorAssembly::fIsGuideTubes
protected

whether GuideTube pins have been added

◆ fIsHexagon

bool GenericReactorAssembly::fIsHexagon
protected

Whether the assembly shape is hexagonal or cuboid.

◆ fIsPlenum

bool GenericReactorAssembly::fIsPlenum
protected

True if lower and upper plenums are defined.

◆ fIsTranslated

bool GenericReactorAssembly::fIsTranslated
protected

whether or not an assembly has been tranlated

◆ fIXmax

int GenericReactorAssembly::fIXmax
protected

extremal value of the x lattice mesh

◆ fIXmin

int GenericReactorAssembly::fIXmin
protected

◆ fIYmax

int GenericReactorAssembly::fIYmax
protected

extremal value of the y lattice mesh

◆ fIYmin

int GenericReactorAssembly::fIYmin
protected

◆ fIZmax

int GenericReactorAssembly::fIZmax
protected

extremal value of the z lattice mesh

◆ fIZmin

int GenericReactorAssembly::fIZmin
protected

◆ fLowerPlenumMaterial

Material* GenericReactorAssembly::fLowerPlenumMaterial
protected

Lower Plenum material.

◆ fMeshLattice

vector< vector < vector < int > > > GenericReactorAssembly::fMeshLattice
protected

Complete Assembly mesh (x, y, z)

◆ fNumberOfControlRodsPerZone

vector< int > GenericReactorAssembly::fNumberOfControlRodsPerZone
protected

Number of fuel pins in each radial zone.

◆ fNumberOfCoolantPinsPerZone

vector< int > GenericReactorAssembly::fNumberOfCoolantPinsPerZone
protected

Number of fuel pins in each radial zone.

◆ fNumberOfFuelPinsPerZone

vector< int > GenericReactorAssembly::fNumberOfFuelPinsPerZone
protected

Number of fuel pins in each radial zone.

◆ fNumberOfGuideTubesPerZone

vector< int > GenericReactorAssembly::fNumberOfGuideTubesPerZone
protected

Number of fuel pins in each radial zone.

◆ fNx

int GenericReactorAssembly::fNx
protected

size of the x lattice mesh

◆ fNy

int GenericReactorAssembly::fNy
protected

size of the y lattice mesh

◆ fPinCellVector

vector< vector < vector < PinCell *> > > GenericReactorAssembly::fPinCellVector
protected

full pin vector per radial zone, axial level for each universe type [nr][nz][nu]

◆ fPitch

double GenericReactorAssembly::fPitch
protected

The pitch of channels.

◆ fPlenumThickness

double GenericReactorAssembly::fPlenumThickness
protected

Width of the plenum up and down.

◆ fPrimitiveCellXCenter

double GenericReactorAssembly::fPrimitiveCellXCenter
protected

X center of the primitive lattice cell of the mesh.

◆ fPrimitiveCellYCenter

double GenericReactorAssembly::fPrimitiveCellYCenter
protected

Y center of the primitive lattice cell of the mesh.

◆ fRadialMeshLattice

vector< vector < int > > GenericReactorAssembly::fRadialMeshLattice
protected

radial mesh (only for assembly definition, fNx x fNy)

◆ fRadialMeshZone

vector< vector < int > > GenericReactorAssembly::fRadialMeshZone
protected

radial zone mesh fNx*fNy : zone number of a mesh position (same for All Level) PTO ASK NICO*

◆ fRadialPinCell

vector< PinCell *> GenericReactorAssembly::fRadialPinCell
protected

pin for the radial mesh

◆ fRadialZones

int GenericReactorAssembly::fRadialZones
protected

The number of radial zones (number of differents cells in x, y direction)

◆ fSAssemblyDuct

Shape_ptr GenericReactorAssembly::fSAssemblyDuct
protected

Assembly Duct shape.

◆ fSAssemblyZone

Shape_ptr GenericReactorAssembly::fSAssemblyZone
protected

Assembly shape (could have holes in it)

◆ fSInnerShape

Shape_ptr GenericReactorAssembly::fSInnerShape
protected

Assembly inner shape (a small brick/hexa if plenum and/or Duct is defined)

◆ fSOuterShape

Shape_ptr GenericReactorAssembly::fSOuterShape
protected

Assembly shape (either a Brick or an Hexagon)

◆ fSPlenumDown

Shape_ptr GenericReactorAssembly::fSPlenumDown
protected

Bottom Plenum shape.

◆ fSPlenumUp

Shape_ptr GenericReactorAssembly::fSPlenumUp
protected

Top Plenum shape.

◆ fUniverse

int GenericReactorAssembly::fUniverse
protected

Assembly universe for filling core lattice.

◆ fUpperPlenumMaterial

Material* GenericReactorAssembly::fUpperPlenumMaterial
protected

Upper Plenum material.

◆ fVirtualRadiusCircle

vector< double > GenericReactorAssembly::fVirtualRadiusCircle
protected

virtual circle radius to define zones (0..fRadialZones)

◆ fVirtualRadiusZone

vector< int > GenericReactorAssembly::fVirtualRadiusZone
protected

associated zone to the previous vector (0..fRadialZones)

◆ fXeFraMol

double GenericReactorAssembly::fXeFraMol
protected

Molar fraction of Xenon in the gas.

◆ fXMeshCenter

double GenericReactorAssembly::fXMeshCenter
protected

◆ fYMeshCenter

double GenericReactorAssembly::fYMeshCenter
protected

◆ fZMeshCenter

double GenericReactorAssembly::fZMeshCenter
protected

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

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