C++ mpi module for stochmagnet_main Package
Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
SM_LandauLifschitzSystem Class Referenceabstract

This class is a simulation of one trajectory class for Stoch Magnet package. More...

#include <SM_LandauLifschitzSystem.h>

Inheritance diagram for SM_LandauLifschitzSystem:
Inheritance graph
[legend]
Collaboration diagram for SM_LandauLifschitzSystem:
Collaboration graph
[legend]

Public Member Functions

virtual tMemSize getMemorySize () const
 return the memory size of the class and the memory size of all its attributes/associations More...
 
virtual tMemSize getContentsMemorySize () const
 return the memory size of the included associations More...
 
virtual tBoolean updateInitialMagneticMomentDirections (const SM_RealField &S0)
 update the initial unit direction of spins More...
 
virtual tBoolean initializeMagneticMomentDirections () override
 initialize magnetic moments direction _ time step index = 0 More...
 
const SM_TimeSteppergetTimeStepper () const
 get the time stepper More...
 
SM_TimeSteppergetTimeStepper ()
 get the time stepper More...
 
const tReal & getTime () const
 get the time More...
 
const tIndex & getTimeIndex () const
 get the time index More...
 
tIndex & getTimeIndex ()
 get the time index More...
 
tReal & getTime ()
 get the time More...
 
void resetTime ()
 reset time
 
const tReal & getNoiseRate () const
 get the noise rate More...
 
tReal & getNoiseRate ()
 get the noise rate More...
 
void setNoiseRateFunction (CORE_UniquePointer< SM_NoiseRateFunctionInterface > &f)
 gst the noise rate function More...
 
tBoolean hasNoiseRateFunction () const
 return true if the noise rate function is not null More...
 
SM_NoiseRateFunctionInterfacegetNoiseRateFunction ()
 get the noise rate function More...
 
const SM_NoiseRateFunctionInterfacegetNoiseRateFunction () const
 get the noise rate function More...
 
virtual void setNoiseTemperature (const tReal &T) override
 set the noise as a temperature in Kelvin More...
 
void setIsRelaxed (const tBoolean &isRelaxed)
 set if the system runs until relaxation More...
 
const tBoolean & isRelaxed () const
 get if the system runs until relaxation More...
 
void setRelaxationTolerance (const tReal &eps)
 set the relaxation tolerance to detect relaxation More...
 
const tReal & getRelaxationTolerance () const
 get the relaxation tolerance to detect relaxation More...
 
const tReal & getRelaxationValue () const
 get the relaxation value to detect relaxation for reading More...
 
tReal & getRelaxationValue ()
 get the relaxation value to detect relaxation for writing More...
 
tReal computeNetTorque () const
 compute Net Torque \( |S \wedge H |_\infty \)
 
virtual tReal computeNetTorque (const tIndex &nParticles, const tReal *S, const tIndex &nHParticles, const tReal *H) const =0
 compute Net Torque \( |S \wedge H |_\infty \) More...
 
const SM_LandauLifschitzFunctiongetLandauLifschitzFunction () const
 get the Landau Lifschitz function return the Landau lifschitz function for reading
 
SM_LandauLifschitzFunctiongetLandauLifschitzFunction ()
 get the Landau Lifschitz function More...
 
virtual void normalize (const tBoolean &isAdimensionized) override
 normalize the system More...
 
const SM_RealFieldgetMagneticField () const
 get the magnetic field for writting More...
 
const SM_RealFieldgetMagneticMomentDirectionsVariation () const
 get the variation of the direction of the magnetic moments for writting More...
 
virtual void discretize () override
 discretize the system More...
 
virtual tULLInt getGeneratedRandomNumbers () const override
 get the generated of random number within a stochastic run per one step of run
 
template<class StochOutputI >
tBoolean deterministicRun (const tIndex &steppersNumber, SM_StochasticOutput< StochOutputI > &stochasticOutput)
 compute deterministic running of steppers number of the system with computing statistics More...
 
tBoolean stochasticRun (const tIndex &steppersNumber, SM_MultiStochasticFunctionsInterface &sfs)
 compute the steppers number of system without stochastic output More...
 
