C++ main module for emicrom Package  1.0
EMM_Matter.h
Go to the documentation of this file.
1 #ifndef EMM_Matter_H
2 #define EMM_Matter_H
3 
4 #include "EMM_Object.h"
5 
6 #include "CORE_Out.h"
7 #include "CORE_Array.h"
8 
34 class EMM_Matter : public virtual EMM_Object {
35 
37  // ATTRIBUTES
38 public:
39  //initialize in .h file in order to use it in switch command
40  static const tFlag UNIAXIAL_ANISOTROPY=0;
41  static const tFlag PLANAR_ANISOTROPY=1;
42  static const tFlag CUBIC_ANISOTROPY=2;
43  static const tString ANISOTROPY[];
44 
45 
46  //parameters flag
47  static const tFlag N_PARAMETERS=30;
48 
49 
50 
51  //physical parameters
52  static const tFlag ALPHA=0;
53 
54  static const tFlag Ms=1;
55  static const tFlag A=2;
56  static const tFlag CRYSTAL_TYPE=3;
57  static const tFlag K1=4;
58  static const tFlag K2=5;
59  static const tFlag ANISOTROPY_DIRECTIONS=6;
60  static const tFlag LAMBDA_E=7;
61  static const tFlag LAMBDA_M=8;
62  static const tFlag RHO=9;
63 
64  //adimensionized
65  static const tFlag Ad=10;
66  static const tFlag K1d=11;
67  static const tFlag K2d=12;
68  static const tFlag LAMBDA_Ed=13;
69  static const tFlag LAMBDA_Md=14;
70  static const tFlag RHOd=15;
71 
72  //characteritics data
73  static const tFlag LEX=20;//the length below which the exchange interaction dominates typical magnetostatic fields
74  static const tFlag D_LEX=23;//exchange influence
75  static const tFlag BLOCH=21;//length below which the exchange interaction dominates anisotropy effects
76  static const tFlag Q=22;//magnetic hardness
77 
78 
79 private:
80 
81 
82 
87 
88  //1D parameter of the matter
90 
91  //dimensions of parameters
93 
97 
98 
105 
106 
107 
108 
109  // ASSOCIATION
110 
111 
112 
113 
114 protected:
115  // METHODS
116 
117  // CONSTRUCTORS
118 
121  EMM_Matter(void);
122 
123 
124 
125  // DESTRUCTORS
126 
127 
130  virtual ~EMM_Matter(void);
131 
132 
133 public:
134  // NEW method
135 
138  inline static SP::EMM_Matter New() {
139  SP::EMM_Matter p(new EMM_Matter(),EMM_Matter::Delete());
140  p->setThis(p);
141  return p;
142  };
143 
147  virtual void copy(const EMM_Matter& mat);
148 
149 
150 
151  // SET methods
152 
153 
157  inline void setName(const tString& name) {
158  mName=name;
159  };
160 
161  //demagnetized parameter
162  //======================
163 
167  inline void setAbsorptionParameter(const tReal& v) {
168  mParameters[ALPHA]=v;
169  };
170 
174  inline void setMagnetizationAtSaturation(const tReal& v) {
175  mParameters[Ms]=v;
176  };
177 
178  //exchange
179  //==========
183  inline void setExchangeConstant(const tReal& v) {
184  mParameters[A]=v;
185  };
186 
187  //Anistropy
188  //==========
195  inline void setAnisotropy(const tFlag& ani) {
196  mParameters[CRYSTAL_TYPE]=ani;
197  };
201  inline void setMainAnisotropyConstant(const tReal& k) {
202  mParameters[K1]=k;
203  };
207  inline void setSecondAnisotropyConstant(const tReal& k) {
208  mParameters[K2]=k;
209  };
213  inline void setAnisotropyDirections(const tReal dir[9]) {
214  for (tUSInt k=0;k<9;k++) mAnisotropyDirections[k]=dir[k];
215 
216  }
221  inline void setAnisotropyDirection(const tSInt& i,const tReal dir[3]) {
222  ASSERT_IN(i<3);
223  for(tUSInt index=0;index<3;index++)
224  mAnisotropyDirections[3*i+index]=dir[index];
225  }
226 
232  inline void setAnisotropyDirectionCoordinate(const tSInt& i,const tSInt& k,const tReal & dir) {
233  ASSERT_IN(i<3);
234  ASSERT_IN(k<3);
235  mAnisotropyDirections[3*i+k]=dir;
236  }
237 
238 
239 
240  //magnetstriction elastic tensor
241  //===============================
242 
246  inline void setVolumicMass(const tReal& rho) {
247  mParameters[RHO]=rho;
248  }
252  inline const tReal& getVolumicMass() const {
253  return mParameters[RHO];
254  }
258  inline const tReal& getAdimensionizedVolumicMass() const {
259  return mParameters[RHOd];
260  }
264  inline void setElasticTensor(const tReal& lambdaE) {
265  mLambdaE.initArray(lambdaE);
266  }
267 
275  inline void setElasticTensor(const tUSInt& i,const tUSInt& j,const tUSInt& k,const tUSInt& l,const tReal& lambdaE) {
276  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),i,j,k,l),lambdaE);
277  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),i,j,l,k),lambdaE);
278 
279  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),j,i,k,l),lambdaE);
280  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),j,i,l,k),lambdaE);
281 
282  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),k,l,i,j),lambdaE);
283  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),k,l,j,i),lambdaE);
284 
285  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),l,k,i,j),lambdaE);
286  mLambdaE.setValue(getTensorIndex(mLambdaE.getSize(),l,k,j,i),lambdaE);
287  }
288 
292  inline void setElasticTensor(const vector<tReal>& lambdaE) {
293  mLambdaE.initArray(lambdaE);
294  }
299  inline void setElasticTensor(const tUSInt& n,const tReal* lambdaE) {
300  mLambdaE.initArray(n,lambdaE);
301  }
302 
303 
304  //magnetostriction Magnetic tensor
305  //================================
306 
310  inline void setMagneticTensor(const tReal& lambdaM) {
311  mLambdaM.initArray(lambdaM);
312  }
313 
314 
322  inline void setMagneticTensor(const tUSInt& i,const tUSInt& j,const tUSInt& k,const tUSInt& l,const tReal& lambdaM) {
323  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),i,j,k,l),lambdaM);
324  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),i,j,l,k),lambdaM);
325 
326  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),j,i,k,l),lambdaM);
327  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),j,i,l,k),lambdaM);
328 
329  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),k,l,i,j),lambdaM);
330  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),k,l,j,i),lambdaM);
331 
332  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),l,k,i,j),lambdaM);
333  mLambdaM.setValue(getTensorIndex(mLambdaM.getSize(),l,k,j,i),lambdaM);
334  }
338  inline void setMagneticTensor(const vector<tReal>& lambdaM) {
339  mLambdaM.initArray(lambdaM);
340  }
341 
346  inline void setMagneticTensor(const tUSInt& n,const tReal* lambdaM) {
347  mLambdaM.initArray(n,lambdaM);
348  }
349 
350 
351  // GET methods
352 
377  inline const tReal& getParameter(const tUSInt& k) const {
378  switch(k) {
380  return mAnisotropyDirections[0];
381  break;
382  case LAMBDA_E:
383  return mLambdaE[0];
384  break;
385  case LAMBDA_M:
386  return mLambdaM[0];
387  break;
388  case LAMBDA_Ed:
389  return mLambdaEd[0];
390  break;
391  case LAMBDA_Md:
392  return mLambdaMd[0];
393  break;
394  default:
395  return mParameters[k];
396  }
397  }
416  inline tReal& getParameter(const tUSInt& k) {
417  switch(k) {
419  return mAnisotropyDirections[0];
420  break;
421  case LAMBDA_E:
422  return mLambdaE[0];
423  break;
424  case LAMBDA_M:
425  return mLambdaM[0];
426  break;
427  case LAMBDA_Ed:
428  return mLambdaEd[0];
429  break;
430  case LAMBDA_Md:
431  return mLambdaMd[0];
432  break;
433  default:
434  return mParameters[k];
435  }
436  }
437 
441  inline const tUCInt& getParameterDimension(const tFlag& k) const {
442  return mParametersDimension[k];
443  }
447  inline const tString& getName() const {
448  return mName;
449  };
453  inline const tReal& getAbsorptionParameter() const {
454  return mParameters[ALPHA];
455  };
456 
460  inline const tReal& getMagnetizationAtSaturation() const {
461  return mParameters[Ms];
462  };
463 
464 
468  inline const tReal& getExchangeConstant() const {
469  return mParameters[A];
470  };
471 
478  inline tFlag getAnisotropy() const {
479  return (tFlag) (mParameters[CRYSTAL_TYPE]+0.5);
480 
481  };
485  inline const tReal& getMainAnisotropyConstant() const {
486  return mParameters[K1];
487  };
491  inline const tReal& getSecondAnisotropyConstant() const {
492  return mParameters[K2];
493  };
498  inline const tReal* getAnisotropyDirections() const {
499  return mAnisotropyDirections;
500 
501  }
505  inline const tReal* getAnistropyDirections(const tUIndex& i) const {
506  return &mAnisotropyDirections[3*i];
507  }
515  tFlag t=mParameters[CRYSTAL_TYPE];
516  if (t==UNIAXIAL_ANISOTROPY) return 1;
517  else if (t==PLANAR_ANISOTROPY) return 1;
518  else if (t==CUBIC_ANISOTROPY) return 3;
519  return 3;
520  }
521 
522 private:
525  inline static tUIndex getTensorIndex(const tUIndex& n,
526  const tDimension& p,const tDimension& q,const tDimension& r,const tDimension& s) {
527  tUCInt i,j;
528  switch(n) {
529  case 81://full tensor
530  return s+3*(r+3*(q+3*p));//see EMM_4Tensor::getIndex(p,q,r,s,3))
531  case 36://packed tensor
532  if (p>=q) i=q+p*(p+1)/2;
533  else i=p+q*(q+1)/2;
534 
535  if (r>=s) j=s+r*(r+1)/2;
536  else j=r+s*(s+1)/2;
537 
538  return i+6*j;
539  case 21://packed symmetric tensor
540  if (p>=q) i=q+p*(p+1)/2;
541  else i=p+q*(q+1)/2;
542 
543  if (r>=s) j=s+r*(r+1)/2;
544  else j=r+s*(s+1)/2;
545 
546  if (i>=j) return j+(i*(i+1)/2);
547  else return j+(i*(i+1)/2);
548  }
549  return 0;
550  }
551 public:
552 
557  inline const CORE_RealArray& getElasticTensor() const {
558  return mLambdaE;
559  }
565  return mLambdaE;
566  }
567 
572  inline const CORE_RealArray& getMagneticTensor() const {
573  return mLambdaM;
574  }
580  return mLambdaM;
581  }
582 
588  return mLambdaEd;
589  }
595  return mLambdaEd;
596  }
597 
603  return mLambdaMd;
604  }
610  return mLambdaMd;
611  }
612 
613 
614 
615 
616 
624  inline const tReal& getElasticTensor(const tDimension& i,const tDimension& j,const tDimension& k,const tDimension& l) const {
625  return mLambdaE.getValue(getTensorIndex(mLambdaE.getSize(),i,j,k,l));
626 
627  }
628 
629 
637  inline const tReal& getMagneticTensor(const tDimension& i,const tDimension& j,const tDimension& k,const tDimension& l) const {
638  return mLambdaM.getValue(getTensorIndex(mLambdaM.getSize(),i,j,k,l));
639  }
640 
641 
642  //adimensionization of the matter variable
643  //========================================
644 
673  void adimensionize(const tReal& Ms,const tReal& rhoVs2,const tReal& dmin,const tReal& dmax);
674 
675 
676 
681  inline const tReal& getAdimensionizedExchangeConstant() const {
682  return mParameters[Ad];
683  };
684 
689  inline const tReal& getExchangeLength() const {
690  return mParameters[LEX];
691  };
695  inline const tReal& getAdimensionizedMainAnisotropy() const {
696  return mParameters[K1d];
697  }
701  inline const tReal& getAdimensionizedSecondAnisotropy() const {
702  return mParameters[K2d];
703  }
704 
705 
706 
707 
715  inline const tReal& getAdimensionizedElasticTensor(const tDimension& i,const tDimension& j,const tDimension& k,const tDimension& l) const {
716  return mLambdaEd.getValue(getTensorIndex(mLambdaEd.getSize(),i,j,k,l));
717 
718  }
719 
720 
721 
729  inline const tReal& getAdimensionizedMagneticTensor(const tDimension& i,const tDimension& j,const tDimension& k,const tDimension& l) const {
730  return mLambdaMd.getValue(getTensorIndex(mLambdaMd.getSize(),i,j,k,l));
731  }
732 
733 
734 public:
735  // OTHERS methods
736 
758  static tBoolean loadMattersFromFile(const tString& fileName,SV::EMM_Matter& matters);
759 
760 
781  static tBoolean saveMattersToFile(const tString& fileName,
782  const SV::EMM_Matter& matters);
783 
784 
785 
790  tBoolean loadFromFile(const tString& fileName);
791 
797  tBoolean loadFromStream(ifstream& stream,tString& lastUnreadLine);
798 
799 
800  /* \brief save the matter in text file
801  * @param fileName: file name of the material .mat
802  * @return true if succeeded
803  */
804  tBoolean saveToFile(const tString& fileName)const;
805 
806 
812  tBoolean saveToStream(ofstream& stream,
813  const tBoolean& writeHeader)const;
814 
815 public:
819  virtual tString toString() const;
820 
821 
822 };
823 
824 #endif
This class is a base class of E-MicromM core package.
Definition: EMM_Object.h:21
static const tFlag LAMBDA_M
Definition: EMM_Matter.h:61
const tUIndex & getSize() const
return the size of the array for reading
Definition: CORE_Array.h:1018
const CORE_RealArray & getElasticTensor() const
get the elastic tensor
Definition: EMM_Matter.h:557
static SP::EMM_Matter New()
create a material object
Definition: EMM_Matter.h:138
CORE_RealArray mLambdaEd
Definition: EMM_Matter.h:103
void setVolumicMass(const tReal &rho)
set the volumic mass
Definition: EMM_Matter.h:246
CORE_RealArray mLambdaMd
Definition: EMM_Matter.h:104
static const tFlag D_LEX
Definition: EMM_Matter.h:74
tReal mAnisotropyDirections[9]
anisotropy direction
Definition: EMM_Matter.h:96
static tBoolean loadMattersFromFile(const tString &fileName, SV::EMM_Matter &matters)
load a list of matters
Definition: EMM_Matter.cpp:631
void setMagneticTensor(const vector< tReal > &lambdaM)
set the magentic tensor for magnetostriction
Definition: EMM_Matter.h:338
const tUCInt & getParameterDimension(const tFlag &k) const
get the parameter dimension
Definition: EMM_Matter.h:441
static const tFlag LEX
Definition: EMM_Matter.h:73
static const tFlag PLANAR_ANISOTROPY
Definition: EMM_Matter.h:41
const tReal & getAdimensionizedElasticTensor(const tDimension &i, const tDimension &j, const tDimension &k, const tDimension &l) const
get the adimensiized elastic tensor for magnetostriction
Definition: EMM_Matter.h:715
static const tFlag CUBIC_ANISOTROPY
Definition: EMM_Matter.h:42
void setAnisotropyDirectionCoordinate(const tSInt &i, const tSInt &k, const tReal &dir)
the k-coordinate of the i-the direction of anisotropy
Definition: EMM_Matter.h:232
const tReal & getParameter(const tUSInt &k) const
get the parameter at index k for reading
Definition: EMM_Matter.h:377
const tReal & getAdimensionizedMainAnisotropy() const
get the main adimensionized anisotropy constant
Definition: EMM_Matter.h:695
static const tFlag ANISOTROPY_DIRECTIONS
Definition: EMM_Matter.h:59
tBoolean saveToStream(ofstream &stream, const tBoolean &writeHeader) const
save the matter into a stream
Definition: EMM_Matter.cpp:553
void setAnisotropy(const tFlag &ani)
set the anisotropy type
Definition: EMM_Matter.h:195
CORE_RealArray & getAdimensionizedMagneticTensor()
get the adimensionized magnetic tensor
Definition: EMM_Matter.h:609
CORE_RealArray & getMagneticTensor()
get the magnetic tensor
Definition: EMM_Matter.h:579
void setMagneticTensor(const tUSInt &i, const tUSInt &j, const tUSInt &k, const tUSInt &l, const tReal &lambdaM)
set the magnetic tensor for magnetostriction
Definition: EMM_Matter.h:322
const tReal & getElasticTensor(const tDimension &i, const tDimension &j, const tDimension &k, const tDimension &l) const
get the elastic tensor for magnetostriction
Definition: EMM_Matter.h:624
const tReal * getAnisotropyDirections() const
get anisotropy vector in 3 direction which are not necessary normalized
Definition: EMM_Matter.h:498
EMM_Matter(void)
create
Definition: EMM_Matter.cpp:50
static const tFlag K2
Definition: EMM_Matter.h:58
static const tFlag BLOCH
Definition: EMM_Matter.h:75
const tReal * getAnistropyDirections(const tUIndex &i) const
set anisotropy vector at direction i
Definition: EMM_Matter.h:505
void setName(const tString &name)
set the name
Definition: EMM_Matter.h:157
static tUIndex getTensorIndex(const tUIndex &n, const tDimension &p, const tDimension &q, const tDimension &r, const tDimension &s)
get the index of the element (p,q,r,s) in the tensor array depending on tensor memory size ...
Definition: EMM_Matter.h:525
#define tUCInt
Definition: types.h:21
void setMagnetizationAtSaturation(const tReal &v)
set the magnetization at saturation
Definition: EMM_Matter.h:174
virtual void copy(const EMM_Matter &mat)
copy the matter
Definition: EMM_Matter.cpp:104
void setExchangeConstant(const tReal &v)
set the swap constant
Definition: EMM_Matter.h:183
void setElasticTensor(const tUSInt &n, const tReal *lambdaE)
set the elastic tensor for magnetostriction
Definition: EMM_Matter.h:299
#define tUSInt
Definition: types.h:28
static const tFlag K1
Definition: EMM_Matter.h:57
T & getValue(const tUIndex &i)
get the values of the array for writing
Definition: CORE_Array.h:961
const CORE_RealArray & getMagneticTensor() const
get the magnetic tensor
Definition: EMM_Matter.h:572
#define tBoolean
Definition: types.h:139
tBoolean saveToFile(const tString &fileName) const
Definition: EMM_Matter.cpp:533
tFlag getAnisotropy() const
get the anisotropy in
Definition: EMM_Matter.h:478
static const tFlag A
Definition: EMM_Matter.h:55
tReal & getParameter(const tUSInt &k)
get the parameter at index k for writing
Definition: EMM_Matter.h:416
void setElasticTensor(const tReal &lambdaE)
set the elastic tensor for magnetostriction
Definition: EMM_Matter.h:264
#define tDimension
Definition: EMM_Types.h:10
const CORE_RealArray & getAdimensionizedMagneticTensor() const
get the adimensionized magnetic tensor
Definition: EMM_Matter.h:602
CORE_RealArray mLambdaE
elastic magnetostriction tensor
Definition: EMM_Matter.h:101
static const tFlag UNIAXIAL_ANISOTROPY
Definition: EMM_Matter.h:40
CORE_RealArray mLambdaM
Definition: EMM_Matter.h:102
tReal mParameters[N_PARAMETERS]
Definition: EMM_Matter.h:89
void setMainAnisotropyConstant(const tReal &k)
set the main anisotropy constant
Definition: EMM_Matter.h:201
const tReal & getExchangeConstant() const
get the exchange constant
Definition: EMM_Matter.h:468
tBoolean loadFromFile(const tString &fileName)
load the matter from text file
Definition: EMM_Matter.cpp:219
static const tFlag LAMBDA_E
Definition: EMM_Matter.h:60
const tReal & getMagneticTensor(const tDimension &i, const tDimension &j, const tDimension &k, const tDimension &l) const
get the lambdaM parameter for magnetostriction
Definition: EMM_Matter.h:637
This class describes a matter for E-MicroM package.
Definition: EMM_Matter.h:34
static const tFlag K1d
Definition: EMM_Matter.h:66
const tReal & getSecondAnisotropyConstant() const
get the second anisotropy constant
Definition: EMM_Matter.h:491
void setAnisotropyDirection(const tSInt &i, const tReal dir[3])
Definition: EMM_Matter.h:221
tBoolean loadFromStream(ifstream &stream, tString &lastUnreadLine)
load the matter from a stream
Definition: EMM_Matter.cpp:240
static const tFlag Q
Definition: EMM_Matter.h:76
static const tFlag K2d
Definition: EMM_Matter.h:67
void setAbsorptionParameter(const tReal &v)
set the aborption parameter
Definition: EMM_Matter.h:167
#define tSInt
Definition: types.h:30
static const tFlag N_PARAMETERS
Definition: EMM_Matter.h:47
static const tFlag Ms
Definition: EMM_Matter.h:54
void setSecondAnisotropyConstant(const tReal &k)
set the second anisotropy constant
Definition: EMM_Matter.h:207
static const tFlag LAMBDA_Md
Definition: EMM_Matter.h:69
const tReal & getMainAnisotropyConstant() const
get the main anisotropy constant
Definition: EMM_Matter.h:485
void setElasticTensor(const tUSInt &i, const tUSInt &j, const tUSInt &k, const tUSInt &l, const tReal &lambdaE)
set the elastic tensor for magnetostriction of size 3x3x3x3
Definition: EMM_Matter.h:275
#define tUIndex
Definition: types.h:126
const tReal & getVolumicMass() const
get the volumic mass
Definition: EMM_Matter.h:252
const tReal & getAdimensionizedVolumicMass() const
get the adimznionied volumic mass
Definition: EMM_Matter.h:258
const tReal & getExchangeLength() const
get the exchange length
Definition: EMM_Matter.h:689
void setElasticTensor(const vector< tReal > &lambdaE)
set the elastic tensor for magnetostriction
Definition: EMM_Matter.h:292
const tReal & getAdimensionizedSecondAnisotropy() const
get the second adimensionized anisotropy constant
Definition: EMM_Matter.h:701
CORE_RealArray & getAdimensionizedElasticTensor()
get the adimensionized elastic tensor
Definition: EMM_Matter.h:594
static const tFlag ALPHA
Definition: EMM_Matter.h:52
#define tString
Definition: types.h:135
static const tFlag LAMBDA_Ed
Definition: EMM_Matter.h:68
const tReal & getAdimensionizedExchangeConstant() const
get the adimensionized exchange constant:
Definition: EMM_Matter.h:681
tUCInt mParametersDimension[N_PARAMETERS]
Definition: EMM_Matter.h:92
const tString & getName() const
get the name of the matter
Definition: EMM_Matter.h:447
static const tFlag CRYSTAL_TYPE
Definition: EMM_Matter.h:56
static const tFlag Ad
Definition: EMM_Matter.h:65
CORE_RealArray & getElasticTensor()
get the elastic tensor
Definition: EMM_Matter.h:564
const tReal & getAbsorptionParameter() const
get the absorption parameter
Definition: EMM_Matter.h:453
void setMagneticTensor(const tReal &lambdaM)
set the magnetic tensor for magnetostriction
Definition: EMM_Matter.h:310
virtual tString toString() const
return the class information into a string
Definition: EMM_Matter.cpp:777
tUCInt getAnisotropyDirectionsNumber() const
get the number of anisotropy directions in [0,3[
Definition: EMM_Matter.h:514
static const tFlag RHO
Definition: EMM_Matter.h:62
static const tFlag RHOd
Definition: EMM_Matter.h:70
void setValue(const tUIndex &i, const T &v)
set the value of the array at index i
Definition: CORE_Array.h:496
const tReal & getAdimensionizedMagneticTensor(const tDimension &i, const tDimension &j, const tDimension &k, const tDimension &l) const
get the adimensionized lambdaM parameter for magnetostriction
Definition: EMM_Matter.h:729
static const tString ANISOTROPY[]
Definition: EMM_Matter.h:43
const CORE_RealArray & getAdimensionizedElasticTensor() const
get the adimensionized elastic tensor
Definition: EMM_Matter.h:587
const tReal & getMagnetizationAtSaturation() const
get the magnetization at saturation
Definition: EMM_Matter.h:460
SP_OBJECT(EMM_Matter)
static tBoolean saveMattersToFile(const tString &fileName, const SV::EMM_Matter &matters)
write the matters into a file
Definition: EMM_Matter.cpp:593
#define tReal
Definition: types.h:118
DEFINE_SVPTR(EMM_Matter)
tString mName
the name of the material used as key in the gui
Definition: EMM_Matter.h:86
#define ASSERT_IN(a)
Definition: types.h:196
void initArray(const Q &f)
init the array to uniform value
Definition: CORE_Array.h:316
void setAnisotropyDirections(const tReal dir[9])
set anisotropy vector in 3 direction which are not necessary normalized
Definition: EMM_Matter.h:213
virtual ~EMM_Matter(void)
destroy
Definition: EMM_Matter.cpp:97
void setMagneticTensor(const tUSInt &n, const tReal *lambdaM)
set the magnetic tensor for magnetostriction
Definition: EMM_Matter.h:346
DEFINE_SPTR(EMM_Matter)
void adimensionize(const tReal &Ms, const tReal &rhoVs2, const tReal &dmin, const tReal &dmax)
compute the adimensionized constants
Definition: EMM_Matter.cpp:145
class Free introduced for deleting a smart pointer
Definition: CORE_Object.h:141
#define tFlag
Definition: types.h:74