C++ main module for emicrom Package  1.0
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
EMM_Grid3D Class Reference

This class describes a grid3d mesh. More...

#include <EMM_Grid3D.h>

Inheritance diagram for EMM_Grid3D:
Inheritance graph
[legend]
Collaboration diagram for EMM_Grid3D:
Collaboration graph
[legend]

Public Member Functions

void updateMagnetizedElementsNumber ()
 compute the magnetized elements number form neighbors array the number of magnetized elements is returned by the method getMagnetizedElementsNumber() More...
 
void setSegmentsNumber (const tUInteger &nx, const tUInteger &ny, const tUInteger &nz)
 set the segments number in all directions More...
 
void getSegmentsNumber (tUInteger &nx, tUInteger &ny, tUInteger &nz) const
 get the segments number in all directions More...
 
const tUIntegergetSegmentsNumber () const
 get the segments number in all directions More...
 
const tUIntegergetSegmentsNumber (const tUSInt &d) const
 get the segments number in direction d More...
 
tUIndex getElementIndex (const tUIndex &i, const tUIndex &j, const tUIndex &k) const
 return the element index of the element located at (i,j,k) coordinates on segments number More...
 
void getElementSegmentIndices (const tUIndex &index, tUIndex &i, tUIndex &j, tUIndex &k) const
 return the element coordinates on segments number More...
 
tUIndex getElementSegmentIndex (const tUIndex &index, const tUSInt &d) const
 return the element coordinates on segment number on d direction More...
 
tUIndex getElementsNumber () const
 get the elements number of the grid More...
 
tUIndex getVerticesNumber () const
 get the vertices number of the grid More...
 
void setStepsSize (const tReal &lx, const tReal &ly, const tReal &lz)
 set the step size in the direction x,y,z : length of segment in each direction More...
 
void setStepSize (const tReal &l)
 set the step size in the direction x,y,z when it's the same for the 3 directions More...
 
const tRealgetStepsSize () const
 get the step size in all directions More...
 
const tRealgetStepSize (const tUSInt &d) const
 get the step size in the direction d More...
 
tReal getMinStepSize () const
 get the min step size More...
 
tReal getMaxStepSize () const
 get the max step size More...
 
const tRealgetAdimensionizedSegmentsSize () const
 return the adimensionized segments size More...
 
const tRealgetReferenceLength () const
 get the reference length More...
 
const tRealgetMaxElementSize () const
 get the max length of the cell More...
 
const tRealgetMinElementSize () const
 get the min length of the cell More...
 
const tRealgetSegmentsSize () const
 return the segments size More...
 
tBoolean isCubicVolume () const
 return true if the element is cubic More...
 
tReal adimensionize ()
 compute the adimensionized constants More...
 
const tRealgetAdimensionizedVolume () const
 get the adimensionized element volume <=1 More...
 
void computeNormalFaceAdimensionizedLength (tReal *L2) const
 build the adimensionized length for each face in its normal direction More...
 
void setIsPeriodic (const tBoolean v[3])
 set if the mesh is periodic on all directions More...
 
void setIsDirectionPeriodic (const tUSInt &k, const tBoolean &v)
 set if the mesh is periodic on all directions More...
 
const tBooleanisDirectionPeriodic () const
 get if the mesh is periodic More...
 
const tBooleanisDirectionPeriodic (const tFlag &d) const
 get if the mesh is periodic on direction d More...
 
const tBooleanisPeriodic () const
 get if the mesh is periodic in one direction More...
 
tCellFlag getPeriodicIndicator () const
 get the periodic indicator by face $ B=\sum_{f=0}^{f=5} b_f $ with $ b_f=1 $ if face f is periodic More...
 
const tUIndexgetMagnetizedElementsNumber () const
 get the number of magnetized elements More...
 
tBoolean isElementMagnetized (const tUIndex &index) const
 
tBoolean isInMagnetizedDomainInterior (const tUIndex &index) const
 
void buildMagnetizedElements (const EMM_MatterField &matters, CORE_BooleanMorseArray &magnetizedElements) const
 build the magnetized element morse array More...
 
tBoolean hasNeighborToFace (const tUIndex &iElement, const tUSInt &iFace) const
 return true if the element at index iElement have a magnetized neighbor with common face iFace in [0,FACES_NUMBEr_PER_ELEMENT[ false otherwise More...
 
tUIndex getNeighborElement (const tUIndex &index, const tUCInt &iFace) const
 return the index of the element which is next to the element iElement with iFace in common More...
 
tUIndex getNeighborElement (const tUIndex &iCell, const tCellFlag &N, const tBoolean isPeriodic[3], const tUCInt &f) const
 return the index of the element which is next to the element iElement with iFace in common More...
 
SPC::EMM_CellFlagArray getNeighborsIndicatorsByReference () const
 get the neighbor elements for reading More...
 
const EMM_CellFlagArraygetNeighborsIndicators () const
 get the neighbors indicator for each element for reading More...
 
EMM_CellFlagArraygetNeighborsIndicators ()
 get the neighbor elements for writing More...
 
const tCellFlaggetNeighborIndicator (const tUIndex &index) const
 get the neighbor indicator of the element at index More...
 
void buildNeighborsIndices (const EMM_MatterField &matters, CORE_UIndexMorseArray &neighbors) const
 build the neighbors index: for each element i build all the (magnetized or not) neighbors of element i More...
 
void buildMagnetizedNeighborsIndices (const EMM_MatterField &matters, CORE_UIndexMorseArray &neighbors) const
 build the neighbors : for each element i build all the magnetized neighbors of element i More...
 
void updateLimitConditionOnPoints (EMM_LimitConditionArray &lc) const
 update the limit condition of each point. More...
 
tBoolean loadFromFile (const tString &fileName)
 load from a file More...
 
tBoolean saveToFile (const tString &fileName) const
 save to a file More...
 
virtual tString toString () const
 turn the mesh into string More...
 
void getSharedPointer (SP::CORE_Object &p)
 get the shared pointer of this class into p More...
 
void getSharedPointer (SPC::CORE_Object &p) const
 get the shared pointer of this class into p More...
 
tString getClassName () const
 return the class name of the object More...
 
tString getIdentityString () const
 return the identity string of the object of the form className_at_address More...
 
tString getPointerAddress () const
 return the identity string of the object More...
 
template<class T >
tBoolean isInstanceOf () const
 test if the clas T is an instance of this class More...
 
tBoolean isInstanceOf (const tString &name) const
 test if the object is an instance of className More...
 

Static Public Member Functions

static SP::EMM_Grid3D New ()
 create a Grid3D object More...
 
static tCellFlag getPeriodicIndicator (const tBoolean periodicity[])
 get the periodic indicator by face $ B=\sum_{f=0}^{f=5} b_f $ with $ b_f=1 $ if face f is periodic More...
 
static tBoolean IS_ELEMENT_MAGNETIZED (const tCellFlag &v)
 test if the element woth neighbor indicator v is magnetized More...
 
static tBoolean isFaceOnDirichletBoundary (const tCellFlag &periodicity, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUInteger &nPx, const tUInteger &nPy, const tUInteger &nPz, const tLimitCondition *dirichletPoints)
 return tue if the face f of the magnetized cell (xCell,yCell,zCell) is on Dirichlet boundary More...
 
static tBoolean isFaceOnNeumannBoundary (const tCellFlag &periodicity, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUInteger &nPx, const tUInteger &nPy, const tUInteger &nPz, const tLimitCondition *dirichletPoints)
 return tue if the face f of the magnetized cell (xCell,yCell,zCell) is on Neumann boundary More...
 
static tBoolean GET_MASTER_PERIODIC_POINT (const tCellFlag &periodicity, const tUIndex &Nx, const tUIndex &Ny, const tUIndex &Nz, tUIndex &iQ, tUIndex &jQ, tUIndex &kQ)
 get the index of master point in [0,pointsNumber[. The master point is the point in pair face in the periodical direction k corresponding to the point in face unpair in the periodical direction k. More...
 
static tBoolean IS_POINT_IN_BOUNDARY (const tBoolean x[], const tCellFlag &N, const tBoolean periodicity[])
 test if the local point is in magnetized boundary. More...
 
static tBoolean IS_POINT_IN_BOUNDARY (const tCellFlag &X, const tCellFlag &N, const tCellFlag &P)
 test if the local point is in magnetized boundary More...
 
static tBoolean IS_POINT_IN_PERIODIC_BOUNDARY (const tBoolean x[], const tCellFlag &N, const tBoolean periodicity[])
 test if the local point is in a periodical boundary More...
 
static tBoolean IS_POINT_IN_PERIODIC_BOUNDARY (const tCellFlag &X, const tCellFlag &N, const tCellFlag &P)
 test if the local point is in periodical boundary More...
 
static tBoolean IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY (const tBoolean x[], const tCellFlag &N, const tBoolean periodicity[])
 test if the local point is in slave periodical boundary More...
 
static tBoolean IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY (const tCellFlag &X, const tCellFlag &N, const tCellFlag &P)
 test if the local point is in slave periodical boundary More...
 
static void setIsMemoryChecked (const tBoolean &v)
 set if the memory checking is used More...
 
static void setOut (SP::CORE_Out out)
 set the output stream More...
 
static void resetOut ()
 reset the output stream More...
 
static void setThread (SP::CORE_Thread thread)
 set the thread More...
 
static void resetThread ()
 reset the output stream More...
 
static CORE_Outout ()
 get the output More...
 
static SP::CORE_Out getOut ()
 get the output More...
 
static CORE_ThreadgetThread ()
 get the profilier More...
 
static const tBooleanisMemoryChecked ()
 get if the memory checking is used More...
 
static tString getClassName (const tString &identityString)
 return the class name of the object More...
 
template<class T >
static tString getTypeName ()
 get type name More...
 
static tBoolean is64Architecture ()
 return true if the machine is a 64 bits machine More...
 
static tBoolean is32Architecture ()
 return true if the machine is a 32 bits machine More...
 
static tString pointer2String (const void *obj)
 return the string representation of a pointer More...
 
static void printObjectsInMemory (ostream &f)
 print object in memory More...
 
static void printObjectsInMemory ()
 print object in memory in the standart output More...
 
static tChar getMaxChar ()
 get the max value for tChar type More...
 
static tChar getMinChar ()
 get the min value for tChar type More...
 
static tUChar getMaxUChar ()
 get the max value for tUChar type More...
 
static tUChar getMinUChar ()
 get the min value for tUChar type More...
 
static tSInt getMaxSInt ()
 get the max value for tSInt type More...
 
static tSInt getMinSInt ()
 get the min value for tSInt type More...
 
static tUSInt getMaxUSInt ()
 get the max value for tUSInt type More...
 
static tUSInt getMinUSInt ()
 get the min value for tUSInt type More...
 
static tInt getMaxInt ()
 get the max value for tInt type More...
 
static tInt getMinInt ()
 get the min value for tInt type More...
 
static tUInt getMaxUInt ()
 get the max value for tUInt type More...
 
static tUInt getMinUInt ()
 get the min value for tUInt type More...
 
static tLInt getMaxLInt ()
 get the max value for tLInt type More...
 
static tLInt getMinLInt ()
 get the min value for tLInt type More...
 
static tULInt getMaxULInt ()
 get the max value for tULInt type More...
 
static tULInt getMinULInt ()
 get the min value for tULInt type More...
 
static tLLInt getMaxLLInt ()
 get the max value for tULInt type More...
 
static tLLInt getMinLLInt ()
 get the min value for tLLInt type More...
 
static tULLInt getMaxULLInt ()
 get the max value for tULLInt type More...
 
static tULLInt getMinULLInt ()
 get the min value for tULLInt type More...
 
static tFloat getMaxFloat ()
 get the max value for tFloat type More...
 
static tFloat getMinFloat ()
 get the min value for tFloat type More...
 
template<class T >
static T getEpsilon ()
 get the epsilon value for T type More...
 
template<class T >
static T getInfinity ()
 get the infinity for T type More...
 
static tFloat getFloatEpsilon ()
 get the epsilon value for tFloat type More...
 
static tFloat getFloatInfinity ()
 get the infinity value for tFloat type More...
 
static tDouble getMaxDouble ()
 get the max value for tDouble type More...
 
static tDouble getMinDouble ()
 get the min value for tDouble type More...
 
static tDouble getDoubleInfinity ()
 get the infinity value for tFloat type More...
 
static tDouble getDoubleEpsilon ()
 get the epsilon value for tDouble type More...
 
static tLDouble getMinLDouble ()
 get the min value for tLDouble type More...
 
static tLDouble getMaxLDouble ()
 get the max value for tLDouble type More...
 
static tLDouble getLDoubleEpsilon ()
 get the epsilon value for tLDouble type More...
 
static tDouble getLDoubleInfinity ()
 get the infinity value for tDouble type More...
 
static tIndex getMaxIndex ()
 get the max value for the array/vector indexing type More...
 
static tIndex getMinIndex ()
 get the min value for the array/vector indexing type More...
 
static tUIndex getMaxUIndex ()
 get the max value for difference the array/vector indexing type More...
 
static tUIndex getMinUIndex ()
 get the min value for difference the array/vector indexing type More...
 
static tFlag getMaxFlag ()
 get the max value for the tFlag type More...
 
static tFlag getMinFlag ()
 get the min value for the tFlag type More...
 
static tUInteger getMaxUInteger ()
 get the max value for the unsigned integer type More...
 
static tUInteger getMinUInteger ()
 get the min value for the unsigned integer type More...
 
static tInteger getMaxInteger ()
 get the max value for the integer type More...
 
static tInteger getMinInteger ()
 get the min value for the integer type More...
 
static tReal getMaxReal ()
 get the max value for the real type More...
 
static tReal getMinReal ()
 get the min value for the real type More...
 
static tReal getRealEpsilon ()
 get the eps which is the difference between 1 and the least value greater than 1 that is representable. More...
 
static tReal getRealInfinity ()
 get the infinity value More...
 
template<class T >
static T computeEpsilon ()
 compute epsilon More...
 

Static Public Attributes

static const tUIndex UNMAGNETIZED_ELEMENT =CORE_Object::getMaxIndex()
 return the index of the unmagnetized element More...
 
static const tLimitCondition DIRICHLET_LIMIT_CONDITION =1
 
static const tLimitCondition NEUMANN_LIMIT_CONDITION =0
 
static const tLimitCondition NO_LIMIT_CONDITION =2
 
static const tLimitCondition SLAVE_LIMIT_CONDITION =3
 
static const tFlag POINT =0
 
static const tFlag ELEMENT =1
 
static const tCellFlag MAGNETIZED_DOMAIN_INTERIOR_INDICATOR =127
 
static const tCellFlag MAGNETIZED_ELEMENT_MIN_INDICATOR =64
 
static const tUCInt FACES_NUMBER_PER_ELEMENT =6
 
static const tUCInt POINTS_NUMBER_PER_ELEMENT =8
 
static const tUCInt POINTS_NUMBER_PER_FACE =4
 
static const tBoolean ELEMENT_POINTS []
 points coordinate of elements get the local coodinates of the points in {0,1} : ELEMENT_POINTS[i*3] is the 3D coordinates of the locat point at index i More...
 
static const tUCInt FACE_POINTS []
 points index of elements get the local index of the points in face : FACE_POINTS[f*POINTS_NUMBER_PER_FACE+p] is the index of the p-th point in the face f in [0,POINTS_NUMBER_PER_ELEMENT[ f in [0,FACES_NUMBER_PER_ELEMENT More...
 
static const tCInt EDGE_POINTS []
 points index of edge get the local index of the points in edge between face l & r (r>l, r,l in [0,6[ is EDGE_POINTS[2*(r+l*(l+1)/2)] and EDGE_POINTS[2*(r+l*(l+1)/2)+1] More...
 
static const tReal Mu0 =4*M_PI*1e-07
 
static const tReal Gamma =-1.7e11
 
static const tDimension X =0
 
static const tDimension Y =1
 
static const tDimension Z =2
 
static const tReal NULL_VALUE [] ={0,0,0}
 

Protected Member Functions

 EMM_Grid3D (void)
 create a grid 3D More...
 
virtual ~EMM_Grid3D (void)
 destroy a Grid3D More...
 
virtual void toDoAfterThisSetting ()
 method called after the setting of the shared pointer this method can only be called once. More...
 
void setThis (SP::CORE_Object p)
 set this weak shared pointer called toDoAfterThis setting method More...
 

Private Member Functions

 SP_OBJECT (EMM_Grid3D)
 
void updateElementTranslations ()
 update the values of private arrays depending on the discretization of the domain : More...
 
tBoolean loadFromGEOFile (const tString &fileName)
 load from a geo file More...
 
tBoolean saveToGEOFile (const tString &fileName) const
 save to a geo file More...
 
tBoolean loadHeaderFromGEOStream (ifstream &f, tUInteger &nReadLines, tUInteger &nReadProperties)
 load header from geo stream More...
 
tBoolean loadFromGEOStream (ifstream &f, tUInteger &nReadLines)
 load the neighbors from geo stream More...
 
tBoolean loadFooterFromGEOStream (ifstream &f, tUInteger &nReadLines, tUInteger &nReadProperties)
 load header from geo stream More...
 

Private Attributes

tBoolean mIsDirectionPeriodic [3]
 priodicity of direction the mesh More...
 
tBoolean mIsPeriodic
 true if the mesh is periodic in one direction More...
 
tUInteger mSegmentsNumber [3]
 segments number More...
 
tReal mSegmentsSize [3]
 segments size More...
 
tReal mAdimensionizedSegmentsSize [3]
 adimensionized segments size More...
 
tReal mAdimensionizedVolume
 the adimensionized volume More...
 
tReal mLmin
 min size of the cell More...
 
tReal mLmax
 max size of the cell More...
 
tReal mL
 reference length More...
 
tUIndex mBoundElement [FACES_NUMBER_PER_ELEMENT]
 get the index in [0,mSegmentsNumber[k][ of the 2 bound elements at each direction More...
 
tIndex mNextElementTranslation [FACES_NUMBER_PER_ELEMENT]
 get the index translation in each direction to have the previous or next element More...
 
tIndex mPeriodicElementTranslation [FACES_NUMBER_PER_ELEMENT]
 get the index translation in each direction to have the periodic element More...
 
SP::EMM_CellFlagArray mNeighborsIndicators
 mNeigbor indicator for each element More...
 
tUIndex mMagnetizedElementsNumber
 number of magnetized element More...
 
tUIndex mElementsNumber
 number of elements More...
 
tUIndex mWorkIndex
 

Static Private Attributes

static const tCellFlag TWO_POWER_FACES [] ={1,2,4,8,16,32,64,128}
 

Detailed Description

This class describes a grid3d mesh.

A grid3d mesh is a grid bounding box meshed by parallelepiped elements.

A grid is defined by number of segments in each direction: $N_x$, $N_y$, $N_z$,. The number of elements is $ N=N_x N_y N_z$. The element at index $ l \in [0,N[ $ is located at the segment index $S_x$ on x-direction, $S_y$ on y-direction, $S_z$ on z-direction with the relation $ l=S_x+N_x*(S_y+N_y*S_z) $.

A grid is defined by a vector of size N whose integer value at index l gives if there is a neighbor of the element next to its face f. This arrau can be gotten by the method EMM_Grid3D::getNeighbors()

$ neighbors[l]=\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where in a parallepiped mesh

The method EMM_Grid3D::hasNeighbor(l,f) get if there is a magnetized element next to element at index l with face f in common.

The method EMM_Grid3D::isMagnetized(l) return true if the element at index l is magnetized

The number of magnetized element is given by the method EMM_Grid3D::getMagnetizedElements();

A Grid 3D mesh may also be considered to be periodic in each direction given by the method EMM_Grid3D::isPeriodic()

To have the index of the element next to the element l with the face f in common , call the method EMM_Grid3D::getNeighborElement()

Author
Stéphane Despréaux
Version
1.0

Constructor & Destructor Documentation

◆ EMM_Grid3D()

EMM_Grid3D::EMM_Grid3D ( void  )
protected

◆ ~EMM_Grid3D()

EMM_Grid3D::~EMM_Grid3D ( void  )
protectedvirtual

destroy a Grid3D

Member Function Documentation

◆ adimensionize()

tReal EMM_Grid3D::adimensionize ( )
inline

compute the adimensionized constants

Returns
the caracteristic length of the mesh (max steps size). All the step sizes are adimensionized by the max step size

References mL, mLmax, and tUSInt.

◆ buildMagnetizedElements()

void EMM_Grid3D::buildMagnetizedElements ( const EMM_MatterField matters,
CORE_BooleanMorseArray magnetizedElements 
) const

◆ buildMagnetizedNeighborsIndices()

void EMM_Grid3D::buildMagnetizedNeighborsIndices ( const EMM_MatterField matters,
CORE_UIndexMorseArray neighbors 
) const

build the neighbors : for each element i build all the magnetized neighbors of element i

Parameters
matters: matters distribution of the grid
neighbors: built magnetized neighbors morse array of size <=FACES_NUMBER_PER_ELEMENT for each magnetized element

References CORE_MorseArray< T >::begin(), FACES_NUMBER_PER_ELEMENT, getElementsNumber(), EMM_MatterField::getMatterIndices(), getNeighborElement(), CORE_Array< T >::getSize(), CORE_MorseArray< T >::merge(), EMM_MatterField::NO_MATTER, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED, OMP_PARALLEL_SHARED, CORE_MorseArray< T >::reset(), CORE_MorseArrayIterator< T >::setSize(), CORE_MorseArray< T >::setSize(), tBoolean, tUCInt, tUIndex, tUInteger, UNMAGNETIZED_ELEMENT, and CORE_MorseArrayIterator< T >::values().

Referenced by EMM_MinimalExchangeOperator::discretize(), and getNeighborIndicator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildNeighborsIndices()

void EMM_Grid3D::buildNeighborsIndices ( const EMM_MatterField matters,
CORE_UIndexMorseArray neighbors 
) const

build the neighbors index: for each element i build all the (magnetized or not) neighbors of element i

Parameters
matters: matters distribution of the grid
neighbors: built neighbors morse array of size FACES_NUMBER_PER_ELEMENT for each magnetized element. neighbors[i][f] gives the index of the element which is next to the element i with face f

Note that the values at index i of the morse array is null if and only if the element at index i is not magnetized.

References CORE_MorseArray< T >::begin(), FACES_NUMBER_PER_ELEMENT, getElementsNumber(), EMM_MatterField::getMatterIndices(), getNeighborElement(), CORE_Array< T >::getSize(), CORE_MorseArray< T >::merge(), EMM_MatterField::NO_MATTER, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED, OMP_PARALLEL_SHARED, CORE_MorseArray< T >::reset(), CORE_MorseArrayIterator< T >::setSize(), CORE_MorseArray< T >::setSize(), tBoolean, tUCInt, tUIndex, tUInteger, and CORE_MorseArrayIterator< T >::values().

Referenced by EMM_MinimalExchangeOperator::discretize(), EMM_DisplacementFVMOperator::discretize(), and getNeighborIndicator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeEpsilon()

template<class T >
static T CORE_Object::computeEpsilon ( )
inlinestaticinherited

compute epsilon

Returns
the epsilon value eps=10^{-p/3} where p is defined by getEpsilon()=10^{-p}

◆ computeNormalFaceAdimensionizedLength()

void EMM_Grid3D::computeNormalFaceAdimensionizedLength ( tReal L2) const

build the adimensionized length for each face in its normal direction

Parameters
[out]L2: is the squared adimensionized dimension in each direction of the element of size 6

It commputes L2[2k+d]=L[k].L[k] for all k in [0,3[ and d in [0,2[

References getAdimensionizedSegmentsSize(), tDimension, and tReal.

Referenced by EMM_MinimalExchangeOperator::discretize(), and getAdimensionizedVolume().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GET_MASTER_PERIODIC_POINT()

static tBoolean EMM_Grid3D::GET_MASTER_PERIODIC_POINT ( const tCellFlag periodicity,
const tUIndex Nx,
const tUIndex Ny,
const tUIndex Nz,
tUIndex iQ,
tUIndex jQ,
tUIndex kQ 
)
inlinestatic

get the index of master point in [0,pointsNumber[. The master point is the point in pair face in the periodical direction k corresponding to the point in face unpair in the periodical direction k.

Parameters
[in]periodicityperiodical indicator of the directions
[in]Nxnumber of segments in the direction x
[in]Nynumber of segments in the direction y
[in]Nznumber of segments in the direction z
[in,out]iQinput : index of the point in the x-direction, return the index of the periodcial point in the x-direction
[in,out]jQinput : index of the point in the y-direction, return the index of the periodcial point in the y-direction
[in,out]kQinput : index of the point in the z-direction, return the index of the periodcial point in the z-direction
Returns
true if the periodical point is not the same

References tBoolean.

Referenced by EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFVM_Interpolator::cellMean(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFVM_VOGGROperator::computeGradUAtCellByOstrogradskiGreenIntegration(), EMM_DisplacementFVM_SSGROperator::computeGradUAtFaceByStokesIntegration(), EMM_DisplacementFVM_Interpolator::edgeMean(), EMM_DisplacementFVM_Interpolator::faceMean(), EMM_DisplacementFVM_Interpolator::interpolateUAtFace(), EMM_DisplacementFVM_Interpolator::interpolateUAtVertex(), isFaceOnDirichletBoundary(), isFaceOnNeumannBoundary(), EMM_DisplacementOperator::periodicProjection(), EMM_CanonicalMassMatrix::product(), and EMM_BlockMassMatrix::product().

Here is the caller graph for this function:

◆ getAdimensionizedSegmentsSize()

const tReal* EMM_Grid3D::getAdimensionizedSegmentsSize ( ) const
inline

return the adimensionized segments size

Returns
the adimensionized size of segments in each direction

References mAdimensionizedSegmentsSize.

Referenced by computeNormalFaceAdimensionizedLength(), EMM_DisplacementOperator::discretize(), and EMM_Output::saveVTI().

Here is the caller graph for this function:

◆ getAdimensionizedVolume()

const tReal& EMM_Grid3D::getAdimensionizedVolume ( ) const
inline

◆ getClassName() [1/2]

tString CORE_Object::getClassName ( ) const
inherited

return the class name of the object

Returns
the class name of the object

References tString.

Referenced by CORE_Object::getIdentityString(), EMM_Operator::getName(), and CORE_Object::isMemoryChecked().

Here is the caller graph for this function:

◆ getClassName() [2/2]

static tString CORE_Object::getClassName ( const tString identityString)
inlinestaticinherited

return the class name of the object

Parameters
identityStringthe identity string of the object
Returns
the class name

◆ getDoubleEpsilon()

static tDouble CORE_Object::getDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tDouble type

Returns
the epsilon value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getDoubleInfinity()

static tDouble CORE_Object::getDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getElementIndex()

tUIndex EMM_Grid3D::getElementIndex ( const tUIndex i,
const tUIndex j,
const tUIndex k 
) const
inline

return the element index of the element located at (i,j,k) coordinates on segments number

Parameters
[in]iindex of the segment in x-direction in [0,getSegementsNumber[0][
[in]jindex of the segment in y-direction in [0,getSegementsNumber[1][
[in]kindex of the segment in z-direction in [0,getSegementsNumber[2][
Returns
the element index of the element located at (i,j,k) coordinates on segment number : $ i+N_x(j+N_y.k) $

◆ getElementSegmentIndex()

tUIndex EMM_Grid3D::getElementSegmentIndex ( const tUIndex index,
const tUSInt d 
) const
inline

return the element coordinates on segment number on d direction

Parameters
indexindex of the element in [0,getElementsNumber()[
ddirection in [0,3[
Returns
the element coordinates on segment number on d direction

◆ getElementSegmentIndices()

void EMM_Grid3D::getElementSegmentIndices ( const tUIndex index,
tUIndex i,
tUIndex j,
tUIndex k 
) const
inline

return the element coordinates on segments number

Parameters
[in]indexindex of the element
[out]ioutput index of the segment in x-direction in [0,getSegementsNumber[0][
[out]joutput index of the segment in y-direction in [0,getSegementsNumber[1][
[out]koutput index of the segment in z-direction in [0,getSegementsNumber[2][ $ index=i+Nx.(j+N_y.k)$

◆ getElementsNumber()

tUIndex EMM_Grid3D::getElementsNumber ( ) const
inline

◆ getEpsilon()

template<class T >
static T CORE_Object::getEpsilon ( )
inlinestaticinherited

get the epsilon value for T type

Returns
the epsilon value for T type

◆ getFloatEpsilon()

static tFloat CORE_Object::getFloatEpsilon ( )
inlinestaticinherited

get the epsilon value for tFloat type

Returns
the epsilon value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getFloatInfinity()

static tFloat CORE_Object::getFloatInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getIdentityString()

tString CORE_Object::getIdentityString ( ) const
inlineinherited

◆ getInfinity()

template<class T >
static T CORE_Object::getInfinity ( )
inlinestaticinherited

get the infinity for T type

Returns
the infinity value for T type

◆ getLDoubleEpsilon()

static tLDouble CORE_Object::getLDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tLDouble type

Returns
the epsilon value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getLDoubleInfinity()

static tDouble CORE_Object::getLDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tDouble type

Returns
the infinity value for tDouble type

◆ getMagnetizedElementsNumber()

const tUIndex& EMM_Grid3D::getMagnetizedElementsNumber ( ) const
inline

get the number of magnetized elements

Returns
the number of magnetized cells less or equal to the number of elements

References mMagnetizedElementsNumber.

Referenced by EMM_LandauLifschitzSystem::computeMeanField(), and EMM_LandauLifschitzSystem::computeMeanMagnetizationField().

Here is the caller graph for this function:

◆ getMaxChar()

static tChar CORE_Object::getMaxChar ( )
inlinestaticinherited

get the max value for tChar type

Returns
the max value for tChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxDouble()

static tDouble CORE_Object::getMaxDouble ( )
inlinestaticinherited

get the max value for tDouble type

Returns
the max value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxElementSize()

const tReal& EMM_Grid3D::getMaxElementSize ( ) const
inline

get the max length of the cell

References mLmax.

◆ getMaxFlag()

static tFlag CORE_Object::getMaxFlag ( )
inlinestaticinherited

get the max value for the tFlag type

Returns
the max value for the tFlag type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxFloat()

static tFloat CORE_Object::getMaxFloat ( )
inlinestaticinherited

get the max value for tFloat type

Returns
the max value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxIndex()

static tIndex CORE_Object::getMaxIndex ( )
inlinestaticinherited

get the max value for the array/vector indexing type

Returns
the max value for the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxInt()

static tInt CORE_Object::getMaxInt ( )
inlinestaticinherited

get the max value for tInt type

Returns
the max value for tInt type

Referenced by MATSGN_FFT::fastFourierTransform3D_FFTW(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxInteger()

static tInteger CORE_Object::getMaxInteger ( )
inlinestaticinherited

get the max value for the integer type

Returns
the max value for the integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLDouble()

static tLDouble CORE_Object::getMaxLDouble ( )
inlinestaticinherited

get the max value for tLDouble type

Returns
the max value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLInt()

static tLInt CORE_Object::getMaxLInt ( )
inlinestaticinherited

get the max value for tLInt type

Returns
the max value for tLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLLInt()

static tLLInt CORE_Object::getMaxLLInt ( )
inlinestaticinherited

get the max value for tULInt type

Returns
the max value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxReal()

static tReal CORE_Object::getMaxReal ( )
inlinestaticinherited

get the max value for the real type

Returns
he max value for the real type

Referenced by EMM_MatterField::adimensionize(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxSInt()

static tSInt CORE_Object::getMaxSInt ( )
inlinestaticinherited

get the max value for tSInt type

Returns
the max value for tSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxStepSize()

tReal EMM_Grid3D::getMaxStepSize ( ) const
inline

get the max step size

Returns
the max step size of the mesh

References tReal, and tUSInt.

◆ getMaxUChar()

static tUChar CORE_Object::getMaxUChar ( )
inlinestaticinherited

get the max value for tUChar type

Returns
the max value for tUChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUIndex()

static tUIndex CORE_Object::getMaxUIndex ( )
inlinestaticinherited

get the max value for difference the array/vector indexing type

Returns
the max value for difference the array/vector indexing type

Referenced by CORE_Vector< T >::addAfterIndices(), CORE_Vector< T >::search(), CORE_Test::testType(), CORE_Integer::toHexString(), and CORE_Integer::toString().

Here is the caller graph for this function:

◆ getMaxUInt()

static tUInt CORE_Object::getMaxUInt ( )
inlinestaticinherited

get the max value for tUInt type

Returns
the max value for tUInt type

Referenced by EMM_Array< tCellFlag >::loadFromFile(), EMM_RealField::loadFromFile(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUInteger()

static tUInteger CORE_Object::getMaxUInteger ( )
inlinestaticinherited

get the max value for the unsigned integer type

Returns
the max value for the unsigned integer type

Referenced by MATH_Pn::computeExtrenums(), EMM_MultiScaleGrid::computeLevelsNumber(), EMM_Input::restoreBackup(), MATH_P0::solve(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxULInt()

static tULInt CORE_Object::getMaxULInt ( )
inlinestaticinherited

get the max value for tULInt type

Returns
the max value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxULLInt()

static tULLInt CORE_Object::getMaxULLInt ( )
inlinestaticinherited

get the max value for tULLInt type

Returns
the max value for tULLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUSInt()

static tUSInt CORE_Object::getMaxUSInt ( )
inlinestaticinherited

get the max value for tUSInt type

Returns
the max value for tUSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinChar()

static tChar CORE_Object::getMinChar ( )
inlinestaticinherited

get the min value for tChar type

Returns
the min value for tChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinDouble()

static tDouble CORE_Object::getMinDouble ( )
inlinestaticinherited

get the min value for tDouble type

Returns
the min value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinElementSize()

const tReal& EMM_Grid3D::getMinElementSize ( ) const
inline

get the min length of the cell

References mLmin.

◆ getMinFlag()

static tFlag CORE_Object::getMinFlag ( )
inlinestaticinherited

get the min value for the tFlag type

Returns
the min value for the tFlag type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinFloat()

static tFloat CORE_Object::getMinFloat ( )
inlinestaticinherited

get the min value for tFloat type

Returns
the min value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinIndex()

static tIndex CORE_Object::getMinIndex ( )
inlinestaticinherited

get the min value for the array/vector indexing type

Returns
the min value for the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinInt()

static tInt CORE_Object::getMinInt ( )
inlinestaticinherited

get the min value for tInt type

Returns
the min value for tInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinInteger()

static tInteger CORE_Object::getMinInteger ( )
inlinestaticinherited

get the min value for the integer type

Returns
the minin value for the integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLDouble()

static tLDouble CORE_Object::getMinLDouble ( )
inlinestaticinherited

get the min value for tLDouble type

Returns
the min value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLInt()

static tLInt CORE_Object::getMinLInt ( )
inlinestaticinherited

get the min value for tLInt type

Returns
the min value for tLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLLInt()

static tLLInt CORE_Object::getMinLLInt ( )
inlinestaticinherited

get the min value for tLLInt type

Returns
the min value for tLLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinReal()

static tReal CORE_Object::getMinReal ( )
inlinestaticinherited

get the min value for the real type

Returns
the min value for the real type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinSInt()

static tSInt CORE_Object::getMinSInt ( )
inlinestaticinherited

get the min value for tSInt type

Returns
the min value for tSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinStepSize()

tReal EMM_Grid3D::getMinStepSize ( ) const
inline

get the min step size

Returns
the min step size of the mesh

References tReal, and tUSInt.

◆ getMinUChar()

static tUChar CORE_Object::getMinUChar ( )
inlinestaticinherited

get the min value for tUChar type

Returns
the min value for tUChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUIndex()

static tUIndex CORE_Object::getMinUIndex ( )
inlinestaticinherited

get the min value for difference the array/vector indexing type

Returns
the min value for difference the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUInt()

static tUInt CORE_Object::getMinUInt ( )
inlinestaticinherited

get the min value for tUInt type

Returns
the min value for tUInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUInteger()

static tUInteger CORE_Object::getMinUInteger ( )
inlinestaticinherited

get the min value for the unsigned integer type

Returns
the min value for the unsigned integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinULInt()

static tULInt CORE_Object::getMinULInt ( )
inlinestaticinherited

get the min value for tULInt type

Returns
the min value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinULLInt()

static tULLInt CORE_Object::getMinULLInt ( )
inlinestaticinherited

get the min value for tULLInt type

Returns
the min value for tULLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUSInt()

static tUSInt CORE_Object::getMinUSInt ( )
inlinestaticinherited

get the min value for tUSInt type

Returns
the min value for tUSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getNeighborElement() [1/2]

tUIndex EMM_Grid3D::getNeighborElement ( const tUIndex index,
const tUCInt iFace 
) const

return the index of the element which is next to the element iElement with iFace in common

Parameters
index: index of the element in [0,getElementsNumber()[
iFace: index of the face into iElement element in [0,FACES_NUMBER_PER_ELEMENT[
Returns
the index of the element next to iElement element with iface face in common
UNMAGNETIZED_ELEMENT if not element

Note that the periodicity of the domain is taken into account

References mIsDirectionPeriodic, and mNeighborsIndicators.

Referenced by buildMagnetizedNeighborsIndices(), buildNeighborsIndices(), and hasNeighborToFace().

Here is the caller graph for this function:

◆ getNeighborElement() [2/2]

tUIndex EMM_Grid3D::getNeighborElement ( const tUIndex iCell,
const tCellFlag N,
const tBoolean  isPeriodic[3],
const tUCInt f 
) const

return the index of the element which is next to the element iElement with iFace in common

Parameters
iCellindex of the element in [0,getElementsNumber()[
Nfaces indicator of the cell
isPeriodicperiodicity of the mesh
findex of the face in [0,6[
Returns
the index of the element next to iElement element with iface face in common
UNMAGNETIZED_ELEMENT if not element

References iand, mBoundElement, mNextElementTranslation, mPeriodicElementTranslation, mSegmentsNumber, tCellFlag, tUCInt, tUIndex, TWO_POWER_FACES, and UNMAGNETIZED_ELEMENT.

◆ getNeighborIndicator()

const tCellFlag& EMM_Grid3D::getNeighborIndicator ( const tUIndex index) const
inline

get the neighbor indicator of the element at index

Parameters
indexindex of the element
Returns
$ neighbors[l]=\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $

References buildMagnetizedNeighborsIndices(), buildNeighborsIndices(), isFaceOnDirichletBoundary(), isFaceOnNeumannBoundary(), tBoolean, tCellFlag, tLimitCondition, tUCInt, and tUInteger.

Here is the call graph for this function:

◆ getNeighborsIndicators() [1/2]

const EMM_CellFlagArray& EMM_Grid3D::getNeighborsIndicators ( ) const
inline

get the neighbors indicator for each element for reading

Returns
the neighbors indictators $ neighborsIndicators[l]=\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where in a parallepiped mesh
  • v_f=1 if element has neighbor with face f, 0 otherwise for all f in [0,FACES_NUMBER_PER_ELEMENT[
  • v_FACES_NUMBER_PER_ELEMENT=1 is the element is magnetized, 0 otherwise

References CORE_Array< T >::get().

Referenced by EMM_LinearAnisotropyOperator::buildAnisotropyMatrix(), EMM_AnisotropyOperator::buildAnisotropyMatrix(), EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), buildMagnetizedElements(), EMM_Test::createBox(), EMM_Test::createCube(), loadFromGEOStream(), EMM_Output::saveVTI(), toString(), EMMG_RealField::unmagnetized(), updateLimitConditionOnPoints(), and updateMagnetizedElementsNumber().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getNeighborsIndicators() [2/2]

EMM_CellFlagArray& EMM_Grid3D::getNeighborsIndicators ( )
inline

get the neighbor elements for writing

Returns
the neighbors indictators $ neighborsIndicators[l]=\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where in a parallepiped mesh
  • v_f=1 if element has neighbor with face f, 0 otherwise for all f in [0,FACES_NUMBER_PER_ELEMENT[
  • v_FACES_NUMBER_PER_ELEMENT=1 is the element is magnetized, 0 otherwise

References CORE_Array< T >::get().

Here is the call graph for this function:

◆ getNeighborsIndicatorsByReference()

SPC::EMM_CellFlagArray EMM_Grid3D::getNeighborsIndicatorsByReference ( ) const
inline

get the neighbor elements for reading

Returns
the neighbors $ neighbors[l]=\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where in a parallepiped mesh
  • v_f=1 if element has neighbor with face f, 0 otherwise for all f in [0,FACES_NUMBER_PER_ELEMENT[
  • v_FACES_NUMBER_PER_ELEMENT=1 is the element is magnetized, 0 otherwise

References mNeighborsIndicators.

Referenced by EMM_MassMatrix::discretize().

Here is the caller graph for this function:

◆ getOut()

static SP::CORE_Out CORE_Object::getOut ( )
inlinestaticinherited

get the output

Returns
the shared pointer to the output stream

References CORE_Object::OUT.

◆ getPeriodicIndicator() [1/2]

tCellFlag EMM_Grid3D::getPeriodicIndicator ( ) const
inline

◆ getPeriodicIndicator() [2/2]

static tCellFlag EMM_Grid3D::getPeriodicIndicator ( const tBoolean  periodicity[])
inlinestatic

get the periodic indicator by face $ B=\sum_{f=0}^{f=5} b_f $ with $ b_f=1 $ if face f is periodic

Returns
$ P_0.(1+2) +P_1*(4+8)+P_2.(16+32) $

◆ getPointerAddress()

tString CORE_Object::getPointerAddress ( ) const
inlineinherited

return the identity string of the object

Returns
the identity string of the object

References CORE_Object::pointer2String().

Here is the call graph for this function:

◆ getRealEpsilon()

static tReal CORE_Object::getRealEpsilon ( )
inlinestaticinherited

get the eps which is the difference between 1 and the least value greater than 1 that is representable.

Returns
the eps which is the difference between 1 and the least value greater than 1 that is representable.

Referenced by MATH_P4::solveP4De(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getRealInfinity()

static tReal CORE_Object::getRealInfinity ( )
inlinestaticinherited

◆ getReferenceLength()

const tReal& EMM_Grid3D::getReferenceLength ( ) const
inline

get the reference length

References mL.

Referenced by toString().

Here is the caller graph for this function:

◆ getSegmentsNumber() [1/3]

void EMM_Grid3D::getSegmentsNumber ( tUInteger nx,
tUInteger ny,
tUInteger nz 
) const
inline

◆ getSegmentsNumber() [2/3]

const tUInteger* EMM_Grid3D::getSegmentsNumber ( ) const
inline

get the segments number in all directions

Returns
the array of the segments number

References mSegmentsNumber.

Referenced by updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ getSegmentsNumber() [3/3]

const tUInteger& EMM_Grid3D::getSegmentsNumber ( const tUSInt d) const
inline

get the segments number in direction d

Parameters
dthe direction in [0,3[
Returns
the number of segment in the directon d

◆ getSegmentsSize()

const tReal* EMM_Grid3D::getSegmentsSize ( ) const
inline

return the segments size

Returns
the size of segments in each direction

References mSegmentsSize.

◆ getSharedPointer() [1/2]

void CORE_Object::getSharedPointer ( SP::CORE_Object &  p)
inlineinherited

◆ getSharedPointer() [2/2]

void CORE_Object::getSharedPointer ( SPC::CORE_Object &  p) const
inlineinherited

get the shared pointer of this class into p

Parameters
p: shared pointer of the class This

◆ getStepSize()

const tReal& EMM_Grid3D::getStepSize ( const tUSInt d) const
inline

get the step size in the direction d

Returns
the step size of the mesh in direction d

◆ getStepsSize()

const tReal* EMM_Grid3D::getStepsSize ( ) const
inline

get the step size in all directions

Returns
the array of the step size

References mSegmentsSize.

◆ getThread()

static CORE_Thread& CORE_Object::getThread ( )
inlinestaticinherited

get the profilier

Returns
the profiler

Referenced by MATH_MaskVector::add(), MATH_Vector::add(), EMM_DisplacementFEMOperator::addBoundaryElasticStress(), EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFVMOperator::computeCineticEnergy(), EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFVMOperator::computeElasticTensor(), EMM_DisplacementFEMOperator::computeElasticTensor(), EMM_StaticMagneticTensorOperator::computeEnergy(), EMM_CubicAnisotropyOperator::computeEnergy(), EMM_MagnetostrictionOperator::computeEnergy(), EMM_DisplacementOperator::computeEnergy(), EMM_AnisotropyOperator::computeEnergyWithMagneticExcitation(), EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_FullExchangeOperator::computeMagneticExcitationField(), EMM_StaticMagnetostrictionOperator::computeMagneticExcitationField(), EMM_LinearAnisotropyOperator::computeMagneticExcitationField(), EMM_StaticMagneticTensorOperator::computeMagneticExcitationField(), EMM_CubicAnisotropyOperator::computeMagneticExcitationField(), EMM_MinimalExchangeOperator::computeMagneticExcitationField(), EMM_AnisotropyOperator::computeMagneticExcitationField(), EMM_MagnetostrictionOperator::computeMagneticExcitationField(), EMM_CubicAnisotropyOperator::computeMagneticExcitationFieldGradient(), EMM_AnisotropyOperator::computeMagneticExcitationFieldGradient(), EMM_DisplacementFVMOperator::computeMagneticStress(), EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_OptimalTimeStep::computeOptimalTimeStep(), EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), EMM_FullExchangeOperator::discretize(), EMM_MinimalExchangeOperator::discretize(), EMM_CondensedMassMatrix::discretize(), EMM_LinearAnisotropyOperator::discretize(), EMM_AnisotropyOperator::discretize(), EMM_DemagnetizedOperator::discretize(), EMMG_SLDemagnetizedOperator::discretize(), EMM_LandauLifschitzSystem::discretize(), MATH_Vector::divide(), MATH_MaskVector::dot(), MATH_Vector::dot(), EMM_4SymmetricTensors::doubleDot(), EMM_4Tensors::doubleDotCrossDoubleDotScalar(), EMM_4Tensors::doubleDotCrossProduct(), EMM_4Tensors::doubleDotCrossSquaredScalar(), EMM_4Tensors::doubleDotProduct(), MATH_Vector::init(), MATH_MaskVector::init(), EMM_LandauLifschitzODE_RK::integrateMagnetizationFieldAtTime(), EMM_DisplacementFVM_Interpolator::interpolateUAtVertices(), EMMG_SLDemagnetizedOperator::localAssembly(), EMM_DisplacementOperator::nullProjectionOnDirichletBoundary(), EMM_DisplacementOperator::periodicProjection(), EMM_2PackedSymmetricTensors::product(), EMM_CanonicalMassMatrix::product(), MATH_FullMatrix::product(), EMM_CondensedMassMatrix::product(), EMM_BlockMassMatrix::product(), MATH_MorseMatrix::product(), EMMG_SLDemagnetizedOperator::product(), EMM_DisplacementOperator::projectionOnDirichletBoundary(), EMM_LandauLifschitzSystem::resetOperatorsToInitialState(), EMM_DisplacementFVMOperator::setBoundaryFaceTypes(), FFTW_MultiDFTs::setFFT(), FFTW_MultiLevelsDFT::setFFT(), FFTW_MultiLevelsDFT::setLevels(), FFTW_MultiDFTs::setPlan(), FFTW_MultiLevelsDFT::setPlan(), EMM_CondensedMassMatrix::solve(), EMM_LandauLifschitzODE::solveODE(), EMM_4SymmetricTensors::squaredDoubleDot(), EMM_4Tensors::squaredDoubleDotCrossScalar(), EMM_4Tensors::squaredDoubleDotScalar(), EMM_CanonicalMassMatrix::symmetricDot(), EMM_CondensedMassMatrix::symmetricDot(), EMM_BlockMassMatrix::symmetricDot(), FFTW_Test::test(), MATH_SolverTest::test(), EMM_ODETest::testODE(), and updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ getTypeName()

template<class T >
static tString CORE_Object::getTypeName ( )
inlinestaticinherited

get type name

Returns
the type name of the class

References tString.

◆ getVerticesNumber()

tUIndex EMM_Grid3D::getVerticesNumber ( ) const
inline

◆ hasNeighborToFace()

tBoolean EMM_Grid3D::hasNeighborToFace ( const tUIndex iElement,
const tUSInt iFace 
) const
inline

return true if the element at index iElement have a magnetized neighbor with common face iFace in [0,FACES_NUMBEr_PER_ELEMENT[ false otherwise

Parameters
iElementindex of the element
iFaceindex of the local face in [0,FACES_NUMBER_PER_ELEMENT[
Returns
true if the element at index iElement have a magnetized neighbor with common face iFace in [0,FACES_NUMBER_PER_ELEMENT[ false otherwise throw an error if iface >= FACES_NUMBER_PER_ELEMENT

References getNeighborElement(), iand, isPeriodic(), tBoolean, tCellFlag, tUCInt, and tUIndex.

Here is the call graph for this function:

◆ is32Architecture()

static tBoolean CORE_Object::is32Architecture ( )
inlinestaticinherited

return true if the machine is a 32 bits machine

Returns
true is the computing is done in a 32 bits machine

References CORE_Object::pointer2String(), CORE_Object::printObjectsInMemory(), and tString.

Referenced by CORE_Test::testType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is64Architecture()

static tBoolean CORE_Object::is64Architecture ( )
inlinestaticinherited

return true if the machine is a 64 bits machine

Returns
true is the computing is done in a 64 bits machine

Referenced by EMM_VTK::getVTKType(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ IS_ELEMENT_MAGNETIZED()

static tBoolean EMM_Grid3D::IS_ELEMENT_MAGNETIZED ( const tCellFlag v)
inlinestatic

test if the element woth neighbor indicator v is magnetized

Parameters
[in]vneighbor indicator of the element in FACES_NUMBER_PER_ELEMENT+1 bits: $ v=\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where in a parallepiped mesh
  • v_f=1 if element has neighbor with face f, 0 otherwise for all f in [0,FACES_NUMBER_PER_ELEMENT[
  • v_FACES_NUMBER_PER_ELEMENT=1 is the element is magnetized, 0 otherwise
Returns
true if the neighbor indicator indicator is magnetized

Referenced by EMM_LinearAnisotropyOperator::buildAnisotropyMatrix(), EMM_AnisotropyOperator::buildAnisotropyMatrix(), EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticTensor(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), EMM_CondensedMassMatrix::discretize(), EMM_CanonicalMassMatrix::product(), EMM_BlockMassMatrix::product(), EMM_CanonicalMassMatrix::symmetricDot(), EMM_BlockMassMatrix::symmetricDot(), EMM_Grid3DTest::testContainers(), EMMG_RealField::unmagnetized(), and updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ IS_POINT_IN_BOUNDARY() [1/2]

static tBoolean EMM_Grid3D::IS_POINT_IN_BOUNDARY ( const tBoolean  x[],
const tCellFlag N,
const tBoolean  periodicity[] 
)
inlinestatic

test if the local point is in magnetized boundary.

Parameters
xlocal coordinates of 3d-point in x[k] in {0,1}
Nneighbors value of the element: $ N=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f $ where in a parallepiped mesh
  • v_f=0 for indicating if the paralleliped element has neighbor element with face f
  • v_FACES_NUMBER_PER_ELEMENT for indicating if the element is magnetized
periodicityperiodicity on direction P
Returns
true if the point is on periodic boundary
  • X must be in face f => Xf=1
  • cell has no neighbor next to face f => Nf=0
  • face f must not be periodic => Pf=0

Referenced by EMM_Grid3DTest::testContainers(), and updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ IS_POINT_IN_BOUNDARY() [2/2]

static tBoolean EMM_Grid3D::IS_POINT_IN_BOUNDARY ( const tCellFlag X,
const tCellFlag N,
const tCellFlag P 
)
inlinestatic

test if the local point is in magnetized boundary

Parameters
X: byte integer $ X=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT-1} v_f 2^f, $ where $ v_f=1 $ if the point belongs to face f
Nneighbors value of the element $ N=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where $ v_f=1 $ for indicating if the has neighbor element with face f.
Pperiodicity indicator : $ P=\displaystyle 3.\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where where $ v_f=1 $ for indicating if the face f is periodic

Th point is in boundary face if and only if all the following assertions are fullfilled:

  • X must be in face f => Xf=1
  • cell has no neighbor next to face f => Nf=0
  • face f must not be periodic => Pf=0

◆ IS_POINT_IN_PERIODIC_BOUNDARY() [1/2]

static tBoolean EMM_Grid3D::IS_POINT_IN_PERIODIC_BOUNDARY ( const tBoolean  x[],
const tCellFlag N,
const tBoolean  periodicity[] 
)
inlinestatic

test if the local point is in a periodical boundary

Parameters
x: byte integer $ X=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT-1} v_f 2^f, $ where $ v_f=1 $ if the point belongs to face f
Nneighbors value of the element $ N=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where $ v_f=1 $ for indicating if the has neighbor element with face f.
periodicityperiodicity indicator : $ P=\displaystyle 3.\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where where $ v_f=1 $ for indicating if the face f is periodic
  • x must be in face f => x_f=1
  • cell has no neighbor next to face f => N_f=0
  • face f must be periodic => Periodicity_f=1

◆ IS_POINT_IN_PERIODIC_BOUNDARY() [2/2]

static tBoolean EMM_Grid3D::IS_POINT_IN_PERIODIC_BOUNDARY ( const tCellFlag X,
const tCellFlag N,
const tCellFlag P 
)
inlinestatic

test if the local point is in periodical boundary

Parameters
X: byte integer $ X=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT-1} v_f 2^f, $ where $ v_f=1 $ if the point belongs to face f
Nneighbors value of the element $ N=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where $ v_f=1 $ for indicating if the has neighbor element with face f.
Pperiodicity indicator : $ P=\displaystyle 3.\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where where $ v_f=1 $ for indicating if the face f is periodic
  • X must be in face f => Xf=1
  • cell has no neighbor next to face f => Nf=0
  • face f must be periodic => Pf=1

◆ IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY() [1/2]

static tBoolean EMM_Grid3D::IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY ( const tBoolean  x[],
const tCellFlag N,
const tBoolean  periodicity[] 
)
inlinestatic

test if the local point is in slave periodical boundary

Parameters
x: byte integer $ X=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT-1} v_f 2^f, $ where $ v_f=1 $ if the point belongs to face f
N: neighbors value of the element $ N=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where $ v_f=1 $ for indicating if the has neighbor element with face f.
periodicity: periodicity indicator : $ P=\displaystyle 3.\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where where $ v_f=1 $ for indicating if the face f is periodic
  • x must be in face f => x_f=1
  • cell has no neighbor next to face f => N_f=0
  • face f must be periodic => periodicity_f=1
  • face f must in 010101=2+8+32=42

◆ IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY() [2/2]

static tBoolean EMM_Grid3D::IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY ( const tCellFlag X,
const tCellFlag N,
const tCellFlag P 
)
inlinestatic

test if the local point is in slave periodical boundary

Parameters
X: byte integer $ X=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT-1} v_f 2^f, $ where $ v_f=1 $ if the point belongs to face f
Nneighbors value of the element $ N=\displaystyle \sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where $ v_f=1 $ for indicating if the has neighbor element with face f.
Pperiodicity indicator : $ P=\displaystyle 3.\sum_{f=0}^{f=FACES_NUMBER_PER_ELEMENT} v_f 2^f, $ where where $ v_f=1 $ for indicating if the face f is periodic
  • X must be in face f => X_f=1
  • cell has no neighbor next to face f => N_f=0
  • face f must be periodic => P_f=1
  • face f must in 010101=2+8+32=42

References loadFooterFromGEOStream(), loadFromFile(), loadFromGEOFile(), loadFromGEOStream(), loadHeaderFromGEOStream(), saveToFile(), saveToGEOFile(), tBoolean, toString(), tString, tUInteger, and updateLimitConditionOnPoints().

Here is the call graph for this function:

◆ isCubicVolume()

tBoolean EMM_Grid3D::isCubicVolume ( ) const
inline

return true if the element is cubic

Returns
true if the adimensionized segment sizes are the same in all directions

References mAdimensionizedSegmentsSize, tBoolean, tReal, and tUSInt.

Referenced by EMM_Operator::discretize().

Here is the caller graph for this function:

◆ isDirectionPeriodic() [1/2]

const tBoolean* EMM_Grid3D::isDirectionPeriodic ( ) const
inline

get if the mesh is periodic

Returns
the periodicty in all directions

References mIsDirectionPeriodic.

Referenced by EMMG_RealField::cellDataToPointData(), EMM_MassMatrix::discretize(), and EMM_DisplacementFVMOperator::discretize().

Here is the caller graph for this function:

◆ isDirectionPeriodic() [2/2]

const tBoolean& EMM_Grid3D::isDirectionPeriodic ( const tFlag d) const
inline

get if the mesh is periodic on direction d

Parameters
dthe direction of the mesh in [0,3[
Returns
true if the mech is periodic in the direction d

References ASSERT_IN.

◆ isElementMagnetized()

tBoolean EMM_Grid3D::isElementMagnetized ( const tUIndex index) const
inline
Returns
true if the element at index is magnetized
Parameters
[in]indexindex of the element
Returns
true if the element is in the magnetized

Referenced by EMMG_RealField::cellDataToPointData(), and EMMG_RealField::pointDataToCellData().

Here is the caller graph for this function:

◆ isFaceOnDirichletBoundary()

tBoolean EMM_Grid3D::isFaceOnDirichletBoundary ( const tCellFlag periodicity,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUInteger nPx,
const tUInteger nPy,
const tUInteger nPz,
const tLimitCondition dirichletPoints 
)
static

return tue if the face f of the magnetized cell (xCell,yCell,zCell) is on Dirichlet boundary

Parameters
[in]periodicity:: periodicity 2 bits flag : xxyyzz for periodicity along x y z (=1 for periodic, =0 otherwise)
[in]xCell: index of the segment of the cell in the x-direction in [0,Nx[
[in]yCell: index of the segment of the cell in the y-direction in [0,Ny[
[in]zCell: index of the segment of the cell in the z-direction in [0,Nz[
[in]f: index of the face in [0,6[
[in]nPx: number of points in the direction x equals to Nx+1
[in]nPy: number of points in the direction y equals to Ny+1
[in]nPz: number of points in the direction z equals to Nz+1
[in]dirichletPoints: points considered as dirichlet one.

A face is on dirichet boundary if all the points are dirichlet one. if a point is a slave periodical point, the limit condition is the one of its master point

References DIRICHLET_LIMIT_CONDITION, ELEMENT_POINTS, FACE_POINTS, GET_MASTER_PERIODIC_POINT(), null, POINTS_NUMBER_PER_FACE, SLAVE_LIMIT_CONDITION, tBoolean, tFlag, tLimitCondition, tUCInt, tUIndex, and tUInteger.

Referenced by getNeighborIndicator(), and EMM_DisplacementFVMOperator::setBoundaryFaceTypes().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isFaceOnNeumannBoundary()

tBoolean EMM_Grid3D::isFaceOnNeumannBoundary ( const tCellFlag periodicity,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUInteger nPx,
const tUInteger nPy,
const tUInteger nPz,
const tLimitCondition dirichletPoints 
)
static

return tue if the face f of the magnetized cell (xCell,yCell,zCell) is on Neumann boundary

Parameters
[in]periodicity: periodicity 2 bits flag : xxyyzz for periodicity along x y z (=1 for periodic, =0 otherwise)
[in]xCell: index of the segment of the cell in the x-direction in [0,Nx[
[in]yCell: index of the segment of the cell in the y-direction in [0,Ny[
[in]zCell: index of the segment of the cell in the z-direction in [0,Nz[
[in]f: index of the face in [0,6[
[in]nPx: number of points in the direction x equals to Nx+1
[in]nPy: number of points in the direction y equals to Ny+1
[in]nPz: number of points in the direction z equals to Nz+1
[in]dirichletPoints: points considered as dirichlet one.

A face is on Neumann boundary if one point is a Neumann one. if a point is a slave periodical point, the limit condition is the one of its master point

References ELEMENT_POINTS, FACE_POINTS, GET_MASTER_PERIODIC_POINT(), NEUMANN_LIMIT_CONDITION, null, POINTS_NUMBER_PER_FACE, SLAVE_LIMIT_CONDITION, tBoolean, tFlag, tLimitCondition, tUCInt, tUIndex, and tUInteger.

Referenced by EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), and getNeighborIndicator().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isInMagnetizedDomainInterior()

tBoolean EMM_Grid3D::isInMagnetizedDomainInterior ( const tUIndex index) const
inline
Returns
true if the element at index has all neighbors in magnetized domaon
Parameters
indexindex of the element
Returns
true if the element is in the interior of magnetized domain

References buildMagnetizedElements().

Here is the call graph for this function:

◆ isInstanceOf() [1/2]

template<class T >
tBoolean CORE_Object::isInstanceOf ( ) const
inlineinherited

test if the clas T is an instance of this class

Returns
true if the object is an instance of T

References null.

Referenced by MATH_ToeplitzTest::toeplitzTest().

Here is the caller graph for this function:

◆ isInstanceOf() [2/2]

tBoolean CORE_Object::isInstanceOf ( const tString name) const
inlineinherited

test if the object is an instance of className

Parameters
namename of the class
Returns
true if the object is an instance of class Name

References CORE_Object::getIdentityString().

Here is the call graph for this function:

◆ isMemoryChecked()

static const tBoolean& CORE_Object::isMemoryChecked ( )
inlinestaticinherited

get if the memory checking is used

Returns
true: if the memory checking is used.

References CORE_Object::getClassName(), CORE_Object::mIsMemoryTesting, and tString.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isPeriodic()

const tBoolean& EMM_Grid3D::isPeriodic ( ) const
inline

get if the mesh is periodic in one direction

References mIsPeriodic.

Referenced by EMM_DemagnetizedOperator::discretize(), EMMG_SLDemagnetizedOperator::discretize(), and hasNeighborToFace().

Here is the caller graph for this function:

◆ loadFooterFromGEOStream()

tBoolean EMM_Grid3D::loadFooterFromGEOStream ( ifstream &  f,
tUInteger nReadLines,
tUInteger nReadProperties 
)
private

load header from geo stream

Parameters
[in,out]fin/out stream
[out]nReadLinesnumber of lines read
[out]nReadPropertiesnumber of properties read
Returns
true f succeeds. throw an exception if error

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY(), and loadFromGEOFile().

Here is the caller graph for this function:

◆ loadFromFile()

tBoolean EMM_Grid3D::loadFromFile ( const tString fileName)

load from a file

Parameters
[in]fileName: name of the file to load the geometry
Returns
true if the extension of the file name is recognized

References CORE_IO::getExtension(), loadFromGEOFile(), and tString.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadFromGEOFile()

tBoolean EMM_Grid3D::loadFromGEOFile ( const tString fileName)
private

load from a geo file

Parameters
[in]fileName: name of the geo file to load the geometry
Returns
true if the reading succeeds

References loadFooterFromGEOStream(), loadFromGEOStream(), loadHeaderFromGEOStream(), CORE_Object::out(), CORE_Out::println(), tBoolean, and tUInteger.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY(), and loadFromFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadFromGEOStream()

tBoolean EMM_Grid3D::loadFromGEOStream ( ifstream &  f,
tUInteger nReadLines 
)
private

load the neighbors from geo stream

Parameters
[in,out]finout stream
[out]nReadLinesnumber of lines read
Returns
true if the good number of data is read

References getNeighborsIndicators(), mNeighborsIndicators, CORE_String::New(), CORE_String::readInteger(), tCellFlag, tString, tUIndex, and tUInteger.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY(), and loadFromGEOFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadHeaderFromGEOStream()

tBoolean EMM_Grid3D::loadHeaderFromGEOStream ( ifstream &  f,
tUInteger nReadLines,
tUInteger nReadProperties 
)
private

load header from geo stream

Parameters
[in,out]finout stream
[out]nReadLinesnumber of lines read
[out]nReadPropertiesnumber of properties read
Returns
true f succeeds. throw an exception if error

References mMagnetizedElementsNumber, CORE_String::New(), CORE_String::readInteger(), CORE_String::readReal(), setSegmentsNumber(), setStepsSize(), tBoolean, tDimension, tInteger, tReal, tString, and tUInteger.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY(), and loadFromGEOFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ New()

static SP::EMM_Grid3D EMM_Grid3D::New ( )
inlinestatic

create a Grid3D object

Returns
a shared pointer to a grid 3D

References EMM_Grid3D(), updateElementTranslations(), and updateMagnetizedElementsNumber().

Referenced by EMM_Test::createBox(), EMM_Test::createCube(), EMM_ClassFactory::NewInstance(), EMM_Grid3DTest::testSegment(), and EMM_Grid3DTest::testThinSheet().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ out()

static CORE_Out& CORE_Object::out ( )
inlinestaticinherited

get the output

Returns
the output stream

Referenced by EMM_Matter::adimensionize(), EMM_DisplacementFVMOperator::backup(), EMM_DisplacementOperator::backup(), MATH_ElementaryMultiLevelsToeplitzMatrix::buildSpectralVectorProjector(), EMM_Test::caseTest(), EMM_Test::caseTests(), EMM_MatterField::computeAnisotropyDirectionsField(), EMM_OptimalTimeStep::computeOptimalTimeStep(), MATH_MultiLevelsToeplitzMatrix::copy(), CORE_Exception::CORE_Exception(), EMM_MatterField::createAnisotropyOperator(), CORE_Run::createIO(), EMM_ElementaryTest::defaultBackupTest(), EMM_ElementaryTest::defaultTest(), MATH_MultiLevelsFFTToeplitzMatrix::diagonalize(), EMM_DisplacementFVMOperator::discretize(), EMM_MagnetostrictionOperator::discretize(), EMM_DisplacementFEMOperator::discretize(), EMM_4SymmetricTensors::doubleDot(), EMM_4Tensors::doubleDotCrossDoubleDotScalar(), EMM_TensorsTest::doubleDotCrossDoubleDotScalarTests(), EMM_4Tensors::doubleDotCrossProduct(), EMM_TensorsTest::doubleDotCrossProductTests(), EMM_4Tensors::doubleDotCrossSquaredScalar(), EMM_TensorsTest::doubleDotCrossSquaredScalarTests(), EMM_4Tensors::doubleDotProduct(), EMM_TensorsTest::doubleDotProductTests(), EMM_DisplacementWaveTest::elasticWaveTest(), EMM_Test::elementaryTests(), FFTW_Test::fftwTutorial(), MATH_IntegrationTest::gaussLegendreTest(), EMM_MagnetostrictionTest::HComputingTest(), EMM_DemagnetizedPeriodicalTest::HTest(), EMMH_HysteresisTest::hysteresisDefaultCycleTest(), EMM_TensorsTest::initializationTests(), EMM_MultiScaleGrid::initialize(), EMM_MultiScaleSDGrid::initialize(), EMM_MatterField::loadFromANIFile(), EMM_AnisotropyDirectionsField::loadFromFile(), EMM_Matter::loadFromFile(), loadFromGEOFile(), EMM_MatterField::loadFromLOCFile(), EMM_Array< tCellFlag >::loadFromStream(), EMM_Matter::loadFromStream(), EMM_Matter::loadMattersFromFile(), EMM_Run::loadSystemFromOptions(), EMM_ElementaryTest::magnetostrictionBackupTest(), CORE_Run::make(), EMMH_Run::makeHysteresis(), EMM_Run::makeRun(), CORE_Run::makeType(), EMM_ElementaryTest::optionsTest(), MATH_PolynomialTest::P4Tests(), EMM_Test::primaryTests(), EMM_LandauLifschitzSystem::printLog(), CORE_Run::printOptions(), EMM_2PackedSymmetricTensors::product(), EMMG_SLDemagnetizedOperator::projectionOnSpectralSpace(), CORE_Run::readOptionsFromCommandLine(), CORE_Test::readVectorTest(), EMM_DemagnetizedPeriodicalTest::relaxationTest(), EMM_DisplacementFVMOperator::restore(), EMM_DisplacementOperator::restore(), EMM_Input::restoreBackup(), EMMH_Hysteresis::run(), EMM_Output::save(), EMM_AnisotropyDirectionsField::saveToFile(), EMM_MatterField::saveToFile(), saveToGEOFile(), CORE_IOTest::searchTest(), EMMH_Hysteresis::setInitialMagnetizationField(), MATH_MultiLevelsToeplitzMatrix::setLevels(), EMM_4SymmetricTensors::squaredDoubleDot(), EMM_4Tensors::squaredDoubleDotCrossScalar(), EMM_TensorsTest::squaredDoubleDotCrossScalarTests(), EMM_4Tensors::squaredDoubleDotScalar(), EMM_TensorsTest::squaredDoubleDotScalarTests(), EMM_TensorsTest::squaredDoubleDotTests(), EMM_MatterTest::testAdimensionize(), EMM_MatterTest::testANIFile(), CORE_Test::testComplex(), CORE_Test::testDateWeek(), FFTW_Test::testDFT(), EMM_MatterTest::testIO(), EMM_ODETest::testODE(), CORE_Test::testOut(), CORE_Test::testReal(), EMM_FieldTest::testRealArray(), EMM_Grid3DTest::testSegment(), EMM_Grid3DTest::testThinSheet(), CORE_Test::testTime(), CORE_Test::testType(), MATH_FullMatrix::toString(), EMM_DemagnetizedPeriodicalTest::xyPeriodicalCubeSDGTest(), and EMM_DemagnetizedPeriodicalTest::xyPeriodicalSheetSDGTest().

Here is the caller graph for this function:

◆ pointer2String()

tString CORE_Object::pointer2String ( const void *  obj)
staticinherited

return the string representation of a pointer

Parameters
obj: oject to get the string pointer
Returns
the string pointer of the object

References tString.

Referenced by CORE_Object::CORE_Object(), CORE_Object::getIdentityString(), CORE_Object::getPointerAddress(), CORE_Object::is32Architecture(), and CORE_Object::~CORE_Object().

Here is the caller graph for this function:

◆ printObjectsInMemory() [1/2]

void CORE_Object::printObjectsInMemory ( ostream &  f)
staticinherited

print object in memory

Parameters
f: output to print the objects in memory

References CORE_Object::getIdentityString(), CORE_Object::getSharedPointer(), CORE_Object::mIsMemoryTesting, CORE_Object::mObjects, and tInteger.

Here is the call graph for this function:

◆ printObjectsInMemory() [2/2]

static void CORE_Object::printObjectsInMemory ( )
inlinestaticinherited

print object in memory in the standart output

Referenced by CORE_Object::is32Architecture(), and main().

Here is the caller graph for this function:

◆ resetOut()

static void CORE_Object::resetOut ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ resetThread()

static void CORE_Object::resetThread ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ saveToFile()

tBoolean EMM_Grid3D::saveToFile ( const tString fileName) const

save to a file

Parameters
[in]fileName: name of the file to save the geometry
Returns
true if the extension of the file name is recognized

References CORE_IO::getExtension(), saveToGEOFile(), and tString.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ saveToGEOFile()

tBoolean EMM_Grid3D::saveToGEOFile ( const tString fileName) const
private

save to a geo file

Parameters
[in]fileName: name of the geo file to save the geometry
Returns
true if the writing succeeds

References mElementsNumber, mMagnetizedElementsNumber, mNeighborsIndicators, mSegmentsNumber, mSegmentsSize, CORE_Object::out(), CORE_Out::println(), tBoolean, tChar, tIndex, CORE_Time::toString(), and tUSInt.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY(), and saveToFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setIsDirectionPeriodic()

void EMM_Grid3D::setIsDirectionPeriodic ( const tUSInt k,
const tBoolean v 
)
inline

set if the mesh is periodic on all directions

References tUSInt.

◆ setIsMemoryChecked()

static void CORE_Object::setIsMemoryChecked ( const tBoolean v)
inlinestaticinherited

set if the memory checking is used

Parameters
v: true to check memory

Referenced by main().

Here is the caller graph for this function:

◆ setIsPeriodic()

void EMM_Grid3D::setIsPeriodic ( const tBoolean  v[3])
inline

set if the mesh is periodic on all directions

References tUSInt.

◆ setOut()

static void CORE_Object::setOut ( SP::CORE_Out  out)
inlinestaticinherited

set the output stream

Parameters
out: the shared pointer to the new output stream

References null.

◆ setSegmentsNumber()

void EMM_Grid3D::setSegmentsNumber ( const tUInteger nx,
const tUInteger ny,
const tUInteger nz 
)
inline

set the segments number in all directions

Parameters
nx: the number of segment in the x direction
ny: the number of segment in the y direction
nz: the number of segment in the z direction

References updateElementTranslations().

Referenced by EMM_Test::createBox(), EMM_Test::createCube(), and loadHeaderFromGEOStream().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setStepSize()

void EMM_Grid3D::setStepSize ( const tReal l)
inline

set the step size in the direction x,y,z when it's the same for the 3 directions

Parameters
l: the common step size for the 3 direction

References setStepsSize().

Here is the call graph for this function:

◆ setStepsSize()

void EMM_Grid3D::setStepsSize ( const tReal lx,
const tReal ly,
const tReal lz 
)
inline

set the step size in the direction x,y,z : length of segment in each direction

Parameters
lx: the step size in the x direction
ly: the step size in the y direction
lz: the step size in the z direction

Referenced by EMM_Test::createBox(), EMM_Test::createCube(), loadHeaderFromGEOStream(), and setStepSize().

Here is the caller graph for this function:

◆ setThis()

void CORE_Object::setThis ( SP::CORE_Object  p)
inlineprotectedinherited

set this weak shared pointer called toDoAfterThis setting method

Parameters
p: shared pointer of the class This

References CORE_Object::toDoAfterThisSetting().

Here is the call graph for this function:

◆ setThread()

static void CORE_Object::setThread ( SP::CORE_Thread  thread)
inlinestaticinherited

set the thread

Parameters
threadthe shared pointer to the thread

References null.

Referenced by EMM_Run::EMM_Run(), EMM_TensorsRun::EMM_TensorsRun(), and MATH_SolverRun::MATH_SolverRun().

Here is the caller graph for this function:

◆ SP_OBJECT()

EMM_Grid3D::SP_OBJECT ( EMM_Grid3D  )
private

◆ toDoAfterThisSetting()

virtual void EMM_Object::toDoAfterThisSetting ( )
inlineprotectedvirtualinherited

method called after the setting of the shared pointer this method can only be called once.

Reimplemented from CORE_Object.

Reimplemented in EMM_DisplacementOperator, EMM_DisplacementFVMOperator, EMM_GaussLegendreRelaxation, and EMM_GradGaussLegendreRelaxation.

Referenced by EMM_GaussLegendreRelaxation::toDoAfterThisSetting(), and EMM_DisplacementOperator::toDoAfterThisSetting().

Here is the caller graph for this function:

◆ toString()

tString EMM_Grid3D::toString ( ) const
virtual

turn the mesh into string

Returns
the string representation of the mesh

Reimplemented from CORE_Object.

References CORE_String::boolean2String(), CORE_Object::getIdentityString(), getNeighborsIndicators(), getReferenceLength(), mAdimensionizedSegmentsSize, mIsDirectionPeriodic, mNeighborsIndicators, mSegmentsNumber, mSegmentsSize, tCellFlag, CORE_Real::toString(), CORE_Integer::toString(), CORE_String::toString(), tString, tUIndex, and tUSInt.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateElementTranslations()

void EMM_Grid3D::updateElementTranslations ( )
private

update the values of private arrays depending on the discretization of the domain :

  • the index in [0,mSegmentsNumber[k][ of the 2 bound elements at each direction within mBoundElement array of size 6
  • the index translation in each direction to have the previous or next element mNextElementTranslation array of size 6
  • the index translation in each direction to have the periodic element mPeriodicElementTranslation array of size 6

References mBoundElement, mNextElementTranslation, mPeriodicElementTranslation, mSegmentsNumber, and tUInteger.

Referenced by EMM_Grid3D(), New(), and setSegmentsNumber().

Here is the caller graph for this function:

◆ updateLimitConditionOnPoints()

void EMM_Grid3D::updateLimitConditionOnPoints ( EMM_LimitConditionArray lc) const

update the limit condition of each point.

Parameters
[in,out]lclimit condition points array
  • In input: the limit conidtion is 1 for dirichlet point 0 for all others points.
  • In output: the limit condition for each points of the mesh by order of priority:
    • NO_LIMIT_CONDITION for all interior points or not magnetized point
    • SLAVE_LIMIT_CONDITION for all point on periodic slave boundary
    • DIRICHLET_LIMIT_CONDITION for all points on Dirichlet boundary
    • NEUMANN_LIMIT_CONDITION for all points on Neumann boundary

Note that a point on master priodic face may be a dirichlet one to impose dirichlet condition on periodical faces

References DIRICHLET_LIMIT_CONDITION, ELEMENT_POINTS, getNeighborsIndicators(), getPeriodicIndicator(), getSegmentsNumber(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), getVerticesNumber(), IS_ELEMENT_MAGNETIZED(), IS_POINT_IN_BOUNDARY(), NEUMANN_LIMIT_CONDITION, NO_LIMIT_CONDITION, null, OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, POINTS_NUMBER_PER_ELEMENT, CORE_Array< T >::setSize(), SLAVE_LIMIT_CONDITION, tBoolean, tCellFlag, tInteger, tLimitCondition, tUCInt, tUIndex, tUInteger, and tUSInt.

Referenced by IS_POINT_IN_SLAVE_PERIODIC_BOUNDARY().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ updateMagnetizedElementsNumber()

void EMM_Grid3D::updateMagnetizedElementsNumber ( )

compute the magnetized elements number form neighbors array the number of magnetized elements is returned by the method getMagnetizedElementsNumber()

References getElementsNumber(), getNeighborsIndicators(), MAGNETIZED_ELEMENT_MIN_INDICATOR, mMagnetizedElementsNumber, tCellFlag, and tUIndex.

Referenced by EMM_Test::createBox(), EMM_Test::createCube(), and New().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ DIRICHLET_LIMIT_CONDITION

const tLimitCondition EMM_Grid3D::DIRICHLET_LIMIT_CONDITION =1
static

◆ EDGE_POINTS

const tCInt EMM_Grid3D::EDGE_POINTS
static
Initial value:
={-1,-1,
-1,-1,
-1,-1,
0,4,
1,5,
-1,-1,
2,6,
3,7,
-1,-1,
-1,-1,
0,2,
1,3,
0,1,
2,3,
-1,-1,
4,6,
5,7,
4,5,
6,7,
-1,-1,
-1,-1,
}

points index of edge get the local index of the points in edge between face l & r (r>l, r,l in [0,6[ is EDGE_POINTS[2*(r+l*(l+1)/2)] and EDGE_POINTS[2*(r+l*(l+1)/2)+1]

Referenced by EMM_DisplacementFVM_STEGROperator::computeGradAlmostNullUAtFaceByTaylorExpansion(), EMM_DisplacementFVM_Interpolator::edgeMean(), and EMM_Grid3DTest::testEdges().

◆ ELEMENT

const tFlag EMM_Grid3D::ELEMENT =1
static

◆ ELEMENT_POINTS

const tBoolean EMM_Grid3D::ELEMENT_POINTS
static
Initial value:
={0,0,0,
1,0,0,
0,1,0,
1,1,0,
0,0,1,
1,0,1,
0,1,1,
1,1,1,
}

points coordinate of elements get the local coodinates of the points in {0,1} : ELEMENT_POINTS[i*3] is the 3D coordinates of the locat point at index i

Referenced by EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFVM_Interpolator::cellMean(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticTensor(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFVM_SSGROperator::computeGradAlmostNullUAtFaceByStokesIntegration(), EMM_DisplacementFVM_STEGROperator::computeGradAlmostNullUAtFaceByTaylorExpansion(), EMM_DisplacementFVM_VOGGROperator::computeGradUAtCellByOstrogradskiGreenIntegration(), EMM_DisplacementFVM_SSGROperator::computeGradUAtFaceByStokesIntegration(), EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_DisplacementFVM_Interpolator::computeNeighborCellsNumber(), EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), EMM_CondensedMassMatrix::discretize(), EMM_DisplacementFVM_Interpolator::edgeMean(), EMM_DisplacementFVM_Interpolator::faceMean(), EMM_DisplacementFVM_Interpolator::interpolateUAtFace(), EMM_DisplacementFVM_Interpolator::interpolateUAtVertex(), isFaceOnDirichletBoundary(), isFaceOnNeumannBoundary(), EMM_CanonicalMassMatrix::product(), EMM_BlockMassMatrix::product(), EMM_CanonicalMassMatrix::symmetricDot(), EMM_BlockMassMatrix::symmetricDot(), and updateLimitConditionOnPoints().

◆ FACE_POINTS

const tUCInt EMM_Grid3D::FACE_POINTS
static

◆ FACES_NUMBER_PER_ELEMENT

const tUCInt EMM_Grid3D::FACES_NUMBER_PER_ELEMENT =6
static

◆ Gamma

const tReal EMM_Object::Gamma =-1.7e11
staticinherited

◆ mAdimensionizedSegmentsSize

tReal EMM_Grid3D::mAdimensionizedSegmentsSize[3]
private

adimensionized segments size

Referenced by EMM_Grid3D(), getAdimensionizedSegmentsSize(), isCubicVolume(), and toString().

◆ mAdimensionizedVolume

tReal EMM_Grid3D::mAdimensionizedVolume
private

the adimensionized volume

Referenced by EMM_Grid3D(), and getAdimensionizedVolume().

◆ MAGNETIZED_DOMAIN_INTERIOR_INDICATOR

const tCellFlag EMM_Grid3D::MAGNETIZED_DOMAIN_INTERIOR_INDICATOR =127
static

◆ MAGNETIZED_ELEMENT_MIN_INDICATOR

const tCellFlag EMM_Grid3D::MAGNETIZED_ELEMENT_MIN_INDICATOR =64
static

◆ mBoundElement

tUIndex EMM_Grid3D::mBoundElement[FACES_NUMBER_PER_ELEMENT]
private

get the index in [0,mSegmentsNumber[k][ of the 2 bound elements at each direction

Referenced by getNeighborElement(), and updateElementTranslations().

◆ mElementsNumber

tUIndex EMM_Grid3D::mElementsNumber
private

number of elements

Referenced by EMM_Grid3D(), and saveToGEOFile().

◆ mIsDirectionPeriodic

tBoolean EMM_Grid3D::mIsDirectionPeriodic[3]
private

priodicity of direction the mesh

Referenced by EMM_Grid3D(), getNeighborElement(), isDirectionPeriodic(), and toString().

◆ mIsPeriodic

tBoolean EMM_Grid3D::mIsPeriodic
private

true if the mesh is periodic in one direction

Referenced by EMM_Grid3D(), and isPeriodic().

◆ mL

tReal EMM_Grid3D::mL
private

reference length

Referenced by adimensionize(), EMM_Grid3D(), and getReferenceLength().

◆ mLmax

tReal EMM_Grid3D::mLmax
private

max size of the cell

Referenced by adimensionize(), EMM_Grid3D(), and getMaxElementSize().

◆ mLmin

tReal EMM_Grid3D::mLmin
private

min size of the cell

Referenced by EMM_Grid3D(), and getMinElementSize().

◆ mMagnetizedElementsNumber

tUIndex EMM_Grid3D::mMagnetizedElementsNumber
private

◆ mNeighborsIndicators

SP::EMM_CellFlagArray EMM_Grid3D::mNeighborsIndicators
private

◆ mNextElementTranslation

tIndex EMM_Grid3D::mNextElementTranslation[FACES_NUMBER_PER_ELEMENT]
private

get the index translation in each direction to have the previous or next element

Referenced by getNeighborElement(), and updateElementTranslations().

◆ mPeriodicElementTranslation

tIndex EMM_Grid3D::mPeriodicElementTranslation[FACES_NUMBER_PER_ELEMENT]
private

get the index translation in each direction to have the periodic element

Referenced by getNeighborElement(), and updateElementTranslations().

◆ mSegmentsNumber

tUInteger EMM_Grid3D::mSegmentsNumber[3]
private

◆ mSegmentsSize

tReal EMM_Grid3D::mSegmentsSize[3]
private

◆ Mu0

const tReal EMM_Object::Mu0 =4*M_PI*1e-07
staticinherited

◆ mWorkIndex

tUIndex EMM_Grid3D::mWorkIndex
mutableprivate

◆ NEUMANN_LIMIT_CONDITION

const tLimitCondition EMM_Grid3D::NEUMANN_LIMIT_CONDITION =0
static

◆ NO_LIMIT_CONDITION

const tLimitCondition EMM_Grid3D::NO_LIMIT_CONDITION =2
static

◆ NULL_VALUE

const tReal EMM_Object::NULL_VALUE ={0,0,0}
staticinherited

◆ POINT

const tFlag EMM_Grid3D::POINT =0
static

◆ POINTS_NUMBER_PER_ELEMENT

const tUCInt EMM_Grid3D::POINTS_NUMBER_PER_ELEMENT =8
static

◆ POINTS_NUMBER_PER_FACE

const tUCInt EMM_Grid3D::POINTS_NUMBER_PER_FACE =4
static

◆ SLAVE_LIMIT_CONDITION

const tLimitCondition EMM_Grid3D::SLAVE_LIMIT_CONDITION =3
static

◆ TWO_POWER_FACES

const tCellFlag EMM_Grid3D::TWO_POWER_FACES ={1,2,4,8,16,32,64,128}
staticprivate

Referenced by getNeighborElement().

◆ UNMAGNETIZED_ELEMENT

const tUIndex EMM_Grid3D::UNMAGNETIZED_ELEMENT =CORE_Object::getMaxIndex()
static

◆ X

const tDimension EMM_Object::X =0
staticinherited

◆ Y

const tDimension EMM_Object::Y =1
staticinherited

◆ Z

const tDimension EMM_Object::Z =2
staticinherited

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