MURE
Loading...
Searching...
No Matches
List of all members
Serpent::Brick Class Reference

A 3D rectangular parallepipede Shape. More...

#include <SerpentBrick.hxx>

Inheritance diagram for Serpent::Brick:
MathBrick Shape TReference

Public Member Functions

Constructors
 Brick (double HalfX=0.01, double HalfY=0.01, double HalfZ=0.01, int Sign=- 1)
 Build a Brick of size (2*HalfX, 2*HalfY, 2*HalfZ) at (0, 0, 0).
 
 Brick (double *Origin, double *Ux, double *Uy, double *Uz, double HalfX=0.01, double HalfY=0.01, double HalfZ=0.01, int Sign=- 1)
 Build a Box of size (2*HalfX, 2*HalfY, 2*HalfZ) centered at Origin, with Ux, Uy, Uz, normal vectors to its faces.
 
 Brick (const char *Infinite, double HalfX=0.01, double HalfY=0.01, int Sign=- 1)
 Build a Box of size (2*HalfX, 2*HalfY) and of infinite height at origin (0, 0, 0).
 
- Public Member Functions inherited from MathBrick
 MathBrick (double HalfX=0.01, double HalfY=0.01, double HalfZ=0.01, int Sign=- 1)
 Build a Brick of size (2*HalfX, 2*HalfY, 2*HalfZ) at origin (0, 0, 0).
 
 MathBrick (double *Origin, double *Ux, double *Uy, double *Uz, double HalfX=0.01, double HalfY=0.01, double HalfZ=0.01, int Sign=- 1)
 Build a Box of size (2*HalfX, 2*HalfY, 2*HalfZ) centered at Origin, with Ux, Uy, Uz, normal vectors to its faces.
 
 MathBrick (const char *Infinite, double HalfX=0.01, double HalfY=0.01, int Sign=- 1)
 Build a Box of size (2*HalfX, 2*HalfY) and of infinite height at origin (0, 0, 0).
 
Shape_ptr Clone (int count=0) override
 Clone a Shape.
 
void Copy (Shape_ptr B) override
 Copy all attributes of a Shape (but not attributes of the ancestor classes).
 
unsigned IsBrick () override
 
double GetHalfX ()
 
double GetHalfY ()
 
double GetHalfZ ()
 
vector< double > GetOrigin ()
 
vector< double > GetUx ()
 
vector< double > GetUy ()
 
vector< double > GetUz ()
 
void SetPeriodicBoundary (bool state=true, string TopBottPlaneBC="mirror") override
 Periodic boundary (WARNING: only for MathBrick and MathHexagon).
 
void Translate (double dx, double dy, double dz, int count=0) override
 Translate the Shape by (dx, dy, dz).
 
void Rotate (double phi, double theta=0, double psi=0, double *center=nullptr, int count=0) override
 Rotate the Shape clockwise.
 
unsigned IsIncluded (Shape_ptr OtherShape) override
 return 1 if the MathBrick is included in OtherShape otherwise 0
 
unsigned IsDisjoint (Shape_ptr OtherShape) override
 return 1 if the MathBrick is disjoint of OtherShape otherwise 0
 
bool PointInShape (double *P, int border) override
 True if the point P is in the Shape.
 
double MinDistanceFrom2OppositeFace (vector< double > N, int whichplane, double *S)
 
void CalculNot () override
 Allocates and calculs the complement of a brick.
 
int NumberOfShapes () override
 Number of shapes/surfaces this shape consists of.
 
- Public Member Functions inherited from Shape
 Shape ()
 Default constructor. The interior of a Shape is built.
 
 Shape (const Shape &s)
 Copy constructor.
 
 ~Shape () override
 Normal destructor.
 
Shape_ptr Not ()
 Return the complementary Shape (i.e. the other side)
 
void NewNot ()
 
void SetClone (Shape_ptr clone)
 
void SetClone2Not ()
 Set the CloneShape to a Not.
 
int GetSign ()
 
void SetSign (int s)
 
