|
C++ mpi module for stochmagnet_main Package
|
This class is describes a demagnetized operator. More...
#include <SM_MacroCellsDemagnetizedOperator.h>


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... | |
| void | setMacroCellsNetwork (CORE_UniquePointer< SM_MacroCellsNetwork > network) |
| set the macro cell network | |
| SM_MacroCellsNetwork & | getMacroCellsNetwork () |
| get the macro cell network | |
| const SM_MacroCellsNetwork & | getMacroCellsNetwork () const |
| get the macro cell network | |
| void | setMacroCellsMagnetizationField (CORE_UniquePointer< SM_MacroCellsMagnetizationField > f) |
| set the macro cell Magnetization field | |
| SM_MacroCellsMagnetizationField & | getMacroCellsMagnetizationField () |
| get the macro cells Magnetization field | |
| const SM_MacroCellsMagnetizationField & | getMacroCellsMagnetizationField () const |
| get the macro cells Magnetization field | |
| void | setMacroCellsDemagnetizedField (CORE_UniquePointer< SM_MacroCellsDemagnetizedField > f) |
| set the macro cell demagnetized field | |
| SM_MacroCellsDemagnetizedField & | getMacroCellsDemagnetizedField () |
| get the macro cells demagnetized field | |
| const SM_MacroCellsDemagnetizedField & | getMacroCellsDemagnetizedField () const |
| get the macro cells demagnetized field | |
| virtual void | discretize (const SM_Network &network, const SM_Material &material) override |
| discretize the operator on the netowek More... | |
| virtual void | updateState (const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const SM_RealField &S) override |
| uodate the state of the operator at time index More... | |
| virtual void | computeMagneticFieldSlice (const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const tIndex &startIndex, const tIndex &endIndex, const tReal *S, const tBoolean &alpha, const tIndex &nH, tReal *H) const final |
| compute the anisotropy magnetic field by virtual method More... | |
| virtual tReal | computeSpinEnergy (const tIndex &i, const tIndex &timeIndex, const SM_Network &network, const SM_Material &material, const SM_RealField &S) const override |
| compute the spin energy by virtual method More... | |
| virtual tReal | computeEnergySlice (const tIndex &stepIndex, const SM_Network &network, const SM_Material &material, const tIndex &startIndex, const tIndex &endIndex, const tReal *S) const override |
| compute the energy by virtual method More... | |
| virtual tString | toString () const override |
| return string representaton of the operator | |
Public Member Functions inherited from SM_SliceOperator | |
| virtual CORE_UniquePointer< SM_SliceOperator > | NewInstance () const =0 |
| create a New instance of this More... | |
| const tString & | getName () const |
| return the operator name More... | |
| virtual void | copy (const SM_SliceOperator &op) |
| copy More... | |
| virtual void | adimensionize (const tReal &cH) |
| adimensionize operator with characteric field value in J 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_MacroCellsDemagnetizedOperator (const CORE_OptionsList &arguments) | |
| create a network class | |
| virtual | ~SM_MacroCellsDemagnetizedOperator (void) |
| destroy | |
Protected Member Functions inherited from SM_SliceOperator | |
| SM_SliceOperator (void) | |
| create a network class | |
| virtual | ~SM_SliceOperator (void) |
| destroy | |
| void | setName (const tString &name) |
| set the name 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 | |
Additional Inherited Members | |
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... | |
This class is describes a demagnetized operator.
To improve the simulation accuracy and time computing of the dipolar field done by EMM_DipolarOperator, an other approach consists in discretizing the network in macro cells with a fixed cell size with is prefered to be a multiple of the unit cell size.
The position of each macro cell \(p_{mc}\) is defined from the magnetic center of mass of the particles of the macro cell: \( p_{mc}=\frac{\sum_{p_j \in \omega_{mc}} \tilde \mu^j_s . p_j}{\sum_{p_j \in \omega_{mc}} \tilde \mu^j} \) where \(\omega_{mc} \) is the domain of the macro cell at index \(mc\).
The magnetization of the macro cell is the sum of the atomic moments of the particles in the macro cell: \( M_{mc}=\sum_{p_j \in \omega_{mc}} \tilde \mu^j_s . S_j \)
The demagnetized field within each macro cell p is
\( H^p_{dem}=\frac{\mu_0}{4.\pi} \left ( \sum_{q\neq p} \frac{3 <M^q,u_{pq}>_3.u_{pq} - M^q}{r^3_{pq}} \right) - \frac{\mu_0}{3.V_p} M^p \)
where \(r_{pq}\) if the vector direction from macro cell \(p\) to macro cell \(q\) and the unit vector \(u_{pq}=\frac{r_{pq}}{|r_{pq}|}\) and \(V_p\) is the effective volume of the macro cell defined by:
\( V_p = n^a_p . \frac{a^3}{N_a} \)
when \(n^a_p\) is the number of particles inside the macro cell, \(a\) is the unit cell size and \(N_a\) the number of atoms in the unit cell size. The last term of the equation represents the demagnetized field generated by the particles in the macro cell to themselves.
The dipolar field of each particle is the demagnetized field defined of the macro cell to which it belongs.
|
overridevirtual |
compute the energy by virtual method
| [in] | stepIndex | index of time |
| [in] | network | : network |
| [in] | material | : material of the network |
| [in] | startIndex | : start index of the particle to compute the energy |
| [in] | endIndex | : end index of the particle to compute the energy |
| [in] | S | unit direction of magnetic spin moment of size nParticles x SM_Constants::DIM |
It returns \( E=\frac{1}{2} \sum_p E_i \)
Implements SM_SliceOperator.
Reimplemented in SM_MacroCellsExternalDemagnetizedOperator.
|
finalvirtual |
compute the anisotropy magnetic field by virtual method
| [in] | timeIndex | : time step index |
| [in] | network | : network |
| [in] | material | : material of the network |
| [in] | startIndex | : start index of the particle to compute the energy |
| [in] | endIndex | : end index of the particle to compute the energy |
| [in] | S | unit direction of magnetic spin moment of size nParticles x dim |
| [in] | alpha | sum operator 0 or 1 |
| [in] | nH | number of elements of H |
| [in,out] | H | total magnetic field of size nH x dim |
Computes \( H=alpha.H+H_{op} \)
\( H_{op}= K. \nabla_{S_i} Phi(S_i,U) \)
iterator on H at particle at end of coordinate of iH
Implements SM_SliceOperator.
|
overridevirtual |
compute the spin energy by virtual method
| [in] | i | : index of the particles |
| [in] | timeIndex | : time step index |
| [in] | network | : network |
| [in] | material | : material of the network |
| [in] | S | unit direction of magnetic spin moment of size nParticles x dim |
Implements SM_SliceOperator.
Reimplemented in SM_MacroCellsExternalDemagnetizedOperator.
|
overridevirtual |
discretize the operator on the netowek
| [in] | network | :operator on which the operatr is applied |
| [in] | material | : material of the particles of network It does :
|
Reimplemented from SM_SliceOperator.
Reimplemented in SM_MacroCellsExternalDemagnetizedOperator.
|
inlinevirtual |
return the memory size of the included associations
Reimplemented from SM_SliceOperator.
Reimplemented in SM_MacroCellsExternalDemagnetizedOperator, and SM_MacroCellsContinuousDemagnetizedOperator.
|
inlinevirtual |
return the memory size of the class and the memory size of all its attributes/associations
Reimplemented from SM_SliceOperator.
Reimplemented in SM_MacroCellsExternalDemagnetizedOperator, and SM_MacroCellsContinuousDemagnetizedOperator.
|
overridevirtual |
uodate the state of the operator at time index
| [in] | timeIndex | : time step index |
| [in] | network | : network |
| [in] | material | : material of the network |
| [in] | S | unit direction of magnetic spin moment of size nParticles x dim |
Reimplemented from SM_SliceOperator.
Reimplemented in SM_MacroCellsExternalDemagnetizedOperator.