MURE
List of all members
Shape Class Referenceabstract

Abstract class to define geometrical shapes. More...

#include <Shape.hxx>

Inheritance diagram for Shape:
TReference MathBrick MathCylinder MathNode MathPlane MathSphere MathZTorus MCNP::Brick Serpent::Brick MCNP::Cylinder Serpent::Cylinder MCNP::Node MathHexagon MathTube Serpent::Node MCNP::Plane Serpent::Plane MCNP::Sphere Serpent::Sphere MCNP::ZTorus Serpent::ZTorus

Public Member Functions

Constructors
 Shape ()
 Default constructor. The interior of a Shape is built. More...
 
 Shape (const Shape &s)
 Copy constructor. More...
 
 ~Shape () override
 Normal destructor. More...
 
virtual Shape_ptr Clone (int count=0)=0
 Clone a Shape. More...
 
Complementary of Shape (the "Not")
Shape_ptr Not ()
 Return the complementary Shape (i.e. the other side) More...
 
virtual void CalculNot ()
 Allocates and calculs the complement of a Shape. More...
 
void NewNot ()
 
void SetClone (Shape_ptr clone)
 
void SetClone2Not ()
 Set the CloneShape to a Not. More...
 
Interior/exterior, infinity, problem boundary
int GetSign ()
 
void SetSign (int s)
 
void SetOutermostShape (bool flag=true)
 Say that this Shape is the most outer one. More...
 
Shape type recognition
virtual unsigned IsBrick ()
 
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 ()
 
Shape parameters
virtual double GetVolume ()
 Get the Volume of a Shape. More...
 
void SetVolume (double V)
 
virtual double GetArea ()
 Get the Area of a Shape. More...
 
void SetArea (double S)
 
virtual void SetMirrorBoundary (bool state=true)
 mirror a particle on the surface More...
 
virtual void SetTopBottomPlanesOpen ()
 
virtual bool IsTopBottomPlanesOpen ()
 
virtual void SetSidePlanesOpen ()
 
virtual bool IsSidePlanesOpen ()
 
virtual void SetWhiteBoundary (bool state=true)
 
virtual void SetPeriodicBoundary (bool state=true, string TopBottPlaneBC="mirror")
 Periodic boundary (WARNING: only for Brick and Hexagon). More...
 
virtual bool IsMirrorBoundary ()
 
virtual bool IsWhiteBoundary ()
 
virtual bool IsPeriodicBoundary ()
 
Shape transformations
virtual void Rotate (double phi, double theta=0, double psi=0, double *center=nullptr, int count=0)=0
 Rotate the Shape clockwise. More...
 
virtual void Translate (double dx, double dy, double dz, int count=0)=0
 Translate the Shape of (dx, dy, dz). More...
 
virtual unsigned Add (Shape_ptr OtherShape)
 Add a new Shape (in fact a Shape_ptr) to a Node. More...
 
virtual void ReplaceLeaf (int i, Shape_ptr OtherShape)
 
Relations with other shapes
virtual unsigned IsIncluded (Shape_ptr OtherShape)=0
 return 1 if a shape is included in OtherShape. More...
 
virtual unsigned IsDisjoint (Shape_ptr OtherShape)=0
 return 1 if a shape is disjoint of OtherShape. More...
 
"Put in" operator (>>) related methods
unsigned AddInsideShape (Shape_ptr OtherShape)
 Add a Shape in fInsideShape each time a "put in" is done. More...
 
unsigned AddOriginalInsideShape (Shape_ptr OtherShape)
 This method is called by Shape::AddInsideShape. More...
 
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)
 
Miscellaneous methods
virtual void Copy (Shape_ptr S)
 Copy all attributs of a Shape S (but not attributs of the father classes). More...
 
virtual Shape_ptr GetLeaf (int i)
 
virtual int GetNumberOfLeaves ()
 
string GetShapeName ()
 returns the Shape name More...
 
virtual int NumberOfShapes ()
 
void SetDebugName (string str)
 