void SetOutermostShape (bool flag=true)
 Say that this Shape is the most outer one.
 
virtual unsigned IsCylinder ()
 
virtual unsigned IsFullVoid ()
 
virtual unsigned IsHexagon ()
 
virtual unsigned IsNode ()
 
virtual unsigned IsPlane ()
 
virtual unsigned IsSphere ()
 
virtual unsigned IsTube ()
 
virtual unsigned IsFull ()
 
virtual unsigned IsVoid ()
 
virtual unsigned IsZTorus ()
 
bool IsInfinite ()
 
virtual double GetVolume ()
 Get the Volume of a Shape.
 
void SetVolume (double V)
 
virtual double GetArea ()
 Get the Area of a Shape.
 
void SetArea (double S)
 
virtual void SetMirrorBoundary (bool state=true)
 mirror a particle on the surface
 
virtual void SetTopBottomPlanesOpen ()
 
virtual bool IsTopBottomPlanesOpen ()
 
virtual void SetSidePlanesOpen ()
 
virtual bool IsSidePlanesOpen ()
 
virtual void SetWhiteBoundary (bool state=true)
 
virtual bool IsMirrorBoundary ()
 
virtual bool IsWhiteBoundary ()
 
virtual bool IsPeriodicBoundary ()
 
virtual unsigned Add (Shape_ptr OtherShape)
 Add a new Shape (in fact a Shape_ptr) to a Node.
 
virtual void ReplaceLeaf (int i, Shape_ptr OtherShape)
 
unsigned AddInsideShape (Shape_ptr OtherShape)
 Add a Shape in fInsideShape each time a "put in" is done.
 
unsigned AddOriginalInsideShape (Shape_ptr OtherShape)
 This method is called by Shape::AddInsideShape.
 
void ClearOriginalInsideShape ()
 
void ClearInsideShape ()
 
unsigned GetInsideShapeSize ()
 
unsigned GetOriginalInsideShapeSize ()
 
void SetInsideShape (int i, Shape_ptr S)
 
void SetOriginalInsideShape (int i, Shape_ptr S)
 
Shape_ptr GetInsideShape (int i)
 
Shape_ptr GetOriginalInsideShape (int i)
 
virtual int GetNumberOfLeaves ()
 
string GetShapeName ()
 returns the Shape name
 
void SetDebugName (string str)
 
string GetDebugName ()
 
virtual void SetUniverse (int u=- 1)
 Set the Universe number for a Shape .
 
virtual void SetFill (int f)
 
int GetFill ()
 
int GetUniverse ()
 
void IncrementSurface (double S)
 
virtual void RemoveSurface ()
 
virtual void PrintX (int count=0)
 Debug method: Print the shape surface when fMouvement=true.
 
virtual void PrintY (int count=0)
 Debug method: Print the shape surfaces, InsideShape, ...
 
virtual void SetLinkedPlane (Shape_ptr P)
 
virtual void ReplaceNode (Shape_ptr C)
 Replace a Node by an other (C must be a Node)
 
virtual void ResetIsDefinedSurfaceCalled ()
 
virtual void Simplify (bool violent=false)
 Simplify a tree of Node.
 
virtual void SetMouvement (bool state=true)
 
virtual void UnSetMouvement ()
 Set the fMouvement flag to false;.
 
bool GetMouvement ()
 
virtual void DevElague (int count=0, bool violent=false)
 Developps and Trims a tree of Node.
 
void SetViolentSimplify (bool Allowed=true)
 Enable/disable violent simplification a certain shapes to avoid "union" (for Serpent outside)
 
void SetFreezeSimplify (bool flag=true)
 Enable/disable simplification a certain nodes to avoid "union" (for Serpent outside)
 
bool IsViolentSimplifyAllowed ()
 
void SetInfinite ()
 
- Public Member Functions inherited from TReference
 TReference ()
 
virtual ~TReference ()=default
 Destructor.
 
void AddReference (unsigned n=1)
 
unsigned DelReference (unsigned n=1)
 
unsigned Reference ()
 

Miscellaneous methods

