Base class to define shapes. More...
#include <Shape.hxx>
Public Member Functions | |
Constructors | |
| Shape () | |
| Default constructor. The interior of a Shape is built. More... | |
| Shape (const Shape &s) | |
| Copy constructor. More... | |
| virtual | ~Shape () |
| Normal destructor. More... | |
Interior/exterior, infinity, problem boundary | |
| double | GetSigne () |
| Return -1 if the Shape exterior is considered, +1 otherwise. More... | |
| void | SetSigne (double s) |
| void | SetOutermostShape (bool flag=true) |
| Say that this Shape is the most outer one. More... | |
| bool | IsInfinite () |
| Return 1 if the Shape is an axially infinite one (??? why not resolve thru inheritance as same as shape type?) More... | |
Shape type recognition | |
| virtual unsigned | IsBrick () |
| 1 if Shape is a Brick More... | |
| virtual unsigned | IsCylinder () |
| 1 if Shape is a Cylinder More... | |
| virtual unsigned | IsFullVoid () |
| 1 if Shape is Full (whole space) or Void (empty set) More... | |
| virtual unsigned | IsHexagon () |
| 1 if Shape is a Hexagon More... | |
| virtual unsigned | IsNode () |
| 1 if Shape is a Node More... | |
| virtual unsigned | IsPlane () |
| 1 if Shape is a Plane More... | |
| virtual unsigned | IsSphere () |
| 1 if Shape is a Sphere More... | |
| virtual unsigned | IsTube () |
| 1 if Shape is a Tube More... | |
| virtual unsigned | IsFull () |
| 1 if Shape is Full (whole space) More... | |
| virtual unsigned | IsVoid () |
| 1 if Shape is Void (empty set) More... | |
Shape parameters | |
| virtual double | GetVolume () |
| Get the Volume of a Shape. More... | |
| virtual double | GetSurface () |
| Get the Surface of a Shape. More... | |
| void | SetVolume (double V) |
| Set the volume of a Shape to V. More... | |
| void | SetSurface (double S) |
| Set the surface of a Shape to S. More... | |
| virtual void | SetMirrorBoundary (bool state=true) |
| mirror a particle on the surface More... | |
| virtual void | SetTopBottomPlanesOpen () |
| The top/bottom planes are NOT mirrors. More... | |
| virtual bool | GetTopBottomPlanesOpen () |
| GetThe top/bottom planes are NOT mirrors. More... | |
| virtual void | SetSidePlanesOpen () |
| The side planes are NOT mirrors. More... | |
| virtual bool | GetSidePlanesOpen () |
| GetThe side planes are NOT mirrors. More... | |
| virtual void | SetWhiteBoundary (bool state=true) |
| mirror a particle on the surface with a cosine distribution More... | |
| virtual void | SetPeriodicBoundary (bool state=true, string TopBottPlaneBC="mirror") |
| Periodic boundary (WARNING: only for Brick and Hexagon). More... | |
| virtual bool | IsMirrorBoundary () |
| mirror a particle on the surface More... | |
| virtual bool | IsWhiteBoundary () |
| mirror a particle on the surface with a cosine distribution More... | |
| virtual bool | IsPeriodicBoundary () |
| Periodic boundary (only for Brick or Hexagon) More... | |
Shape transformations | |
| Shape_ptr | Not () |
| Return the complementary Shape (i.e. the other side) More... | |
| virtual void | Rotate (double phi, double theta=0, double psi=0, double *center=0, int count=0) |
| Rotate the Shape clockwise. More... | |
| virtual void | Translate (double dx, double dy, double dz, int count=0) |
| Translate the Shape of (dx,dy,dz). More... | |
| void | RotateVector (double *V, double phi, double theta=0, double psi=0) |
| Rotate a Vector clockwise. ??? why a shape member? More... | |
| void | RotatePoint (double *P, double phi, double theta=0, double psi=0, double *center=0) |
| Rotate a Point clockwise.??? why a shape member? More... | |
| virtual unsigned | Add (Shape_ptr OtherShape) |
| Add a new Shape (in fact a Shape_ptr) to a Node. More... | |
Relations with other shapes | |
| virtual unsigned | Inclus (Shape_ptr OtherShape) |
| return 1 if a shape is included in OtherShape. More... | |
| virtual unsigned | Disjoint (Shape_ptr OtherShape) |
| return 1 if a shape is disjointed in OtherShape. More... | |
Shape simplification methods | |
| virtual void | SetMouvement (bool state=true) |
| Set the fMouvement flag to state;. More... | |
| virtual void | UnSetMouvement () |
| Set the fMouvement flag to false;. More... | |
| bool | GetMouvement () |
| returns fMouvement flag; More... | |
| virtual void | Simplify (bool violent=false) |
| Simplify a tree of Node. More... | |
| virtual void | DevElague (int count=0, bool violent=false) |
| Developps and Trims a tree of Node. 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 () |
| Clear all Inside Shapes. More... | |
| void | ClearInsideShape () |
| Clear all Inside Shapes. More... | |
| unsigned | GetInsideShapeSize () |
| return the number of Shape put in this More... | |
| unsigned | GetOriginalInsideShapeSize () |
| return the number of Original Shape put in this More... | |
| void | SetInsideShape (int i, Shape_ptr S) |
| set the ith InsideShape put in to S More... | |
| void | SetOriginalInsideShape (int i, Shape_ptr S) |
| set the ith Original InsideShape put in to S More... | |
| Shape_ptr | GetInsideShape (int i) |
| return the ith InsideShape put in this More... | |
| Shape_ptr | GetOriginalInsideShape (int i) |
| return the ith Original InsideShape put in this More... | |
Miscellaneous methods | |
| virtual string | Print () |
| Print the Shape surface in MCNP cell. More... | |
| virtual string | PrintSurface () |
| Print the Shape surfaces in MCNP surface block. More... | |
| virtual Shape_ptr | Clone (int count=0) |
| Clone a Shape. More... | |
| void | SetClone (Shape_ptr clone) |
| Set the CloneShape to clone. More... | |
| void | SetClone2Not () |
| Set the CloneShape to a Not. More... | |
| 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) |
| returns the i-th leaf (Shape) of a Node More... | |
| virtual int | GetNumberOfLeaves () |
| returns the number of leaves (Shape) of a Node More... | |
| void | AddSurfaceNumber (int i) |
| Give the vector of Surface of the Shape. More... | |
| vector< int > | GetSurfaceNumber () |
| Give the vector of Surface of the Shape. More... | |
| virtual void | DefineSurface () |
| Define MCNP surfaces for this Shape. More... | |
| virtual void | AlreadyDefine (bool state=true) |
| Set a flag to know wheter a surface is already defined. More... | |
| virtual void | SetUniverse (int u=0) |
| Set the Universe number for a shape used in a lattice. More... | |
| virtual void | SetFill (int f) |
| Set the Universe number filling a Shape. More... | |
| int | GetUniverse () |
| return the Univers number if exists. More... | |
| int | GetFill () |
| return the Univers number that fills the Shape. More... | |
| void | IncrementSurface (double S) |
| Increment the surface of a Shape of S. More... | |
| virtual double | GetVirtualSphereRadius () |
| returns the radius of a Sphere containing the Shape More... | |
| virtual double * | GetVirtualSphereCenter () |
| returns the center of a Sphere containing the Shape More... | |
| virtual void | RemoveSurface () |
| 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 void | CalculNot () |
| Allocates and calculs the complement of a Shape. More... | |
| void | NewNot () |
| Update the Not. More... | |
| virtual bool | PointInShape (double *P, int border) |
| true if the point P is in the Shape. More... | |
| virtual void | SetLinkedPlane (Shape_ptr P) |
| linked plane for periodic boundary More... | |
| virtual void | ReplaceNode (Shape_ptr C) |
| Replace a Node by an other (C must be a Node) More... | |
| double | PS (double *U, double *V) |
| Scalar product of 3D vectors U and V. More... | |
| string | GetName () |
| returns the Shape name More... | |
| virtual int | NumberOfShapes () |
| returns the number of Shape More... | |
| void | SetZone (int z) |
| set test flag for complex geometries More... | |
| int | GetZone () |
| get test flag for complex geometries More... | |
Public Member Functions inherited from TReference | |
| TReference () | |
| Default constructor. Number of references is set to 0. More... | |
| virtual | ~TReference () |
| Destructor. More... | |
| void | AddReference (unsigned n=1) |
| Add n references to an object. More... | |
| unsigned | DelReference (unsigned n=1) |
| Remove n references to an object. More... | |
| unsigned | Reference () |
| returns the Number of references to an object More... | |
Protected Member Functions | |
| void | SetNot (Shape *Not) |
| Allocates and calculs the complement of Shape. More... | |
| void | SetNotofNot () |
| Give a Not to the Not. More... | |
| void | UpdateSurface (Surface *&S) |
| Add (if not exists) the surface S to MURE::fSurfaceVector. More... | |
Protected Attributes | |
| vector< int > | fSurfaceNumber |
| number(s) of Surface(s) defining the Shape More... | |
| vector< Shape_ptr > | fInsideShape |
| a vector to remember which Shapes are inside the current one.Clear at each ">>" More... | |
| vector< Shape_ptr > | fOriginalInsideShape |
| a vector to remember which Shapes are inside the current one. More... | |
| double | fSigne |
| 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... | |
| Shape * | fNot |
| pointer on complementary Shape if exists, else 0. More... | |
| bool | fAlreadyDefine |
| Flag to know whether a surface is already defined. 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 | fSurface |
| the Surface of a Shape; More... | |
| string | fName |
| 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 |
| wether 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 |
| wether or not mirror a particle on the surface with a cosine distribution More... | |
| bool | fPeriodicBoundary |
| wether or not Periodic boundary are applied (only for plane) More... | |
| string | fTopBottPlaneBoundaryCondition |
| wether 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 | fOutermostShape |
| wether or not this Shape is the limit to the exterior world (for calculating particle losses). More... | |
| int | fZone |
| flag for identifying complex geometries (test fms) More... | |
Base class to define shapes.
Simple Shapes are: Plane, Sphere, Cylinder and Brick. More complex Shapes may be built using Node or classes Tube and Hexagon.
Shape_ptr MyShape(new Sphere());
| Shape::Shape | ( | ) |
Default constructor. The interior of a Shape is built.
| Shape::Shape | ( | const Shape & | s | ) |
Copy constructor.
|
virtual |
Normal destructor.
|
inlinevirtual |
| unsigned Shape::AddInsideShape | ( | 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 >>
|
virtual |
Set a flag to know wheter a surface is already defined.
Reimplemented in Node.
|
inlinevirtual |
|
inline |
Clear all Inside Shapes.
|
inline |
Clear all Inside Shapes.
|
virtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inline |
return the Univers number that fills the Shape.
|
inline |
return the ith InsideShape put in this
|
inline |
return the number of Shape put in this
|
inlinevirtual |
|
inline |
returns fMouvement flag;
| string Shape::GetName | ( | ) |
returns the Shape name
|
inlinevirtual |
|
inline |
return the ith Original InsideShape put in this
|
inline |
return the number of Original Shape put in this
|
inlinevirtual |
GetThe side planes are NOT mirrors.
Reimplemented in Node.
|
inline |
Return -1 if the Shape exterior is considered, +1 otherwise.
|
inlinevirtual |
|
inlinevirtual |
GetThe top/bottom planes are NOT mirrors.
Reimplemented in Node.
|
inline |
return the Univers number if exists.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inline |
get test flag for complex geometries
|
inlinevirtual |
|
inline |
Increment the surface of a Shape of S.
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inline |
Return 1 if the Shape is an axially infinite one (??? why not resolve thru inheritance as same as shape type?)
|
inlinevirtual |
mirror a particle on the surface
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
mirror a particle on the surface with a cosine distribution
|
inline |
Update the Not.
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
|
inlinevirtual |
Print the Shape surfaces in MCNP surface block.
|
virtual |
Debug method: Print the shape surface when fMouvement=true.
Reimplemented in Node.
|
virtual |
Debug method: Print the shape surfaces, InsideShape,...
Reimplemented in Node.
| double Shape::PS | ( | double * | U, |
| double * | V | ||
| ) |
Scalar product of 3D vectors U and V.
|
virtual |
Reimplemented in Node.
|
inlinevirtual |
|
inlinevirtual |
| void Shape::RotatePoint | ( | double * | P, |
| double | phi, | ||
| double | theta = 0, |
||
| double | psi = 0, |
||
| double * | center = 0 |
||
| ) |
Rotate a Point clockwise.??? why a shape member?
| P | : 3D point |
| phi | : angle around z axis |
| theta | : angle around y axis |
| psi | : arround x axis |
| center | : the center of rotation (Default=origin) |
| void Shape::RotateVector | ( | double * | V, |
| double | phi, | ||
| double | theta = 0, |
||
| double | psi = 0 |
||
| ) |
Rotate a Vector clockwise. ??? why a shape member?
| V | : 3D vector |
| phi | : arround z axis |
| theta | : arround y axis |
| psi | : arround x axis |
|
inline |
Set the CloneShape to clone.
| void Shape::SetClone2Not | ( | ) |
Set the CloneShape to a Not.
|
inlinevirtual |
Set the Universe number filling a Shape.
|
inline |
set the ith InsideShape put in to S
|
inlinevirtual |
linked plane for periodic boundary
|
virtual |
mirror a particle on the surface
Reimplemented in Node.
|
inlinevirtual |
Set the fMouvement flag to state;.
|
inlineprotected |
Allocates and calculs the complement of Shape.
Must be overriden
|
inlineprotected |
Give a Not to the Not.
|
inline |
set the ith Original InsideShape put in to S
|
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).
|
virtual |
Periodic boundary (WARNING: only for Brick and Hexagon).
Please read carefully the MCNP user guide before using these conditions.
| state | : = true or false to allow periodic condition |
| TopBottPlaneBC | : The Top/Bottom planes of the Brick or Hexagon boundary conditions ; Possible values are |
| TopBottPlaneBC | : ="mirror" : The Top/Bottom planes are reflecting surfaces (Default) |
| TopBottPlaneBC | : ="white" : The Top/Bottom planes are white boundaries |
| TopBottPlaneBC | : ="infinite" : The Top/Bottom planes are infinite (not yet implemented) |
|
inlinevirtual |
|
inline |
Set the fSigne to s (-1 if the Shape exterior is considered, +1 otherwise)
|
inline |
Set the surface of a Shape to S.
|
inlinevirtual |
|
virtual |
|
inline |
Set the volume of a Shape to V.
|
virtual |
mirror a particle on the surface with a cosine distribution
Reimplemented in Node.
|
inline |
set test flag for complex geometries
|
inlinevirtual |
|
inlinevirtual |
|
virtual |
Set the fMouvement flag to false;.
Reimplemented in Node.
|
protected |
Add (if not exists) the surface S to MURE::fSurfaceVector.
This function store a new Surface in MURE::fSurfaceVector in order to write only once the same surface. If S has been already stored, S is deleted and set to the stored surface
|
protected |
Flag to know whether a surface is already defined.
|
protected |
Universe number that fill the Shape.
|
protected |
Determines whether the shape is infinite or not.
|
protected |
a vector to remember which Shapes are inside the current one.Clear at each ">>"
|
protected |
wether or not mirror a particle on the surface
|
protected |
Flag that indicate a Shape is in mouvement (translation,..) in a tree.
|
protected |
Name of a Shape.
|
protected |
whether the side planes are not mirrors (default=false)
|
protected |
whether the top/bottom planes are not mirrors (default=false)
|
protected |
a vector to remember which Shapes are inside the current one.
|
protected |
wether or not this Shape is the limit to the exterior world (for calculating particle losses).
|
protected |
wether or not Periodic boundary are applied (only for plane)
|
protected |
Define whether the interior (-1) or the exterior (+1) of the Shape is considered.
|
protected |
number(s) of Surface(s) defining the Shape
|
protected |
wether the top(bottom) plane of a periodic boundary Shape is white or mirror
|
protected |
Universe number (for lattice filling)
|
protected |
the Volume of a Shape;
|
protected |
wether or not mirror a particle on the surface with a cosine distribution
|
protected |
flag for identifying complex geometries (test fms)