string GetDebugName ()
 
virtual void SetUniverse (int u=- 1)
 Set the Universe number for a Shape . More...
 
virtual void SetFill (int f)
 
int GetFill ()
 
int GetUniverse ()
 
void IncrementSurface (double S)
 
virtual double GetVirtualSphereRadius ()
 
virtual double * GetVirtualSphereCenter ()
 
virtual void RemoveSurface ()
 
virtual string Print ()
 
virtual void PrintX (int count=0)
 Debug method: Print the shape surface when fMouvement=true. More...
 
virtual void PrintY (int count=0)
 Debug method: Print the shape surfaces, InsideShape, ... More...
 
virtual bool PointInShape (double *P, int border)
 true if the point P is in the Shape. More...
 
virtual void SetLinkedPlane (Shape_ptr P)
 
virtual void ReplaceNode (Shape_ptr C)
 Replace a Node by an other (C must be a Node) More...
 
virtual SurfaceCardGetSurfaceCard ()
 
virtual SurfaceCardGetSurfaceCard (int i)
 
virtual void ResetIsDefinedSurfaceCalled ()
 
virtual void Simplify (bool violent=false)
 Simplify a tree of Node. More...
 
- Public Member Functions inherited from TReference
 TReference ()
 
virtual ~TReference ()=default
 Destructor. More...
 
void AddReference (unsigned n=1)
 
unsigned DelReference (unsigned n=1)
 
unsigned Reference ()
 

Shape simplification methods

vector< Shape_ptrfInsideShape
 a vector to remember which Shapes are inside the current one.Clear at each ">>" More...
 
vector< Shape_ptrfOriginalInsideShape
 a vector to remember which Shapes are inside the current one. More...
 
int fSign
 Define whether the interior (-1) or the exterior (+1) of the Shape is considered. More...
 
bool fInfinite
 Determines whether the shape is infinite or not. More...
 
ShapefNot
 pointer on complementary Shape if exists, else 0. More...
 
bool fMouvement
 Flag that indicate a Shape is in mouvement (translation, ..) in a tree. More...
 
int fUniverse
 Universe number (for lattice filling) More...
 
int fFill
 Universe number that fill the Shape. More...
 
double fVolume
 the Volume of a Shape; More...
 
double fArea
 the area of a Shape; More...
 
string fShapeName
 Name of a Shape. More...
 
string fDebugName
 Debug Name of a Shape. More...
 
double fVirtualSphereR
 the radius of a Sphere containing the Shape More...
 
double * fVirtualSphereO
 the center of a Sphere containing the Shape More...
 
Shape_ptr fCloneShape
 the clone of a Shape More...
 
bool fMirrorBoundary
 whether or not mirror a particle on the surface More...
 
bool fOpenZPlanes
 whether the top/bottom planes are not mirrors (default=false) More...
 
bool fOpenXYPlanes
 whether the side planes are not mirrors (default=false) More...
 
bool fWhiteBoundary
 whether or not mirror a particle on the surface with a cosine distribution More...
 
bool fPeriodicBoundary
 whether or not Periodic boundary are applied (only for plane) More...
 
string fTopBottPlaneBoundaryCondition
 whether the top(bottom) plane of a periodic boundary Shape is white or mirror More...
 
Shape_ptr fLinkedPlane
 the Plane linked to an this for periodic boundary More...
 
bool fIsViolentSimplifyAllowed
 whether or not a "violent simplification is allowed (ie a Node or a Brick are allowed to be separated) More...
 
bool fOutermostShape
 whether or not this Shape is the limit to the exterior world (for calculating particle losses). More...
 
bool fFreezeSimplify
 disable any Node simplification (for serpent in ReactorAssembly) More...
 
virtual void SetMouvement (bool state=true)
 
virtual void UnSetMouvement ()
 Set the fMouvement flag to false;. More...
 
bool GetMouvement ()
 
virtual void DevElague (int count=0, bool violent=false)
 Developps and Trims a tree of Node. More...
 