SerpentSurfaceCardfLPx
 Left Px.
 
SerpentSurfaceCardfRPx
 Right Px.
 
SerpentSurfaceCardfLPy
 Left Px.
 
SerpentSurfaceCardfRPy
 Right Px.
 
SerpentSurfaceCardfBPz
 Bottom Px.
 
SerpentSurfaceCardfTPz
 Top Px.
 
bool fIsDefinedSurfaceCalled
 whether or not DefinedSurface has been called
 
string Print () override
 Print the Brick surface in a Serpent cell.
 
SerpentSurfaceCardGetSurfaceCard (int i) override
 return the surface card for one of the 6 planes
 
SerpentSurfaceCardGetSurfaceCard () override
 return the surface card for a Serpent cuboid
 
void DefineSurface (SerpentSurfaceCard *&S)
 return the right Serpent surface plane card depending on the normal vector to the plane
 
Shape_ptr GetLeaf (int i) override
 return one of the Plane (and not MathPlane) composing the Brick
 
BrickCreateNewInstance (int sign=1) override
 a new Brick instance of the good type.
 
int GetMonoSurfaceType () override
 return 0=general Brick, 1=infinit square brick, 2=unrotate 3D Brick (cuboid)
 
 Brick (double HalfX, double HalfY, double HalfZ, int Sign, bool Infinite)
 Private constructor needed to copy a MathBrick in methods.
 
void DefinePlane (vector< double > N, double D, SerpentSurfaceCard *&S)
 Print a Brick Plane choosing beetween P, PX, PY or PZ.
 
void DefinePlanes ()
 Define plane surface cards for Serpent.
 
void DefineSurface ()
 Define surface cards for Serpent.
 

Additional Inherited Members

- Protected Member Functions inherited from MathBrick
 MathBrick (double HalfX, double HalfY, double HalfZ, int Sign, bool Infinite)
 Private constructor needed to copy a MathBrick in methods.
 
MathBrickCreateNewInstance (int sign=1) override
 a new MathBrick instance.
 
void Init (double HalfX, double HalfY, double HalfZ)
 
unsigned CornerInBrick (MathBrick *brick, int all, int border)
 Return 1 if corner(s) of this shape are in a brick.
 
unsigned CornerInCylinder (MathCylinder *cyl, int all, int border)
 Return 1 if corner(s) of this shape are in a cylinder.
 
double Dist2Segment (MathCylinder *cyl, double Segment[6][2], double C0[6][2], int &segmentNum)
 
void FindBrickProjection (MathCylinder *cyl, double Segment[6][2], double C0[6][2], double Origin[2])
 
unsigned GeneralIntersectionOf2Brick (MathBrick *brick)
 return 1 if there is an intersection of the segment of this with the MathBrick brick
 
unsigned LineCrossPlane (double *X, vector< double > N, double *P, vector< double > U, double *D)
 
unsigned CylinderCrossBrick (MathCylinder *Cyl)
 
unsigned PointInSegment (double *X, double *A, double *B, int border)
 
unsigned TwoFaces3Segments (MathBrick *brick, vector< double > N, int whichSize, double *C0, double C1[3][3])
 
unsigned TwoFaces2Segments (MathBrick *brick, vector< double > N, int whichSize, double *C0, double C1[2][3])
 
double GetVirtualSphereRadius () override
 returns the radius of a Sphere containing the Shape
 
double * GetVirtualSphereCenter () override
 returns the center of a Sphere containing the Shape
 
double MinDist1Point2Face (vector< double > U0, vector< double > U1, vector< double > U2, double *P0, double *S, int whichplane)
 
double MinDist1Point2FaceInfinite (vector< double > U0, vector< double > U1, double *P0, double *S, int whichplane)
 
- Protected Member Functions inherited from Shape
virtual void MinimumCopy (Shape *S)
 Copy all attributs of a Shape S (but not attributs of the father classes).
 
void SetNot (Shape *aNot)
 Allocates and calculs the complement of Shape.
 
void SetNotofNot ()
 
