C++ mpi module for stochmagnet_main Package
SMOMPI_LandauLifschitzSystem.h
1 #ifndef SMOMPI_LandauLifschitzSystem_H
2 #define SMOMPI_LandauLifschitzSystem_H
3 
4 //base class
5 #include "SM_LandauLifschitzSystem.h"
6 
7 
8 #include "SMOMPI_LandauLifschitzFunction.h"
9 
10 #include "MPI_Run.h"
11 
19 
20  //attributes
21 private :
22 
23 
26 
27 
28 
29 protected:
30  // CONSTRUCTORS
34 
36  }
37 
38 
39  // DESTRUCTORS
43  }
44 
45 
46 public :
47 
48 
49  //MEMORY
50 
64  virtual tMemSize getMemorySize() const {
65  return sizeof(*this)+getContentsMemorySize();
66  }
67 
76  virtual tMemSize getContentsMemorySize() const {
77  tMemSize mem=SuperClass::getContentsMemorySize();
78  return mem;
79  }
80 
81  //SET & GET methods
82 
83 
84  //Esparance methods
85  //====================
109  virtual void sumOverNetworks(const int& rootNetwork,tIndex& n,const tIndex& nValues,tReal* values) const final;
110 
111  //runner methods
112  //================
113 
116  void discretize() override ;
117 
122  virtual tBoolean updateInitialMagneticMomentDirections(const SM_RealField& S0) final;
123 
128  virtual tBoolean initializeMagneticMomentDirections() final;
129 
130 
131 
132 
140  template<class StochFImplement, class NoiseFImplement>
141  tBoolean stochasticRunWithSCStochasticFunctions(const tIndex& steppersNumber,
142  SM_MultiStochasticFunctions<StochFImplement>& stochasticFunctions,
143  const SM_NoiseRateFunction<NoiseFImplement>& noiseRateFunction);
144 
154  template<class StochFImplement, class NoiseImplement,class StochOutputImplement>
155  tBoolean stochasticRunWithSCStochasticFunctions(const tIndex& steppersNumber,
156  SM_MultiStochasticFunctions<StochFImplement>& stochasticFunctions,
157  const SM_NoiseRateFunction<NoiseImplement>& noiseRateFunction,
158  SM_StochasticOutput<StochOutputImplement>& stochasticOutput);
159 
160 
161  //relaxation methods
162  //=================
163 
170  virtual tReal computeNetTorque(const tIndex& nSParticles,const tReal* S,
171  const tIndex& nHParticles,const tReal* H) const final;
172 
173 
174  // DH methods
175  //===========
176 
177 
182  virtual void computeVariationMagneticField(const tReal& dt,SM_RealField& H) const final;
183 
184 
195  const tReal& dt,const tReal& bdt,const tReal& epsilon,
196  const tBoolean& incdWt,tReal* dWt,SM_RealField& H) final;
197 
198 
209  template<class StochFImpl>
211  const tReal& dt,const tReal& bdt,const tReal& epsilon,
212  const tBoolean& incdWt,tReal* dWt,SM_RealField& H);
213 
214 
215 
216  //next direction of magnetic moments method
217  //========================================
218 
219 
220 
227  static void ComputeMagneticMomentDirectionsAtNextTimeStep(const tIndex& nParticles,
228  const SM_RealField& deltaS,
229  const SM_RealField& S,
230  SM_RealField& nextS);
231 
239  static void ComputeMagneticMomentDirectionsAtNextTimeStep(const tIndex& nParticles,
240  const SM_RealField& deltaSt,
241  const tReal& alpha,
242  const SM_RealField& S,
243  SM_RealField& nextS);
244 
245 
246 
247 };
248 
249 #include "SMOMPI_LandauLifschitzSystem.hpp"
250 #endif
static CORE_UniquePointer< SMOMPI_LandauLifschitzFunction > New()
build a new instance of the class this
Definition: SMOMPI_LandauLifschitzFunction.h:74
This class describes an MPI implementation of SM_LandauLifschitzSystem.
Definition: SMOMPI_LandauLifschitzSystem.h:18
virtual void sumOverNetworks(const int &rootNetwork, tIndex &n, const tIndex &nValues, tReal *values) const final
sum the values of all network
Definition: SMOMPI_LandauLifschitzSystem.cpp:10
virtual tMemSize getMemorySize() const
return the memory size of the class and the memory size of all its attributes/associations
Definition: SMOMPI_LandauLifschitzSystem.h:64
virtual void computeVariationMagneticField(const tReal &dt, SM_RealField &H) const final
computes
Definition: SMOMPI_LandauLifschitzSystem.cpp:124
SMOMPI_LandauLifschitzSystem(void)
create a class
Definition: SMOMPI_LandauLifschitzSystem.h:33
virtual void computeBrownianVariationMagneticField(SM_MultiStochasticFunctionsInterface &stochFs, const tReal &dt, const tReal &bdt, const tReal &epsilon, const tBoolean &incdWt, tReal *dWt, SM_RealField &H) final
add stochastic brownian field
Definition: SMOMPI_LandauLifschitzSystem.cpp:136
static void ComputeMagneticMomentDirectionsAtNextTimeStep(const tIndex &nParticles, const SM_RealField &deltaS, const SM_RealField &S, SM_RealField &nextS)
compute
Definition: SMOMPI_LandauLifschitzSystem.cpp:157
void computeBrownianVariationMagneticFieldWithSCStochasticFunctions(SM_MultiStochasticFunctions< StochFImpl > &stochFs, const tReal &dt, const tReal &bdt, const tReal &epsilon, const tBoolean &incdWt, tReal *dWt, SM_RealField &H)
add stochastic brownian field
Definition: SMOMPI_LandauLifschitzSystem.hpp:8
tBoolean stochasticRunWithSCStochasticFunctions(const tIndex &steppersNumber, SM_MultiStochasticFunctions< StochFImplement > &stochasticFunctions, const SM_NoiseRateFunction< NoiseFImplement > &noiseRateFunction)
compute the relaxation process by calling only virtual methods
virtual tBoolean initializeMagneticMomentDirections() final
initialize magnetic moments direction
Definition: SMOMPI_LandauLifschitzSystem.cpp:54
virtual tBoolean updateInitialMagneticMomentDirections(const SM_RealField &S0) final
update the initial unit direction of spins
Definition: SMOMPI_LandauLifschitzSystem.cpp:78
virtual tMemSize getContentsMemorySize() const
return the memory size of the included associations
Definition: SMOMPI_LandauLifschitzSystem.h:76
virtual ~SMOMPI_LandauLifschitzSystem(void)
destroy the class
Definition: SMOMPI_LandauLifschitzSystem.h:42
void discretize() override
discretize the fields
Definition: SMOMPI_LandauLifschitzSystem.cpp:23
This class is a simulation of one trajectory class for Stoch Magnet package.
Definition: SM_LandauLifschitzSystem.h:59
void setLandauLifschitzFunction(CORE_UniquePointer< SM_LandauLifschitzFunction > llF)
set the landau lifschitz function
Definition: SM_LandauLifschitzSystem.h:439
virtual tMemSize getContentsMemorySize() const
return the memory size of the included associations
Definition: SM_LandauLifschitzSystem.h:160
tReal computeNetTorque() const
compute Net Torque
Definition: SM_LandauLifschitzSystem.h:347
This class describes a multi stochastic functions based on same random number generator which impleme...
Definition: SM_MultiStochasticFunctionsInterface.h:18
This class describes a multi stochastic functions based on same random number generator which impleme...
Definition: SM_MultiStochasticFunctions.h:26
This class describes a templated noise rate function as static polymorphism.
Definition: SM_NoiseRateFunction.h:14
this class implements the virtual methods of its base class SM_StochasticOutputComponent with templat...
Definition: SM_StochasticOutput.h:24