void SetViolentSimplify (bool Allowed=true)
 Enable/disable violent simplification a certain shapes to avoid "union" (for Serpent outside) More...
 
void SetFreezeSimplify (bool flag=true)
 Enable/disable simplification a certain nodes to avoid "union" (for Serpent outside) More...
 
bool IsViolentSimplifyAllowed ()
 
virtual int GetMonoSurfaceType ()
 
void SetInfinite ()
 
virtual void MinimumCopy (Shape *S)
 Copy all attributs of a Shape S (but not attributs of the father classes). More...
 
void SetNot (Shape *Not)
 Allocates and calculs the complement of Shape. More...
 
void SetNotofNot ()
 
virtual ShapeCreateNewInstance (int sign=1)=0
 Create a new Shape instance. More...
 
Shape_ptr operator& (Shape_ptr A, Shape_ptr B)
 Intersection of A and B. More...
 
Shape_ptr operator| (Shape_ptr A, Shape_ptr B)
 
Shape_ptroperator>> (Shape_ptr &B, Shape_ptr &A)
 

Detailed Description

Abstract class to define geometrical shapes.

Simple Shapes are: Plane, Sphere, Cylinder and Brick. More complex Shapes may be built using Node as for examples Tube and Hexagon. In fact mathematical Shapes are defined (e.g. MathSphere class) through "concrete" shape (such as Sphere class). The latter ones are only used for printing purpose in a given format (either MCNP or Serpent). Thus, user only declares these concrete shapes together with a given namespace (either MCNP or Serpent) via Shape_ptr.

Warning
The user may ONLY use CONCRETE Shapes via Shape_ptr:
Shape_ptr MyShape(new Sphere());
See also
MathSphere
MathCylinder
MathPlane
MathBrick
MathNode
MathTube
MathHexagon
Author
WEC
PTO
J. Hajnrych
Version
2.0

Constructor & Destructor Documentation

◆ Shape() [1/2]

Shape::Shape ( )

Default constructor. The interior of a Shape is built.

◆ Shape() [2/2]

Shape::Shape ( const Shape s)

Copy constructor.

◆ ~Shape()

Shape::~Shape ( )
override

Normal destructor.

Member Function Documentation

◆ Add()

virtual unsigned Shape::Add ( Shape_ptr  OtherShape)
inlinevirtual

Add a new Shape (in fact a Shape_ptr) to a Node.

Reimplemented in MathNode.

◆ AddInsideShape()

unsigned Shape::AddInsideShape ( Shape_ptr  OtherShape)

Add a Shape in fInsideShape each time a "put in" is done.

This is usefull to translate/rotate all the Shape that were put in by translating only this.

See also
the "put in" operator >>

◆ AddOriginalInsideShape()

unsigned Shape::AddOriginalInsideShape ( Shape_ptr  OtherShape)
inline

This method is called by Shape::AddInsideShape.

 Allows user to keep a trace of the InsideShape to feel the Cell.

@ see the "put in" operator >>

◆ CalculNot()

virtual void Shape::CalculNot ( )
inlinevirtual

Allocates and calculs the complement of a Shape.

Reimplemented in MathZTorus, MathTube, MathSphere, MathPlane, MathNode, MathHexagon, MathCylinder, and MathBrick.

◆ ClearInsideShape()

void Shape::ClearInsideShape ( )
inline

< Clear all Inside Shapes

◆ ClearOriginalInsideShape()

void Shape::ClearOriginalInsideShape ( )
inline

< Clear all Inside Shapes

◆ Clone()

virtual Shape_ptr Shape::Clone ( int  count = 0)
pure virtual

◆ Copy()

virtual void Shape::Copy ( Shape_ptr  S)
inlinevirtual

Copy all attributs of a Shape S (but not attributs of the father classes).

Reimplemented in MathZTorus, MathTube, MathSphere, MathHexagon, MathPlane, MathCylinder, and MathBrick.

◆ CreateNewInstance()