- Protected Attributes inherited from MathBrick
double fHalfSize [3]
 Half sizes of the brick.
 
vector< double > fOrigin
 Origin of the brick.
 
vector< double > fUx
 Normal vector to the 2 X planes.
 
vector< double > fUy
 Normal vector to the 2 Y planes.
 
vector< double > fUz
 Normal vector to the 2 Z planes.
 
- Protected Attributes inherited from Shape
vector< Shape_ptrfInsideShape
 a vector to remember which Shapes are inside the current one.Clear at each ">>"
 
vector< Shape_ptrfOriginalInsideShape
 a vector to remember which Shapes are inside the current one.
 
int fSign
 Define whether the interior (-1) or the exterior (+1) of the Shape is considered.
 
bool fInfinite
 Determines whether the shape is infinite or not.
 
ShapefNot
 pointer on complementary Shape if exists, else 0.
 
bool fMouvement
 Flag that indicate a Shape is in mouvement (translation, ..) in a tree.
 
int fUniverse
 Universe number (for lattice filling)
 
int fFill
 Universe number that fill the Shape.
 
double fVolume
 the Volume of a Shape;
 
double fArea
 the area of a Shape;
 
string fShapeName
 Name of a Shape.
 
string fDebugName
 Debug Name of a Shape.
 
double fVirtualSphereR
 the radius of a Sphere containing the Shape
 
double * fVirtualSphereO
 the center of a Sphere containing the Shape
 
Shape_ptr fCloneShape
 the clone of a Shape
 
bool fMirrorBoundary
 whether or not mirror a particle on the surface
 
bool fOpenZPlanes
 whether the top/bottom planes are not mirrors (default=false)
 
bool fOpenXYPlanes
 whether the side planes are not mirrors (default=false)
 
bool fWhiteBoundary
 whether or not mirror a particle on the surface with a cosine distribution
 
bool fPeriodicBoundary
 whether or not Periodic boundary are applied (only for plane)
 
string fTopBottPlaneBoundaryCondition
 whether the top(bottom) plane of a periodic boundary Shape is white or mirror
 
Shape_ptr fLinkedPlane
 the Plane linked to an this for periodic boundary
 
bool fIsViolentSimplifyAllowed
 whether or not a "violent simplification is allowed (ie a Node or a Brick are allowed to be separated)
 
bool fOutermostShape
 whether or not this Shape is the limit to the exterior world (for calculating particle losses).
 
bool fFreezeSimplify
 disable any Node simplification (for serpent in ReactorAssembly)
 

Detailed Description

A 3D rectangular parallepipede Shape.

A Brick is the real implementation to use isntead of a MathBrick. It mainly redefine print method

Sign=-1 for Brick interior and Sign=+1 for its exterior.

Default: interior of a 0.01*0.01*0.01 cube, perpendicular to (x, y, z) basis and center at origin.

Author
J. Hajnrych
Version
1.0

Constructor & Destructor Documentation

◆ Brick() [1/4]

Serpent::Brick::Brick ( double  HalfX = 0.01,
double  HalfY = 0.01,
double  HalfZ = 0.01,
int  Sign = - 1 
)

Build a Brick of size (2*HalfX, 2*HalfY, 2*HalfZ) at (0, 0, 0).

Default: Cube center at origin of 0.01*0.01*0.01 = 1 cm3

Parameters
HalfX: half of X-dimension of the brick
HalfY: half of Y-dimension of the brick
HalfZ: half of Z-dimension of the brick
Sign: -1 (default) for interior and +1 for exterior

◆ Brick() [2/4]

Serpent::Brick::Brick ( double *  Origin,
double *  Ux,
double *  Uy,
double *  Uz,
double  HalfX = 0.01,
double  HalfY = 0.01,
double  HalfZ = 0.01,
int  Sign = - 1 
)

Build a Box of size (2*HalfX, 2*HalfY, 2*HalfZ) centered at Origin, with Ux, Uy, Uz, normal vectors to its faces.

Default: Cube of 0.01*0.01*0.01 = 1 cm3