template<class StochOutputImplement >
tBoolean stochasticRun (const tIndex &steppersNumber, SM_MultiStochasticFunctionsInterface &multiStochasticFunctions, SM_StochasticOutput< StochOutputImplement > &stochasticOutput)
 compute the steppers number of system without stochastic output More...
 
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 More...
 
template<class StochOutputImpl >
tBoolean stochasticJRun (const tIndex &steppersNumber, SM_StochasticFunctionsInterface &stochasticFunctions, SM_StochasticOutput< StochOutputImpl > &stochasticOutput, const std::function< void(const tReal &, const tReal &, const tReal &, tReal &)> &F)
 compute the steppers number of system for reaching the relaxed state More...
 
virtual void computeVariationMagneticField (const tReal &dt, SM_RealField &H) const =0
 computes \( H:=H.dt \) More...
 
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 \( H:=dt.H+ sdt.\varepsilon.N(0,1) \) More...
 
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 More...
 
virtual tString toString () const override
 turn the class into a string representation More...
 
- Public Member Functions inherited from SM_System
void setNetwork (CORE_UniquePointer< SM_Network > net)
 set the network More...
 
const SM_NetworkgetNetwork () const
 get the network More...
 
SM_NetworkgetNetwork ()
 get the network More...
 
tBoolean hasNetwork () const
 return true if the system has a network More...
 
const SM_MaterialgetMaterial () const
 get the material of the network More...
 
SM_MaterialgetMaterial ()
 get the material of the network More...
 
void setInitialMagneticMomentDirections (const std::valarray< tReal > &S0)
 set the initial unit direction of spins More...
 
void setInitialMagneticMomentDirections (const SM_RealField &S0)
 set the initial unit direction of spins More...
 
void setInitialMagneticMomentDirections (const tIndex &N, const std::array< tReal, SM_Constants::DIM > &S0)
 set the initial unit direction of spins More...
 
const SM_RealFieldgetInitialMagneticMomentDirections () const
 get the initial unit direction of spins More...
 
SM_RealFieldgetInitialMagneticMomentDirections ()
 get the initial unit direction of spins for writting More...
 
const SM_RealFieldgetMagneticMomentDirections () const
 get the unit direction of spins at time More...
 
SM_RealFieldgetMagneticMomentDirections ()
 get the unit direction of spins at time for writting More...
 
void addOperator (CORE_UniquePointer< SM_Operator > op)
 add operator More...
 
const SM_SliceOperatorgetOperator (const tString &name) const
 get the operator with name More...
 
SM_SliceOperatorgetOperator (const tString &name)
 get the operator with name More...
 
void copyOperators (const SM_System &system)
 copy the operator More...
 
const std::map< tString, CORE_UniquePointer< SM_Operator > > & getOperators () const
 get the operators More...
 
std::map< tString, CORE_UniquePointer< SM_Operator > > & getOperators ()
 get the operators More...
 
tIndex getOperatorsNumber () const
 get the operators number More...
 
void getOperatorsName (std::vector< tString > &names) const
 get the operator names More...
 
virtual void setStochasticNoise (const tReal &eps)
 set the stochastic noise without dimension More...
 
const tReal & getStochasticNoise () const
 get the stochastic noise without dimension More...
 
const tReal & getNoiseTemperature () const
 get the noise temperature in Kelvin More...
 
const tIndex & getStepIndex () const
 get the step index More...
 
tIndex & getStepIndex ()
 get the step index More...
 
virtual void sumOverNetworks (const int &rootNetwork, tIndex &n, const tIndex &nValues, tReal *values) const
 sum the values of all network More...
 
void computeMagneticMomentDirectionsSumOverNetworks (const int &rootNetwork, std::array< tReal, SM_Constants::DIM > &sumS) const
 compute the sum over the domain of magnetic moment dierctions More...
 
void computeMagneticMomentDirectionsMeanOverNetworks (const int &rootNetwork, std::array< tReal, SM_Constants::DIM > &meanS) const
 compute the mean over the domain of magneticmoment directions More...
 