virtual Shape* Shape::CreateNewInstance ( int  sign = 1)
protectedpure virtual

◆ DevElague()

virtual void Shape::DevElague ( int  count = 0,
bool  violent = false 
)
inlinevirtual

Developps and Trims a tree of Node.

Must be overriden

Reimplemented in MathNode.

◆ GetArea()

virtual double Shape::GetArea ( )
inlinevirtual

Get the Area of a Shape.

Returns -1 when not able to calculate Area

◆ GetDebugName()

string Shape::GetDebugName ( )
inline

< return debug name

◆ GetFill()

int Shape::GetFill ( )
inline

< return the Univers number that fills the Shape.

◆ GetInsideShape()

Shape_ptr Shape::GetInsideShape ( int  i)
inline

< return the ith InsideShape put in this

◆ GetInsideShapeSize()

unsigned Shape::GetInsideShapeSize ( )
inline

< return the number of Shape put in this

◆ GetLeaf()

virtual Shape_ptr Shape::GetLeaf ( int  i)
inlinevirtual

< returns the i-th leaf (Shape) of a Node

Reimplemented in Serpent::Brick, MCNP::Brick, and MathNode.

◆ GetMonoSurfaceType()

virtual int Shape::GetMonoSurfaceType ( )
inlinevirtual

< return 0 for general Shape, or an number corresponding to a given Serpent single surface card shape

Reimplemented in Serpent::Tube, Serpent::Sphere, Serpent::Hexagon, and Serpent::Brick.

◆ GetMouvement()

bool Shape::GetMouvement ( )
inline

< returns fMouvement flag;

◆ GetNumberOfLeaves()

virtual int Shape::GetNumberOfLeaves ( )
inlinevirtual

< returns the number of leaves (Shape) of a Node

Reimplemented in MathNode.

◆ GetOriginalInsideShape()

Shape_ptr Shape::GetOriginalInsideShape ( int  i)
inline

< return the ith Original InsideShape put in this

◆ GetOriginalInsideShapeSize()

unsigned Shape::GetOriginalInsideShapeSize ( )
inline

< return the number of Original Shape put in this

◆ GetShapeName()

string Shape::GetShapeName ( )

returns the Shape name

◆ GetSign()

int Shape::GetSign ( )
inline

< Return -1 if the Shape exterior is considered, +1 otherwise

◆ GetSurfaceCard() [1/2]

virtual SurfaceCard* Shape::GetSurfaceCard ( )
inlinevirtual

◆ GetSurfaceCard() [2/2]

virtual SurfaceCard* Shape::GetSurfaceCard ( int  i)
inlinevirtual

Reimplemented in Serpent::Brick, and MCNP::Brick.

◆ GetUniverse()

int Shape::GetUniverse ( )
inline

< return the Univers number if exists.

◆ GetVirtualSphereCenter()

virtual double* Shape::GetVirtualSphereCenter ( )
inlinevirtual

< returns the center of a Sphere containing the Shape

Reimplemented in MathZTorus, MathTube, MathSphere, MathNode, MathHexagon, MathCylinder, and MathBrick.

◆ GetVirtualSphereRadius()

virtual double Shape::GetVirtualSphereRadius ( )
inlinevirtual

< returns the radius of a Sphere containing the Shape

Reimplemented in MathZTorus, MathTube, MathSphere, MathNode, MathHexagon, and MathBrick.

◆ GetVolume()

virtual double Shape::GetVolume ( )
inlinevirtual

Get the Volume of a Shape.

Returns -1 when not able to calculate volume

Reimplemented in MathNode.

◆ IncrementSurface()

void Shape::IncrementSurface ( double  S)
inline

< Increment the surface of a Shape of S

◆ IsBrick()

virtual unsigned Shape::IsBrick ( )
inlinevirtual

< 1 if Shape is a Brick

Reimplemented in MathBrick.

◆ IsCylinder()

virtual unsigned Shape::IsCylinder ( )
inlinevirtual

< 1 if Shape is a Cylinder

