1 #ifndef SM_DipolarField_H
2 #define SM_DipolarField_H
45 inline static CORE_UniquePointer<SelfClass>
New() {
46 return CORE_UniquePointer<SelfClass>(
new SelfClass(),
61 const tReal* sXj,
const tReal *eXj,
63 std::array<tReal,SM_Constants::DIM>& Hi,
64 std::array<tReal,SM_Constants::DIM>& U) {
67 const tReal *iXi=
null;
85 const tReal *iSjk=
null;
91 functions_array::reset(Hi);
163 (*iHi)+=(3*sUSj*(*iU)-(*iSj))/rij3;
194 const tReal* sYj,
const tReal *eYj,
196 std::array<tReal,SM_Constants::DIM>& Hi,
197 std::array<tReal,SM_Constants::DIM>& U) {
202 const tReal *iXi=
null;
216 const tReal *iYj=sYj;
219 const tReal *iSj=sSj;
220 const tReal *iSjk=
null;
223 tReal *iHi=Hi.data();
301 (*iHi)+=(3*sUSj*(*iU)-(*iSj))/rij3;
333 const tReal* sXj,
const tReal *eXj,
335 std::array<tReal,SM_Constants::DIM>& Hi,
336 std::array<tReal,SM_Constants::DIM>& U) {
339 const tReal *iXi=
null;
353 const tReal *iXj=sXj;
356 const tReal *iSj=sSj;
357 const tReal *iSjk=
null;
360 tReal *iHi=Hi.data();
435 (*iHi)+=(3*sUSj*(*iU)-(*iSj))/rij3;
460 const tReal* iXj,
const tReal* eXj,
const tReal* iSj,
465 const tReal *iXi=
null;
468 const tReal *iSi=
null;
473 std::array<tReal,SM_Constants::DIM> U;
552 sSiSj+=(*iSi)*(*iSj);
562 Ei+=(sSiSj-3*sUSi*sUSj)/rij3;
584 const tReal* iXj,
const tReal* eXj,
const tReal* iSj,
589 const tReal *iXi=
null;
592 const tReal *iSi=
null;
597 std::array<tReal,SM_Constants::DIM> U;
675 sSiSj+=(*iSi)*(*iSj);
685 Ei+=(sSiSj-3*sUSi*sUSj)/rij3;
704 const tReal* iXj,
const tReal* eXj,
const tReal* iSj,
740 const tReal* iXj,
const tReal* eXj,
const tReal* iSj,
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:113
static constexpr tDimension DIM
space dimension
Definition: SM_Constants.h:80
Definition: SM_DipolarField.h:15
SM_DipolarField(void)
create a network class
Definition: SM_DipolarField.h:31
static void ComputeSeparatedUnscaledSpinDipolarField(const tReal *Xi, const tReal *sXj, const tReal *eXj, const tReal *sSj, std::array< tReal, SM_Constants::DIM > &Hi, std::array< tReal, SM_Constants::DIM > &U)
compute the dipolar spin dipolar field at point X for separated domain
Definition: SM_DipolarField.h:332
static void ComputeSeparatedUnscaledSpinEnergy(const tReal *iXi, const tReal *eXi, const tReal *iSi, const tReal *iXj, const tReal *eXj, const tReal *iSj, tReal &E)
compute the dipolar field energy
Definition: SM_DipolarField.h:703
static void ComputeSeparatedUnscaledSpinEnergy(const tReal *Xi, const tReal *Si, const tReal *iXj, const tReal *eXj, const tReal *iSj, tReal &Ei)
compute the dipolar field unscaled energy in sperated domain
Definition: SM_DipolarField.h:583
virtual ~SM_DipolarField(void)
destroy
Definition: SM_DipolarField.h:37
static void ComputeUnscaledSpinDipolarFieldInSeparatedNetworkStorage(const tReal *Xi, const tReal *sYj, const tReal *eYj, const tReal *sSj, std::array< tReal, SM_Constants::DIM > &Hi, std::array< tReal, SM_Constants::DIM > &U)
compute the dipolar sping dipolar fiel at point X
Definition: SM_DipolarField.h:193
static void ComputeUnscaledSpinEnergy(const tReal *iXi, const tReal *eXi, const tReal *iSi, const tReal *iXj, const tReal *eXj, const tReal *iSj, tReal &E)
compute the dipolar field energy
Definition: SM_DipolarField.h:739
static void ComputeUnscaledSpinDipolarField(const tReal *Xi, const tReal *sXj, const tReal *eXj, const tReal *sSj, std::array< tReal, SM_Constants::DIM > &Hi, std::array< tReal, SM_Constants::DIM > &U)
compute the dipolar sping dipolar fiel at point X
Definition: SM_DipolarField.h:60
static CORE_UniquePointer< SelfClass > New()
build a new unique instance of the class thos
Definition: SM_DipolarField.h:45
static void ComputeUnscaledSpinEnergy(const tReal *Xi, const tReal *Si, const tReal *iXj, const tReal *eXj, const tReal *iSj, tReal &Ei)
compute the dipolar field energy
Definition: SM_DipolarField.h:459
This class is a base class for Stoch Microm package.
Definition: SM_Object.h:36