void computeMagneticMomentDirectionsSum (const tInteger &start, const tInteger &end, std::array< tReal, SM_Constants::DIM > &sumS) const
 compute the sum of magnetic moment directions over the network More...
 
void updateOperatorsState (const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const SM_RealField &S)
 update the operators state before computeing magnetic field More...
 
void computeMagneticField (const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const SM_RealField &S, SM_RealField &H) const
 compute the magnetic field at time step index t by calling the virtual method SM_Operator::computeMagneticField() More...
 
tReal computeSpinEnergy (const tIndex &i, const SM_Network &network, const SM_Material &material, const SM_RealField &S) const
 compute the energy of the spin of the system More...
 
tReal computeSpinEnergy (const tIndex &i, const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const SM_RealField &S) const
 compute the energy of the spin of the system More...
 
const tReal & computeEnergies (std::valarray< tReal > &energies) const
 compute the energies per operators More...
 
const tReal & computeEnergies (const tIndex &timeIndex, std::valarray< tReal > &energies) const
 compute the energies per operators More...
 
- Public Member Functions inherited from SM_Object
 SM_Object (void)
 create
 
virtual ~SM_Object (void)
 destroy
 
- Public Member Functions inherited from CORE_Object
template<class T >
std::shared_ptr< T > getSharedPointer ()
 return the shared pointer for this More...
 
template<class T >
std::shared_ptr< const T > getConstSharedPointer () const
 return a const shared pointer for this More...
 
template<class T >
tBoolean isInstanceOf () const
 test if the clas T is an instance of this class More...
 
tString getClassName () const
 return the name of the class More...
 
tString getPointerString () const
 retrun the pointer of the class as a string More...
 
tString getIdentityString () const
 retrun the string identification of the class More...
 

Protected Member Functions

 SM_LandauLifschitzSystem (void)
 create a class
 
virtual ~SM_LandauLifschitzSystem (void)
 destroy the class
 