Reimplemented in MathCylinder.

◆ IsDisjoint()

virtual unsigned Shape::IsDisjoint ( Shape_ptr  OtherShape)
pure virtual

return 1 if a shape is disjoint of OtherShape.

+1 this is disjoint of OtherShape, 0 not included or don't know.

Implemented in MathZTorus, MathTube, MathSphere, MathPlane, MathNode, MathHexagon, MathCylinder, and MathBrick.

◆ IsFull()

virtual unsigned Shape::IsFull ( )
inlinevirtual

< 1 if Shape is Full (whole space)

Reimplemented in MathNode.

◆ IsFullVoid()

virtual unsigned Shape::IsFullVoid ( )
inlinevirtual

< 1 if Shape is Full (whole space) or Void (empty set)

Reimplemented in MathNode.

◆ IsHexagon()

virtual unsigned Shape::IsHexagon ( )
inlinevirtual

< 1 if Shape is a Hexagon

Reimplemented in MathHexagon.

◆ IsIncluded()

virtual unsigned Shape::IsIncluded ( Shape_ptr  OtherShape)
pure virtual

return 1 if a shape is included in OtherShape.

+1 this is included in OtherShape, 0 not included or don't know.

Implemented in MathZTorus, MathTube, MathSphere, MathPlane, MathNode, MathHexagon, MathCylinder, and MathBrick.

◆ IsInfinite()

bool Shape::IsInfinite ( )
inline

< Return 1 if the Shape is an axially infinite one

◆ IsMirrorBoundary()

virtual bool Shape::IsMirrorBoundary ( )
inlinevirtual

< mirror a particle on the surface

◆ IsNode()

virtual unsigned Shape::IsNode ( )
inlinevirtual

< 1 if Shape is a Node

Reimplemented in MathNode.

◆ IsPeriodicBoundary()

virtual bool Shape::IsPeriodicBoundary ( )
inlinevirtual

< Periodic boundary (only for Brick or Hexagon)

◆ IsPlane()

virtual unsigned Shape::IsPlane ( )
inlinevirtual

< 1 if Shape is a Plane

Reimplemented in MathPlane.

◆ IsSidePlanesOpen()

virtual bool Shape::IsSidePlanesOpen ( )
inlinevirtual

< GetThe side planes are NOT mirrors

◆ IsSphere()

virtual unsigned Shape::IsSphere ( )
inlinevirtual

< 1 if Shape is a Sphere

Reimplemented in MathSphere.

◆ IsTopBottomPlanesOpen()

virtual bool Shape::IsTopBottomPlanesOpen ( )
inlinevirtual

< GetThe top/bottom planes are NOT mirrors

◆ IsTube()

virtual unsigned Shape::IsTube ( )
inlinevirtual

< 1 if Shape is a Tube

Reimplemented in MathTube.

◆ IsViolentSimplifyAllowed()

bool Shape::IsViolentSimplifyAllowed ( )
inline

< whether or not violent simplification is allowed for 1 shape

◆ IsVoid()

virtual unsigned Shape::IsVoid ( )
inlinevirtual

< 1 if Shape is Void (empty set)

Reimplemented in MathNode.

◆ IsWhiteBoundary()

virtual bool Shape::IsWhiteBoundary ( )
inlinevirtual

< mirror a particle on the surface with a cosine distribution

◆ IsZTorus()

virtual unsigned Shape::IsZTorus ( )
inlinevirtual

< 1 if Shape is a ZTorus

Reimplemented in MathZTorus.

◆ MinimumCopy()

void Shape::MinimumCopy ( Shape S)
protectedvirtual

Copy all attributs of a Shape S (but not attributs of the father classes).

◆ NewNot()

void Shape::NewNot ( )
inline

< Update the Not

◆ Not()

Shape_ptr Shape::Not ( )

Return the complementary Shape (i.e. the other side)

◆ NumberOfShapes()

virtual int Shape::NumberOfShapes ( )
inlinevirtual

< returns the number of surface defining a Shape (<>1 for a Node and a Brick)

Reimplemented in MathNode, and MathBrick.

◆ PointInShape()

virtual bool Shape::PointInShape ( double *  P,
int  border 
)
inlinevirtual

true if the point P is in the Shape.

Parameters
P: a (x, y, z) point of space
border: =-1 : if P is at the Shape surface then P is inside or =+1 : if P is at the Shape surface then P is outside

Reimplemented in MathZTorus, MathSphere, MathPlane, MathNode, MathCylinder, and MathBrick.

◆ Print()

virtual string Shape::Print ( )
inlinevirtual

◆ PrintX()

void Shape::PrintX ( int  count = 0)
virtual

Debug method: Print the shape surface when fMouvement=true.

Reimplemented in MathNode.

◆ PrintY()

void Shape::PrintY ( int  count = 0)
virtual

Debug method: Print the shape surfaces, InsideShape, ...

Reimplemented in MathNode.

◆ RemoveSurface()

void Shape::RemoveSurface ( )
virtual

Reimplemented in MathNode.

◆ ReplaceLeaf()

virtual void Shape::ReplaceLeaf ( int  i,
Shape_ptr  OtherShape 
)
inlinevirtual

Reimplemented in MathNode.

◆ ReplaceNode()

virtual void Shape::ReplaceNode ( Shape_ptr  C)
inlinevirtual

Replace a Node by an other (C must be a Node)

Reimplemented in MathNode.

◆ ResetIsDefinedSurfaceCalled()

virtual void Shape::ResetIsDefinedSurfaceCalled ( )
inlinevirtual

Reimplemented in MCNP::Brick, and MathNode.

◆ Rotate()

virtual void Shape::Rotate ( double  phi,
double  theta = 0,
double  psi = 0,
double *  center = nullptr,
int  count = 0 
)
pure virtual

Rotate the Shape clockwise.

Parameters
phi: arround z axis
theta: arround y axis
psi: arround x axis
center: the center of rotation (Default=origin)
count: normal used is default (=0) ; usefull to know the recursion depth

Implemented in MathZTorus, MathSphere, MathPlane, MathNode, MathHexagon, MathCylinder, and MathBrick.

◆ SetArea()

void Shape::SetArea ( double  S)
inline

< Set the area of a Shape to S

◆ SetClone()

void Shape::SetClone ( Shape_ptr  clone)
inline

< Set the CloneShape to clone

◆ SetClone2Not()

void Shape::SetClone2Not ( )

Set the CloneShape to a Not.

◆ SetDebugName()

void Shape::SetDebugName ( string  str)
inline

< give a name to shape for debug

◆ SetFill()

virtual void Shape::SetFill ( int  f)
inlinevirtual

< Set the Universe number filling a Shape

◆ SetFreezeSimplify()

void Shape::SetFreezeSimplify ( bool  flag = true)
inline

Enable/disable simplification a certain nodes to avoid "union" (for Serpent outside)

◆ SetInfinite()

void Shape::SetInfinite ( )
inline

< say that a Brick or an Hexagon is infinite

◆ SetInsideShape()

void Shape::SetInsideShape ( int  i,
Shape_ptr  S 
)
inline

< set the ith InsideShape put in to S

◆ SetLinkedPlane()

virtual void Shape::SetLinkedPlane ( Shape_ptr  P)
inlinevirtual

< linked plane for periodic boundary

◆ SetMirrorBoundary()

void Shape::SetMirrorBoundary ( bool  state = true)
virtual

mirror a particle on the surface

Reimplemented in MathNode.

◆ SetMouvement()

virtual void Shape::SetMouvement ( bool  state = true)
inlinevirtual

< Set the fMouvement flag to state;

◆ SetNot()

void Shape::SetNot ( Shape Not)
inlineprotected

Allocates and calculs the complement of Shape.

Must be overriden

◆ SetNotofNot()

void Shape::SetNotofNot ( )
inlineprotected

< Give a Not to the Not

◆ SetOriginalInsideShape()

void Shape::SetOriginalInsideShape ( int  i,
Shape_ptr  S 
)
inline

< set the ith Original InsideShape put in to S

◆ SetOutermostShape()

void Shape::SetOutermostShape ( bool  flag = true)
inline

Say that this Shape is the most outer one.

The most outer shape has to be defined when using for example poison control ; indeed, a keff evaluation is done using formula keff=(creation)/(absorption+leakage). The leakage are evaluated using F2 tally on the most outer shape of the geometry (i.e. the whole exterior).

◆ SetPeriodicBoundary()

virtual void Shape::SetPeriodicBoundary ( bool  state = true,
string  TopBottPlaneBC = "mirror" 
)
inlinevirtual

Periodic boundary (WARNING: only for Brick and Hexagon).

Please read carefully the MCNP user guide before using these conditions.

Parameters
state: = true or false to allow periodic condition
TopBottPlaneBC: The Top/Bottom planes of the Brick or Hexagon boundary conditions ; Possible values are
: ="mirror" : The Top/Bottom planes are reflecting surfaces (Default)
: ="white" : The Top/Bottom planes are white boundaries
: ="infinite" : The Top/Bottom planes are infinite (not yet implemented)

Reimplemented in MathHexagon, and MathBrick.

◆ SetSidePlanesOpen()

virtual void Shape::SetSidePlanesOpen ( )
inlinevirtual

< The side planes are NOT mirrors

Reimplemented in MathTube, MathNode, and MathHexagon.

◆ SetSign()

void Shape::SetSign ( int  s)
inline

< Set the fSigne to s (-1 if the Shape exterior is considered, +1 otherwise)

◆ SetTopBottomPlanesOpen()

virtual void Shape::SetTopBottomPlanesOpen ( )
inlinevirtual

< The top/bottom planes are NOT mirrors

Reimplemented in MathTube, MathNode, and MathHexagon.

◆ SetUniverse()

void Shape::SetUniverse ( int  u = - 1)
virtual

Set the Universe number for a Shape .

Overriden in Node

Parameters
u: universe number. if u<0 (default) a universe number is automatically given.

Reimplemented in MathNode.

◆ SetViolentSimplify()

void Shape::SetViolentSimplify ( bool  Allowed = true)

Enable/disable violent simplification a certain shapes to avoid "union" (for Serpent outside)

◆ SetVolume()

void Shape::SetVolume ( double  V)
inline

< Set the volume of a Shape to V

◆ SetWhiteBoundary()

virtual void Shape::SetWhiteBoundary ( bool  state = true)
inlinevirtual

< mirror a particle on the surface with a cosine distribution

Reimplemented in MathNode.

◆ Simplify()

virtual void Shape::Simplify ( bool  violent = false)
inlinevirtual

Simplify a tree of Node.

Must be overriden. The violent mode mean that Node such as Tube or Hexagon or Brick can be "separated" in individual surfaces to eventually be simplified.

Reimplemented in MathNode.

◆ Translate()

virtual void Shape::Translate ( double  dx,
double  dy,
double  dz,
int  count = 0 
)
pure virtual

Translate the Shape of (dx, dy, dz).

Parameters
dx: translation along x-axis
dy: translation along y-axis
dz: translation along z-axis
count: normal used is default (=0) ; usefull to know the recursion depth

Implemented in MathZTorus, MathSphere, MathPlane, MathNode, MathHexagon, MathCylinder, and MathBrick.

◆ UnSetMouvement()

void Shape::UnSetMouvement ( )
virtual

Set the fMouvement flag to false;.

Reimplemented in MathNode.

Friends And Related Function Documentation

◆ operator&

Shape_ptr operator& ( Shape_ptr  A,
Shape_ptr  B 
)
friend

Intersection of A and B.

Intersection of A and B. Syntax: A &B

◆ operator>>

