C++ mpi module for stochmagnet_main Package
SM_LandauLifschitzSystem.h
1 #ifndef SM_LandauLifschitzSystem_H
2 #define SM_LandauLifschitzSystem_H
3 
4 //base class
5 #include "SM_System.h"
6 
7 //landau lifschtz function
8 #include "SM_LandauLifschitzFunction.h"
9 
10 //stochastic output data header
11 #include "SM_StochasticOutput.h"
12 
13 //stochastic functions per thread header
14 #include "SM_MultiStochasticFunctions.h"
15 
16 //network
17 #include "SM_Network.h"
18 
19 //material
20 #include "SM_Material.h"
21 
22 //time
23 #include "SM_TimeStepper.h"
24 
25 //operator
26 #include "SM_Operator.h"
27 
28 //noise header
29 #include "SM_NoiseRateFunction.h"
30 
31 //Temperature <-> noise conversion header
32 #include "SM_TemperatureNoiseRate.h"
33 
34 //array manipulating
35 #include <valarray>
36 
60 
61  //attributes
62 private :
63 
65  typedef SM_System SuperClass;
66 
67  //associations
68 
69 
70  //the landau lishitz function
71  CORE_UniquePointer<SM_LandauLifschitzFunction> mLLFunction;
72 
73  //time stepper
74  SM_TimeStepper mTimeStepper;
75 
76  //total magnetic field of the system of size mParticles number x SM_Constants::DIM at time t
77  SM_RealField mHt;
78 
79  //variation of magnetic moments direction
80  SM_RealField mDeltaSt;
81 
82  //the noise rate functions
83  CORE_UniquePointer<SM_NoiseRateFunctionInterface> mNoiseRateFunction;
84 
85  //noise rate at t
86  tReal mEpsilon_t;
87 
88  //current time
89  tReal mTime;
90  tIndex mTimeIndex;
91 
92 
93 
94  //brownian field
95  tBoolean mIsBrownianNull=false;
96  tBoolean mIsRealBrownianVariable;
97  SM_RealField mDeltaWt;
98 
99  //relaxation
100  tReal mRelaxationTolerance;
101  tBoolean mIsRelaxed;
102  tReal mRelaxationValue;
103 
104 protected:
105  // CONSTRUCTORS
109 
110 
111  mIsRealBrownianVariable=true;
112 
113  mRelaxationTolerance=1.e-8;
114  mRelaxationValue=0;
115  mIsRelaxed=false;
116  mEpsilon_t=0;
117 
118  mTime=0;
119  mTimeIndex=0;
120  }
121 
122 
123  // DESTRUCTORS
127  }
128 
129 
130 public :
131 
132 
133  //MEMORY
134 
148  virtual tMemSize getMemorySize() const {
149  return sizeof(*this)+getContentsMemorySize();
150  }
151 
160  virtual tMemSize getContentsMemorySize() const {
161  tMemSize mem=SuperClass::getContentsMemorySize();
162  mem+=(mLLFunction.get()==null)?0:mLLFunction->getContentsMemorySize();
163  mem+=mTimeStepper.getContentsMemorySize();
164  mem+=mHt.getContentsMemorySize();
165  mem+=mDeltaSt.getContentsMemorySize();
166  mem+=mDeltaWt.getContentsMemorySize();
167  mem+=(mNoiseRateFunction.get()==null)?0:mNoiseRateFunction->getMemorySize();
168  return mem;
169  }
170 
171  //SET & GET methods
172 
178  resetTime();
180  }
181 
188  virtual tBoolean initializeMagneticMomentDirections() override {
189  resetTime();
191 
192  }
193 
194 
195  //time stepper data
196  //=================
200  inline const SM_TimeStepper& getTimeStepper() const {
201  return mTimeStepper;
202  }
207  return mTimeStepper;
208  }
209 
210 
214  inline const tReal& getTime() const {
215  return mTime;
216  }
217 
221  inline const tIndex& getTimeIndex() const {
222  return mTimeIndex;
223  }
227  inline tIndex& getTimeIndex() {
228  return mTimeIndex;
229  }
230 
234  inline tReal& getTime() {
235  return mTime;
236  }
237 
240  inline void resetTime() {
241  mTime=0;
242  mTimeIndex=0;
243  }
244 
245  //noise rate
246  //==========
247 public:
251  inline const tReal& getNoiseRate() const {
252  return mEpsilon_t;
253  }
254 
255 
259  inline tReal& getNoiseRate() {
260  return mEpsilon_t;
261  }
265  inline void setNoiseRateFunction(CORE_UniquePointer<SM_NoiseRateFunctionInterface>& f) {
266  mNoiseRateFunction=std::move(f);
267  }
268 
272  inline tBoolean hasNoiseRateFunction() const {
273  return (mNoiseRateFunction.get()!=null);
274  }
279  return *mNoiseRateFunction.get();
280  }
285  return *mNoiseRateFunction.get();
286  }
287 
291  virtual void setNoiseTemperature(const tReal& T) override {
292  if (!hasNoiseRateFunction()) {
293  throw CORE_Exception("stochmagnet/landauLifschitz/core",
294  "setNoiseTemperature(const tReal& T)",
295  "no noise rate function");
296  }
298  getNoiseRateFunction().adimensionize(getMaterial().getCharacteristicField());
300  }
301 
302  //relaxation
303  //===========
304 public:
308  inline void setIsRelaxed(const tBoolean& isRelaxed) {
309  mIsRelaxed=isRelaxed;
310  }
314  inline const tBoolean& isRelaxed() const {
315  return mIsRelaxed;
316  }
320  inline void setRelaxationTolerance(const tReal& eps) {
321  mRelaxationTolerance=eps;
322  }
326  inline const tReal& getRelaxationTolerance() const {
327  return mRelaxationTolerance;
328  }
332  inline const tReal& getRelaxationValue() const {
333  return mRelaxationValue;
334  }
338  inline tReal& getRelaxationValue() {
339  return mRelaxationValue;
340  }
341 
342  //relaxation methods
343  //====================
344 
347  inline tReal computeNetTorque() const {
348 
349  return computeNetTorque(getNetwork().getParticlesNumber(),//number of particles (not halo particles)
350  getMagneticMomentDirections().getValues(),//S values
351  mHt.getElementsNumber(),//number of elements in H
352  mHt.getValues());//H values
353  }
354 
361  virtual tReal computeNetTorque(const tIndex& nParticles,
362  const tReal* S,
363  const tIndex& nHParticles,const tReal* H) const=0;
364 
365 protected:
373  tReal computeNetSliceTorque(const tIndex& startS,const tIndex& endS,const tReal* S,
374  const tIndex& startH,const tReal* H) const;
375 
376 
377  //brownian function
378 protected:
382  inline void setIsBrownianNull(const tBoolean& v) {
383  mIsBrownianNull=v;
384  }
387  inline const tBoolean& isBrownianNull() const {
388  return mIsBrownianNull;
389  }
390 
393  inline void setIsRealBrownianVariable(const tBoolean& v) {
394  mIsRealBrownianVariable=v;
395  }
396 
399  inline const tBoolean& isRealBrownianVariable() const {
400  return mIsRealBrownianVariable;
401  }
402 
406  inline const SM_RealField& getBrownianField() const {
407  return mDeltaWt;
408  }
413  return mDeltaWt;
414  }
415 
416 
417  //Landau lifschitz function
418  //===========================
419 public:
424  return *mLLFunction.get();
425 
426  }
431  return *mLLFunction.get();
432 
433  }
434 
435 protected:
436 
439  inline void setLandauLifschitzFunction(CORE_UniquePointer<SM_LandauLifschitzFunction> llF) {
440  mLLFunction=std::move(llF);
441  }
442 
443 
444 public:
445 
446 
450  virtual void normalize(const tBoolean& isAdimensionized) override {
451 
452  SuperClass::normalize(isAdimensionized);
453 
454  //normalize time step
455  getTimeStepper().adimensionize(getMaterial().getCharacteristicTime());
456 
457  if (isAdimensionized) {
458 
459  //adimenesionize LL
461 
462 
463  //normalize the noise rate
464  if (hasNoiseRateFunction()) getNoiseRateFunction().adimensionize(getMaterial().getCharacteristicField());
465  }
466  }
467 
468 
469 public:
470 
474  inline const SM_RealField& getMagneticField() const {
475  return mHt;
476  }
481  return mDeltaSt;
482  }
483 
484 protected:
489  return mHt;
490  }
491 
496  return mDeltaSt;
497  }
498 
499 
500 
501 public:
506  virtual void discretize() override {
507 
509 
510  }
511 
512 
513 
514 
515  //simulation methods
516  //===================
519  virtual tULLInt getGeneratedRandomNumbers() const override {
520 
521  tULLInt nRNGPerCore=SM_Constants::DIM;
522  nRNGPerCore*=getNetwork().getParticlesNumber();
523  return nRNGPerCore;
524  }
525 
531  template<class StochOutputI>
532  tBoolean deterministicRun(const tIndex& steppersNumber,
533  SM_StochasticOutput<StochOutputI>& stochasticOutput);
534 
540  tBoolean stochasticRun(const tIndex& steppersNumber,
542 
543 
544 
552  template<class StochOutputImplement>
553  tBoolean stochasticRun(const tIndex& steppersNumber,
554  SM_MultiStochasticFunctionsInterface& multiStochasticFunctions,
556 
557 
563  tBoolean stochasticJRun(const tIndex& steppersNumber,
564  SM_StochasticFunctionsInterface& stochasticFunctions,
565  const std::function<void(const tReal&,const tReal& ,const tReal&,tReal& )>& F);
566 
574  template<class StochOutputImpl>
575  tBoolean stochasticJRun(const tIndex& steppersNumber,
576  SM_StochasticFunctionsInterface& stochasticFunctions,
577  SM_StochasticOutput<StochOutputImpl>& stochasticOutput,
578  const std::function<void(const tReal&,const tReal& ,const tReal&,tReal& )>& F);
579 
580 
581 
582 
583 
584 
585  //DH methods
586  //===========
587 
592  virtual void computeVariationMagneticField(const tReal& dt,SM_RealField& H) const=0;
593 
604  const tReal& dt,const tReal& bdt,const tReal& epsilon,
605  const tBoolean& incdWt,tReal* dWt,
606  SM_RealField& H)=0;
607 
608 protected:
615  inline void computeVariationMagneticFieldSlice(const tIndex& start,const tIndex& end,const tReal& dt,tReal* H) const {
616 
617  //no H
618  if (H==null) return;
619 
620  //begin iterator on H
621  tReal *iH=H;iH+=start*SM_Constants::DIM;
622  //end iterator on H
623  const tReal *eH=H;eH+=end*SM_Constants::DIM;
624 
625  while (iH!=eH) {
626  (*iH)*=dt;
627  iH++;
628  }
629  }
642  const tIndex& start,const tIndex& end,
643  const tReal& dt,const tReal& bdt,const tReal& epsilon,
644  const tBoolean& incdWt,tReal* dWt,tReal* H) {
645 
646  if (H==null) return;
647 
648  //iterator on H
649  tReal *iH=H;
650  iH+=start*SM_Constants::DIM;
651 
652  //end iterator on H
653  const tReal *eH=H;
654  eH+=end*SM_Constants::DIM;
655 
656  //iterator ondWt
657  tReal *idWt=dWt;
658  idWt+=incdWt*start*SM_Constants::DIM;
659 
660  while (iH!=eH) {//loop on H values
661 
662  //compute the brownian
663  (*idWt)=randF.normalRandom();
664  (*idWt)*=bdt;
665  (*idWt)*=epsilon;
666 
667  //compute time variation of H
668  (*iH)*=dt;
669  (*iH)+=(*idWt);
670 
671  //iterator at next value
672  iH++;
673  idWt+=incdWt;
674  }
675  }
676 
677 
678 
691  template<class StochFImpl>
693  tIndex start,tIndex end,
694  const tReal& dt,const tReal& bdt,const tReal& epsilon,
695  const tBoolean& incdWt,tReal* dWt,tReal* H) {
696 
697  if (H==null) return;
698 
699  //particle index -> memory index
700  start*=SM_Constants::DIM;
701  end*=SM_Constants::DIM;
702 
703  //iterator on H
704  tReal *iH=H;
705  iH+=start;
706 
707  //end iterator on H
708  const tReal *eH=H;
709  eH+=end;
710 
711  //iterator ondWt
712  tReal *idWt=dWt;
713  idWt+=incdWt*start;
714 
715  while (iH!=eH) {//loop on H values
716 
717  //compute the brownian
718  (*idWt)=randF.scNormalRandom();
719  (*idWt)*=bdt;
720  (*idWt)*=epsilon;
721 
722  //compute time variation of H
723  (*iH)*=dt;
724  (*iH)+=(*idWt);
725 
726  //iterator at next value
727  iH++;
728  idWt+=incdWt;
729  }
730  }
731 
732 
733  //next S direction
734  //================
735 
736 public:
737 
738 
751  virtual tBoolean computeMagneticMomentDirectionsAtNextTimeStep(const tReal& dt,const tReal& epsilon_t,
752  const SM_RealField& deltaSt,
753  SM_RealField& St)=0;
754 
755 protected:
765  static void ComputeMagneticMomentDirectionsSliceAtNextTimeStep(tIndex startS,tIndex endS,
766  const tIndex& nDeltaS,const tReal *deltaS,
767  const tIndex& nS,const tReal* S,
768  tReal *nextS);
769 
780  static void ComputeMagneticMomentDirectionsSliceAtNextTimeStep(tIndex startS,tIndex endS,
781  const tIndex& nDeltaS,const tReal *deltaSt,
782  const tReal& alpha,
783  const tIndex& nS,const tReal* S,
784  tReal *nextS);
785 
786  //string representation
787  //=====================
788 public:
792  virtual tString toString() const override;
793 };
794 
795 #include "SM_LandauLifschitzSystem.hpp"
796 #endif
this class describes the exceptions raised for CORE package
Definition: CORE_Exception.h:17
virtual tMemSize getContentsMemorySize() const override
return the memory size of the included associations
Definition: CORE_Field.h:102
const T * getValues() const
get the values of the array for reading
Definition: CORE_Field.h:323
tIndex getElementsNumber() const
return the number values of the container
Definition: CORE_Field.h:135
virtual tMemSize getContentsMemorySize() const
return nthe memory size of the included associations
Definition: CORE_Object.h:278
static constexpr tDimension DIM
space dimension
Definition: SM_Constants.h:80
This class describes a landau lifschitz function of the form :
Definition: SM_LandauLifschitzFunction.h:30
void setGamma(const tReal &gamma)
set the alpha parameter
Definition: SM_LandauLifschitzFunction.h:153
This class is a simulation of one trajectory class for Stoch Magnet package.
Definition: SM_LandauLifschitzSystem.h:59
SM_RealField & getBrownianField()
get the generated brownian variable for reading
Definition: SM_LandauLifschitzSystem.h:412
virtual void setNoiseTemperature(const tReal &T) override
set the noise as a temperature in Kelvin
Definition: SM_LandauLifschitzSystem.h:291
void setLandauLifschitzFunction(CORE_UniquePointer< SM_LandauLifschitzFunction > llF)
set the landau lifschitz function
Definition: SM_LandauLifschitzSystem.h:439
tReal & getRelaxationValue()
get the relaxation value to detect relaxation for writing
Definition: SM_LandauLifschitzSystem.h:338
tIndex & getTimeIndex()
get the time index
Definition: SM_LandauLifschitzSystem.h:227
SM_RealField & getMagneticField()
get the magnetic field for writting
Definition: SM_LandauLifschitzSystem.h:488
const SM_RealField & getMagneticField() const
get the magnetic field for writting
Definition: SM_LandauLifschitzSystem.h:474
const SM_RealField & getMagneticMomentDirectionsVariation() const
get the variation of the direction of the magnetic moments for writting
Definition: SM_LandauLifschitzSystem.h:480
void setRelaxationTolerance(const tReal &eps)
set the relaxation tolerance to detect relaxation
Definition: SM_LandauLifschitzSystem.h:320
virtual tString toString() const override
turn the class into a string representation
Definition: SM_LandauLifschitzSystem.cpp:485
const SM_NoiseRateFunctionInterface & getNoiseRateFunction() const
get the noise rate function
Definition: SM_LandauLifschitzSystem.h:284
virtual ~SM_LandauLifschitzSystem(void)
destroy the class
Definition: SM_LandauLifschitzSystem.h:126
void resetTime()
reset time
Definition: SM_LandauLifschitzSystem.h:240
const tBoolean & isBrownianNull() const
get if the brownian variable is null
Definition: SM_LandauLifschitzSystem.h:387
SM_NoiseRateFunctionInterface & getNoiseRateFunction()
get the noise rate function
Definition: SM_LandauLifschitzSystem.h:278
static void ComputeMagneticMomentDirectionsSliceAtNextTimeStep(tIndex startS, tIndex endS, const tIndex &nDeltaS, const tReal *deltaS, const tIndex &nS, const tReal *S, tReal *nextS)
compute for all particle indices in [start,end[
Definition: SM_LandauLifschitzSystem.cpp:298
tBoolean stochasticJRun(const tIndex &steppersNumber, SM_StochasticFunctionsInterface &stochasticFunctions, const std::function< void(const tReal &, const tReal &, const tReal &, tReal &)> &F)
compute the steppers number of system for reaching the relaxed state
Definition: SM_LandauLifschitzSystem.cpp:130
void setIsRelaxed(const tBoolean &isRelaxed)
set if the system runs until relaxation
Definition: SM_LandauLifschitzSystem.h:308
virtual tBoolean initializeMagneticMomentDirections() override
initialize magnetic moments direction _ time step index = 0
Definition: SM_LandauLifschitzSystem.h:188
virtual void computeVariationMagneticField(const tReal &dt, SM_RealField &H) const =0
computes
void setIsBrownianNull(const tBoolean &v)
set if the brownian variable is null
Definition: SM_LandauLifschitzSystem.h:382
const tBoolean & isRealBrownianVariable() const
get if the brownian variable is a field or a real
Definition: SM_LandauLifschitzSystem.h:399
virtual tReal computeNetTorque(const tIndex &nParticles, const tReal *S, const tIndex &nHParticles, const tReal *H) const =0
compute Net Torque
tBoolean deterministicRun(const tIndex &steppersNumber, SM_StochasticOutput< StochOutputI > &stochasticOutput)
compute deterministic running of steppers number of the system with computing statistics
Definition: SM_LandauLifschitzSystem.hpp:12
const tIndex & getTimeIndex() const
get the time index
Definition: SM_LandauLifschitzSystem.h:221
void computeVariationMagneticFieldSlice(const tIndex &start, const tIndex &end, const tReal &dt, tReal *H) const
computes for particle indices in [start,end[
Definition: SM_LandauLifschitzSystem.h:615
tReal computeNetSliceTorque(const tIndex &startS, const tIndex &endS, const tReal *S, const tIndex &startH, const tReal *H) const
compute Net Torque for all particules in indices in [start,end[
Definition: SM_LandauLifschitzSystem.cpp:230
virtual tBoolean computeMagneticMomentDirectionsAtNextTimeStep(const tReal &dt, const tReal &epsilon_t, const SM_RealField &deltaSt, SM_RealField &St)=0
compute direction of magnetic moments at next time
tBoolean hasNoiseRateFunction() const
return true if the noise rate function is not null
Definition: SM_LandauLifschitzSystem.h:272
const tReal & getTime() const
get the time
Definition: SM_LandauLifschitzSystem.h:214
tReal & getTime()
get the time
Definition: SM_LandauLifschitzSystem.h:234
virtual tMemSize getContentsMemorySize() const
return the memory size of the included associations
Definition: SM_LandauLifschitzSystem.h:160
const tReal & getRelaxationValue() const
get the relaxation value to detect relaxation for reading
Definition: SM_LandauLifschitzSystem.h:332
virtual void computeBrownianVariationMagneticField(SM_MultiStochasticFunctionsInterface &stochFs, const tReal &dt, const tReal &bdt, const tReal &epsilon, const tBoolean &incdWt, tReal *dWt, SM_RealField &H)=0
add stochastic brownian field
const SM_TimeStepper & getTimeStepper() const
get the time stepper
Definition: SM_LandauLifschitzSystem.h:200
virtual void discretize() override
discretize the system
Definition: SM_LandauLifschitzSystem.h:506
void setIsRealBrownianVariable(const tBoolean &v)
set if the brownian variable is a field or a real
Definition: SM_LandauLifschitzSystem.h:393
const tReal & getRelaxationTolerance() const
get the relaxation tolerance to detect relaxation
Definition: SM_LandauLifschitzSystem.h:326
virtual void normalize(const tBoolean &isAdimensionized) override
normalize the system
Definition: SM_LandauLifschitzSystem.h:450
const tReal & getNoiseRate() const
get the noise rate
Definition: SM_LandauLifschitzSystem.h:251
void computeBrownianVariationMagneticFieldSliceWithSCStochasticFunctions(SM_StochasticFunctions< StochFImpl > &randF, tIndex start, tIndex end, const tReal &dt, const tReal &bdt, const tReal &epsilon, const tBoolean &incdWt, tReal *dWt, tReal *H)
add stochastic brownian field for particle indices in [start,end[
Definition: SM_LandauLifschitzSystem.h:692
SM_RealField & getMagneticMomentDirectionsVariation()
get the variation of the direction of the magnetic moments for writting
Definition: SM_LandauLifschitzSystem.h:495
virtual tULLInt getGeneratedRandomNumbers() const override
get the generated of random number within a stochastic run per one step of run
Definition: SM_LandauLifschitzSystem.h:519
SM_TimeStepper & getTimeStepper()
get the time stepper
Definition: SM_LandauLifschitzSystem.h:206
tReal & getNoiseRate()
get the noise rate
Definition: SM_LandauLifschitzSystem.h:259
SM_LandauLifschitzSystem(void)
create a class
Definition: SM_LandauLifschitzSystem.h:108
virtual tBoolean updateInitialMagneticMomentDirections(const SM_RealField &S0)
update the initial unit direction of spins
Definition: SM_LandauLifschitzSystem.h:177
tReal computeNetTorque() const
compute Net Torque
Definition: SM_LandauLifschitzSystem.h:347
const SM_LandauLifschitzFunction & getLandauLifschitzFunction() const
get the Landau Lifschitz function return the Landau lifschitz function for reading
Definition: SM_LandauLifschitzSystem.h:423
const SM_RealField & getBrownianField() const
get the generated brownian variable for reading
Definition: SM_LandauLifschitzSystem.h:406
tBoolean stochasticRun(const tIndex &steppersNumber, SM_MultiStochasticFunctionsInterface &sfs)
compute the steppers number of system without stochastic output
Definition: SM_LandauLifschitzSystem.cpp:3
virtual tMemSize getMemorySize() const
return the memory size of the class and the memory size of all its attributes/associations
Definition: SM_LandauLifschitzSystem.h:148
const tBoolean & isRelaxed() const
get if the system runs until relaxation
Definition: SM_LandauLifschitzSystem.h:314
SM_LandauLifschitzFunction & getLandauLifschitzFunction()
get the Landau Lifschitz function
Definition: SM_LandauLifschitzSystem.h:430
void computeBrownianVariationMagneticFieldSlice(SM_StochasticFunctionsInterface &randF, const tIndex &start, const tIndex &end, const tReal &dt, const tReal &bdt, const tReal &epsilon, const tBoolean &incdWt, tReal *dWt, tReal *H)
add stochastic brownian field for particle indices in [start,end[
Definition: SM_LandauLifschitzSystem.h:641
void setNoiseRateFunction(CORE_UniquePointer< SM_NoiseRateFunctionInterface > &f)
gst the noise rate function
Definition: SM_LandauLifschitzSystem.h:265
This class describes a multi stochastic functions based on same random number generator which impleme...
Definition: SM_MultiStochasticFunctionsInterface.h:18
const tInteger & getParticlesNumber() const
return the particles number
Definition: SM_Network.h:349
This class describes a noise rate function.
Definition: SM_NoiseRateFunctionInterface.h:13
void setNoiseRate(const tReal &eps)
set the noise rate
Definition: SM_NoiseRateFunctionInterface.h:96
void adimensionize(const tReal &cField)
adimensionize
Definition: SM_NoiseRateFunctionInterface.h:89
This class describes a stochastic functions based on same random number generator which implement ran...
Definition: SM_StochasticFunctionsInterface.h:18
virtual tReal normalRandom()=0
compute a normal random number
This class describes a stochastic functions with templated methods.
Definition: SM_StochasticFunctions.h:25
tReal scNormalRandom()
compute a normal random number by static casting method
Definition: SM_StochasticFunctions.h:114
this class implements the virtual methods of its base class SM_StochasticOutputComponent with templat...
Definition: SM_StochasticOutput.h:24
This class is a one simulation of a beam for Stoch Magnet package.
Definition: SM_System.h:53
virtual void discretize()
discretize the system
Definition: SM_System.h:546
const SM_RealField & getMagneticMomentDirections() const
get the unit direction of spins at time
Definition: SM_System.h:267
virtual void normalize(const tBoolean &isAdimensionized)
normalize the system
Definition: SM_System.h:431
const SM_Network & getNetwork() const
get the network
Definition: SM_System.h:170
virtual tMemSize getContentsMemorySize() const
return the memory size of the included associations
Definition: SM_System.h:140
const SM_Material & getMaterial() const
get the material of the network
Definition: SM_System.h:193
virtual void setNoiseTemperature(const tReal &T)
set the noise as a temperature in Kelvin
Definition: SM_System.h:392
virtual tBoolean initializeMagneticMomentDirections()
initialize magnetic moments direction
Definition: SM_System.h:283
virtual tBoolean updateInitialMagneticMomentDirections(const SM_RealField &S0)
update the initial unit direction of spins
Definition: SM_System.h:241
static tReal ComputeTemperatureNoiseRate(const tReal &T, const SM_LandauLifschitzSystem &system)
compte the noise rate of the system corresponding to temperature
Definition: SM_TemperatureNoiseRate.cpp:15
This class is describes a time stepper.
Definition: SM_TimeStepper.h:13
virtual void adimensionize(const tReal &cT)
adimensionize operator with characteric field value in J
Definition: SM_TimeStepper.h:92