C++ main module for emicrom Package  1.0
EMM_AnisotropyOperator.h
Go to the documentation of this file.
1 #ifndef EMM_AnisotropyOperator_H
2 #define EMM_AnisotropyOperator_H
3 
4 
6 
8 
54 
56  // ATTRIBUTES
57 
58 
59 private:
60 
61 
62 public:
63 
64 
65  // ASSOCIATION
66 
67 private:
68 
69  //crystal type
71 
72  //K1 adimensionized anisotropy
74 
75  //K2 adimensionized anisotropy
77 
78  //morse matrix
80 
81 
82 
83  //work size
85 
86 
87 
88 protected:
89 
90  // METHODS
91 
92  // CONSTRUCTORS
93 
97 
98  // DESTRUCTORS
99 
102  virtual ~EMM_AnisotropyOperator(void);
103 
104 
105 public:
106 
107 
108  // SET methods
109  // ===========
113  virtual tBoolean isAffine() const {
114  return false;
115  }
120  return true;
121  };
122  // GET methods
123  // ===========
132  virtual tULLInt getMemorySize() const {
133  return EMM_Operator::getMemorySize()+mCrystalType.getMemorySize()+mA.getMemorySize()+mK1.getMemorySize()+mK2.getMemorySize()+mLDW*sizeof(tReal);
134 
135  }
136 
137 
138 
139 public:
140 
141  //DATA Methods
142  //============
143 
148  virtual tBoolean discretize(const EMM_LandauLifschitzSystem& system);
149 
150 
155  inline const CORE_RealMorseArray& getK1() const {
156  return mK1;
157 
158  }
163  inline const CORE_RealMorseArray& getK2() const {
164  return mK2;
165 
166  }
171  inline const CORE_RealMorseArray& getAnisotropyMatrix() const {
172  return mA;
173 
174  }
175 
176 
177 protected:
192  virtual void buildAnisotropyMatrix(const tUIndex& nCells,
193  const EMM_Grid3D& mesh,
194  const CORE_UCharMorseArray& crystal,
195  const CORE_RealMorseArray& directions,
196  CORE_RealMorseArray& A) const;
197 
198 
199  //OPERATOR FIELDS Methods
200  //=========================
208  return true;
209  }
210 
222  const tFlag& order,
223  const EMM_RealArray& sigma,
224  const EMM_RealField& dM_dt0,
225  const EMM_RealField& M0) {
226  return true;
227  }
228 
229 
239  const EMM_RealArray& sigma,
240  const EMM_RealField& Mt) {
241  return true;
242  }
243  //MAGNETIC Excitation field
244  //==========================
245 
254  virtual void computeMagneticExcitationField(const tUIndex& nCells,
255  const tDimension& dim,
256  const EMM_RealArray& sigma,
257  const tReal* M,
258  tReal *H) const;
259 
260 
271  const tDimension& dim,
272  const EMM_RealArray& sigma,
273  const tReal *M,
274  const tReal *D,
275  tReal *gradH)const;
276 
277 
278  //ENERGY Methods
279  //==============
280 
281 
290  virtual tReal computeEnergyWithMagneticExcitation(const tUIndex& nCells,const tDimension& dim,
291  const EMM_RealArray& sigma,
292  const tReal* M,const tReal* H) const;
293 
294 
295 
296 
297 };
298 
299 #endif
300 
CORE_RealMorseArray mA
Definition: EMM_AnisotropyOperator.h:79
This class describes a grid3d mesh.
Definition: EMM_Grid3D.h:48
SP_OBJECT(EMM_AnisotropyOperator)
EMM_AnisotropyOperator(void)
create
Definition: EMM_AnisotropyOperator.cpp:13
DEFINE_SPTR(EMM_AnisotropyOperator)
#define tUCInt
Definition: types.h:21
#define tBoolean
Definition: types.h:139
CORE_UCharMorseArray mCrystalType
Definition: EMM_AnisotropyOperator.h:70
virtual ~EMM_AnisotropyOperator(void)
destroy
Definition: EMM_AnisotropyOperator.cpp:18
#define tDimension
Definition: EMM_Types.h:10
const CORE_RealMorseArray & getK2() const
get K2 array
Definition: EMM_AnisotropyOperator.h:163
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: EMM_AnisotropyOperator.h:132
virtual tBoolean updateAtNextTimeStep(const tReal &dt, const EMM_RealArray &sigma, const EMM_RealField &Mt)
update the data of operator at next time step
Definition: EMM_AnisotropyOperator.h:238
tUCInt mLDW
Definition: EMM_AnisotropyOperator.h:84
virtual tBoolean computeMagneticExcitationFieldGradient(const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M, const tReal *D, tReal *gradH) const
compute the gradient of the magnetic excitation field at M in the direction D
Definition: EMM_AnisotropyOperator.cpp:548
CORE_RealMorseArray mK2
Definition: EMM_AnisotropyOperator.h:76
virtual tBoolean computeFieldsAtTime(const tReal &t, const tFlag &order, const EMM_RealArray &sigma, const EMM_RealField &dM_dt0, const EMM_RealField &M0)
compute the fields of operator at time
Definition: EMM_AnisotropyOperator.h:221
virtual tBoolean isAffine() const
return true if the operator is either constant or linear
Definition: EMM_AnisotropyOperator.h:113
virtual tBoolean discretize(const EMM_LandauLifschitzSystem &system)
discretize the operator depending on method
Definition: EMM_AnisotropyOperator.cpp:25
virtual void computeMagneticExcitationField(const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M, tReal *H) const
compute the normalized excitation magnetic field at M
Definition: EMM_AnisotropyOperator.cpp:399
virtual tBoolean resetToInitialState(const EMM_LandauLifschitzSystem &system)
reset the data of the operator to its initial step t=0
Definition: EMM_AnisotropyOperator.h:207
This class describes a resolution of landau-lifschitz system of the Core Package for E-MicroM...
Definition: EMM_LandauLifschitzSystem.h:88
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: CORE_MorseArray.h:396
#define tUIndex
Definition: types.h:126
This class describes a real array.
Definition: EMM_RealArray.h:16
virtual void buildAnisotropyMatrix(const tUIndex &nCells, const EMM_Grid3D &mesh, const CORE_UCharMorseArray &crystal, const CORE_RealMorseArray &directions, CORE_RealMorseArray &A) const
compute the anistropy matrix
Definition: EMM_AnisotropyOperator.cpp:111
const CORE_RealMorseArray & getAnisotropyMatrix() const
get the anisotropy matrix
Definition: EMM_AnisotropyOperator.h:171
virtual tReal computeEnergyWithMagneticExcitation(const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M, const tReal *H) const
compute the energy of the anistropy operator
Definition: EMM_AnisotropyOperator.cpp:247
CORE_RealMorseArray mK1
Definition: EMM_AnisotropyOperator.h:73
This class describes the mixed anistropy operators of the landau lifschitz system EMM_LandauLifschitz...
Definition: EMM_AnisotropyOperator.h:53
#define tULLInt
Definition: types.h:45
This class is an operator of a E-MicromM package wich compute a magnetic excitation operator...
Definition: EMM_MagneticExcitationOperator.h:15
This class describes a real field.
Definition: EMM_RealField.h:21
virtual tBoolean isGradientComputationable() const
return true if the gradient of the magnetic excitation is computationable
Definition: EMM_AnisotropyOperator.h:119
#define tReal
Definition: types.h:118
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: EMM_Operator.h:71
const CORE_RealMorseArray & getK1() const
get K1 array
Definition: EMM_AnisotropyOperator.h:155
#define tFlag
Definition: types.h:74