C++ main module for emicrom Package  1.0
EMM_GradGaussLegendreRelaxation.h
Go to the documentation of this file.
1 #ifndef EMM_GradGaussLegendreRelaxation_H
2 #define EMM_GradGaussLegendreRelaxation_H
3 
5 
6 
25 
27  // ATTRIBUTES
28 
29 public:
30 
31 
32 private:
33 
34 
35  //the landau lifschitz grad function F in the direction F = mMs
36  SP::EMM_RealField mGradF_F;
37  //the landau lifschitz grad function H in the direction F
38  SP::EMM_RealField mGradH_F;
39 
40 
41 protected:
42  // METHODS
43 
44  // CONSTRUCTORS
45 
49 
50 
51 
52  // DESTRUCTORS
53 
54 
57  virtual ~EMM_GradGaussLegendreRelaxation(void);
58 
59 
60 public:
61 
65  inline static SP::EMM_GradGaussLegendreRelaxation New() {
66  SP::EMM_GradGaussLegendreRelaxation sp(new EMM_GradGaussLegendreRelaxation(),EMM_GradGaussLegendreRelaxation::Delete());
67  sp->setThis(sp);
68  return sp;
69  }
70 
74  virtual void toDoAfterThisSetting();
75 
76  // SET methods
77  //============
78 
82  virtual tBoolean addOperator(SP::EMM_MagneticExcitationOperator op) {
83  if (op.get()==null) return false;
84  if (!op->isGradientComputationable()) return false;
86  }
87 
88  // GET methods
89  // ============
90 
91 public:
92 
96  return *mGradH_F.get();
97  }
98 
99 
104  return *mGradF_F.get();
105  }
106 
107 
116  virtual tBoolean discretize();
117 
128  virtual void computeLandauLifschitzFields(const EMM_RealField& M,
129  const EMM_RealField& H,
130  EMM_RealField& F);
131 
132 public:
145  const EMM_RealField& H,
146  const EMM_RealField& D,
147  const EMM_RealField& GradH,
148  EMM_RealField& GradF) const {
149  computeGradFunction(M,H,D,GradH,GradF);
150  }
151 
152 
159  const EMM_RealField& D,
160  EMM_RealField& gradH) const;
161 
169  tReal computeEnergyTimeDerivativesAtTime(const tReal& t,const tFlag& order,tReal& dE_dt,tReal& d2E_dt2);
170 
176  tReal computeEnergyTimeDerivatives(tReal& dE_dt,tReal& d2E_dt2) const ;
177 
178 
179 
180 
181 
182 };
183 
184 #endif
void computeGradFunction(const EMM_RealField &M, const EMM_RealField &H, const EMM_RealField &D, const EMM_RealField &gradH, EMM_RealField &gradF) const
compute the gradient landau-lifschitz function at the direction D in M
Definition: EMM_LandauLifschitzSystem.h:523
This class describes implements the gradient of the landau Lifschitz function to use optimal time ste...
Definition: EMM_GradGaussLegendreRelaxation.h:24
SP_OBJECT(EMM_GradGaussLegendreRelaxation)
SP::EMM_RealField mGradH_F
Definition: EMM_GradGaussLegendreRelaxation.h:38
virtual tBoolean addOperator(SP::EMM_MagneticExcitationOperator op)
add an operator
Definition: EMM_GradGaussLegendreRelaxation.h:82
virtual tBoolean discretize()
discretize the problem
Definition: EMM_GradGaussLegendreRelaxation.cpp:50
#define tBoolean
Definition: types.h:139
static SP::EMM_GradGaussLegendreRelaxation New()
create a shared pointer class of this
Definition: EMM_GradGaussLegendreRelaxation.h:65
This class describes implements the main method for the relaxation processs of the Landau Lifschitz S...
Definition: EMM_GaussLegendreRelaxation.h:55
#define null
Definition: types.h:144
void computeMagnetizationFieldTimeDerivativeGradient(const EMM_RealField &M, const EMM_RealField &H, const EMM_RealField &D, const EMM_RealField &GradH, EMM_RealField &GradF) const
compute the gradient of the time variation of magnetization field
Definition: EMM_GradGaussLegendreRelaxation.h:144
void computeMagneticExcitationFieldGradient(const EMM_RealField &M, const EMM_RealField &D, EMM_RealField &gradH) const
compute the gradient with respect to M of adimensionized H at M in the direction D ...
Definition: EMM_GradGaussLegendreRelaxation.cpp:56
DEFINE_SVPTR(EMM_GradGaussLegendreRelaxation)
virtual void computeLandauLifschitzFields(const EMM_RealField &M, const EMM_RealField &H, EMM_RealField &F)
compute the landau lifschitz fields.
Definition: EMM_GradGaussLegendreRelaxation.cpp:77
tReal computeEnergyTimeDerivatives(tReal &dE_dt, tReal &d2E_dt2) const
computes the two first derivatives of the energy at t=0
Definition: EMM_GradGaussLegendreRelaxation.cpp:93
SP::EMM_RealField mGradF_F
Definition: EMM_GradGaussLegendreRelaxation.h:36
const EMM_RealField & getMagneticExcitationFieldGradient() const
get the gradient of the magnetic excitation in the direction F where F is the magnetization time deri...
Definition: EMM_GradGaussLegendreRelaxation.h:95
EMM_GradGaussLegendreRelaxation(void)
create the class
Definition: EMM_GradGaussLegendreRelaxation.cpp:5
DEFINE_SPTR(EMM_GradGaussLegendreRelaxation)
tReal computeEnergyTimeDerivativesAtTime(const tReal &t, const tFlag &order, tReal &dE_dt, tReal &d2E_dt2)
computes the two first derivatives of the energy at t
Definition: EMM_GradGaussLegendreRelaxation.cpp:128
static const tFlag M
Definition: EMM_LandauLifschitzSystem.h:110
This class describes a real field.
Definition: EMM_RealField.h:21
#define tReal
Definition: types.h:118
virtual tBoolean addOperator(SP::EMM_MagneticExcitationOperator op)
add an operator
Definition: EMM_LandauLifschitzSystem.h:369
virtual ~EMM_GradGaussLegendreRelaxation(void)
destroy the class
Definition: EMM_GradGaussLegendreRelaxation.cpp:30
virtual void toDoAfterThisSetting()
method called after the setting of the shared pointer this method can only be called once...
Definition: EMM_GradGaussLegendreRelaxation.cpp:35
const EMM_RealField & getMagnetizationFieldTimeDerivativeGradient() const
get the gradient of the magnetization time derivative field in the direction where is the magnetiza...
Definition: EMM_GradGaussLegendreRelaxation.h:103
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:141
#define tFlag
Definition: types.h:74