MURE
|
MathNode allows to construct Union or Intersection of Shape. More...
#include <MathNode.hxx>
Public Member Functions | |
MathNode (int Sign=+1) | |
MathNode (const MathNode &n) | |
Copy constructor. | |
~MathNode () override | |
Normal destrutor. | |
Shape_ptr | Clone (int count=0) override |
Clone a Shape. | |
Node parameters | |
unsigned | IsNode () override |
unsigned | IsFullVoid () override |
unsigned | IsVoid () override |
unsigned | IsFull () override |
double | GetVolume () override |
return the Volume of a Node | |
Shape_ptr | GetLeaf (int i) override |
int | GetNumberOfLeaves () override |
unsigned | Add (Shape_ptr OtherShape) override |
Add a new Shape (in fact a Shape_ptr) to a Node. | |
void | ReplaceLeaf (int i, Shape_ptr OtherShape) override |
replace the ith leaf of a Node. | |
void | SetBoundingShape (Shape_ptr theShape) |
Declare a bounding shape. | |
Shape_ptr | GetBoundingShape () |
void | SetIncludedShape (Shape_ptr theShape) |
Declare an included shape. | |
Shape_ptr | GetIncludedShape () |
void | SetMirrorBoundary (bool state=true) override |
mirror a particle on the surface | |
void | SetWhiteBoundary (bool state=true) override |
mirror a particle on the surface with a cosine distribution | |
void | SetTopBottomPlanesOpen () override |
The top/bottom planes are NOT mirrors. | |
void | SetSidePlanesOpen () override |
The side planes are NOT mirrors. | |
Shape transformations | |
void | Translate (double dx, double dy, double dz, int count=0) override |
Translate the Node of (dx, dy, dz). | |
void | Rotate (double phi, double theta=0, double psi=0, double *center=nullptr, int count=0) override |
Rotate the Node clockwise. | |
Relations with other shapes | |
unsigned | IsIncluded (Shape_ptr OtherShape) override |
+1 this is included in OtherShape, 0 not included or don't know. | |
unsigned | IsDisjoint (Shape_ptr OtherShape) override |
+1 this is disjoint in OtherShape, 0 not included or don't know. | |
virtual unsigned | Contain (Shape_ptr OtherShape) |
+1 this contains the OtherShape, 0 not included or don't know. | |
Miscellaneous methods | |
void | SetUniverse (int u=0) override |
Set the Universe number for a shape used in a lattice. | |
double | GetVirtualSphereRadius () override |
returns the radius of a Sphere containing the Shape | |
double * | GetVirtualSphereCenter () override |
bool | PointInShape (double *P, int border) override |
true if the point P is in the Shape. | |
void | PrintX (int count=0) override |
Debug method: Print the shape surface when fMouvement=true. | |
void | PrintY (int count=0) override |
Debug method: Print the shape surfaces, InsideShape, ... | |
void | ReplaceNode (Shape_ptr C) override |
Replace a Node by an other (C must be a Node) | |
int | NumberOfShapes () override |
return the number of Shapes contains in a Node | |
void | CalculNot () override |
Allocates and calculs the complement of Shape. | |
void | Simplify (bool violent=false) override |
Simplify a tree of Node. | |
void | ResetIsDefinedSurfaceCalled () override |
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 | IsBrick () |
virtual unsigned | IsCylinder () |
virtual unsigned | IsHexagon () |
virtual unsigned | IsPlane () |
virtual unsigned | IsSphere () |
virtual unsigned | IsTube () |
virtual unsigned | IsZTorus () |
bool | IsInfinite () |
void | SetVolume (double V) |
virtual double | GetArea () |
Get the Area of a Shape. | |
void | SetArea (double S) |
virtual bool | IsTopBottomPlanesOpen () |
virtual bool | IsSidePlanesOpen () |
virtual void | SetPeriodicBoundary (bool state=true, string TopBottPlaneBC="mirror") |
Periodic boundary (WARNING: only for Brick and Hexagon). | |
virtual bool | IsMirrorBoundary () |
virtual bool | IsWhiteBoundary () |
virtual bool | IsPeriodicBoundary () |
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 void | Copy (Shape_ptr S) |
Copy all attributs of a Shape S (but not attributs of the father classes). | |
string | GetShapeName () |
returns the Shape name | |
void | SetDebugName (string str) |
string | GetDebugName () |
virtual void | SetFill (int f) |
int | GetFill () |
int | GetUniverse () |
void | IncrementSurface (double S) |
virtual string | Print () |
virtual void | SetLinkedPlane (Shape_ptr P) |
virtual SurfaceCard * | GetSurfaceCard () |
virtual SurfaceCard * | GetSurfaceCard (int i) |
virtual void | SetMouvement (bool state=true) |
bool | GetMouvement () |
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 () |
virtual int | GetMonoSurfaceType () |
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 () |
Node simplification methods | |
vector< Shape_ptr > | fShapeVector |
a vector of Shape_ptr of a Node | |
vector< Shape_ptr > | fDestroyShape |
a vector of destroyed Shape_ptr of a Node (for UnSetMouvement()) | |
Shape_ptr | fBoundingShape |
Shape containing the Node, 0 for none. | |
Shape_ptr | fIncludedShape |
Shape included in the Node, 0 for none. | |
bool | fTube |
true if the Node is a Tube | |
bool | fHexagon |
true if the Node is an Hexagon | |
int | fCount |
count flag to unset mvt | |
virtual void | ElagueRoot () |
Trims a tree with a Chain Saw. | |
void | DevElague (int count=0, bool violent=false) override |
Developps and Trims a tree of Node. | |
void | UnSetMouvement () override |
Set the fMouvement flag to false;. | |
virtual void | ClearVectorShape (int UMVT=0) |
Clear VectorShape. | |
MathNode * | CreateNewInstance (int sign=1) override |
a new MathNode instance. | |
void | RemoveSurface () override |
Removed unused surface from gMURE. | |
void | Remove (vector< Shape_ptr > ::iterator Iterator) |
remove a vector element | |
Additional Inherited Members | |
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 Shape | |
vector< Shape_ptr > | fInsideShape |
a vector to remember which Shapes are inside the current one.Clear at each ">>" | |
vector< Shape_ptr > | fOriginalInsideShape |
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. | |
Shape * | fNot |
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) | |
MathNode allows to construct Union or Intersection of Shape.
Thus MathNode is a tree of union (OR) or intersection (AND) of Shape. In a Node, fSign=+1 for OR and fSign=-1 for AND. A Node is said full (the whole space) when it is the intersection of nothing, whereas it is said void when it is the union of nothing (empty set). MathNodes are never directly called by the user ; he/she just used the croncrete class Node which is linked either to MCNP or to Serpent.
MathNode::MathNode | ( | int | Sign = + 1 | ) |
Normal constructor for a Node (default : OR).
Sign | : +1 for an Union (OR) and -1 for ans Intersection (AND) |
MathNode::MathNode | ( | const MathNode & | n | ) |
Copy constructor.
|
override |
Normal destrutor.
|
overridevirtual |
|
overridevirtual |
|
protectedvirtual |
Clear VectorShape.
|
overridevirtual |
|
virtual |
+1 this contains the OtherShape, 0 not included or don't know.
|
overrideprotectedvirtual |
a new MathNode instance.
Implements Shape.
Reimplemented in MathTube, MCNP::Node, MCNP::Tube, Serpent::Node, and Serpent::Tube.
|
overrideprotectedvirtual |
|
protectedvirtual |
Trims a tree with a Chain Saw.
Not recursive.
|
inline |
< return the BoundingShape if exist
|
inline |
< return the IncludedShape if exist
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
overridevirtual |
|
overridevirtual |
return the Volume of a Node
Reimplemented from Shape.
|
overridevirtual |
|
inlineoverridevirtual |
< 1 if the node is Full.
Reimplemented from Shape.
|
inlineoverridevirtual |
< 1 if the Node is void or full.
Reimplemented from Shape.
|
overridevirtual |
|
inlineoverridevirtual |
< +1 for a Node
Reimplemented from Shape.
|
inlineoverridevirtual |
< 1 if the node is void.
Reimplemented from Shape.
|
overridevirtual |
return the number of Shapes contains in a Node
Reimplemented from Shape.
|
overridevirtual |
|
overridevirtual |
Debug method: Print the shape surface when fMouvement=true.
Reimplemented from Shape.
|
overridevirtual |
Debug method: Print the shape surfaces, InsideShape, ...
Reimplemented from Shape.
|
protected |
remove a vector element
|
overrideprotectedvirtual |
Removed unused surface from gMURE.
Reimplemented from Shape.
|
overridevirtual |
replace the ith leaf of a Node.
Reimplemented from Shape.
|
overridevirtual |
Replace a Node by an other (C must be a Node)
Reimplemented from Shape.
|
overridevirtual |
Reimplemented from Shape.
|
overridevirtual |
Rotate the Node clockwise.
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 |
Implements Shape.
void MathNode::SetBoundingShape | ( | Shape_ptr | theShape | ) |
void MathNode::SetIncludedShape | ( | Shape_ptr | theShape | ) |
|
overridevirtual |
mirror a particle on the surface
Reimplemented from Shape.
|
overridevirtual |
|
overridevirtual |
|
overridevirtual |
Set the Universe number for a shape used in a lattice.
u | : universe number. if u<=0 (default) a universe number is automatically given. |
Reimplemented from Shape.
|
overridevirtual |
mirror a particle on the surface with a cosine distribution
Reimplemented from Shape.
|
overridevirtual |
Simplify a tree of Node.
Super simplification of the death which kills. Calls DevElague().
Reimplemented from Shape.
|
overridevirtual |
Translate the Node of (dx, dy, dz).
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 |
Implements Shape.
|
overrideprotectedvirtual |
Set the fMouvement flag to false;.
Reimplemented from Shape.
|
protected |
count flag to unset mvt
|
protected |
a vector of destroyed Shape_ptr of a Node (for UnSetMouvement())
|
protected |
true if the Node is an Hexagon
|
protected |
a vector of Shape_ptr of a Node
|
protected |
true if the Node is a Tube