tReal computeNetSliceTorque (const tIndex &startS, const tIndex &endS, const tReal *S, const tIndex &startH, const tReal *H) const
 compute Net Torque \( |S \wedge H |_\infty \) for all particules in indices in [start,end[ More...
 
void setIsBrownianNull (const tBoolean &v)
 set if the brownian variable is null More...
 
const tBoolean & isBrownianNull () const
 get if the brownian variable is null
 
void setIsRealBrownianVariable (const tBoolean &v)
 set if the brownian variable is a field or a real
 
const tBoolean & isRealBrownianVariable () const
 get if the brownian variable is a field or a real
 
const SM_RealFieldgetBrownianField () const
 get the generated brownian variable for reading More...
 
SM_RealFieldgetBrownianField ()
 get the generated brownian variable for reading More...
 
void setLandauLifschitzFunction (CORE_UniquePointer< SM_LandauLifschitzFunction > llF)
 set the landau lifschitz function
 
SM_RealFieldgetMagneticField ()
 get the magnetic field for writting More...
 
SM_RealFieldgetMagneticMomentDirectionsVariation ()
 get the variation of the direction of the magnetic moments for writting More...
 
void computeVariationMagneticFieldSlice (const tIndex &start, const tIndex &end, const tReal &dt, tReal *H) const
 computes \( H:=H.dt \) for particle indices in [start,end[ More...
 
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 \( H:=dt.H+ sdt.\varepsilon.N(0,1) \) for particle indices in [start,end[ More...
 
template<class StochFImpl >
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 \( H:=dt.H+ sdt.\varepsilon.N(0,1) \) for particle indices in [start,end[ More...
 
- Protected Member Functions inherited from SM_System
 SM_System (void)
 create a class
 
virtual ~SM_System (void)
 destroy the class
 
tReal computeEnergy (const SM_Network &network, const SM_Material &material, const SM_RealField &S) const
 compute the energy of the system More...
 
tReal computeEnergy (const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const SM_RealField &S) const
 compute the energy of the system More...
 
- Protected Member Functions inherited from CORE_Object
 CORE_Object ()
 build an instance of the object
 
virtual ~CORE_Object ()
 destroy the instance of object std

 

Static Protected Member Functions

static void ComputeMagneticMomentDirectionsSliceAtNextTimeStep (tIndex startS, tIndex endS, const tIndex &nDeltaS, const tReal *deltaS, const tIndex &nS, const tReal *S, tReal *nextS)
 compute \( nextS:=St+deltaS \) for all particle indices in [start,end[ More...
 
static void ComputeMagneticMomentDirectionsSliceAtNextTimeStep (tIndex startS, tIndex endS, const tIndex &nDeltaS, const tReal *deltaSt, const tReal &alpha, const tIndex &nS, const tReal *S, tReal *nextS)
 compute \( nextSt = alpha.St+deltaS \) for all particle indices in [start,end[ More...
 

Additional Inherited Members

- Static Public Member Functions inherited from SM_System
static void ComputeFieldSum (const tInteger &start, const tInteger &end, const SM_RealField &F, std::array< tReal, SM_Constants::DIM > &sumF)
 compute the sum of F over the network More...
 
- Static Public Member Functions inherited from CORE_Object
static tBoolean EnableMemoryStack (const tBoolean &isMemoryChecked)
 enable the memory stack More...
 
static void EnableMemoryStack ()
 enable the memory stack
 
static void DisableMemoryStack ()
 disable the memory stack
 
static tBoolean IsMemoryStackEnabled ()
 return trur if the memory stack is enabled
 
static tString MemoryStackToString ()
 get the memory stack in string More...
 
static tIndex GetRegisteredClassesNumber ()
 get the memory stack in string More...
 

Detailed Description

This class is a simulation of one trajectory class for Stoch Magnet package.

This class solves the system

The general stochastic relaxation process implemented in the class SM_StratonovichNormalizedSystem can be sumarized with the following algorithm

Member Function Documentation

◆ computeBrownianVariationMagneticField()

virtual void SM_LandauLifschitzSystem::computeBrownianVariationMagneticField ( SM_MultiStochasticFunctionsInterface stochFs,
const tReal &  dt,
const tReal &  bdt,
const tReal &  epsilon,
const tBoolean &  incdWt,
tReal *  dWt,
SM_RealField H 
)
pure virtual

add stochastic brownian field \( H:=dt.H+ sdt.\varepsilon.N(0,1) \)

Parameters
[in,out]stochFs: normal law
[in]dt: time step
[in]bdt: time step for brownain mvt
[in]epsilon: noise rate
[in]incdWtincrement on dwt 0 for scalar 1 for field
[out]dWtbrownian noise computed
[in,out]H: magnetic field

Implemented in SMOMPI_LandauLifschitzSystem.

◆ computeBrownianVariationMagneticFieldSlice()

void SM_LandauLifschitzSystem::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 
)
inlineprotected

add stochastic brownian field \( H:=dt.H+ sdt.\varepsilon.N(0,1) \) for particle indices in [start,end[

Parameters
[in,out]randF: normal random law
[in]start: index of start particle of H
[in]end: index of end particle of H
[in]dt: time step
[in]bdt: time step for brownain mvt
[in]epsilon: noise rate
[in]incdWtincrement on dwt 0 for scalar 1 for field
[out]dWtbrownian noise computed
[in,out]H: magnetic field

◆ computeBrownianVariationMagneticFieldSliceWithSCStochasticFunctions()

template<class StochFImpl >
void SM_LandauLifschitzSystem::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 
)
inlineprotected

add stochastic brownian field \( H:=dt.H+ sdt.\varepsilon.N(0,1) \) for particle indices in [start,end[

Template Parameters
StochFImpl: implemented class SM_StochasticFunctions
Parameters
[in,out]randF: normal random law
[in]start: index of start particle of H
[in]end: index of end particle of H
[in]dt: time step
[in]bdt: time step for brownian mvt
[in]epsilon: noise rate
[in]incdWtincrement on dwt 0 for scalar 1 for field
[out]dWtbrownian noise computed
[in,out]H: magnetic field

◆ computeMagneticMomentDirectionsAtNextTimeStep()

virtual tBoolean SM_LandauLifschitzSystem::computeMagneticMomentDirectionsAtNextTimeStep ( const tReal &  dt,
const tReal &  epsilon_t,
const SM_RealField deltaSt,
SM_RealField St 
)
pure virtual

compute direction of magnetic moments at next time

Parameters
[in]dttime step
[in]epsilon_t: epsilon at time t
[in]deltaSt: variation of S at time t
[in,out]St:
  • in input S at time t
  • in output S at time t+dt

    \( S_{t+dt}=\Delta S_t+(1-K.\varepsilon_t^2.dt).\S_t \)

Returns
false if there is a point \( P_i \) where at the coordinate k , \( |\mu_k(P_i)| \) is too much greater than 1 (10 for instance)

Implemented in SMOMPI_StratonovichSystem, SMOMPI_StratonovichNormalizedSystem, SMOMPI_ItoSystem, and SMOMPI_HeunSystem.

◆ ComputeMagneticMomentDirectionsSliceAtNextTimeStep() [1/2]

void SM_LandauLifschitzSystem::ComputeMagneticMomentDirectionsSliceAtNextTimeStep ( tIndex  startS,
tIndex  endS,
const tIndex &  nDeltaS,
const tReal *  deltaS,
const tIndex &  nS,
const tReal *  S,
tReal *  nextS 
)
staticprotected

compute \( nextS:=St+deltaS \) for all particle indices in [start,end[

Parameters
[in]startS: index of start particle of S
[in]endS: index of end particle of S
[in]nDeltaS: number of elmeents of delta S
[in]deltaS: variation of S
[in]nSnumber of elements of S & St
[in]Sdirection of magnetic moments with the same number of elements of S
[out]nextS\( Y_t:=S+\Delta S \) and \( nextS(p)=Y_t(p) / |Y_t(p)| \)

◆ ComputeMagneticMomentDirectionsSliceAtNextTimeStep() [2/2]

void SM_LandauLifschitzSystem::ComputeMagneticMomentDirectionsSliceAtNextTimeStep ( tIndex  startS,
tIndex  endS,
const tIndex &  nDeltaS,
const tReal *  deltaSt,
const tReal &  alpha,
const tIndex &  nS,
const tReal *  S,
tReal *  nextS 
)
staticprotected

compute \( nextSt = alpha.St+deltaS \) for all particle indices in [start,end[

Parameters
[in]startS: index of start particle
[in]endS: index of end particle
[in]nDeltaS: number of elments of delta S
[in]deltaSt: time variation of S at t
[in]alpha: coefficient of St
[in]nSnumber of elements of S & St
[in]Sdirection of magnetic moments with the same number of elements of S
[out]nextS\( Y_t:=\alpha. S_t+\Delta S_t \) and \( nextS(p)=Y_t(p) / |Y_t(p)| \)

◆ computeNetSliceTorque()

tReal SM_LandauLifschitzSystem::computeNetSliceTorque ( const tIndex &  startS,
const tIndex &  endS,
const tReal *  S,
const tIndex &  startH,
const tReal *  H 
) const
protected

compute Net Torque \( |S \wedge H |_\infty \) for all particules in indices in [start,end[

Parameters
[in]startSstart index of particle for S
[in]endSend index of particle for S
[in]S: direction of magnetic moments of all particles
[in]startHindex of start particles for H
[in]H: magnetic field at all particles

◆ computeNetTorque()

virtual tReal SM_LandauLifschitzSystem::computeNetTorque ( const tIndex &  nParticles,
const tReal *  S,
const tIndex &  nHParticles,
const tReal *  H 
) const
pure virtual

compute Net Torque \( |S \wedge H |_\infty \)

Parameters
[in]nParticlesnumber of particles
[in]S: direction of magnetic moments of all particles may be greater than the nParticles because of presence of halo particles
[in]nHParticlesnumber of particles for H
[in]H: magnetic field at all particles

Implemented in SMOMPI_LandauLifschitzSystem.

◆ computeVariationMagneticField()

virtual void SM_LandauLifschitzSystem::computeVariationMagneticField ( const tReal &  dt,
SM_RealField H 
) const
pure virtual

computes \( H:=H.dt \)

Parameters
[in]dt: time step
[in,out]H: magnetic field

Implemented in SMOMPI_LandauLifschitzSystem.

◆ computeVariationMagneticFieldSlice()

void SM_LandauLifschitzSystem::computeVariationMagneticFieldSlice ( const tIndex &  start,
const tIndex &  end,
const tReal &  dt,
tReal *  H 
) const
inlineprotected

computes \( H:=H.dt \) for particle indices in [start,end[

Parameters
[in]start: index of the start particle of H
[in]endindex of the end particle of H
[in]dt: time step
[in,out]H: magnetic field

◆ deterministicRun()

template<class StochOutputI >
tBoolean SM_LandauLifschitzSystem::deterministicRun ( const tIndex &  steppersNumber,
SM_StochasticOutput< StochOutputI > &  stochasticOutput 
)

compute deterministic running of steppers number of the system with computing statistics

Template Parameters
StochOutputI: implemented class SM_StochasticOutput
Parameters
[in]steppersNumbernumber of steppers to run
[in,out]stochasticOutputstochastic data to compute

◆ discretize()

virtual void SM_LandauLifschitzSystem::discretize ( )
inlineoverridevirtual

discretize the system

Reimplemented from SM_System.

Reimplemented in SMOMPI_StratonovichSystem, SMOMPI_StratonovichNormalizedSystem, SMOMPI_LandauLifschitzSystem, and SMOMPI_HeunSystem.

◆ getBrownianField() [1/2]

SM_RealField& SM_LandauLifschitzSystem::getBrownianField ( )
inlineprotected

get the generated brownian variable for reading

Returns
the brownian field generated

◆ getBrownianField() [2/2]

const SM_RealField& SM_LandauLifschitzSystem::getBrownianField ( ) const
inlineprotected

get the generated brownian variable for reading

Returns
the brownian field generated

◆ getContentsMemorySize()

virtual tMemSize SM_LandauLifschitzSystem::getContentsMemorySize ( ) const
inlinevirtual

return the memory size of the included associations

Returns
the memory size of the storage in bytes 1 Kb = 1024 bytes 1 Mb = 1024 Kb 1 Gb = 1024 Mb 1 Tb = 1024 Gb 1 Hb = 1024 Tb

Reimplemented from SM_System.

Reimplemented in SMOMPI_LandauLifschitzSystem, and SMOMPI_HeunSystem.

◆ getLandauLifschitzFunction()

SM_LandauLifschitzFunction& SM_LandauLifschitzSystem::getLandauLifschitzFunction ( )
inline

get the Landau Lifschitz function

Returns
the Landau lifschitz function for writing

◆ getMagneticField() [1/2]

SM_RealField& SM_LandauLifschitzSystem::getMagneticField ( )
inlineprotected

get the magnetic field for writting

Returns
the magnetic field

◆ getMagneticField() [2/2]

const SM_RealField& SM_LandauLifschitzSystem::getMagneticField ( ) const
inline

get the magnetic field for writting

Returns
the magnetic field

◆ getMagneticMomentDirectionsVariation() [1/2]

SM_RealField& SM_LandauLifschitzSystem::getMagneticMomentDirectionsVariation ( )
inlineprotected

get the variation of the direction of the magnetic moments for writting

Returns
the variation of the direction of the magnetic moments

◆ getMagneticMomentDirectionsVariation() [2/2]

const SM_RealField& SM_LandauLifschitzSystem::getMagneticMomentDirectionsVariation ( ) const
inline

get the variation of the direction of the magnetic moments for writting

Returns
the variation of the direction of the magnetic moments

◆ getMemorySize()

virtual tMemSize SM_LandauLifschitzSystem::getMemorySize ( ) const
inlinevirtual

return the memory size of the class and the memory size of all its attributes/associations

Returns
the memory size of the class and the memory size of its attributes/associations in bytes The mamory size is :
  • the added size of the base classes which contains:
    • the primary attributes size depends on the order: (first delare the smallest attributes size
    • all virtual functions costs <pointer-size> (4 32xor 8 64x) bytes by virtual function
    • virtual inherihtance will increase of (4 or 8) bytes
  • we add the size of the contains values of the attributes : for example the size of a string is the length of the string 1 octet = 1 byte 1 Ko = 1024 bytes 1 Mo = 1024 Ko 1 Go = 1024 Mo

Reimplemented from SM_System.

Reimplemented in SMOMPI_StratonovichSystem, SMOMPI_StratonovichNormalizedSystem, SMOMPI_LandauLifschitzSystem, SMOMPI_ItoSystem, and SMOMPI_HeunSystem.

◆ getNoiseRate() [1/2]

tReal& SM_LandauLifschitzSystem::getNoiseRate ( )
inline

get the noise rate

Returns
the nose rate at t

◆ getNoiseRate() [2/2]

const tReal& SM_LandauLifschitzSystem::getNoiseRate ( ) const
inline

get the noise rate

Returns
the nose rate at t

◆ getNoiseRateFunction() [1/2]

SM_NoiseRateFunctionInterface& SM_LandauLifschitzSystem::getNoiseRateFunction ( )
inline

get the noise rate function

Returns
the noise rate function

◆ getNoiseRateFunction() [2/2]

const SM_NoiseRateFunctionInterface& SM_LandauLifschitzSystem::getNoiseRateFunction ( ) const
inline

get the noise rate function

Returns
the noise rate function

◆ getRelaxationTolerance()

const tReal& SM_LandauLifschitzSystem::getRelaxationTolerance ( ) const
inline

get the relaxation tolerance to detect relaxation

Returns
tolerance value

◆ getRelaxationValue() [1/2]

tReal& SM_LandauLifschitzSystem::getRelaxationValue ( )
inline

get the relaxation value to detect relaxation for writing

Returns
relaxtion value

◆ getRelaxationValue() [2/2]

const tReal& SM_LandauLifschitzSystem::getRelaxationValue ( ) const
inline

get the relaxation value to detect relaxation for reading

Returns
relaxtion value

◆ getTime() [1/2]

tReal& SM_LandauLifschitzSystem::getTime ( )
inline

get the time

Returns
the current time

◆ getTime() [2/2]

const tReal& SM_LandauLifschitzSystem::getTime ( ) const
inline

get the time

Returns
the current time

◆ getTimeIndex() [1/2]

tIndex& SM_LandauLifschitzSystem::getTimeIndex ( )
inline

get the time index

Returns
the current time index

◆ getTimeIndex() [2/2]

const tIndex& SM_LandauLifschitzSystem::getTimeIndex ( ) const
inline

get the time index

Returns
the current time index

◆ getTimeStepper() [1/2]

SM_TimeStepper& SM_LandauLifschitzSystem::getTimeStepper ( )
inline

get the time stepper

Returns
the time stepper for writing

◆ getTimeStepper() [2/2]

const SM_TimeStepper& SM_LandauLifschitzSystem::getTimeStepper ( ) const
inline

get the time stepper

Returns
the time stepper for reading

◆ hasNoiseRateFunction()

tBoolean SM_LandauLifschitzSystem::hasNoiseRateFunction ( ) const
inline

return true if the noise rate function is not null

Returns
true if noise rate function is not null

◆ initializeMagneticMomentDirections()

virtual tBoolean SM_LandauLifschitzSystem::initializeMagneticMomentDirections ( )
inlineoverridevirtual

initialize magnetic moments direction _ time step index = 0

  • step index reste to 0
  • S(t=0)=S_{init}
    Returns
    true if St & S0 has same size

Reimplemented from SM_System.

Reimplemented in SMOMPI_LandauLifschitzSystem.

◆ isRelaxed()

const tBoolean& SM_LandauLifschitzSystem::isRelaxed ( ) const
inline

get if the system runs until relaxation

Returns
true to reach relaxation

◆ normalize()

virtual void SM_LandauLifschitzSystem::normalize ( const tBoolean &  isAdimensionized)
inlineoverridevirtual

normalize the system

Parameters
[in]isAdimensionizedtrue to adimensionize the system

Reimplemented from SM_System.

◆ setIsBrownianNull()

void SM_LandauLifschitzSystem::setIsBrownianNull ( const tBoolean &  v)
inlineprotected

set if the brownian variable is null

Parameters
[in]vtrue to desactivate brownian computation

◆ setIsRelaxed()

void SM_LandauLifschitzSystem::setIsRelaxed ( const tBoolean &  isRelaxed)
inline

set if the system runs until relaxation

Parameters
[in]isRelaxed: true to reach relaxation

◆ setNoiseRateFunction()

void SM_LandauLifschitzSystem::setNoiseRateFunction ( CORE_UniquePointer< SM_NoiseRateFunctionInterface > &  f)
inline

gst the noise rate function

Parameters
[in]f: the noise rate function

◆ setNoiseTemperature()

virtual void SM_LandauLifschitzSystem::setNoiseTemperature ( const tReal &  T)
inlineoverridevirtual

set the noise as a temperature in Kelvin

Parameters
[in]T: temperature

Reimplemented from SM_System.

◆ setRelaxationTolerance()

void SM_LandauLifschitzSystem::setRelaxationTolerance ( const tReal &  eps)
inline

set the relaxation tolerance to detect relaxation

Parameters
[in]epstolerance value

◆ stochasticJRun() [1/2]

tBoolean SM_LandauLifschitzSystem::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

Parameters
[in]steppersNumbernumber of steppers to run
[in,out]stochasticFunctions: stochastic functions to generate random numbers
[in]F: function F(J,eps,N,v) v=F(J,eps,N)

◆ stochasticJRun() [2/2]

template<class StochOutputImpl >
tBoolean SM_LandauLifschitzSystem::stochasticJRun ( const tIndex &  steppersNumber,
SM_StochasticFunctionsInterface stochasticFunctions,
SM_StochasticOutput< StochOutputImpl > &  stochasticOutput,
const std::function< void(const tReal &, const tReal &, const tReal &, tReal &)> &  F 
)

compute the steppers number of system for reaching the relaxed state

Template Parameters
StochOutputImpl: implmeent class for templated abstract methods of SM_StochasticOutput
Parameters
[in]steppersNumbernumber of steppers to run
[in,out]stochasticFunctions: stochastic functions to generate random numbers
[in,out]stochasticOutput: stochastic output of the running
[in]F: function F(J,eps,N,v) v=F(J,eps,N)

◆ stochasticRun() [1/2]

template<class StochOutputImplement >
tBoolean SM_LandauLifschitzSystem::stochasticRun ( const tIndex &  steppersNumber,
SM_MultiStochasticFunctionsInterface multiStochasticFunctions,
SM_StochasticOutput< StochOutputImplement > &  stochasticOutput 
)

compute the steppers number of system without stochastic output

Template Parameters
StochOutputImplement: implemented class of SM_StochasticOutput
Parameters
[in]steppersNumbernumber of steppers to run
[in,out]multiStochasticFunctions: stochastic functions to generate random numbers
[in,out]stochasticOutput: stochastic output generated by running

◆ stochasticRun() [2/2]

tBoolean SM_LandauLifschitzSystem::stochasticRun ( const tIndex &  steppersNumber,
SM_MultiStochasticFunctionsInterface sfs 
)

compute the steppers number of system without stochastic output

Template Parameters
StochOutputImplement: implemented class SM_StochasticOutput
Parameters
[in]steppersNumbernumber of steppers to run
[in,out]sfs: stochastic functions to generate random numbers per threads

◆ toString()

tString SM_LandauLifschitzSystem::toString ( ) const
overridevirtual

turn the class into a string representation

Returns
a string representation of the class

Reimplemented from SM_System.

◆ updateInitialMagneticMomentDirections()

virtual tBoolean SM_LandauLifschitzSystem::updateInitialMagneticMomentDirections ( const SM_RealField S0)
inlinevirtual

update the initial unit direction of spins

Parameters
[in]S0initial dierction of spins as an unit vector
Returns
true is initial magnetic moment direction is set to S0 only if they have the same size

Reimplemented from SM_System.

Reimplemented in SMOMPI_LandauLifschitzSystem.


The documentation for this class was generated from the following files: