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 | List of all members
EMM_MultiScaleSDGrid Class Reference

This class describes the building of fields on multiscale shift dioptic grids initialized by the initialize() method. More...

#include <EMM_MultiScaleSDGrid.h>

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

Public Member Functions

 EMM_MultiScaleSDGrid (void)
 create More...
 
virtual ~EMM_MultiScaleSDGrid (void)
 destroy More...
 
virtual void initialize (const tDimension &dim, const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tBoolean &Px, const tBoolean &Py, const tBoolean &Pz, const tUInteger &l)
 set the discretization More...
 
void setZonalLevelsNumber (const tUInteger &nLevels)
 set the number of levels with are divied in zones More...
 
tUCInt getShiftZone (const tUCInt &z) const
 compute the shift zone More...
 
tBoolean computeValuesOnShiftFineGrid (const tUIndex &nCells, const tDimension &dim, const tReal *M, const tUCInt &z, tReal *Mz) const
 compute M on shift grid at zone z by periodicity More...
 
void meanValuesFromShiftFineGridToCoarseGrid (const tUIndex &nCells, const tDimension &dim, const tUCInt &z, const tReal *Mz, tReal *M) const
 compute M at zone z of the coarse grid from the shift fine grid More...
 
tBoolean resetValuesWithinShiftZone (const tUIndex &nCells, const tDimension &dim, const tUCInt &z, tReal *Mz) const
 
tBoolean addValuesFromGridToZoneFinestGrid (const tUInteger &twoPowerLp1, const tDimension &dim, const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tUCInt &z, tInteger &Sx, tInteger &Sy, tInteger &Sz, const tReal *Hz, tReal *H) const
 add values from a large grid to the finest grid by zone More...
 
tBoolean addValuesFromShiftFineGridToFinestGrid (const tUIndex &nCells, const tDimension &dim, const tUInteger &twoPowerL, const tUCInt &z, const tReal *Hz, tReal *H) const
 add the contribution of Hz from shift grid of zone z at level l to H on zone z at level 0 More...
 
tBoolean addValuesFromCoarseGridToFinestGrid (const tUIndex &nCells, const tDimension &dim, const tUInteger &twoPowerL, const tUCInt &z, const tReal *Hz, tReal *H) const
 add the contribution of H at level l reset to 0 on zone z to H on finest grid at level 0 in zone z More...
 
void meanValuesFromFineToCoarseGrid (const tUIndex &nCells, const tDimension &dim, const tReal *Mf, tReal *Ml) const
 compute the field in a corse field from its fine grid. More...
 
void completeValuesOutsideFineGridByPeriodicity (const tUIndex &nCells, const tDimension &dim, tReal *Ml) const
 complete the values of the field in the coarse grid is set from its values in its included fine grid by periodicity More...
 
tBoolean resetValuesWithinCenteredZone (const tUIndex &nCells, const tDimension &dim, tReal *Mz) const
 
void addValuesFromCoarseGridToFinestGrid (const tUIndex &nCells, const tDimension &dim, const tUInteger &twoPowerL, const tReal *Ml, tReal *Mf) const
 add the value of the field defined in coarse grid $ 2^l $ bigger than its finest grid into the field defined in its finest grid More...
 
void setToeplitzMatrix (SP::MATH_MultiLevelsToeplitzMatrix toeplitz)
 setthe toeplitz associated matrix More...
 
tUInteger computeLevelsNumber (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tBoolean &isXPeriodic, const tBoolean &isYPeriodic, const tBoolean &isZPeriodic) const
 compute the optimal levels number More...
 
const tUCIntgetFineElementsNumberPerCoarseElement () const
 get the number of elements of the fine grid per cell of the corse grid 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 per dierction More...
 
const tBooleangetPeriodicDirections () const
 get the periodicity per direction More...
 
void getPeriodicDirections (tBoolean &isXPeriodic, tBoolean &isYPeriodic, tBoolean &isZPeriodic) const
 get the periodicity per direction More...
 
const tUIntegergetLevelsNumber () const
 get the leves number More...
 
const MATH_MultiLevelsToeplitzMatrixgetToeplitzMatrix () const
 get the toeplitz matrix More...
 
EMM_RealFieldgetLevelMagnetizationField ()
 get the magnetization field at level l More...
 
EMM_RealFieldgetLevelUpMagnetizationField ()
 get the magnetization field at level l+1 More...
 
EMM_RealFieldgetZonalMagnetizationField ()
 get the magnetization field at zone More...
 
virtual void computeMultiGridExcitationField (const tUIndex &nCells, const tDimension &dim, const tReal *sigmaM, tReal *H)
 compute the magnetic excitation field by superposition of multi scale grids More...
 
virtual tString toString () const
 return the class information in a tString 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_MultiScaleSDGrid New ()
 build a new instance of class More...
 
static tUCInt getShiftZone (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tUCInt &z)
 compute the shift zone More...
 
static tBoolean isZoneEmpty (const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tUCInt &z)
 return true if the zone is empty More...
 
static tBoolean isZoneEmpty (const tUInteger N[], const tUCInt &z)
 return true if the zone is empty More...
 