Shape_ptr& operator>> ( Shape_ptr B,
Shape_ptr A 
)
friend
 Put the Shape(_ptr) B in A.
    //@ Syntax:  B>>A.
    //@ Returns A to allow C>>B>>A;
    //@ Note:
    //@   The Translate/Rotate function will be applied on Inside Shape:
    //@   A->Translate(1, 1, 1);  will translate A, B and C.
    //@
    //@   When doing C>>B>>A, IsnsideShape of A is C and B; idem for Original InsideShape
    //@  (fInsideShape[0]=C, fInsideShape[1]=B).
    //@  if then A>>D; Original IsnsideShape of A are C and B, IsnsideShape of A have been cleared
    //@  and IsnsideShape of D are C, B and A.
    //

◆ operator|

Shape_ptr operator| ( Shape_ptr  A,
Shape_ptr  B 
)
friend

Union of A and B. Syntax: A | B

Member Data Documentation

◆ fArea

double Shape::fArea
protected

the area of a Shape;

◆ fCloneShape

Shape_ptr Shape::fCloneShape
protected

the clone of a Shape

◆ fDebugName

string Shape::fDebugName
protected

Debug Name of a Shape.

◆ fFill

int Shape::fFill
protected

Universe number that fill the Shape.

◆ fFreezeSimplify

bool Shape::fFreezeSimplify
protected

disable any Node simplification (for serpent in ReactorAssembly)

◆ fInfinite

bool Shape::fInfinite
protected

Determines whether the shape is infinite or not.

◆ fInsideShape

vector< Shape_ptr > Shape::fInsideShape
protected

a vector to remember which Shapes are inside the current one.Clear at each ">>"

◆ fIsViolentSimplifyAllowed

bool Shape::fIsViolentSimplifyAllowed
protected

whether or not a "violent simplification is allowed (ie a Node or a Brick are allowed to be separated)

◆ fLinkedPlane

Shape_ptr Shape::fLinkedPlane
protected

the Plane linked to an this for periodic boundary

◆ fMirrorBoundary

bool Shape::fMirrorBoundary
protected

whether or not mirror a particle on the surface

◆ fMouvement

bool Shape::fMouvement
protected

Flag that indicate a Shape is in mouvement (translation, ..) in a tree.

◆ fNot

Shape* Shape::fNot
protected

pointer on complementary Shape if exists, else 0.

◆ fOpenXYPlanes

bool Shape::fOpenXYPlanes
protected

whether the side planes are not mirrors (default=false)

◆ fOpenZPlanes

bool Shape::fOpenZPlanes
protected

whether the top/bottom planes are not mirrors (default=false)

◆ fOriginalInsideShape

vector< Shape_ptr > Shape::fOriginalInsideShape
protected

a vector to remember which Shapes are inside the current one.

◆ fOutermostShape

bool Shape::fOutermostShape
protected

whether or not this Shape is the limit to the exterior world (for calculating particle losses).

◆ fPeriodicBoundary

bool Shape::fPeriodicBoundary
protected

whether or not Periodic boundary are applied (only for plane)

◆ fShapeName

string Shape::fShapeName
protected

Name of a Shape.

◆ fSign

int Shape::fSign
protected

Define whether the interior (-1) or the exterior (+1) of the Shape is considered.

◆ fTopBottPlaneBoundaryCondition

string Shape::fTopBottPlaneBoundaryCondition
protected

whether the top(bottom) plane of a periodic boundary Shape is white or mirror

◆ fUniverse

int Shape::fUniverse
protected

Universe number (for lattice filling)

◆ fVirtualSphereO

double* Shape::fVirtualSphereO
protected

the center of a Sphere containing the Shape

◆ fVirtualSphereR

double Shape::fVirtualSphereR
protected

the radius of a Sphere containing the Shape

◆ fVolume

double Shape::fVolume
protected

the Volume of a Shape;

◆ fWhiteBoundary

bool Shape::fWhiteBoundary
protected

whether or not mirror a particle on the surface with a cosine distribution


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

MURE Project, documentation generated by Doxygen 1.9.1 - Mon Jan 3 2022