C++ main module for emicrom Package  1.0
EMMG_StaticMagnetostrictionOperator.h
Go to the documentation of this file.
1 #ifndef EMMG_StaticMagnetostrictionOperator_H
2 #define EMMG_StaticMagnetostrictionOperator_H
3 
4 
6 
16 
18  // ATTRIBUTES
19 
20 
21 private:
22 
23 
24 public:
25 
26 
27  // ASSOCIATION
28 
29 private:
30 
31 protected:
32 
33  // METHODS
34 
35  // CONSTRUCTORS
36 
40  }
41 
42  // DESTRUCTORS
43 
47  }
48 
49 
50 public:
54  inline static SP::EMMG_StaticMagnetostrictionOperator New() {
55  SP::EMMG_StaticMagnetostrictionOperator p(new EMMG_StaticMagnetostrictionOperator(),
57  p->setThis(p);
58  return p;
59  };
60 
61 
62 public:
69  virtual void computeMagneticExcitationField(const EMM_RealArray& sigma,
70  const EMM_RealField& M,
71  EMM_RealField& H) const {
72  tUIndex nCells=M.getSize();
73  const tDimension& dim=M.getDimension();
74 
75  //set the size of the magnetic excitation field
76  H.setSize(nCells);
77 
78  //no computation
79  if (nCells==0) return;
80 
81  //verify the type of M
82  const EMMG_RealField *gM=dynamic_cast<const EMMG_RealField *>(&M);
83  if (gM==null) throw EMM_Exception("generic","EMMG_MagnetostrictionOperator::computeMagneticExcitationField(..)",
84  "M is an incompatible real field");
85 
86 
87  //verify the type of H
88  EMMG_RealField *gH=dynamic_cast<EMMG_RealField *>(&H);
89  if (gH==null) throw EMM_Exception("generic","EMMG_MagnetostrictionOperator:: computeMagneticExcitationField(..)",
90  "H is an incompatible real field");
91 
92  EMM_StaticMagnetostrictionOperator::computeMagneticExcitationField(nCells,dim,sigma,&(*gM)[0],&(*gH)[0]);
93  }
94 
95 
96 
97 
98 
99 };
100 
101 #endif
102 
virtual tUIndex getSize() const =0
return the size of the field
This class describes a generic real field.
Definition: EMMG_RealField.h:17
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_StaticMagnetostrictionOperator.h:69
EMMG_StaticMagnetostrictionOperator(void)
create
Definition: EMMG_StaticMagnetostrictionOperator.h:39
This class describes the static magnetostriction operator of the landau lifschitz system EMM_LandauLi...
Definition: EMM_StaticMagnetostrictionOperator.h:31
#define null
Definition: types.h:144
#define tDimension
Definition: EMM_Types.h:10
This class describes the static magnetostriction operator EMM_StaticMagnetostrictionOperator of the l...
Definition: EMMG_StaticMagnetostrictionOperator.h:15
#define tUIndex
Definition: types.h:126
This class describes a real array.
Definition: EMM_RealArray.h:16
const tDimension & getDimension() const
get the dimension
Definition: EMM_RealField.h:553
this class describes the exceptions raised for E-MicromM package
Definition: EMM_Exception.h:14
SP_OBJECT(EMMG_StaticMagnetostrictionOperator)
virtual ~EMMG_StaticMagnetostrictionOperator(void)
destroy
Definition: EMMG_StaticMagnetostrictionOperator.h:46
This class describes a real field.
Definition: EMM_RealField.h:21
virtual void computeMagneticExcitationField(const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M, tReal *H) const
compute the normalized excitation magnetic field at M for stress tensors
Definition: EMM_StaticMagnetostrictionOperator.cpp:88
virtual void setSize(const tUIndex &n)=0
set the size
static SP::EMMG_StaticMagnetostrictionOperator New()
create a cubic anisotropy operator
Definition: EMMG_StaticMagnetostrictionOperator.h:54
DEFINE_SPTR(EMMG_StaticMagnetostrictionOperator)
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:141