static tBoolean resetBlockValues (const tDimension &dim, const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tUInteger &iMin, const tUInteger &iMax, const tUInteger &jMin, const tUInteger &jMax, const tUInteger &kMin, const tUInteger &kMax, tReal *M)
 reset the values in a block grid [iMin,iMax[x[jMin,jMax[x[kMin,kMax[ of dimension dim per point inside a grid of size [0,Nx[x[0,Ny[x[0,Nz[ 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 tBoolean SAVE_H_M_AT_LEVEL_1 =false
 
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

virtual void computeZonalDemagnetizedFieldAndNextLevelMagnetizationField (const tUInteger &twoPowerL, const tUIndex &nCells, const tDimension &dim, const tReal *Ml, tReal *Mz, tReal *Mlp1, tReal *H0) const
 compute the zonal demagnetized field added to demagnetized field at level 0 and compute the magnetization field at level l+1 More...
 
virtual void computeZonalCenteredDemagnetizedFieldFromLevel (const tUInteger &twoPowerL, const tUIndex &nCells, const tDimension &dim, tReal *Ml, tReal *Mz, tReal *H0) const
 compute the centered demagnetized field of level l outside zone anad add it to demagnetized field at level 0 More...
 
tUIntegergetLevelComputationsNumber ()
 return the number of calls of the level computations only for debug More...
 
const tUIntegergetLevelComputationsNumber () const
 return the number of calls of the level computations only for debug 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_MultiScaleSDGrid)
 

Private Attributes

tUInteger mTwoPowerZonalLevelsNumber
 
SP::CORE_RealArray mHl
 

Detailed Description

This class describes the building of fields on multiscale shift dioptic grids initialized by the initialize() method.

For building centered dyotic coarse grids, the number of segments in each direction must be 1 or a pair number.

For computing the magnetic excitation field for periodic domain, a sequence of l-dyotic grids is built: the grid of level l is included into the grid of level l+1. The grid of level l+1 is twice the size of the grid at level l in each direction. The total magnetic excitation field is built by superposition of the magnetic excitation at each level.

To improve the accuracy of the CDG method see EMM_MultiScaleCDGrid class, we compute the magnetic excitation on different zones of the domain: the finest grid are shift over the coarse grid to compute the magnetic excitation field on cells with same size either on the coarse or on the fine grid.

The method is as follow:

The step 2 computes only the contribution of the magnetization field on the zone Z at the coarse grid at level l+1 to the demagnetized field at level 0 on zone Z. The cells outside the zone z of the coarse grid at level l+1 have also an influence on the demagnetized field on the zone Z at level 0. The step 5 will take into account this influence:

The algorithm of the step 2 can be illustrated as follow :

step 1 M at level l
step 2.b Mz at zone z built by copy and by periodicity from M at level l.
step 2.c M at level l+1 built at zone z by computing of the mean of Mz within cells into coarse grid cells
step 2.d and 2.e Mz at zone z is set to 0 on common cells with the grid at level l. Computes Hz=Hd(Mz)
step 2.f only the contribution of Hz on the cells in common with shift fine grid at level l+1 and with the grid at level 0 is added to magnetic excitation field for M at level 0

The algorithm of the step 5 can be illustrated as follow :

step 3 M at level l+1
step 4 switch of the influence of the magnetization field from level l
step 5.a reset the influence of zone z of the magnetization field of step 4 and compute Hz=Hd(Mz)
step 5.c add the demagnetized field of the zone z to the demagnetized field at level 0 only in zone z
step 6 go to step 1 with the new M at level l+1 computed in step 3 for each zone

@author Stephane Despreaux
@version 1.0

Constructor & Destructor Documentation

◆ EMM_MultiScaleSDGrid()

EMM_MultiScaleSDGrid::EMM_MultiScaleSDGrid ( void  )

create

References mHl, mTwoPowerZonalLevelsNumber, and CORE_Array< tReal >::New().

Referenced by New().

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

◆ ~EMM_MultiScaleSDGrid()

EMM_MultiScaleSDGrid::~EMM_MultiScaleSDGrid ( void  )
virtual

destroy

Member Function Documentation

◆ addValuesFromCoarseGridToFinestGrid() [1/2]

void EMM_MultiScaleCDGrid::addValuesFromCoarseGridToFinestGrid ( const tUIndex nCells,
const tDimension dim,
const tUInteger twoPowerL,
const tReal Ml,
tReal Mf 
) const
inherited

add the value of the field defined in coarse grid $ 2^l $ bigger than its finest grid into the field defined in its finest grid

Parameters
[in]nCellsnumber of elements of the field
[in]dimdimension of the field
[in]twoPowerL: step size of the coarse grid with respect of the finest grid
[in]Ml: the large field values of size dim . Nx . Ny . Nz
[in,out]Mf: the fine field values of size dim . Nx . Ny . Nz

add the value of the field Ml to the value of the field Mf on the cells in common.

For each cell of the finest grid, the corresponding cell of the coarse grid is computed and the values of the field at the coarse element is added to the value of the field at the fine element.

The corresponding coarse elements to the element from the fine grid is computed such that the coarse element contains the center of the element of the fine grid by the following relation.

For each element (i,j,k) of the grid at level 0, the corresponding element (I(i),J(j),K(k)) of the grid at level l is searched such that the center of the element (i,j,k) of the grid at level 0 is inside the element (I,J,K) of the grid at level l.

The left boundary of the grid at level l is $ y_I=-N_x.2^{l-1} + 2^l.I $ when the origin is at the center of the grid

The center of the grid at level 0 is $ x_i=\frac{1}{2}+i-\frac{N_x}{2}$ when the origin is at the center of the grid

So, to search the cell of the grid at level l containing the center of the grid at level 0 leads to $ y_I \leq x_i < y_{I+1} $. We conclude that

  • $ I(i)=\displaystyle E(\frac{(2^l-1).N_x+1+2.i}{2^{l+1}}) $
  • $ J(j)=\displaystyle E(\frac{(2^l-1).N_y+1+2.j}{2^{l+1}}) $
  • $ K(k)=\displaystyle E(\frac{(2^l-1).N_z+1+2.k}{2^{l+1}}) $.

References EMM_MultiScaleGrid::getLevelComputationsNumber(), EMM_MultiScaleGrid::getSegmentsNumber(), null, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, EMM_Output::saveVTI(), tDimension, CORE_Integer::toString(), tReal, tUIndex, and tUInteger.

Referenced by EMM_MultiScaleCDGrid::completeValuesOutsideFineGridByPeriodicity(), and EMM_MultiScaleCDGrid::computeDemagnetizedExcitationFieldFromLevel().

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

◆ addValuesFromCoarseGridToFinestGrid() [2/2]

tBoolean EMM_MultiScaleSDGrid::addValuesFromCoarseGridToFinestGrid ( const tUIndex nCells,
const tDimension dim,
const tUInteger twoPowerL,
const tUCInt z,
const tReal Hz,
tReal H 
) const

add the contribution of H at level l reset to 0 on zone z to H on finest grid at level 0 in zone z

Parameters
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in]twoPowerLratio $\frac{h_l}{h_0}$ where $h_i$ is the step size at level l
[in]zzone of the finest grid to add the values
[in]Hzdemagnetized field values of size nCells x dim of the coarse grid at level l, reset to 0 on zone z
[in,out]Hmagnetic excitation values of size nCells x dim of the grid at level 0
Returns
false if the grid is empty

The algorithm consists in finding the segment of the coarse grid at level l and zone z $ [y^l_I,y^l_{I+1}[$ such that it contains the center of the cell p at the finest grid at level 0 :

$ x_p = [-Nx/2+p+1/2].h $ where h is the step size of the finest grid with p in [0,Nx/2[ for zone 0 or [Nx/2,Nx[ for zone 1

The bounds of the cell of the coarse grid at level l with step size $ 2^l $ is $ y^l_I=[- N_x . 2^{l-1} + 2^{l} i ] h $

so that we have $ \frac{N_x(2^{l} -1)+2.p+1}{2^{l+1}} \geq I > \frac{N_x(2^{l} -1)+2.p+1}{2^{l+1}} -1 $, so that :

$ I=E( \frac{ N_x . ( 2^{l} -1 )+2.p+1}{2^{l+1}}) $

References addValuesFromGridToZoneFinestGrid(), EMM_MultiScaleGrid::getSegmentsNumber(), tInteger, and tUInteger.

Referenced by computeZonalCenteredDemagnetizedFieldFromLevel(), and isZoneEmpty().

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

◆ addValuesFromGridToZoneFinestGrid()

tBoolean EMM_MultiScaleSDGrid::addValuesFromGridToZoneFinestGrid ( const tUInteger twoPowerLp1,
const tDimension dim,
const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tUCInt z,
tInteger Sx,
tInteger Sy,
tInteger Sz,
const tReal Hz,
tReal H 
) const

add values from a large grid to the finest grid by zone

Parameters
[in]twoPowerLp1: twice the size of the large grid
[in]dim: dimension of each point of the grid
[in]Nx: number of segments in the x-direction
[in]Ny: number of segments in the y-direction
[in]Nz: number of segments in the z-direction
[in]z: index of the zone
[in,out]Sx: grid translator on x-coordinate
[in,out]Sy: grid translator on y-coordinate
[in,out]Sz: grid translator on z-coordinate
[in]Hz: demagnetized field on large grid in zone
[in]H: demagnetized field on finest grid
Returns
false if the zone is empty

Note $ x_p $ is the center of the cell of the finest grid $ p \in [0,N_x[ $

we have $ x_p= ( -\frac{N_x}{2} +p+\frac{1}{2} ) \cdot h \in [y^l_i,y^l_{i+1}[ $ where

  • h is the step size of the finest grid
  • $ p \in [0,N_x/2[ $ for zone 0 and $ p \in [N_x/2,N_x[ $ for zone 1.
  • $ y^l_i=[-S + 2^{l}.i ) \cdot h $

So we have $ i= E( \frac{2.p-N+2.S+1)} {2^{l+1}} ) $

and S:=2S-N+1.

we build : H[i]+=Hz[p]

References EMM_MultiScaleGrid::getLevelComputationsNumber(), mHl, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tDimension, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by addValuesFromCoarseGridToFinestGrid(), addValuesFromShiftFineGridToFinestGrid(), and isZoneEmpty().

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

◆ addValuesFromShiftFineGridToFinestGrid()

tBoolean EMM_MultiScaleSDGrid::addValuesFromShiftFineGridToFinestGrid ( const tUIndex nCells,
const tDimension dim,
const tUInteger twoPowerL,
const tUCInt z,
const tReal Hz,
tReal H 
) const

add the contribution of Hz from shift grid of zone z at level l to H on zone z at level 0

Parameters
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in]twoPowerL: ratio $\frac{h_l}{h_0}$ where $h_l$ is the step sizes at level l
[in]zzone of the finest grid to add the values
[in]Hzmagnetic excitation values of size nCells x dim at zone z of the grid at level l
[in,out]Hmagnetic excitation values of size nCells x dim of the grid at level 0
Returns
false if the grid is empty

only the contribution of Hz on the cells in common with shift fine grid at level l+1 and with the grid at level 0 is added to magnetic excitation field for M at level 0

The algorithm consists in finding the segment of the shift fine grid at level l and zone z $ [y^l_I,y^l_{I+1}[$ such that it contains the center of the cell p at the finest grid at level 0 :

$ x_p = [-Nx/2+p+1/2].h $ where h is the step size with p in [0,Nx/2[ for zone 0 or [Nx/2,Nx[ for zone 1

The bounds of the cell of the shift fine grid at zone z and at level l (step size is $ 2^{l} h $ ) is is

  • $ y^l_I=[- N_x . 2^{l} + 2^{l} i ] h $ for zone 0
  • $ y^l_I=[ 2^{l} i ] h $ for zone 1
  • $ y^l_I=[- N_x . 2^{l}.1_{z=0} + 2^{l} i ] h $ for zone z

so that we have $ \frac{2.N_x(2^{l}.1_{z=0} -1/2)+2.p+1}{2^{l+1}} \geq I > \frac{2.N_x(2^{l}.1_{z=0} -1/2)+2.p+1}{2^{l+1}} -1 $, so that :

$ I=E( \frac{ N_x . ( 2^{l+1}.1_{z=0} -1 )+2.p+1}{2^{l+1}}) $

References addValuesFromGridToZoneFinestGrid(), EMM_MultiScaleGrid::getSegmentsNumber(), tInteger, tUCInt, and tUInteger.

Referenced by computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), and isZoneEmpty().

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

◆ completeValuesOutsideFineGridByPeriodicity()

void EMM_MultiScaleCDGrid::completeValuesOutsideFineGridByPeriodicity ( const tUIndex nCells,
const tDimension dim,
tReal Ml 
) const
inlineinherited

complete the values of the field in the coarse grid is set from its values in its included fine grid by periodicity

Parameters
[in]nCellsnumber of elements of the mesh
[in]dimdimension of the field
[in,out]Ml: the coarse field values of size dim . nCells

Step 1 M at level l
Step 2 M at level l+1

If there is periodicity on x, we have:

  • $ M^1_{10}=M^1_{12}$
  • $ M^1_{20}=M^1_{22}$
  • $ M^1_{13}=M^1_{11}$
  • $ M^1_{23}=M^1_{21}$

If there is periodicity on y, we have:

  • $ M^1_{01}=M^1_{21}$
  • $ M^1_{02}=M^1_{22}$
  • $ M^1_{31}=M^1_{11}$
  • $ M^1_{32}=M^1_{12}$

    If there is periodicity on x and y, we have in addition:

  • $ M^1_{00}=M^1_{22}$
  • $ M^1_{33}=M^1_{11}$
  • $ M^1_{03}=M^1_{21}$
  • $ M^1_{30}=M^1_{12}$

References EMM_MultiScaleCDGrid::addValuesFromCoarseGridToFinestGrid(), EMM_MultiScaleCDGrid::completeValuesOutsideFineGridByPeriodicityByExclusion(), EMM_MultiScaleCDGrid::resetValuesWithinCenteredZone(), tBoolean, tDimension, tReal, tUIndex, and tUInteger.

Referenced by EMM_MultiScaleCDGrid::computeMagnetizationFieldAtNextLevel().

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}

◆ computeLevelsNumber()

tUInteger EMM_MultiScaleGrid::computeLevelsNumber ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tBoolean isXPeriodic,
const tBoolean isYPeriodic,
const tBoolean isZPeriodic 
) const
inherited

compute the optimal levels number

Parameters
Nxnumber of segments along x-direction
Nynumber of segments along y-direction
Nznumber of segments along z-direction
isXPeriodictrue if the x-direction is periodic
isYPeriodictrue if the y-direction is periodic
isZPeriodictrue if the z-direction is periodic

The level number per direction $ l_d $ is such that if $ N_d=2^l_d $ If the domain is not periodic the level number is 0

Returns
the minimum of the level number for all directions

References CORE_Object::getMaxUInteger(), tBoolean, tUInteger, and tUSInt.

Referenced by EMM_MultiScaleGrid::setToeplitzMatrix().

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

◆ computeMultiGridExcitationField()

void EMM_MultiScaleGrid::computeMultiGridExcitationField ( const tUIndex nCells,
const tDimension dim,
const tReal sigmaM,
tReal H 
)
virtualinherited

compute the magnetic excitation field by superposition of multi scale grids

Parameters
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in]sigmaMmagnetization values of size nCells x dim not necessarly normalized : sigmaM=sigma.M
[out]Hreturn excitation magnetic values of size nCells x dim

The following algorithm needs 3 temporary fields $ M_{l+1} $ , $ M_l $ and $ M_z $ for computing by zone

Computes the magnetic excitation field as follow:

Reimplemented in EMMG_SLSDXPeriodicMultiScale, and EMMG_SLRPPeriodicMultiScale.

References EMM_MultiScaleGrid::computeZonalCenteredDemagnetizedFieldFromLevel(), EMM_MultiScaleGrid::computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), EMM_MultiScaleGrid::getLevelMagnetizationField(), EMM_MultiScaleGrid::getLevelsNumber(), EMM_MultiScaleGrid::getLevelUpMagnetizationField(), EMM_MultiScaleGrid::getToeplitzMatrix(), EMM_MultiScaleGrid::getZonalMagnetizationField(), EMM_MultiScaleGrid::mLevelComputationsNumber, EMM_MultiScaleGrid::mN, null, EMM_MultiScaleGrid::SAVE_H_M_AT_LEVEL_1, EMM_Output::saveVTI(), CORE_Integer::toString(), tReal, tUIndex, tUInteger, and MATH_MultiLevelsToeplitzMatrix::vectorProduct().

Referenced by EMM_MultiScaleGrid::getZonalMagnetizationField().

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

◆ computeValuesOnShiftFineGrid()

tBoolean EMM_MultiScaleSDGrid::computeValuesOnShiftFineGrid ( const tUIndex nCells,
const tDimension dim,
const tReal M,
const tUCInt z,
tReal Mz 
) const

compute M on shift grid at zone z by periodicity

Parameters
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in]Mmagnetization values of size nCells x dim on grid at level l
[in]zzone of the grid at level l
[out]Mz: magnetization values of size nCells x dim on shift grid at zone z of grid at level l
Returns
false if the volume of the zone z is null

Builds Mz on shift grid at zone z by copping values and by periodicity of M within the centered grid.

Mz at zone z built by copy and by periodicity from M at level l
*

The algorithm is has follow:

  • the centered grid indices varies within $ [0,N_x[ \times [0,N_y[ \times [0,N_z[ $
  • computes the bounds of the shift grid at zone z: $ [i_{min},i_{max}[ \times [j_{min},j_{max}[ \times [k_{min},k_{max}[ $. for zone 0 the index of the shift grid is [-Nx/2,Nx/2[ or [Nx/2,Nx[ for zone 1
  • if the zone is empty, return false.
  • for all cells p inside the shift grid
    • if the cell p is inside the centered grid, $ M_z(p)=M(p) $
    • if the cell p is outside the centered grid, computes the corresponding periodical cell q within the centered grid and $ M_z(p)=M(q) $; If the periodical cell q does not exists, $ M_z(p)=0 $

References EMM_MultiScaleGrid::getPeriodicDirections(), EMM_MultiScaleGrid::getSegmentsNumber(), isZoneEmpty(), null, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tBoolean, tDimension, tInteger, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), and isZoneEmpty().

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

◆ computeZonalCenteredDemagnetizedFieldFromLevel()

void EMM_MultiScaleSDGrid::computeZonalCenteredDemagnetizedFieldFromLevel ( const tUInteger twoPowerL,
const tUIndex nCells,
const tDimension dim,
tReal Ml,
tReal Mz,
tReal H0 
) const
protectedvirtual

compute the centered demagnetized field of level l outside zone anad add it to demagnetized field at level 0

Parameters
[in]twoPowerL: ratio size of the grid at level l
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in,out]Mlmagnetization values of size nCells x dim at level l
[out]Mzmagnetization at zone . Working field
[in,out]H0: demagnetized excitation field at level 0

Reimplemented from EMM_MultiScaleCDGrid.

References addValuesFromCoarseGridToFinestGrid(), EMM_MultiScaleCDGrid::computeZonalCenteredDemagnetizedFieldFromLevel(), EMM_MultiScaleGrid::getLevelComputationsNumber(), EMM_MultiScaleGrid::getSegmentsNumber(), EMM_MultiScaleGrid::getToeplitzMatrix(), isZoneEmpty(), mHl, mTwoPowerZonalLevelsNumber, EMM_MultiScaleCDGrid::resetValuesWithinCenteredZone(), resetValuesWithinShiftZone(), EMM_Output::saveVTI(), CORE_Integer::toString(), tReal, tUCInt, tUInteger, and MATH_MultiLevelsToeplitzMatrix::vectorProduct().

Referenced by isZoneEmpty().

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

◆ computeZonalDemagnetizedFieldAndNextLevelMagnetizationField()

void EMM_MultiScaleSDGrid::computeZonalDemagnetizedFieldAndNextLevelMagnetizationField ( const tUInteger twoPowerL,
const tUIndex nCells,
const tDimension dim,
const tReal Ml,
tReal Mz,
tReal Mlp1,
tReal H0 
) const
protectedvirtual

compute the zonal demagnetized field added to demagnetized field at level 0 and compute the magnetization field at level l+1

Parameters
[in]twoPowerL: ratio size of the grid at level l
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in]Mlmagnetization at level l
[out]Mzmagnetization at zone . Working field
[in,out]Mlp1magnetization values of size nCells x dim at level l+1
[in,out]H0: demagnetized excitation field at level 0

Reimplemented from EMM_MultiScaleCDGrid.

References addValuesFromShiftFineGridToFinestGrid(), computeValuesOnShiftFineGrid(), EMM_MultiScaleCDGrid::computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), EMM_MultiScaleGrid::getLevelComputationsNumber(), EMM_MultiScaleGrid::getSegmentsNumber(), getShiftZone(), EMM_MultiScaleGrid::getToeplitzMatrix(), meanValuesFromShiftFineGridToCoarseGrid(), mHl, mTwoPowerZonalLevelsNumber, resetValuesWithinShiftZone(), EMM_Output::saveVTI(), tInteger, CORE_Integer::toString(), tReal, tUCInt, tUInteger, and MATH_MultiLevelsToeplitzMatrix::vectorProduct().

Referenced by isZoneEmpty().

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

◆ 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

◆ getEpsilon()

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

get the epsilon value for T type

Returns
the epsilon value for T type

◆ getFineElementsNumberPerCoarseElement()

const tUCInt& EMM_MultiScaleGrid::getFineElementsNumberPerCoarseElement ( ) const
inlineinherited

get the number of elements of the fine grid per cell of the corse grid

Returns
the number of elements of the fine grid per cell of the corse grid

References EMM_MultiScaleGrid::mFineElementsNumberPerCoarseElement.

Referenced by EMM_MultiScaleCDGrid::meanValuesFromFineToCoarseGrid(), and meanValuesFromShiftFineGridToCoarseGrid().

Here is the caller graph for this function:

◆ 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

◆ getLevelComputationsNumber() [1/2]

tUInteger& EMM_MultiScaleGrid::getLevelComputationsNumber ( )
inlineprotectedinherited

return the number of calls of the level computations only for debug

Returns
the number of calls of the level computations only for debug

References EMM_MultiScaleGrid::mLevelComputationsNumber.

Referenced by EMM_MultiScaleCDGrid::addValuesFromCoarseGridToFinestGrid(), addValuesFromGridToZoneFinestGrid(), EMM_MultiScaleCDGrid::computeDemagnetizedExcitationFieldFromLevel(), computeZonalCenteredDemagnetizedFieldFromLevel(), and computeZonalDemagnetizedFieldAndNextLevelMagnetizationField().

Here is the caller graph for this function:

◆ getLevelComputationsNumber() [2/2]

const tUInteger& EMM_MultiScaleGrid::getLevelComputationsNumber ( ) const
inlineprotectedinherited

return the number of calls of the level computations only for debug

Returns
the number of calls of the level computations only for debug

References EMM_MultiScaleGrid::mLevelComputationsNumber, EMM_MultiScaleGrid::toString(), and tString.

Here is the call graph for this function:

◆ getLevelMagnetizationField()

EMM_RealField& EMM_MultiScaleGrid::getLevelMagnetizationField ( )
inlineinherited

get the magnetization field at level l

Returns
the magnetiaztion field at level l

Referenced by EMM_MultiScaleGrid::computeMultiGridExcitationField().

Here is the caller graph for this function:

◆ getLevelsNumber()

const tUInteger& EMM_MultiScaleGrid::getLevelsNumber ( ) const
inlineinherited

◆ getLevelUpMagnetizationField()

EMM_RealField& EMM_MultiScaleGrid::getLevelUpMagnetizationField ( )
inlineinherited

get the magnetization field at level l+1

Returns
the magnetiaztion field at level l+1

Referenced by EMM_MultiScaleGrid::computeMultiGridExcitationField().

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:

◆ 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:

◆ 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:

◆ 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:

◆ 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:

◆ getOut()

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

get the output

Returns
the shared pointer to the output stream

References CORE_Object::OUT.

◆ getPeriodicDirections() [1/2]

const tBoolean* EMM_MultiScaleGrid::getPeriodicDirections ( ) const
inlineinherited

◆ getPeriodicDirections() [2/2]

void EMM_MultiScaleGrid::getPeriodicDirections ( tBoolean isXPeriodic,
tBoolean isYPeriodic,
tBoolean isZPeriodic 
) const
inlineinherited

get the periodicity per direction

Parameters
isXPeriodic: true if the x-direction is periodic
isYPeriodic: true if the y-direction is periodic
isZPeriodic: true if the z-direction is periodic

◆ 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

◆ getSegmentsNumber() [1/2]

void EMM_MultiScaleGrid::getSegmentsNumber ( tUInteger Nx,
tUInteger Ny,
tUInteger Nz 
) const
inlineinherited

get the segments number in all directions

Parameters
Nxthe segments number in x-direction
Nythe segments number in y-direction
Nzthe segments number in z-direction

◆ getSegmentsNumber() [2/2]

const tUInteger* EMM_MultiScaleGrid::getSegmentsNumber ( ) const
inlineinherited

◆ 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

◆ getShiftZone() [1/2]

static tUCInt EMM_MultiScaleSDGrid::getShiftZone ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tUCInt z 
)
inlinestatic

compute the shift zone

Parameters
[in]Nx: number of segments in the x-direction
[in]Ny: number of segments in the y-direction
[in]Nz: number of segments in the z-direction
[in]z: zone to compute the shift zone
Returns
the shift zone

| zone | shift zone | | 0 | 7 | | 1 | 6 | | 2 | 5 | | 3 | 4 | | 4 | 3 | | 5 | 2 | | 6 | 1 | | 7 | 0 |

References isZoneEmpty(), and tUCInt.

Referenced by computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), and getShiftZone().

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

◆ getShiftZone() [2/2]

tUCInt EMM_MultiScaleSDGrid::getShiftZone ( const tUCInt z) const
inline

compute the shift zone

Parameters
[in]z: zone to compute the shift zone
Returns
the shift zone

| zone | shift zone | | 0 | 7 | | 1 | 6 | | 2 | 5 | | 3 | 4 | | 4 | 3 | | 5 | 2 | | 6 | 1 | | 7 | 0 |

References EMM_MultiScaleGrid::getSegmentsNumber(), getShiftZone(), and tUInteger.

Here is the call graph for this function:

◆ 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 EMM_Grid3D::updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ getToeplitzMatrix()

const MATH_MultiLevelsToeplitzMatrix& EMM_MultiScaleGrid::getToeplitzMatrix ( ) const
inlineinherited

◆ getTypeName()

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

get type name

Returns
the type name of the class

References tString.

◆ getZonalMagnetizationField()

EMM_RealField& EMM_MultiScaleGrid::getZonalMagnetizationField ( )
inlineinherited

◆ initialize()

void EMM_MultiScaleSDGrid::initialize ( const tDimension dim,
const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tBoolean Px,
const tBoolean Py,
const tBoolean Pz,
const tUInteger l 
)
virtual

set the discretization

Parameters
dim: dimension of the point
Nx: number of segements along x-direction
Ny: number of segements along y-direction
Nz: number of segements along z-direction
Px: periodicity along x-direction
Py: periodicity along y-direction
Pz: periodicity along z-direction
l: number of levels
  • initialize the fine grid bounds with a corse grid
  • initialise the size of the M fields.
  • compute the number of elements from the fine grid included in one element of the coarse grid.

Reimplemented from EMM_MultiScaleCDGrid.

References EMM_MultiScaleGrid::getZonalMagnetizationField(), EMM_MultiScaleCDGrid::initialize(), mTwoPowerZonalLevelsNumber, CORE_Object::out(), CORE_Out::println(), EMM_RealField::setDimension(), EMM_RealField::setSize(), and CORE_Integer::toString().

Referenced by New().

Here is the call graph for this function:
Here is the caller 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:

◆ 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:

◆ isZoneEmpty() [1/2]

static tBoolean EMM_MultiScaleSDGrid::isZoneEmpty ( const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tUCInt z 
)
inlinestatic

return true if the zone is empty

Parameters
[in]Nx: number of segments in the x-direction
[in]Ny: number of segments in the y-direction
[in]Nz: number of segments in the z-direction
[in]z: zone to compute the shift zone
Returns
true if the zone is empty

the zone $ z= \sum_{i=0}^{i=2} z_i 2^i $ is empty if it exists i such that $ z_i=0 $ and $ N_i /2=0 $

Referenced by computeValuesOnShiftFineGrid(), computeZonalCenteredDemagnetizedFieldFromLevel(), getShiftZone(), and EMM_DemagnetizedPeriodicalTest::shrinkingTest().

Here is the caller graph for this function:

◆ isZoneEmpty() [2/2]

static tBoolean EMM_MultiScaleSDGrid::isZoneEmpty ( const tUInteger  N[],
const tUCInt z 
)
inlinestatic

return true if the zone is empty

Parameters
[in]N: number of segments per direction
[in]z: zone to compute the shift zone
Returns
true if the zone is empty

the zone $ z= \sum_{i=0}^{i=2} z_i 2^i $ is empty if it exists i such that $ z_i=0 $ and $ N_i /2=0 $

References addValuesFromCoarseGridToFinestGrid(), addValuesFromGridToZoneFinestGrid(), addValuesFromShiftFineGridToFinestGrid(), computeValuesOnShiftFineGrid(), computeZonalCenteredDemagnetizedFieldFromLevel(), computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), meanValuesFromShiftFineGridToCoarseGrid(), resetValuesWithinShiftZone(), tBoolean, tDimension, tInteger, tReal, tUCInt, tUIndex, and tUInteger.

Here is the call graph for this function:

◆ meanValuesFromFineToCoarseGrid()

void EMM_MultiScaleCDGrid::meanValuesFromFineToCoarseGrid ( const tUIndex nCells,
const tDimension dim,
const tReal Mf,
tReal Ml 
) const
inherited

compute the field in a corse field from its fine grid.

Parameters
[in]nCellsnumber of cells of the mesh
[in]dimdimension of the field
[in]Mf: the finest field values of size dim . Nx . Ny . Nz
[out]Ml: the coarse field values of size dim . Nx . Ny . Nz
Step 1 the finest grid with Nx=Ny=4 and Nz=1
Step 2 value of the field in the coarse grid is in green value/td>

the values of the field is meaned in the common part of the both grids as follow:

  • $ M^1_{11}=\displaystyle \frac{1}{4}\left ( M^0_{00}+M^0_{01}+M^0_{10}+M^0_{11}\right )$
  • $ M^1_{12}=\displaystyle \frac{1}{4}\left ( M^0_{10}+M^0_{11}+M^0_{20}+M^0_{21}\right )$
  • $ M^1_{21}=\displaystyle \frac{1}{4}\left ( M^0_{02}+M^0_{03}+M^0_{12}+M^0_{13}\right )$
  • $ M^1_{22}=\displaystyle \frac{1}{4}\left ( M^0_{22}+M^0_{23}+M^0_{32}+M^0_{33}\right )$

The values outside the fine grid $ M^1 $ are set to 0 by defaut.

For each element of the fine grid (i,j,k), the corresponding element (I(i),J(j),K(k)) of the coarse grid is searched such that the center of the element (i,j,k) of the finest grid is inside the element (I,J,K) of the coarse grid.

The left boundary of the coarse grid is $ y_I=-N_x+2.I $ when the origin is at the center of the grid

The center of the cell i of the fine grid is $ x_i=\frac{1}{2}+i-\frac{N_x}{2}$ when the origin is at the center of the grid

So, to search the cell of the coarse grid containing the center of the fine grid leads to $ y_I \leq x_i < y_{I+1} $. We conclude that

  • $ I(i)=\displaystyle E(\frac{N_x+1+2.i}{4}) $
  • $ J(j)=\displaystyle E(\frac{N_y+1+2.j}{4}) $
  • $ K(k)=\displaystyle E(\frac{N_z+1+2.k}{4}) $.

So than $ M_l(I,J,K)= \sum_{i,j,k} M_f(i,j,k) $ for all (i,j,k) such that I(i)=I, J(j)=J and K(k)=k

In the reverse way, we have $ i \in \{ E_{N_x}(\frac{4.I-N_x-1+4}{2}) , E_{N_x}(\frac{4.I-N_x-1+2}{2} \} $ where $ E_{N_x}(x)=null $ for $ x <0 $ or $ x\geq N_x$.

References EMM_MultiScaleGrid::getFineElementsNumberPerCoarseElement(), EMM_MultiScaleGrid::getPeriodicDirections(), EMM_MultiScaleGrid::getSegmentsNumber(), OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tBoolean, tDimension, tInteger, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by EMM_MultiScaleCDGrid::computeMagnetizationFieldAtNextLevel(), and EMM_MultiScaleCDGrid::New().

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

◆ meanValuesFromShiftFineGridToCoarseGrid()

void EMM_MultiScaleSDGrid::meanValuesFromShiftFineGridToCoarseGrid ( const tUIndex nCells,
const tDimension dim,
const tUCInt z,
const tReal Mz,
tReal M 
) const

compute M at zone z of the coarse grid from the shift fine grid

Parameters
[in]nCells: number of cells of the mesh
[in]dimdimension of each point of the mesh
[in]zzone of the grid
[in]Mzmagnetization values of size nCells x dim at zone z of the fine grid
[out]Mmagnetization values of size nCells x dim at zone z of the coarse grid

M at level l+1 built at zone z by computing of the mean of Mz within cells into coarse grid cells

  • $ M_{00}=\displaystyle \frac{1}{4}\left ( Mz_{22}+Mz_{23}+Mz_{32}+Mz_{33}\right )$
  • $ M_{01}=\displaystyle \frac{1}{4}\left ( Mz_{20}+Mz_{21}+Mz_{30}+Mz_{31}\right )$
  • $ M_{10}=\displaystyle \frac{1}{4}\left ( Mz_{02}+Mz_{03}+Mz_{12}+Mz_{13}\right )$
  • $ M_{11}=\displaystyle \frac{1}{4}\left ( Mz_{00}+Mz_{01}+Mz_{10}+Mz_{11}\right )$

    For each element of the shift fine grid (i,j,k), the corresponding element (I(i),J(j),K(k)) of the coarse grid is searched such that the center of the element (i,j,k) of the shift fine grid is inside the element (I,J,K) of the coarse grid.

The left boundary of the coarse grid is $ y_I=-N_x+2.I $ when the origin is at the center of the coarse grid and I in [0,Nx[ and step size of 1.

The center of the cell i of the shift fine grid is

  • for zone 0 : $ x_i=\frac{1}{2}+i-N_x, \forall i \in [0,N_x[$
  • for zone 1 : $ x_i=\frac{1}{2}+i, \forall i in [0,Nx[$
  • for all zone : $ x_i=\frac{1}{2}+i - I^z_, \forall i \in [0,N_x[, I^z=N_x 1_{z=0} $

So, to search the cell of the coarse grid containing the center of cell of the shift fine grid leads to $ y_I \leq x_i < y_{I+1} $. We conclude that

  • $ I(i)=\displaystyle E(\frac{2.(N_x-I^z+i)+1}{4}) $
  • $ J(j)=\displaystyle E(\frac{2.(N_y-J^z+j)+1}{4}) $
  • $ K(k)=\displaystyle E(\frac{2(.N_z-K^z+k)+1}{4}) $.

So than $ M_l(I,J,K)= \sum_{i,j,k} M_f(i,j,k) $ for all (i,j,k) such that I(i)=I, J(j)=J and K(k)=k

In the reverse way, we have $ i \in \{ 2.I-(N_x-I^z) , 2.I-(N_x-I^z)+1$ when I in [0,Nx/2[ or [Nx/2,Nx[ depending on zone.

  • for I in [0,Nx/2[,
    • i=2.I, in [0,Nx[
    • i=2.I+1 in [0,Nx[ for I in [Nx/2,Nx[
    • i= 2.I - 2.(Nx/2) in [0,Nx[
    • i= 2.I - 2.(Nx/2) + 1 in [0,Nx[

Note than 2.(Nx/2)=0 for Nx=1 which is a special case

The number w of fine grid cells in one cell of the corase grid is either 1 (segments number in each direction is 1) ,2 (only 1 direction with more than 2 segments) ,4 (only 1 direction with 1 segement) ,8 (all directions has more than 2 segments)

We have $ M(I) = \sum_{p=0}^{p=w-1} \frac{1}{w}. M(i(p)) $ where i(p) is the index of the p-th cell in the shift fine grid.

References EMM_MultiScaleGrid::getFineElementsNumberPerCoarseElement(), EMM_MultiScaleGrid::getSegmentsNumber(), null, OMP_GET_THREAD_ID, OMP_GET_THREADS_NUMBER, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tDimension, tInteger, tReal, tUCInt, tUIndex, tUInteger, and tUSInt.

Referenced by computeZonalDemagnetizedFieldAndNextLevelMagnetizationField(), and isZoneEmpty().

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

◆ New()

static SP::EMM_MultiScaleSDGrid EMM_MultiScaleSDGrid::New ( )
inlinestatic

build a new instance of class

Returns
a shared pointer to This

References EMM_MultiScaleSDGrid(), initialize(), tBoolean, tDimension, and tUInteger.

Referenced by EMM_DemagnetizedPeriodicalTest::multiSDGridScaleTest(), and EMMG_ClassFactory::NewInstance().

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(), initialize(), EMM_MatterField::loadFromANIFile(), EMM_AnisotropyDirectionsField::loadFromFile(), EMM_Matter::loadFromFile(), EMM_Grid3D::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(), EMM_Grid3D::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:

◆ resetBlockValues()

tBoolean EMM_MultiScaleGrid::resetBlockValues ( const tDimension dim,
const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tUInteger iMin,
const tUInteger iMax,
const tUInteger jMin,
const tUInteger jMax,
const tUInteger kMin,
const tUInteger kMax,
tReal M 
)
staticinherited

reset the values in a block grid [iMin,iMax[x[jMin,jMax[x[kMin,kMax[ of dimension dim per point inside a grid of size [0,Nx[x[0,Ny[x[0,Nz[

Parameters
[in]dimdimension of point
[in]Nx: size of the grid in the x direction
[in]Ny: size of the grid in the y direction
[in]Nz: size of the grid in the z direction
[in]iMinbounds if the block grid in [0,Nx[
[in]iMaxbounds if the block grid in [0,Nx[
[in]jMinbounds if the block grid in [0,Ny[
[in]jMaxbounds if the block grid in [0,Ny[
[in]kMinbounds if the block grid in [0,Nz[
[in]kMaxbounds if the block grid in [0,Nz[
[in,out]M: field to reset values within the block grid
Returns
false if the block is empty

M is set to 0 on all points inside the grid [iMin,iMax[x[jMin,jMax[x[kMin,kMax[

References null, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tReal, tUIndex, and tUInteger.

Referenced by EMM_MultiScaleGrid::getZonalMagnetizationField(), EMM_MultiScaleCDGrid::resetValuesWithinCenteredZone(), and resetValuesWithinShiftZone().

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:

◆ resetValuesWithinCenteredZone()

tBoolean EMM_MultiScaleCDGrid::resetValuesWithinCenteredZone ( const tUIndex nCells,
const tDimension dim,
tReal Mz 
) const
inherited

◆ resetValuesWithinShiftZone()

tBoolean EMM_MultiScaleSDGrid::resetValuesWithinShiftZone ( const tUIndex nCells,
const tDimension dim,
const tUCInt z,
tReal Mz 
) const

◆ 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:

◆ 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.

◆ 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:

◆ setToeplitzMatrix()

void EMM_MultiScaleGrid::setToeplitzMatrix ( SP::MATH_MultiLevelsToeplitzMatrix  toeplitz)
inlineinherited

setthe toeplitz associated matrix

Parameters
toeplitzthe toeplitz matrix to set

References EMM_MultiScaleGrid::computeLevelsNumber(), EMM_MultiScaleGrid::initialize(), tBoolean, tDimension, and tUInteger.

Here is the call graph for this function:

◆ setZonalLevelsNumber()

void EMM_MultiScaleSDGrid::setZonalLevelsNumber ( const tUInteger nLevels)
inline

set the number of levels with are divied in zones

Parameters
[in]nLevels: number of levels with are divided in zones
  • if nLevels=0 => method is identically to CDG
  • if nLevels >=1: SDG method on all levels l such that l <=nLevels.

◆ SP_OBJECT()

EMM_MultiScaleSDGrid::SP_OBJECT ( EMM_MultiScaleSDGrid  )
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_MultiScaleGrid::toString ( ) const
virtualinherited

return the class information in a tString

Reimplemented from CORE_Object.

Reimplemented in EMMG_SLPeriodicMultiScale.

References CORE_Object::getIdentityString().

Referenced by EMM_MultiScaleGrid::getLevelComputationsNumber().

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

Member Data Documentation

◆ Gamma

const tReal EMM_Object::Gamma =-1.7e11
staticinherited

◆ mHl

SP::CORE_RealArray EMM_MultiScaleSDGrid::mHl
private

◆ mTwoPowerZonalLevelsNumber

tUInteger EMM_MultiScaleSDGrid::mTwoPowerZonalLevelsNumber
private

◆ Mu0

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

◆ NULL_VALUE

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

◆ SAVE_H_M_AT_LEVEL_1

tBoolean EMM_MultiScaleGrid::SAVE_H_M_AT_LEVEL_1 =false
staticinherited

◆ 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: