1 #ifndef EMMG_SLDemagnetizedOperator_H 2 #define EMMG_SLDemagnetizedOperator_H 180 inline static SP::EMMG_SLDemagnetizedOperator
New() {
291 if (gM==
null)
throw EMM_Exception(
"generic",
"EMMG_SLDemagnetizedOperator:: computeMagneticExcitationField(..)",
292 "M is an incompatible real field");
296 if (gH==
null)
throw EMM_Exception(
"generic",
"EMMG_SLDemagnetizedOperator:: computeMagneticExcitationField(..)",
297 "H is an incompatible real field");
299 if (mMultiScaleGrid.get()==
null) {
302 product(mNx,mNy,mNz,dim,&mWM[0],mFFTmethod,mFFTarray,mHwork,&(*gH)[0]);
304 product(mNx,mNy,mNz,dim,&(*gM)[0],mFFTmethod,mFFTarray,mHwork,&(*gH)[0]);
309 mMultiScaleGrid->computeMultiGridExcitationField(M.
getSize(),dim,&(*gM)[0],&(*gH)[0]);
319 product(mNx,mNy,mNz,dim,M,mFFTmethod,mFFTarray,mHwork,H);
331 const tFlag& fftMethod,
tUIndex mNz
Definition: EMMG_SLDemagnetizedOperator.h:142
const tUIndex & getSize() const
return the size of the array for reading
Definition: CORE_Array.h:1018
virtual tUIndex getSize() const =0
return the size of the field
virtual tULLInt getMemorySize() const
return the memory size in bytes
Definition: EMMG_SLDemagnetizedOperator.h:195
This class describes a generic real field.
Definition: EMMG_RealField.h:17
This class describes the linear demagnetized operator of the Landau Lifschitz system EMM_LandauLifsch...
Definition: EMM_DemagnetizedOperator.h:81
void computeWeightM(const EMM_RealArray &sigma, const EMM_RealField &M, EMM_RealField &weightM) const
Definition: EMMG_SLDemagnetizedOperator.cpp:956
#define tUInteger
Definition: types.h:91
This class describes FFT complex array based on fft_complex structure.
Definition: MATSGN_ComplexArray.h:16
virtual tString toString() const
return the string representation of the operator
Definition: EMMG_SLDemagnetizedOperator.cpp:1008
tBoolean projectionOnSpectralSpace(const tUIndex &Nx, const tUIndex &Ny, const tUIndex &Nz, MATSGN_ComplexArray &C)
Definition: EMMG_SLDemagnetizedOperator.cpp:616
MATSGN_ComplexArray mMatrix
Definition: EMMG_SLDemagnetizedOperator.h:138
#define tUSInt
Definition: types.h:28
EMMG_RealField mWM
Definition: EMMG_SLDemagnetizedOperator.h:144
virtual tUSInt getDataFieldsNumber() const
get the number of field used in the operator
Definition: EMMG_SLDemagnetizedOperator.h:209
#define tBoolean
Definition: types.h:139
#define null
Definition: types.h:144
#define tDimension
Definition: EMM_Types.h:10
virtual tBoolean getDataField(const tUSInt &index, tString &dataName, tUIndex &n, tUSInt &dim, const float *&values) const
get the data field at index for saving data in vtk,txt,... files.
Definition: EMMG_SLDemagnetizedOperator.h:233
tUSInt mLD
Definition: EMMG_SLDemagnetizedOperator.h:137
const tUIndex & getSize() const
get the size
Definition: MATSGN_ComplexArray.h:385
static SP::EMMG_SLDemagnetizedOperator New()
create a demagnetized operator
Definition: EMMG_SLDemagnetizedOperator.h:180
tUIndex mNx
Definition: EMMG_SLDemagnetizedOperator.h:140
DEFINE_SPTR(EMMG_SLDemagnetizedOperator)
This class describes the linear demagnetized operator of the landau lifschitz system EMM_LandauLifsch...
Definition: EMMG_SLDemagnetizedOperator.h:124
tFlag mFFTmethod
Definition: EMMG_SLDemagnetizedOperator.h:134
virtual void computeMagneticExcitationField(const EMM_RealArray &sigma, const EMM_RealField &M, EMM_RealField &H) const
compute the normalized excitation magnetic field at M
Definition: EMMG_SLDemagnetizedOperator.h:283
This class describes a resolution of landau-lifschitz system of the Core Package for E-MicroM...
Definition: EMM_LandauLifschitzSystem.h:88
virtual tBoolean discretize(const EMM_LandauLifschitzSystem &system)
discretize the operator depending on method
Definition: EMMG_SLDemagnetizedOperator.cpp:26
static SP::MATSGN_FFT New()
create a FFT class
Definition: MATSGN_FFT.h:63
void dot(const tUSInt &dim, const tReal *M, tReal *H)
dot method used in multi scale grid
Definition: EMMG_SLDemagnetizedOperator.h:318
#define tUIndex
Definition: types.h:126
This class describes a real array.
Definition: EMM_RealArray.h:16
virtual tBoolean getDataField(const tUSInt &index, tString &dataName, tUIndex &n, tUSInt &dim, const long double *&values) const
get the data field at index for saving data in vtk,txt,... files.
Definition: EMMG_SLDemagnetizedOperator.h:255
const tDimension & getDimension() const
get the dimension
Definition: EMM_RealField.h:553
EMMG_SLDemagnetizedOperator(void)
create
Definition: EMMG_SLDemagnetizedOperator.cpp:14
virtual SP::MATSGN_FFT NewFFTInstance() const
void create an FFT class for the demagnetized toeplitz matrix computation
Definition: EMMG_SLDemagnetizedOperator.h:201
void localAssembly(const EMM_IndexArray &iTab, const EMM_IndexArray &jTab, const EMM_IndexArray &kTab, MATSGN_ComplexArray &C_loc2)
Definition: EMMG_SLDemagnetizedOperator.cpp:387
#define tString
Definition: types.h:135
SP::EMMG_SLPeriodicMultiScale mMultiScaleGrid
Definition: EMMG_SLDemagnetizedOperator.h:149
SP_OBJECT(EMMG_SLDemagnetizedOperator)
virtual tBoolean getDataField(const tUSInt &index, tString &dataName, tUIndex &n, tUSInt &dim, const double *&values) const
get the data field at index for saving data in vtk,txt,... files.
Definition: EMMG_SLDemagnetizedOperator.h:244
this class describes the exceptions raised for E-MicromM package
Definition: EMM_Exception.h:14
tUIndex mNy
Definition: EMMG_SLDemagnetizedOperator.h:141
void setDimension(const tDimension &d)
set the dimension
Definition: EMM_RealField.h:158
SP::MATSGN_FFT mFFT
Definition: EMMG_SLDemagnetizedOperator.h:133
MATSGN_ComplexArray mHwork
Definition: EMMG_SLDemagnetizedOperator.h:146
#define tULLInt
Definition: types.h:45
This class describes a real field.
Definition: EMM_RealField.h:21
virtual tBoolean getDataFieldSpace(const tUSInt &index, tString &dataName, tFlag &supportType, tString &dFieldType, tUIndex &n, tUSInt &dim) const
get the data field at index for saving data in vtk,txt,... files.
Definition: EMMG_SLDemagnetizedOperator.h:222
void product(const tUInteger &nx, const tUInteger &ny, const tUInteger &nz, const tUSInt &dim, const tReal *M, const tFlag &fftMethod, MATSGN_ComplexArray &fftArray, MATSGN_ComplexArray &Hwork, tReal *H) const
compute ani field Cani*M at each point
Definition: EMMG_SLDemagnetizedOperator.cpp:647
This class describes a general array.
Definition: EMM_Array.h:18
MATSGN_ComplexArray mFFTarray
Definition: EMMG_SLDemagnetizedOperator.h:145
virtual void setSize(const tUIndex &n)=0
set the size
virtual tULLInt getMemorySize() const
return the memory size in bytes
Definition: EMMG_RealField.h:341
#define tReal
Definition: types.h:118
virtual ~EMMG_SLDemagnetizedOperator(void)
destroy
Definition: EMMG_SLDemagnetizedOperator.cpp:22
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: EMM_Operator.h:71
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:141
#define tFlag
Definition: types.h:74