C++ main module for emicrom Package  1.0
EMMG_SLRPPeriodicMultiScale.h
Go to the documentation of this file.
1 #ifndef EMMG_SLRPPeriodicMultiScale_H
2 #define EMMG_SLRPPeriodicMultiScale_H
3 
5 
6 
18 
20  // ATTRIBUTES
21 
22 private:
23 
24 
25  SV::EMMG_RealField mLevelMagnetisms;
26  SV::EMMG_RealField mZoneMagnetisms;
27  SV::EMMG_RealField mNearZoneMagnetisms;
28 
29 
30 protected:
31  // METHODS
32 
33  // CONSTRUCTORS
34 
38 
39  // DESTRUCTORS
40 
43  virtual ~EMMG_SLRPPeriodicMultiScale(void);
44 
45 
46 public:
49  inline static SP::EMMG_SLRPPeriodicMultiScale New() {
50  SP::EMMG_SLRPPeriodicMultiScale p(new EMMG_SLRPPeriodicMultiScale(),
52  p->setThis(p);
53  return p;
54  };
55 
56 
57  // SET methods
58 public:
59 
60 
61 
62 
63 public :
64 
72  virtual void computeMultiGridExcitationField(const tUIndex& nCells,
73  const tDimension& dim,
74  const tReal* M,
75  tReal * H);
76 
77 protected:
90  const tUIndex& nCells,
91  const tDimension& dim,
92  const tReal* Ml,
93  tReal *Mz,
94  tReal *Mlp1,
95  tReal *H0) const {
96  }
108  const tUIndex& nCells,
109  const tDimension& dim,
110  tReal* Ml,
111  tReal *Mz,
112  tReal *H0) const {
113  }
114 
115 
116 
117 private:
118 
154  void computeNearMagnetism(const tUInteger& nx,
155  const tUInteger& ny,
156  const tUInteger& nz,
157  const tDimension& dim,
158  const tBoolean isMeshPeriodic[3],
159  const tReal *M,
160  SV::EMMG_RealField& nearMs) const;
161 
190  void computeZoneMagnetism(const tUInteger& nx,
191  const tUInteger& ny,
192  const tUInteger& nz,
193  const EMMG_RealField& M,
194  SV::EMMG_RealField& zoneMs) const;
195 
213  void sumContributions(const tUInteger& nx,const tUInteger& ny,const tUInteger& nz,const tDimension& dim,
214  const tBoolean isMeshPeriodic[3],
215  const SV::EMMG_RealField& levelHs,
216  const SV::EMMG_RealField& zoneHs,
217  const SV::EMMG_RealField& nearHs,
218  tReal *fineMagnetism) const;
219 
220 
221 
222 };
223 
224 #endif
void computeNearMagnetism(const tUInteger &nx, const tUInteger &ny, const tUInteger &nz, const tDimension &dim, const tBoolean isMeshPeriodic[3], const tReal *M, SV::EMMG_RealField &nearMs) const
compute the near aimantation from aimantation M nearMs[l]=0 & set to M in zone were there are periodi...
Definition: EMMG_SLRPPeriodicMultiScale.cpp:23
This class describes a generic real field.
Definition: EMMG_RealField.h:17
#define tUInteger
Definition: types.h:91
SV::EMMG_RealField mLevelMagnetisms
Definition: EMMG_SLRPPeriodicMultiScale.h:25
This class describes the PeriodicMultiScale for matrix-vector product of complex toeplitz matrix...
Definition: EMMG_SLPeriodicMultiScale.h:23
#define tBoolean
Definition: types.h:139
static SP::EMMG_SLRPPeriodicMultiScale New()
create a PeriodicRPMultiScale class
Definition: EMMG_SLRPPeriodicMultiScale.h:49
virtual ~EMMG_SLRPPeriodicMultiScale(void)
destroy
Definition: EMMG_SLRPPeriodicMultiScale.cpp:18
#define tDimension
Definition: EMM_Types.h:10
SV::EMMG_RealField mZoneMagnetisms
Definition: EMMG_SLRPPeriodicMultiScale.h:26
void sumContributions(const tUInteger &nx, const tUInteger &ny, const tUInteger &nz, const tDimension &dim, const tBoolean isMeshPeriodic[3], const SV::EMMG_RealField &levelHs, const SV::EMMG_RealField &zoneHs, const SV::EMMG_RealField &nearHs, tReal *fineMagnetism) const
Sum the contributions from diadiques coarse meshes for each cell of the computational domain (ie the ...
Definition: EMMG_SLRPPeriodicMultiScale.cpp:317
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: EMMG_SLRPPeriodicMultiScale.h:89
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: EMMG_SLRPPeriodicMultiScale.h:107
SV::EMMG_RealField mNearZoneMagnetisms
Definition: EMMG_SLRPPeriodicMultiScale.h:27
#define tUIndex
Definition: types.h:126
void computeZoneMagnetism(const tUInteger &nx, const tUInteger &ny, const tUInteger &nz, const EMMG_RealField &M, SV::EMMG_RealField &zoneMs) const
compute the near aimantation from aimantation M level2Ms[l]=M & set to 0 in zone l ...
Definition: EMMG_SLRPPeriodicMultiScale.cpp:210
This class describes the PeriodicRPMultiScale for matrix-vector product of complex toeplitz matrix...
Definition: EMMG_SLRPPeriodicMultiScale.h:17
EMMG_SLRPPeriodicMultiScale(void)
create
Definition: EMMG_SLRPPeriodicMultiScale.cpp:14
SP_OBJECT(EMMG_SLRPPeriodicMultiScale)
DEFINE_SPTR(EMMG_SLRPPeriodicMultiScale)
virtual void computeMultiGridExcitationField(const tUIndex &nCells, const tDimension &dim, const tReal *M, tReal *H)
compute the magnbetic excitation field by superposition of multi scale grids
Definition: EMMG_SLRPPeriodicMultiScale.cpp:552
#define tReal
Definition: types.h:118
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:141