Parameters
Origin: Center point of the brick (double[3])
Ux: normal vector of face normally perpendicular to x-axis (double[3])
Uy: normal vector of face normally perpendicular to y-axis (double[3])
Uz: normal vector of face normally perpendicular to z-axis (double[3])
HalfX: half of X-dimension of the brick
HalfY: half of Y-dimension of the brick
HalfZ: half of Z-dimension of the brick
Sign: -1 (default) for interior and +1 for exterior

◆ Brick() [3/4]

Serpent::Brick::Brick ( const char *  Infinite,
double  HalfX = 0.01,
double  HalfY = 0.01,
int  Sign = - 1 
)

Build a Box of size (2*HalfX, 2*HalfY) and of infinite height at origin (0, 0, 0).

Default: Cube center at origin of 0.01*0.01 = 1 cm2 rectangular basis

Parameters
Infinite: any string between "" (for resolution of overload)
HalfX: half of X-dimension of the brick
HalfY: half of Y-dimension of the brick
Sign: -1 (default) for interior and +1 for exterior

◆ Brick() [4/4]

Serpent::Brick::Brick ( double  HalfX,
double  HalfY,
double  HalfZ,
int  Sign,
bool  Infinite 
)
private

Private constructor needed to copy a MathBrick in methods.

Member Function Documentation

◆ CreateNewInstance()

Brick * Serpent::Brick::CreateNewInstance ( int  sign = 1)
overridevirtual

a new Brick instance of the good type.

Implements Shape.

◆ DefinePlane()

void Serpent::Brick::DefinePlane ( vector< double >  N,
double  D,
SerpentSurfaceCard *&  S 
)
private

Print a Brick Plane choosing beetween P, PX, PY or PZ.

◆ DefinePlanes()

void Serpent::Brick::DefinePlanes ( )
private

Define plane surface cards for Serpent.

◆ DefineSurface() [1/2]

void Serpent::Brick::DefineSurface ( )
private

Define surface cards for Serpent.

◆ DefineSurface() [2/2]

void Serpent::Brick::DefineSurface ( SerpentSurfaceCard *&  S)

return the right Serpent surface plane card depending on the normal vector to the plane

◆ GetLeaf()

Shape_ptr Serpent::Brick::GetLeaf ( int  i)
overridevirtual

return one of the Plane (and not MathPlane) composing the Brick

Reimplemented from Shape.

◆ GetMonoSurfaceType()

int Serpent::Brick::GetMonoSurfaceType ( )
overridevirtual

return 0=general Brick, 1=infinit square brick, 2=unrotate 3D Brick (cuboid)

Reimplemented from Shape.

◆ GetSurfaceCard() [1/2]

SerpentSurfaceCard * Serpent::Brick::GetSurfaceCard ( )
overridevirtual

return the surface card for a Serpent cuboid

Reimplemented from Shape.

◆ GetSurfaceCard() [2/2]

SerpentSurfaceCard * Serpent::Brick::GetSurfaceCard ( int  i)
overridevirtual

return the surface card for one of the 6 planes

Reimplemented from Shape.

◆ Print()

string Serpent::Brick::Print ( )
overridevirtual

Print the Brick surface in a Serpent cell.

Reimplemented from Shape.

Member Data Documentation

◆ fBPz

SerpentSurfaceCard* Serpent::Brick::fBPz
private

Bottom Px.

◆ fIsDefinedSurfaceCalled

bool Serpent::Brick::fIsDefinedSurfaceCalled
private

whether or not DefinedSurface has been called

◆ fLPx

SerpentSurfaceCard* Serpent::Brick::fLPx
private

Left Px.

◆ fLPy

SerpentSurfaceCard* Serpent::Brick::fLPy
private

Left Px.

◆ fRPx

SerpentSurfaceCard* Serpent::Brick::fRPx
private

Right Px.

◆ fRPy

SerpentSurfaceCard* Serpent::Brick::fRPy
private

Right Px.

◆ fTPz

SerpentSurfaceCard* Serpent::Brick::fTPz
private

Top Px.


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

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