1 #ifndef EMM_MultiScaleSDGrid_H 2 #define EMM_MultiScaleSDGrid_H 153 inline static SP::EMM_MultiScaleSDGrid
New() {
191 mTwoPowerZonalLevelsNumber=pow(2,nLevels);
255 return ! ( ( ( ((z) & 1) ==1 ) || (Nx/2!=0)) &&
256 ( ( ((z) & 2) ==2 ) || (Ny/2!=0)) &&
257 ( ( ((z) & 4) ==4 ) || (Nz/2!=0)) );
271 return ! ( ( ( ((z) & 1) ==1 ) || (N[0]/2!=0)) &&
272 ( ( ((z) & 2) ==2 ) || (N[1]/2!=0)) &&
273 ( ( ((z) & 4) ==4 ) || (N[2]/2!=0)) );
static SP::EMM_MultiScaleSDGrid New()
build a new instance of class
Definition: EMM_MultiScaleSDGrid.h:153
static tUCInt getShiftZone(const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tUCInt &z)
compute the shift zone
Definition: EMM_MultiScaleSDGrid.h:219
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
Definition: EMM_MultiScaleSDGrid.cpp:287
static tBoolean isZoneEmpty(const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tUCInt &z)
return true if the zone is empty
Definition: EMM_MultiScaleSDGrid.h:252
const tUInteger * getSegmentsNumber() const
get the segments number per dierction
Definition: EMM_MultiScaleGrid.h:198
void setZonalLevelsNumber(const tUInteger &nLevels)
set the number of levels with are divied in zones
Definition: EMM_MultiScaleSDGrid.h:190
#define tUInteger
Definition: types.h:91
#define tUCInt
Definition: types.h:21
#define tBoolean
Definition: types.h:139
tUCInt getShiftZone(const tUCInt &z) const
compute the shift zone
Definition: EMM_MultiScaleSDGrid.h:239
#define tDimension
Definition: EMM_Types.h:10
This class describes the building of fields on multiscale shift dioptic grids initialized by the init...
Definition: EMM_MultiScaleSDGrid.h:120
virtual ~EMM_MultiScaleSDGrid(void)
destroy
Definition: EMM_MultiScaleSDGrid.cpp:26
SP_OBJECT(EMM_MultiScaleSDGrid)
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
Definition: EMM_MultiScaleSDGrid.cpp:47
DEFINE_SPTR(EMM_MultiScaleSDGrid)
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
Definition: EMM_MultiScaleSDGrid.cpp:30
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
Definition: EMM_MultiScaleSDGrid.cpp:502
CORE_Array< tReal > CORE_RealArray
Definition: CORE_Array.h:1075
tBoolean resetValuesWithinShiftZone(const tUIndex &nCells, const tDimension &dim, const tUCInt &z, tReal *Mz) const
Definition: EMM_MultiScaleSDGrid.cpp:227
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 magnetiza...
Definition: EMM_MultiScaleSDGrid.cpp:827
static tBoolean isZoneEmpty(const tUInteger N[], const tUCInt &z)
return true if the zone is empty
Definition: EMM_MultiScaleSDGrid.h:268
#define tUIndex
Definition: types.h:126
EMM_MultiScaleSDGrid(void)
create
Definition: EMM_MultiScaleSDGrid.cpp:16
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 ...
Definition: EMM_MultiScaleSDGrid.cpp:739
This class describes the building of fields on multiscale centered dioptic grids initialized by the i...
Definition: EMM_MultiScaleCDGrid.h:127
SP::CORE_RealArray mHl
Definition: EMM_MultiScaleSDGrid.h:128
tUInteger mTwoPowerZonalLevelsNumber
Definition: EMM_MultiScaleSDGrid.h:125
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 ...
Definition: EMM_MultiScaleSDGrid.cpp:925
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 ...
Definition: EMM_MultiScaleSDGrid.cpp:794
#define tReal
Definition: types.h:118
#define tInteger
Definition: types.h:90
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:141