C++ main module for emicrom Package  1.0
Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions | Private Member Functions | List of all members
EMMG_DisplacementFEMOperator Class Reference

This class describes the displacement operator based on Finite Elements Method EMM_DisplacementFEMOperator for the EMMG_MagnetostrictionOperator class. More...

#include <EMMG_DisplacementFEMOperator.h>

Inheritance diagram for EMMG_DisplacementFEMOperator:
Inheritance graph
[legend]
Collaboration diagram for EMMG_DisplacementFEMOperator:
Collaboration graph
[legend]

Public Member Functions

virtual void computeElasticStress (const EMM_RealField &U, EMM_RealField &S) const
 compute the elastic stress for all cells More...
 
virtual void computeMagneticStress (const tReal &alpha, const tReal &beta, const EMM_RealArray &sigma, const EMM_RealField &M, EMM_RealField &S) const
 compute the magnetic stress for all cells More...
 
virtual tBoolean discretize (const EMM_LandauLifschitzSystem &system)
 discretize the operator More...
 
virtual tBoolean resetToInitialState (const EMM_LandauLifschitzSystem &system)
 reset the operator to initial state the operator More...
 
void setMassMatrixType (const tFlag &t)
 set the mass matrix type More...
 
const tFlaggetMassMatrixType () const
 get the mass matrix type More...
 
virtual SP::EMM_MassMatrix NewMassMatrix () const
 create the accelerator matrix More...
 
const tUIndexgetPointsNumber () const
 get the points number in each direction More...
 
const tCellFlaggetPeriodicIndicator () const
 get the periodicity indication More...
 
const EMM_CellFlagArraygetNeighborsIndicator () const
 return the neighbors indicator in bits $ \displaystyle \sum_{f=0}^{f=F-1} v_f 2^f $ where F is the number of faces per element and $ v_f $ is 1 if there is a neighbor cell with the face f More...
 
virtual tULLInt getMemorySize () const
 return the memory size in byte More...
 
virtual tBoolean getDataFieldSpace (const tUSInt &index, tString &dataName, tFlag &supportType, tString &dFieldType, tUIndex &n, tDimension &dim) const
 get the data field at index for saving data in vtk,txt,... files. More...
 
virtual void computeEquilibriumMatrixDiagonalConditioner (MATH_Vector &D) const
 compute the diagonal conditioner More...
 
virtual void computeElasticTensor (const EMM_RealField &U, EMM_2PackedSymmetricTensors &eTensor)
 compute the elastic tensor for all cells $ \epsilon(U)=\frac{1}{2} \left (\nabla U + \nabla^t U \right ) $ More...
 
void computeElasticStress (const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *D) const
 compute the elastic stress $ S_e(u) =div \left (\tilde \lambda^e : \varepsilon(u) \right )$ More...
 
void computeMagneticStress (const EMM_RealArray &sigma, const EMM_RealField &M, EMM_RealField &S) const
 compute the magnetic stress for all cells $ S=div(\lambda^e:\lambda^m:M\otimes M) $ More...
 
virtual tReal computeCineticEnergy (const EMM_RealField &V) const
 compute the energy of the magnetostriction operator at current displacement and velocity More...
 
virtual tReal computePotentialEnergy (const EMM_RealField &U) const
 compute the potential energy to the space variation of the displacement More...
 
tReal computeStressConstraintEnergy (const EMM_RealField &Uf) const
 compute the stress constraint energy on boundary More...
 
tReal computeStressConstraintEnergy (const tReal &t) const
 compute the energy of the boundary stress constraint More...
 
virtual tString toString () const
 turn the martix into string More...
 
virtual void adimensionize (const tReal &Le, const tReal &Ms, const tReal &T, const tReal &L)
 adimensionize the operator More...
 
const tRealgetAdimensionizedSegmentsSize () const
 get the segments size in all directions More...
 
const EMM_RealArraygetAdimensionizedVolumicMass () const
 get the adimensionized volumic mass per cell More...
 
const EMM_4SymmetricTensorsgetLambdaE () const
 return the adimensionized elastic tensor distribution $ \lambda^e $ More...
 
const EMM_4TensorsgetLambdaEDoubleDotLambdaM () const
 return the adimensionized magnetic tensor distribution $ \lambda^e:\lambda^m $ More...
 
const EMM_4TensorsgetLambdaMDoubleDotLambdaE () const
 return the adimensionized magnetic tensor distribution $ \lambda^m:\lambda^e $ More...
 
const EMM_4SymmetricTensorsgetLambdaMDoubleDotLambdaEDoubleDotLambdaM () const
 return the adimensionized magnetic tensor distribution $ \lambda^m:\lambda^e:\lambda^m $ More...
 
void setInitialDisplacement (const tReal &scale, const tString &dataFile)
 set initial displacement field. More...
 
void setInitialDisplacement (const tReal data[3])
 set initial displacement field More...
 
void setInitialDisplacement (const tReal U0, const tReal &U1, const tReal &U2)
 set initial displacement field More...
 
void setInitialDisplacement (const EMM_RealField &data)
 set initial displacement field More...
 
void setInitialVelocity (const tReal &scale, const tString &dataFile)
 set initial velocity field More...
 
void setInitialVelocity (const EMM_RealField &data)
 set initial velocity field More...
 
void setInitialVelocity (const tReal data[3])
 set initial velocity field More...
 
void setInitialVelocity (const tReal &V0, const tReal &V1, const tReal &V2)
 set initial velocity field More...
 
void setLimitConditionOnPoints (const EMM_IntArray &lc)
 set the limit condition each point is set to More...
 
void setLimitConditionOnPoints (const tLimitCondition &lc)
 set the limit condition to all points More...
 
void setConstraints (const tFlag &C, const tString &dataFile)
 set constraints from file defined on points More...
 
void setConstraints (const tFlag &C, const tReal data[3])
 set constraints field More...
 
void setConstraints (const tFlag &C, const tReal &C0, const tReal &C1, const tReal &C2)
 set initial constriants field More...
 
void setConstraints (const tFlag &C, const EMM_RealField &data)
 set constraints More...
 
const tFlaggetConstraintFaces () const
 get the constraint faces $ C=\sum_{f=0}^{f=5} C_f 2^f $ $ C_f=1 $ if face f is constrainted More...
 
const EMM_RealFieldgetConstraints () const
 get the constraints field for reading More...
 
EMM_RealFieldgetConstraints ()
 get the constraints field for writing More...
 
const EMM_LimitConditionArraygetLimitConditionOnPoints () const
 
SPC::EMM_LimitConditionArray getLimitConditionOnPointsByReference () const
 
void nullProjectionOnDirichletBoundary (EMM_RealField &V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void nullProjectionOnDirichletBoundary (const tUIndex &nPoints, const tDimension &dim, tReal *V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void projectionOnDirichletBoundary (const EMM_RealField &V0, EMM_RealField &V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void projectionOnDirichletBoundary (const tUIndex &nPoints, const tDimension &dim, const tBoolean &incV0, const tReal *V0, tReal *V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void periodicProjection (const tCellFlag &periodicity, const tUInteger nPoints[3], EMM_RealField &V) const
 make the periodic projection of the field V More...
 
virtual tBoolean backup (const tString &prefix, const tString &suffix, const tString &ext) const
 backup of the operator data into file(s) used for restoring More...
 
virtual tBoolean restore (const EMM_LandauLifschitzSystem &system, const tString &prefix, const tString &suffix, const tString &ext)
 restore the operator data from file(s) More...
 
const EMM_2PackedSymmetricTensorsgetElasticTensor () const
 return the elastic tensor $ \varepsilon(u)=\displaystyle \frac{1}{2} \left ( \frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i} \right ) $ More...
 
virtual tUSInt getDataFieldsNumber () const
 get the number of field used in the operator More...
 
virtual tBoolean getDataField (const tUSInt &index, tString &dataName, tUIndex &n, tDimension &dim, const float *&values) const
 get the data field at index for saving data in vtk,txt,... files. More...
 
virtual tBoolean getDataField (const tUSInt &index, tString &dataName, tUIndex &n, tDimension &dim, const double *&values) const
 get the data field at index for saving data in vtk,txt,... files. More...
 
virtual tBoolean getDataField (const tUSInt &index, tString &dataName, tUIndex &n, tDimension &dim, const long double *&values) const
 get the data field at index for saving data in vtk,txt,... files. More...
 
virtual tBoolean isAffine () const
 return true if the operator is either constant or linear More...
 
virtual tBoolean isGradientComputationable () const
 return true if the gradient of the magnetic excitation is computationable More...
 
void setDisplacement (const EMM_RealField &u)
 set the displacement field More...
 
void setDisplacement (const tReal &Ux, const tReal &Uy, const tReal &Uz)
 set the displacement field to an uniform vector defied on points More...
 
EMM_RealFieldgetDisplacement ()
 get the displacement for writing More...
 
const EMM_RealFieldgetDisplacement () const
 get the displacement for reading More...
 
const EMM_RealFieldgetDisplacement (const tReal &t) const
 get the veolicty at time More...
 
void setVelocity (const EMM_RealField &v)
 set the velocity of dicplacement defined on points More...
 
void setVelocity (const tReal &Vx, const tReal &Vy, const tReal &Vz)
 set the displacement velocity field to an uniform vector defined on points More...
 
EMM_RealFieldgetVelocity ()
 get the velocity for writing More...
 
const EMM_RealFieldgetVelocity (const tReal &t) const
 get the velocity at time More...
 
const EMM_RealFieldgetVelocity () const
 get the velocity at t for reading More...
 
EMM_RealFieldgetAccelerator ()
 get the accelerator for writing More...
 
const EMM_RealFieldgetAccelerator () const
 get the accelerator for reading More...
 
virtual void setSolver (const tString &solverName)
 set the solver More...
 
void setSolver (SP::MATH_Solver solver)
 set the solver More...
 
MATH_SolvergetSolver ()
 get the solver of the system More...
 
void setElasticityState (const tFlag &v)
 set the elasticity state More...
 
tBoolean isSteadyState () const
 
tBoolean isEquilibriumState () const
 
tBoolean isFrozenState () const
 
void setTimeIntegrationMethod (const tFlag &m)
 set the time integration method for new field More...
 
const tFlaggetTimeIntegrationMethod () const
 get the time integration method for next time step More...
 
void setTimeIntegrationOrder (const tInt &o)
 set the time integration order for new field More...
 
const tUCIntgetTimeIntegrationOrder () const
 get the time integration order for new field More...
 
const tRealgetTimeStep () const
 get the time step for elasticty More...
 
void setCFL (const tReal &cfl)
 set the cfl for computing the initial time step More...
 
virtual tBoolean computeFieldsAtTime (const tReal &t, const tFlag &order, const EMM_RealArray &sigma, const EMM_RealField &dM_dt0, const EMM_RealField &M0)
 compute the fields of operator at time More...
 
virtual tBoolean updateAtNextTimeStep (const tReal &dt, const EMM_RealArray &sigma, const EMM_RealField &Mt)
 update the data of operator at next time step More...
 
virtual SP::EMM_BlockEquilibriumMatrix NewEquilibriumMatrix () const
 create the equilibrium matrix More...
 
void setIsEquilibriumMatrixReconditioned (const tBoolean &c)
 set to true if the equilibrium matrix is conditioned More...
 
const tBooleanisEquilibriumMatrixReconditioned () const
 get if the equilibrium matrix is conditioned More...
 
tBoolean computeEquilibriumState (const EMM_RealArray &sigma, const EMM_RealField &M, const EMM_RealField &U0, EMM_RealField &U)
 compute the equilibirum state $ div(\lambda^e:epsilon(U))=div(\lambda^e:\lambda^m:M \otimes M) $ More...
 
virtual void computeElasticStressMatrixProduct (const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *D) const
 compute the elastic stress Matrix product $ A.U = - div \left (\tilde \lambda^e : \varepsilon(u) \right ) $ More...
 
void computeStress (const EMM_RealArray &sigma, const EMM_RealField &U, const EMM_RealField &M, EMM_RealField &stress) const
 compute the stress $ div(sigma(U,M))=div(\lambda^e:\epsilon(U))-div(\lambda^2:\lambda^m:M\otimes M)$ More...
 
tReal computeEnergy (const tReal &t, const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M) const
 compute the energy of the magnetostriction operator at current displacement and velocity More...
 
tReal computeCineticEnergyAtTime (const tReal &t) const
 compute the energy due to velocity More...
 
tReal computePotentialEnergyAtTime (const tReal &t) const
 compute the potential energy to the space variation of the displacement More...
 
virtual tString getName () const
 return an human reading name of the operator More...
 
const tBooleanisCubicVolume () const
 return the true if the element is cubic More...
 
const tRealgetElementVolume () const
 return the adimensionized volume of the element More...
 
void getSharedPointer (SP::CORE_Object &p)
 get the shared pointer of this class into p More...
 
void getSharedPointer (SPC::CORE_Object &p) const
 get the shared pointer of this class into p More...
 
tString getClassName () const
 return the class name of the object More...
 
tString getIdentityString () const
 return the identity string of the object of the form className_at_address More...
 
tString getPointerAddress () const
 return the identity string of the object More...
 
template<class T >
tBoolean isInstanceOf () const
 test if the clas T is an instance of this class More...
 
tBoolean isInstanceOf (const tString &name) const
 test if the object is an instance of className More...
 

Static Public Member Functions

static SP::EMMG_DisplacementFEMOperator New ()
 create a cubic anisotropy operator More...
 
static void setIsMemoryChecked (const tBoolean &v)
 set if the memory checking is used More...
 
static void setOut (SP::CORE_Out out)
 set the output stream More...
 
static void resetOut ()
 reset the output stream More...
 
static void setThread (SP::CORE_Thread thread)
 set the thread More...
 
static void resetThread ()
 reset the output stream More...
 
static CORE_Outout ()
 get the output More...
 
static SP::CORE_Out getOut ()
 get the output More...
 
static CORE_ThreadgetThread ()
 get the profilier More...
 
static const tBooleanisMemoryChecked ()
 get if the memory checking is used More...
 
static tString getClassName (const tString &identityString)
 return the class name of the object More...
 
template<class T >
static tString getTypeName ()
 get type name More...
 
static tBoolean is64Architecture ()
 return true if the machine is a 64 bits machine More...
 
static tBoolean is32Architecture ()
 return true if the machine is a 32 bits machine More...
 
static tString pointer2String (const void *obj)
 return the string representation of a pointer More...
 
static void printObjectsInMemory (ostream &f)
 print object in memory More...
 
static void printObjectsInMemory ()
 print object in memory in the standart output More...
 
static tChar getMaxChar ()
 get the max value for tChar type More...
 
static tChar getMinChar ()
 get the min value for tChar type More...
 
static tUChar getMaxUChar ()
 get the max value for tUChar type More...
 
static tUChar getMinUChar ()
 get the min value for tUChar type More...
 
static tSInt getMaxSInt ()
 get the max value for tSInt type More...
 
static tSInt getMinSInt ()
 get the min value for tSInt type More...
 
static tUSInt getMaxUSInt ()
 get the max value for tUSInt type More...
 
static tUSInt getMinUSInt ()
 get the min value for tUSInt type More...
 
static tInt getMaxInt ()
 get the max value for tInt type More...
 
static tInt getMinInt ()
 get the min value for tInt type More...
 
static tUInt getMaxUInt ()
 get the max value for tUInt type More...
 
static tUInt getMinUInt ()
 get the min value for tUInt type More...
 
static tLInt getMaxLInt ()
 get the max value for tLInt type More...
 
static tLInt getMinLInt ()
 get the min value for tLInt type More...
 
static tULInt getMaxULInt ()
 get the max value for tULInt type More...
 
static tULInt getMinULInt ()
 get the min value for tULInt type More...
 
static tLLInt getMaxLLInt ()
 get the max value for tULInt type More...
 
static tLLInt getMinLLInt ()
 get the min value for tLLInt type More...
 
static tULLInt getMaxULLInt ()
 get the max value for tULLInt type More...
 
static tULLInt getMinULLInt ()
 get the min value for tULLInt type More...
 
static tFloat getMaxFloat ()
 get the max value for tFloat type More...
 
static tFloat getMinFloat ()
 get the min value for tFloat type More...
 
template<class T >
static T getEpsilon ()
 get the epsilon value for T type More...
 
template<class T >
static T getInfinity ()
 get the infinity for T type More...
 
static tFloat getFloatEpsilon ()
 get the epsilon value for tFloat type More...
 
static tFloat getFloatInfinity ()
 get the infinity value for tFloat type More...
 
static tDouble getMaxDouble ()
 get the max value for tDouble type More...
 
static tDouble getMinDouble ()
 get the min value for tDouble type More...
 
static tDouble getDoubleInfinity ()
 get the infinity value for tFloat type More...
 
static tDouble getDoubleEpsilon ()
 get the epsilon value for tDouble type More...
 
static tLDouble getMinLDouble ()
 get the min value for tLDouble type More...
 
static tLDouble getMaxLDouble ()
 get the max value for tLDouble type More...
 
static tLDouble getLDoubleEpsilon ()
 get the epsilon value for tLDouble type More...
 
static tDouble getLDoubleInfinity ()
 get the infinity value for tDouble type More...
 
static tIndex getMaxIndex ()
 get the max value for the array/vector indexing type More...
 
static tIndex getMinIndex ()
 get the min value for the array/vector indexing type More...
 
static tUIndex getMaxUIndex ()
 get the max value for difference the array/vector indexing type More...
 
static tUIndex getMinUIndex ()
 get the min value for difference the array/vector indexing type More...
 
static tFlag getMaxFlag ()
 get the max value for the tFlag type More...
 
static tFlag getMinFlag ()
 get the min value for the tFlag type More...
 
static tUInteger getMaxUInteger ()
 get the max value for the unsigned integer type More...
 
static tUInteger getMinUInteger ()
 get the min value for the unsigned integer type More...
 
static tInteger getMaxInteger ()
 get the max value for the integer type More...
 
static tInteger getMinInteger ()
 get the min value for the integer type More...
 
static tReal getMaxReal ()
 get the max value for the real type More...
 
static tReal getMinReal ()
 get the min value for the real type More...
 
static tReal getRealEpsilon ()
 get the eps which is the difference between 1 and the least value greater than 1 that is representable. More...
 
static tReal getRealInfinity ()
 get the infinity value More...
 
template<class T >
static T computeEpsilon ()
 compute epsilon More...
 

Static Public Attributes

static const tFlag CANONICAL_MASS_MATRIX =0
 mass matrix whose each element is real More...
 
static const tFlag BLOCK_MASS_MATRIX =1
 mass matrix whose each element is a digonal matrixof size 3 More...
 
static const tFlag CONDENSED_MASS_MATRIX =2
 mass matrix is diagonal More...
 
static const tFlag P1 =1
 
static const tFlag TE =0
 
static const tFlag FROZEN_STATE =1
 
static const tFlag EQUILIBRIUM_STATE =3
 
static const tFlag UNSTEADY_STATE =0
 
static const tReal Mu0 =4*M_PI*1e-07
 
static const tReal Gamma =-1.7e11
 
static const tDimension X =0
 
static const tDimension Y =1
 
static const tDimension Z =2
 
static const tReal NULL_VALUE [] ={0,0,0}
 

Protected Member Functions

 EMMG_DisplacementFEMOperator (void)
 create More...
 
virtual ~EMMG_DisplacementFEMOperator (void)
 destroy More...
 
virtual void buildDataOnBoundaryFaces (const EMM_Grid3D &mesh, const EMM_LimitConditionArray &limitConditionOnPoints, const EMM_RealField &U0, EMM_RealField &DnU0)
 build the data on boundary faces More...
 
virtual tBoolean solveAcceleratorSystem (EMM_RealField &V)
 solve the velocity form the accelerator matrix : M.X=V V:=X More...
 
virtual void spaceProjection (EMM_RealField &V) const
 make the projection of the vector B into the solving linear space More...
 
virtual void spaceProjection (const EMM_RealField &V0, EMM_RealField &V) const
 make the projection of the vector B into the solving linear space More...
 
virtual void spaceRelevant (EMM_RealField &V) const
 make the rebuild of the vector V from the solving space. More...
 
virtual void computeElasticTensor (const tUIndex &nData, const tDimension &dim, const tReal *U, EMM_2PackedSymmetricTensors &eTensor) const
 compute the elastic tensor for all cells More...
 
virtual void computeElasticStress (const tBoolean &withConstraints, const tReal &beta, const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *D) const
 compute the elastic stress $ S_e(u) = \beta * div \left (\tilde \lambda^e : \varepsilon(u) \right )$ More...
 
virtual void computeMagneticStress (const tReal &alpha, const tReal &beta, const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M, const tUIndex &nData, tReal *D) const
 compute the magnetic stress $ S=\alpha S + \beta * div \left (\sigma^2 . \tilde \lambda^2 : ( \lambda^m : m \otimes m ) \right ) $ to elastic stress S More...
 
virtual void toDoAfterThisSetting ()
 method called after the setting of the shared pointer this method can only be called once. More...
 
virtual void initializeEquilibriumSolver (const EMM_RealField &U0)
 initialize the equilibrium solver More...
 
void setThis (SP::CORE_Object p)
 set this weak shared pointer called toDoAfterThis setting method More...
 

Private Member Functions

 SP_OBJECT (EMMG_DisplacementFEMOperator)
 

Detailed Description

This class describes the displacement operator based on Finite Elements Method EMM_DisplacementFEMOperator for the EMMG_MagnetostrictionOperator class.

Author
Stéphane Despréaux
Version
1.0

Constructor & Destructor Documentation

◆ EMMG_DisplacementFEMOperator()

EMMG_DisplacementFEMOperator::EMMG_DisplacementFEMOperator ( void  )
inlineprotected

create

Referenced by New().

Here is the caller graph for this function:

◆ ~EMMG_DisplacementFEMOperator()

virtual EMMG_DisplacementFEMOperator::~EMMG_DisplacementFEMOperator ( void  )
inlineprotectedvirtual

destroy

Member Function Documentation

◆ adimensionize()

virtual void EMM_DisplacementOperator::adimensionize ( const tReal Le,
const tReal Ms,
const tReal T,
const tReal L 
)
inlinevirtualinherited

adimensionize the operator

Parameters
[in]Lecommon elasticity adimensionized parameter
[in]Mscommon magnetization at saturation
[in]Tcaracterictic time
[in]Lcaracteristic length

adimensionize the associated displacement operator

Reimplemented from EMM_Operator.

◆ backup()

tBoolean EMM_DisplacementOperator::backup ( const tString prefix,
const tString suffix,
const tString ext 
) const
virtualinherited

backup of the operator data into file(s) used for restoring

Parameters
prefix: common prefix of the saving files
suffix: common suffix of the saving files
ext: common extension of the saving files
Returns
true if the saving of the U & V file have succeeded

It saves

  • the current time step in {prefix}_dt_{suffix}.{ext}
  • U at previous time step in {prefix}_Unm1_{suffix}.{ext}
  • U at current time step in {prefix}_Un_{suffix}.{ext}
  • V at current time step in {prefix}_Vn_{suffix}.{ext}
  • dV/dt at current time step in {prefix}_Acc_{suffx}.{ext}

Reimplemented from EMM_Operator.

Reimplemented in EMM_DisplacementFVMOperator.

References EMM_DisplacementOperator::isEquilibriumState(), EMM_DisplacementOperator::isFrozenState(), EMM_DisplacementOperator::mAccelerator, EMM_DisplacementOperator::mDt, EMM_DisplacementOperator::mEpsilonUt, EMM_DisplacementOperator::mTimeIntegrationMethod, EMM_DisplacementOperator::mUn, EMM_DisplacementOperator::mUnm1, EMM_DisplacementOperator::mVn, CORE_Object::out(), CORE_Out::println(), EMM_Tensors::saveToFile(), tBoolean, EMM_DisplacementOperator::TE, and tString.

Referenced by EMM_DisplacementFVMOperator::backup(), and EMM_DisplacementOperator::getLimitConditionOnPointsByReference().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ buildDataOnBoundaryFaces()

virtual void EMM_DisplacementFEMOperator::buildDataOnBoundaryFaces ( const EMM_Grid3D mesh,
const EMM_LimitConditionArray limitConditionOnPoints,
const EMM_RealField U0,
EMM_RealField DnU0 
)
inlineprotectedvirtualinherited

build the data on boundary faces

Parameters
meshthe mesh of the domain
limitConditionOnPoints: limit condition on points
U0: U at all points at t=0
DnU0: grad UO . N at each point slave Naumann points and Neumann points

recompute the DnUO with the formula :

  • $ C^d_q = 0 $ if q is not a Neumann points
  • $ C^d_q= \sum_{f | q \in \gamma_f } \sum_{p | p \in \gamma_f} (D_nU^0)^d_p \frac{1}{36} \cdot \prod_{k=0,k\neq l}^{k=2} h_k. (|p_k+q_k-1|+1) $ where the l is the direction of the normal to $ \gamma_f $

Implements EMM_DisplacementOperator.

References EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_RealField::copy(), EMM_DisplacementFEMOperator::discretize(), EMM_RealField::NewInstance(), EMM_DisplacementFEMOperator::resetToInitialState(), EMM_RealField::setSize(), and tBoolean.

Here is the call graph for this function:

◆ computeCineticEnergy()

tReal EMM_DisplacementFEMOperator::computeCineticEnergy ( const EMM_RealField V) const
virtualinherited

compute the energy of the magnetostriction operator at current displacement and velocity

Parameters
Vvelocity
Returns
cinetic energy value $ \int_\omega |\frac{\partial u}{\partial t}|(t) ^2 d\omega $

Implements EMM_DisplacementOperator.

References EMM_DisplacementOperator::getAdimensionizedVolumicMass(), EMM_RealField::getSize(), and EMM_DisplacementFEMOperator::mMassMatrix.

Referenced by EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeCineticEnergyAtTime()

tReal EMM_DisplacementOperator::computeCineticEnergyAtTime ( const tReal t) const
inlineinherited

compute the energy due to velocity

Parameters
ttime in [0,dt[ where dt is the time step
Returns
cinetic energy value $ \int_\omega |\frac{\partial u}{\partial t}|(t) ^2 d\omega $

References EMM_DisplacementOperator::computeCineticEnergy(), EMM_DisplacementOperator::getVelocity(), and tReal.

Referenced by EMM_DisplacementOperator::computeEnergy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeElasticStress() [1/3]

virtual void EMMG_DisplacementFEMOperator::computeElasticStress ( const EMM_RealField U,
EMM_RealField S 
) const
inlinevirtual

compute the elastic stress for all cells

Parameters
Uthe displacement field
Sthe elastic stress } $ \forall (i,k) \in [0,N[\times[0,d[, S^i_k= \displaystyle div(\lambda^e:\varepsilon(u^i))_k = \sum_{l=0}^{d-1} \frac{\partial \left( \sum_{r,s=0}^{r,s=dim-1} \lambda^2_{klrs} \frac{\partial u^i_s}{\partial x_r} \right )}{\partial x_l} $ where
  • $ u^i_r $ is the r-coordinate of the displacement u at cell i when r is in [0,d[ and d is the dimension of the space (i.e. 3).
  • $ x_s $ is the s-coordinate of points in cell

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementFEMOperator::computeElasticStress(), EMM_RealField::getDimension(), EMM_RealField::getSize(), null, EMM_RealField::setDimension(), EMM_RealField::setSize(), tDimension, and tUIndex.

Here is the call graph for this function:

◆ computeElasticStress() [2/3]

void EMM_DisplacementFEMOperator::computeElasticStress ( const tBoolean withConstraints,
const tReal beta,
const tUIndex nData,
const tDimension dim,
const tReal U,
tReal D 
) const
protectedvirtualinherited

compute the elastic stress $ S_e(u) = \beta * div \left (\tilde \lambda^e : \varepsilon(u) \right )$

Parameters
withConstraints: if true compute the whore opertaor if false, compute only the linear part of operator
betafactor of the strees to turn intto definite positive/negative matrix
nDatanumber of data for U (nCells or nVertices depending on the method)
dimdimension of the problem in [1,3]
Uthe displacement field values
Dthe elastic stress of size nData*dim

$ S_e(u) = - \beta \sum_{c \in [0,M[} \sum_{jt\in \{0,1,2\}^2} \tilde \lambda^e_{kjst} \int_{\omega_c} \frac{\partial \Phi_p }{\partial x_t } \frac{\partial \Phi_q }{\partial x_j } d\omega_c $

It is an affine operator $ S_e(U)= A. U + B.U_0 + C.F $ where

  • A is symmetric definite positive which is the linear part of the affine operator
  • $ B.U_0 + C.F $ is the constant part of the affine operator
    • $ U_0 $ is the Dirichlet values of the field
    • $ F $ is the applied forces

start=iq+Px.(jq+Py.kq)

Implements EMM_DisplacementOperator.

References EMM_DisplacementFEMOperator::addBoundaryElasticStress(), EMM_Grid3D::DIRICHLET_LIMIT_CONDITION, EMM_Grid3D::ELEMENT_POINTS, EMM_Grid3D::GET_MASTER_PERIODIC_POINT(), EMM_DisplacementOperator::getAdimensionizedSegmentsSize(), EMM_Operator::getElementVolume(), EMM_DisplacementOperator::getLambdaE(), EMM_DisplacementOperator::getLimitConditionOnPoints(), EMM_DisplacementFEMOperator::getNeighborsIndicator(), EMM_DisplacementFEMOperator::getPeriodicIndicator(), EMM_DisplacementFEMOperator::getPointsNumber(), EMM_4Tensors::getTensorSize(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_Grid3D::IS_ELEMENT_MAGNETIZED(), EMM_Tensors::isNotNull(), null, OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, EMM_Grid3D::POINTS_NUMBER_PER_ELEMENT, EMM_Grid3D::SLAVE_LIMIT_CONDITION, tBoolean, tCellFlag, tDimension, tFlag, tInteger, tLimitCondition, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by computeElasticStress(), and EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeElasticStress() [3/3]

void EMM_DisplacementOperator::computeElasticStress ( const tUIndex nData,
const tDimension dim,
const tReal U,
tReal D 
) const
inlineinherited

compute the elastic stress $ S_e(u) =div \left (\tilde \lambda^e : \varepsilon(u) \right )$

Parameters
nDatanumber of data for U (nCells or nVertices depending on the method)
dimdimension of the problem in [1,3]
Uthe displacement field values
Dthe elastic stress of size nData*dim

It computes $ S^i_e(u) = - \displaystyle \int_\Omega \left (\tilde \lambda^e : \varepsilon(u) \right ) : \nabla \phi^i d\Omega $

$ \forall d \in [0,3[, \forall q \in [0,P[, B[3q+d]= \displaystyle - \sum_{c \in V(P_q)} \int_{\omega_c} \sum_{p=0}^{p=8} \sum_{lrs} \left ( \lambda^c_{dlrs} u_{i_P}^s(t)\frac{\partial \Phi_p }{\partial x_r } \frac{\partial \Phi_q }{\partial x_l} \right ) d\omega $

where $i_P $ is the index of the p-th point into cell $ \omega_c $, P is the number of interior magnetized points and $ V(P_q) $ is the set of cells connected to point q.

Algorithm:

  • D=0, initialize to 0
  • pts={[0,0,0],[1,0,0],[0,1,0],[1,1,0],[0,0,1],[1,0,1],[0,1,1],[1,1,1]} local coordinates of cell points.
  • $ \forall i_Q \in [0, N[ $
    • $ \forall c \in V(iQ) $
      • $ iCell=i+jN_x+kN_x*N_y $ index of the cell c
      • if iCell is in magnetized domain
        • $ \lambda^e=getLambda^e(iCell)$ of size 3x3x3x3
        • $ \forall p \in [0,8[ $ loop on nodes of cell iCell of local coordinate $ Px,Py,Pz \in {0,1}^3 $.
          • iP is the global index of local point p
          • iP=(i+Px)+Nx*(j+Py)+Nx.Ny.(k+Pz)
          • $ \forall (d,l,r,s)\in R^4, D_{i_Q,d}-=\lambda^e_{klrs}.D_{pqrl}.U^{i_P}_s $ with
            • $ D_{pqrr}=\frac{h_0.h_1.h_2}{h^2_r} . \frac{1}{36}. (-1)^{p_r+q_r} . \prod_{k=0}^{k=2} (|p_k+q_k-1|+1) $
            • $ D_{pqrl}=\frac{h_0.h_1.h_2}{h_r.h_l}.\frac{1}{24}. (-1)^{p_r+q_l} . (|p_k+q_k-1|+1) k \neq l, k \neq r $

References EMM_DisplacementOperator::computeElasticStress(), tBoolean, tDimension, tReal, and tUIndex.

Here is the call graph for this function:

◆ computeElasticStressMatrixProduct()

virtual void EMM_DisplacementOperator::computeElasticStressMatrixProduct ( const tUIndex nData,
const tDimension dim,
const tReal U,
tReal D 
) const
inlinevirtualinherited

compute the elastic stress Matrix product $ A.U = - div \left (\tilde \lambda^e : \varepsilon(u) \right ) $

Parameters
nDatanumber of data for U (nCells or nVertices depending on the method)
dimdimension of the problem in [1,3]
Uthe displacement field values
Dthe elastic stress of size nData*dim

make the computation of A.U=-S_e.U for the elastic equilibrium matrix product with null constraints

Reimplemented in EMM_DisplacementFVM_VIGROperator.

References EMM_DisplacementOperator::computeElasticStress(), EMM_DisplacementOperator::computeElasticTensor(), tDimension, tReal, and tUIndex.

Here is the call graph for this function:

◆ computeElasticTensor() [1/2]

void EMM_DisplacementFEMOperator::computeElasticTensor ( const tUIndex nData,
const tDimension dim,
const tReal U,
EMM_2PackedSymmetricTensors eTensor 
) const
protectedvirtualinherited

compute the elastic tensor for all cells

Parameters
nDatasize of the displacement field
dimdimension of the displacement field
Uvalues of the displacement field
eTensorthe elastic tensor of size 3x3 stored in column-packed symmetric upper matrix array of size 6

$ \forall (r,s) \in [0,3[^2, \varepsilon_{rs}= \displaystyle \frac{1}{2}\left ( \frac{\partial u_r}{\partial x_s} + \frac{\partial u_s}{\partial x_r} \right )=eTensor[r+(s*(s+1)/2)]$ where

  • $ u_r $ is the r-coordinate of the displacement u
  • $ x_s $ is the s-coordinate of point in cell

The finite element approximation of $ \frac{\partial u_r}{\partial x_s} $ at cell i , is given by

$ \displaystyle \frac{\partial u_r}{\partial x_s} = \displaystyle \frac{1}{|\omega|} \int_\omega \frac{\partial u_r}{\partial x_s} d\omega = \displaystyle \sum_{q=0}^{q=7} u_q^r \frac{D_{qs}}{4.h_s}$ where $ \displaystyle \frac{D_{qs}}{4}=\int_{\hat \omega} \frac{\partial \hat \Phi_q }{\partial r_s }d{\hat \omega} $

$ \varepsilon_{ks} $ is computed as follow in a packed symmetric column storage at cell i :

  • for all k in [0,3 [
    • $ \displaystyle \frac{dU^i_s}{dx_k}= \sum_{q=0}^{q=7} u_q^k \frac{D_{qs}}{4.h_s} $
    • for all s in [0,k[, $ \varepsilon_{ks} += \frac{1}{2}.\frac{dU^i_s}{dx_k} $
    • $ \varepsilon_{kk} = \frac{dU^i_k}{dx_k} $
    • for all s in ]k,3[, $ \varepsilon_{sk} += \frac{1}{2}. \frac{dU^i_s}{dx_k} $

Implements EMM_DisplacementOperator.

References CORE_MorseArray< T >::begin(), EMM_Grid3D::ELEMENT_POINTS, CORE_MorseArray< T >::fitToSize(), EMM_DisplacementOperator::getAdimensionizedSegmentsSize(), CORE_MorseArray< T >::getIndices(), EMM_DisplacementFEMOperator::getNeighborsIndicator(), EMM_DisplacementFEMOperator::getPointsNumber(), CORE_Array< T >::getSize(), EMM_2PackedSymmetricTensors::getTensorSize(), EMM_Tensors::getTensorsNumber(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_Tensors::getValues(), EMM_DisplacementFEMOperator::INT_GRAD_PHI, EMM_DisplacementFEMOperator::INT_GRAD_PHI_FACTOR, EMM_Grid3D::IS_ELEMENT_MAGNETIZED(), OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, EMM_Grid3D::POINTS_NUMBER_PER_ELEMENT, EMM_Tensors::setTensorsNumber(), tBoolean, tCellFlag, tCInt, tDimension, tReal, tUCInt, tUIndex, tUInteger, and CORE_MorseArrayIterator< T >::values().

Referenced by EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeElasticTensor() [2/2]

void EMM_DisplacementOperator::computeElasticTensor ( const EMM_RealField U,
EMM_2PackedSymmetricTensors eTensor 
)
virtualinherited

compute the elastic tensor for all cells $ \epsilon(U)=\frac{1}{2} \left (\nabla U + \nabla^t U \right ) $

Parameters
Uthe displacement field
eTensorthe elastic tensor of size 3x3 stored in row-packed symmetric upper matrix array of size 6

$ \forall (r,s) \in [0,3[^2, \varepsilon_{rs}= \displaystyle \frac{1}{2}\left ( \frac{\partial u_r}{\partial x_s} + \frac{\partial u_s}{\partial x_r} \right )=eTensor[r+(s*(s+1)/2)]$ where

  • $ u_r $ is the r-coordinate of the displacement u
  • $ x_s $ is the s-coordinate of point in cell

Reimplemented in EMM_DisplacementFVMOperator, and EMM_DisplacementFVM_VIGROperator.

References EMM_RealField::getDimension(), EMM_RealField::getValues(), tDimension, tReal, and tUIndex.

Referenced by EMM_DisplacementOperator::computeElasticStressMatrixProduct(), EMM_DisplacementFVMOperator::computeElasticTensor(), EMM_DisplacementOperator::computeFieldsAtTime(), EMM_DisplacementOperator::restore(), and EMM_DisplacementOperator::updateAtNextTimeStep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeEnergy()

tReal EMM_DisplacementOperator::computeEnergy ( const tReal t,
const tUIndex nCells,
const tDimension dim,
const EMM_RealArray sigma,
const tReal M 
) const
inherited

compute the energy of the magnetostriction operator at current displacement and velocity

Parameters
tthe time in [0,dt[ where dt is the time step
nCells: number of cells
dimdimension of each point of mesh
sigmathe weight of each cell
Mthe magnetization field values
Returns
energy value : $ E(m,u)=\displaystyle \frac{1}{2} \int_\omega \sigma^4(x)[\tilde \lambda^e:(\tilde \lambda^m:m \otimes m)]:(\tilde \lambda^m:m \otimes m) d\omega $ $ \displaystyle -\int_\omega \sigma^2(x) \epsilon(u):(\tilde \lambda^e:(\tilde \lambda^m:m \otimes m)) d\omega $ $ \displaystyle +\frac{1}{2} \int_\omega (\tilde \lambda^e:\epsilon(u)):\epsilon(u) d\omega $ $ \displaystyle +\frac{1}{2} \int_\omega |\frac{\partial u}{\partial t}|^2d\omega $

References EMM_DisplacementOperator::computeCineticEnergyAtTime(), EMM_DisplacementOperator::computePotentialEnergyAtTime(), EMM_DisplacementOperator::computeStressConstraintEnergy(), EMM_DisplacementOperator::getConstraints(), EMM_DisplacementOperator::getElasticTensor(), EMM_Operator::getElementVolume(), CORE_Array< T >::getSize(), CORE_Object::getThread(), EMM_DisplacementOperator::isEquilibriumState(), EMM_DisplacementOperator::mLme, CORE_Thread::startChrono(), tBoolean, tReal, and tString.

Referenced by EMM_MagnetostrictionOperator::computeEnergy(), and EMM_DisplacementOperator::computeMagneticStress().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeEpsilon()

template<class T >
static T CORE_Object::computeEpsilon ( )
inlinestaticinherited

compute epsilon

Returns
the epsilon value eps=10^{-p/3} where p is defined by getEpsilon()=10^{-p}

◆ computeEquilibriumMatrixDiagonalConditioner()

void EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner ( MATH_Vector D) const
virtualinherited

◆ computeEquilibriumState()

tBoolean EMM_DisplacementOperator::computeEquilibriumState ( const EMM_RealArray sigma,
const EMM_RealField M,
const EMM_RealField U0,
EMM_RealField U 
)
inherited

compute the equilibirum state $ div(\lambda^e:epsilon(U))=div(\lambda^e:\lambda^m:M \otimes M) $

Parameters
[in]sigma: the weight array due to unhomegeneous magnetization at saturation
[in]M: the magnetization field
[in]U0: the displacement field at dirichlet point
[out]Uthe dispacement field at equilibrium
Returns
true if the solving succeeds
  • compute the right hand side of the equation $ W=W_m-W_e $
  • make a projection of W into f the solving space (W=U0 on Dirichlet point) in order to ensure that U=U_0 on Dirichlet boundary
  • solve the linear equation with a conjugate gradient method $ -S_e.U=-W $ S_e is diagonla for derichlet point
  • make a relevant of the solution (Us=Um for slave/master points)

References EMM_DisplacementOperator::computeMagneticStress(), EMM_RealField::copy(), EMM_DisplacementOperator::getAccelerator(), EMM_DisplacementOperator::getSolver(), EMM_DisplacementOperator::mEquilibriumMatrix, EMM_DisplacementOperator::mUt, MATH_Solver::setMaximumIterationsNumber(), EMM_DisplacementOperator::spaceProjection(), EMM_DisplacementOperator::spaceRelevant(), and tBoolean.

Referenced by EMM_DisplacementOperator::computeEquilibriumMatrixDiagonalConditioner(), and EMM_DisplacementOperator::updateAtNextTimeStep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeFieldsAtTime()

tBoolean EMM_DisplacementOperator::computeFieldsAtTime ( const tReal t,
const tFlag order,
const EMM_RealArray sigma,
const EMM_RealField dM_dt0,
const EMM_RealField M0 
)
virtualinherited

◆ computeMagneticStress() [1/3]

virtual void EMMG_DisplacementFEMOperator::computeMagneticStress ( const tReal alpha,
const tReal beta,
const EMM_RealArray sigma,
const EMM_RealField M,
EMM_RealField S 
) const
inlinevirtual

compute the magnetic stress for all cells

Parameters
[in]alpha: multipilcateur factor of S
[in]beta: multipilcateur factor of Magnetic Stress
[in]sigmathe magnetized weight pert cell
[in]Mthe magnetization field
[in,out]Sthe magnetic stress

It computes:

$ \forall (i,k) \in [0,N[\times[0,d[, S^i_k= \alpha . S^i_k + \beta . \displaystyle div(\lambda^e:(\lambda^m:m \times m)_k = \alpha . S^i_k + \beta . \displaystyle \sum_{l=0}^{d-1} \frac{\partial \left( \displaystyle \sum_{r,s,i,j=0}^{r,s,i,j=d-1} \lambda^e_{klij} . \lambda^m_{ijrs} m^i_r . m^i_s \right )}{\partial x_l} $ where

  • $ m^i_s $ is the s-coordinate of the magnetization field M at cell i when s is in [0,d[ and d is the dimension of the space (i.e. 3).
  • $ x_r $ is the r-coordinate of center of cell

Implements EMM_DisplacementOperator.

References EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_RealField::getDimension(), EMM_RealField::getSize(), null, tDimension, and tUIndex.

Here is the call graph for this function:

◆ computeMagneticStress() [2/3]

void EMM_DisplacementFEMOperator::computeMagneticStress ( const tReal alpha,
const tReal beta,
const tUIndex nCells,
const tDimension dim,
const EMM_RealArray sigma,
const tReal M,
const tUIndex nData,
tReal D 
) const
protectedvirtualinherited

compute the magnetic stress $ S=\alpha S + \beta * div \left (\sigma^2 . \tilde \lambda^2 : ( \lambda^m : m \otimes m ) \right ) $ to elastic stress S

Parameters
alpha: multiplicator of the total stress
beta: mustilicator of the magnetic stress
nCellsthe size of the magnetism value
dimdimension of the problem in [1,3]
sigmaweight of each cell
Mthe magnetization field value
nDatanumber of data for the stress
Dthe stress divergence in input the elastic stress , in output the total stress

$ \displaystyle S_{3i_Q+d} =\alpha * S_{3i_Q+d} - \beta * \sum_{w \in V(i_Q)} \sum_{l,u,v,r,s \in \{0,1,2\}^5} \lambda^{e}_{dluv}.\lambda^m_{uvrs} \sigma_i^2 m^i_r m^i_s \int_{\omega_w} \frac{\partial \Phi_q }{\partial x_l }d\omega_w $ where $ n V(i_Q) $ is the cells connected to point at global index $ i_Q $ abd q is the local index of $iQ$ in cell $ \omega_w $.

  • pts={[0,0,0],[1,0,0],[0,1,0],[1,1,0],[0,0,1],[1,0,1],[0,1,1],[1,1,1]} local coordinates of cell points.
  • $ \forall i_Q \in [0,P[ $ P is the number of points of the domain
    • $ \forall c \in V(iQ) $
      • $ iCell=i+jN_x+kN_x*N_y $ index of the cell c
      • if iCell is in magnetized domain
        • $ \lambda^e=getLambda^e(iCell)$ of size 3x3x3x3
        • $ \lambda^m=getLambda^m(iCell)$ of size 3x3x3x3
        • $ M=M[3*iCell] $ of size 3
        • $ \forall p \in [0,8[ $ loop on nodes of cell iCell of local coordinate $ Px,Py,Pz \in {0,1}^3 $.
          • compute the index of the point iP=(i+Px)+Nx*(j+Py)+Nx.Ny.(k+Pz)
          • $ \forall (d,l,u,v,r,s)\in R^6, \displaystyle D_{i_Q,d}=alpha * D_{i_Q,d} - beta* \sigma_i^2*\lambda^e_{kluv}.^lambda^m_{uvrs}.M_s. M_r D_{ql} . \frac{h_0.h_1.h_2}{4.h_l} $

start=iq+Px.(jq+Py.kq)

Implements EMM_DisplacementOperator.

References EMM_Grid3D::ELEMENT_POINTS, EMM_DisplacementOperator::getAdimensionizedSegmentsSize(), EMM_Operator::getElementVolume(), EMM_DisplacementOperator::getLambdaEDoubleDotLambdaM(), EMM_DisplacementFEMOperator::getNeighborsIndicator(), EMM_DisplacementFEMOperator::getPeriodicIndicator(), EMM_DisplacementFEMOperator::getPointsNumber(), CORE_Array< T >::getSize(), EMM_4Tensors::getTensorSize(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_DisplacementFEMOperator::INT_GRAD_PHI, EMM_DisplacementFEMOperator::INT_GRAD_PHI_FACTOR, EMM_Grid3D::IS_ELEMENT_MAGNETIZED(), EMM_Tensors::isNotNull(), OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, EMM_Grid3D::POINTS_NUMBER_PER_ELEMENT, tBoolean, tCellFlag, tCInt, tDimension, tInteger, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by computeMagneticStress(), and EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeMagneticStress() [3/3]

void EMM_DisplacementOperator::computeMagneticStress ( const EMM_RealArray sigma,
const EMM_RealField M,
EMM_RealField S 
) const
inlineinherited

compute the magnetic stress for all cells $ S=div(\lambda^e:\lambda^m:M\otimes M) $

Parameters
[in]sigmamagnetized weight for each cell
[in]Mthe magnetization field
[out]Sthe magnetic stress dield

It computes:

$ \forall (i,k) \in [0,N[\times[0,d[, S^i_k= \displaystyle div(\lambda^e:(\lambda^m:m \times m)_k = \displaystyle \sum_{l=0}^{d-1} \frac{\partial \left( \displaystyle \sum_{r,s,i,j=0}^{r,s,i,j=d-1} \lambda^e_{klij} . \lambda^m_{ijrs} m^i_r . m^i_s \right )}{\partial x_l} $ where

  • $ m^i_s $ is the s-coordinate of the magnetization field M at cell i when s is in [0,d[ and d is the dimension of the space (i.e. 3).
  • $ x_r $ is the r-coordinate of center of cell

References EMM_DisplacementOperator::computeEnergy(), EMM_RealField::setDimension(), EMM_RealField::setSize(), tDimension, tReal, and tUIndex.

Referenced by EMM_DisplacementOperator::computeEquilibriumState(), and EMM_DisplacementOperator::computeStress().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computePotentialEnergy()

tReal EMM_DisplacementFEMOperator::computePotentialEnergy ( const EMM_RealField U) const
virtualinherited

compute the potential energy to the space variation of the displacement

Parameters
Udisplacement field
Returns
potential energy value $ \int_\omega (\lambda^e:\varepsilon(u)):\varepsilon(u) d\omega $

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::computePotentialEnergy().

Referenced by EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computePotentialEnergyAtTime()

tReal EMM_DisplacementOperator::computePotentialEnergyAtTime ( const tReal t) const
inlineinherited

compute the potential energy to the space variation of the displacement

Parameters
ttime in [0,dt[ where dt is the time step
Returns
potential energy value $ \int_\omega (\lambda^e:\varepsilon(u)):\varepsilon(u) d\omega $

References EMM_DisplacementOperator::computePotentialEnergy(), EMM_DisplacementOperator::getDisplacement(), and tReal.

Referenced by EMM_DisplacementOperator::computeEnergy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeStress()

void EMM_DisplacementOperator::computeStress ( const EMM_RealArray sigma,
const EMM_RealField U,
const EMM_RealField M,
EMM_RealField stress 
) const
inlineinherited

compute the stress $ div(sigma(U,M))=div(\lambda^e:\epsilon(U))-div(\lambda^2:\lambda^m:M\otimes M)$

Parameters
sigmamagnetized weight for each cell
Uthe displacement field
Mthe magnetization field
stressthe divergence stress field

It calls:

References EMM_DisplacementOperator::computeElasticStress(), and EMM_DisplacementOperator::computeMagneticStress().

Referenced by EMM_DisplacementOperator::computeFieldsAtTimeWithGLnInterpolation(), EMM_DisplacementOperator::restore(), and EMM_DisplacementOperator::updateAtNextTimeStep().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ computeStressConstraintEnergy() [1/2]

tReal EMM_DisplacementFEMOperator::computeStressConstraintEnergy ( const EMM_RealField Uf) const
virtualinherited

◆ computeStressConstraintEnergy() [2/2]

tReal EMM_DisplacementOperator::computeStressConstraintEnergy ( const tReal t) const
inlineinherited

compute the energy of the boundary stress constraint

Parameters
ttime in [0,dt[ where dt is the time step

References EMM_DisplacementOperator::getDisplacement(), and tReal.

Referenced by EMM_DisplacementOperator::computeEnergy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ discretize()

tBoolean EMM_DisplacementFEMOperator::discretize ( const EMM_LandauLifschitzSystem system)
virtualinherited

◆ getAccelerator() [1/2]

EMM_RealField& EMM_DisplacementOperator::getAccelerator ( )
inlineinherited

◆ getAccelerator() [2/2]

const EMM_RealField& EMM_DisplacementOperator::getAccelerator ( ) const
inlineinherited

get the accelerator for reading

Returns
the accelerator field

References EMM_DisplacementOperator::setSolver(), and tString.

Here is the call graph for this function:

◆ getAdimensionizedSegmentsSize()

const tReal* EMM_DisplacementOperator::getAdimensionizedSegmentsSize ( ) const
inlineinherited

◆ getAdimensionizedVolumicMass()

const EMM_RealArray& EMM_DisplacementOperator::getAdimensionizedVolumicMass ( ) const
inlineinherited

get the adimensionized volumic mass per cell

Returns
the adimensionized volumic mass

References EMM_DisplacementOperator::mKappa.

Referenced by EMM_DisplacementFVMOperator::computeCineticEnergy(), and EMM_DisplacementFEMOperator::computeCineticEnergy().

Here is the caller graph for this function:

◆ getClassName() [1/2]

tString CORE_Object::getClassName ( ) const
inherited

return the class name of the object

Returns
the class name of the object

References tString.

Referenced by CORE_Object::getIdentityString(), EMM_Operator::getName(), and CORE_Object::isMemoryChecked().

Here is the caller graph for this function:

◆ getClassName() [2/2]

static tString CORE_Object::getClassName ( const tString identityString)
inlinestaticinherited

return the class name of the object

Parameters
identityStringthe identity string of the object
Returns
the class name

◆ getConstraintFaces()

const tFlag& EMM_DisplacementOperator::getConstraintFaces ( ) const
inlineinherited

get the constraint faces $ C=\sum_{f=0}^{f=5} C_f 2^f $ $ C_f=1 $ if face f is constrainted

Returns
the constraints faces

References EMM_DisplacementOperator::mConstraintFaces.

Referenced by EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), and EMM_DisplacementFVMOperator::computeElasticStress().

Here is the caller graph for this function:

◆ getConstraints() [1/2]

const EMM_RealField& EMM_DisplacementOperator::getConstraints ( ) const
inlineinherited

get the constraints field for reading

Returns
the constraints field

Referenced by EMM_DisplacementFEMOperator::addBoundaryElasticStress(), EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementOperator::computeEnergy(), and EMM_DisplacementFEMOperator::computeStressConstraintEnergy().

Here is the caller graph for this function:

◆ getConstraints() [2/2]

EMM_RealField& EMM_DisplacementOperator::getConstraints ( )
inlineinherited

get the constraints field for writing

Returns
the constraints field

◆ getDataField() [1/3]

virtual tBoolean EMM_DisplacementOperator::getDataField ( const tUSInt index,
tString dataName,
tUIndex n,
tDimension dim,
const float *&  values 
) const
inlinevirtualinherited

get the data field at index for saving data in vtk,txt,... files.

Parameters
indexindex of the field in [0,getDataFieldsNumber()[
dataNamename of the field
nnumber of element of the field
dimdimension of the field in [1,3[
valuesvalues of the field
Returns
true if the field at index exists
  • 0 : it returns the displacement field U
  • 1 : it returns the velocity field dU_dt
  • 2 : it returns the accelerator field acc= $ \frac{d^2U}{dt^2} $

Reimplemented from EMM_Operator.

References tBoolean.

◆ getDataField() [2/3]

virtual tBoolean EMM_DisplacementOperator::getDataField ( const tUSInt index,
tString dataName,
tUIndex n,
tDimension dim,
const double *&  values 
) const
inlinevirtualinherited

get the data field at index for saving data in vtk,txt,... files.

Parameters
indexindex of the field in [0,getDataFieldsNumber()[
dataNamename of the field
nnumber of element of the field
dimdimension of the field in [1,3[
valuesvalues of the field
Returns
true if the field at index exists
  • 0 : it returns the displacement field U
  • 1 : it returns the velocity field dU_dt
  • 2 : it returns the accelerator field acc= $ \frac{d^2U}{dt^2} $

Reimplemented from EMM_Operator.

References tBoolean.

◆ getDataField() [3/3]

virtual tBoolean EMM_DisplacementOperator::getDataField ( const tUSInt index,
tString dataName,
tUIndex n,
tDimension dim,
const long double *&  values 
) const
inlinevirtualinherited

get the data field at index for saving data in vtk,txt,... files.

Parameters
indexindex of the field in [0,getDataFieldsNumber()[
dataNamename of the field
nnumber of element of the field
dimdimension of the field in [1,3[
valuesvalues of the field
Returns
true if the field at index exists
  • 0 : it returns the displacement field U
  • 1 : it returns the velocity field dU_dt
  • 2 : it returns the accelerator field acc= $ \frac{d^2U}{dt^2} $

Reimplemented from EMM_Operator.

References tBoolean.

◆ getDataFieldsNumber()

virtual tUSInt EMM_DisplacementOperator::getDataFieldsNumber ( ) const
inlinevirtualinherited

get the number of field used in the operator

Returns
the number of data

Reimplemented from EMM_Operator.

References EMM_DisplacementOperator::isSteadyState().

Here is the call graph for this function:

◆ getDataFieldSpace()

virtual tBoolean EMM_DisplacementFEMOperator::getDataFieldSpace ( const tUSInt index,
tString dataName,
tFlag supportType,
tString dFieldType,
tUIndex n,
tDimension dim 
) const
inlinevirtualinherited

◆ getDisplacement() [1/3]

EMM_RealField& EMM_DisplacementOperator::getDisplacement ( )
inlineinherited

◆ getDisplacement() [2/3]

const EMM_RealField& EMM_DisplacementOperator::getDisplacement ( ) const
inlineinherited

get the displacement for reading

Returns
the displacement field

◆ getDisplacement() [3/3]

const EMM_RealField& EMM_DisplacementOperator::getDisplacement ( const tReal t) const
inlineinherited

get the veolicty at time

Parameters
ttime to get velocity

References EMM_DisplacementOperator::isSteadyState().

Here is the call graph for this function:

◆ getDoubleEpsilon()

static tDouble CORE_Object::getDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tDouble type

Returns
the epsilon value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getDoubleInfinity()

static tDouble CORE_Object::getDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getElasticTensor()

const EMM_2PackedSymmetricTensors& EMM_DisplacementOperator::getElasticTensor ( ) const
inlineinherited

return the elastic tensor $ \varepsilon(u)=\displaystyle \frac{1}{2} \left ( \frac{\partial u_i}{\partial x_j} + \frac{\partial u_j}{\partial x_i} \right ) $

Returns
the aelastic tensor

References EMM_DisplacementOperator::mEpsilonUt.

Referenced by EMM_DisplacementOperator::computeEnergy().

Here is the caller graph for this function:

◆ getElementVolume()

const tReal& EMM_Operator::getElementVolume ( ) const
inlineinherited

◆ getEpsilon()

template<class T >
static T CORE_Object::getEpsilon ( )
inlinestaticinherited

get the epsilon value for T type

Returns
the epsilon value for T type

◆ getFloatEpsilon()

static tFloat CORE_Object::getFloatEpsilon ( )
inlinestaticinherited

get the epsilon value for tFloat type

Returns
the epsilon value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getFloatInfinity()

static tFloat CORE_Object::getFloatInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getIdentityString()

tString CORE_Object::getIdentityString ( ) const
inlineinherited

◆ getInfinity()

template<class T >
static T CORE_Object::getInfinity ( )
inlinestaticinherited

get the infinity for T type

Returns
the infinity value for T type

◆ getLambdaE()

const EMM_4SymmetricTensors& EMM_DisplacementOperator::getLambdaE ( ) const
inlineinherited

return the adimensionized elastic tensor distribution $ \lambda^e $

Returns
the adimensionized elastic tensor of size 3x3x3x3 at each cell of size nCells in a morse array

Referenced by EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner(), and EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner().

Here is the caller graph for this function:

◆ getLambdaEDoubleDotLambdaM()

const EMM_4Tensors& EMM_DisplacementOperator::getLambdaEDoubleDotLambdaM ( ) const
inlineinherited

return the adimensionized magnetic tensor distribution $ \lambda^e:\lambda^m $

Returns
the adimensionized magnetic tensor of size 3x3x3x3 at each cell of size nCells in a morse array

Referenced by EMM_DisplacementFVMOperator::computeMagneticStress(), and EMM_DisplacementFEMOperator::computeMagneticStress().

Here is the caller graph for this function:

◆ getLambdaMDoubleDotLambdaE()

const EMM_4Tensors& EMM_DisplacementOperator::getLambdaMDoubleDotLambdaE ( ) const
inlineinherited

return the adimensionized magnetic tensor distribution $ \lambda^m:\lambda^e $

Returns
the adimensionized magnetic tensor of size 3x3x3x3 at each cell of size nCells in a morse array

◆ getLambdaMDoubleDotLambdaEDoubleDotLambdaM()

const EMM_4SymmetricTensors& EMM_DisplacementOperator::getLambdaMDoubleDotLambdaEDoubleDotLambdaM ( ) const
inlineinherited

return the adimensionized magnetic tensor distribution $ \lambda^m:\lambda^e:\lambda^m $

Returns
the adimensionized magnetic tensor of size 3x3x3x3 at each cell of size nCells in a morse array

Referenced by EMM_MagnetostrictionOperator::computeEnergy().

Here is the caller graph for this function:

◆ getLDoubleEpsilon()

static tLDouble CORE_Object::getLDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tLDouble type

Returns
the epsilon value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getLDoubleInfinity()

static tDouble CORE_Object::getLDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tDouble type

Returns
the infinity value for tDouble type

◆ getLimitConditionOnPoints()

const EMM_LimitConditionArray& EMM_DisplacementOperator::getLimitConditionOnPoints ( ) const
inlineinherited

◆ getLimitConditionOnPointsByReference()

SPC::EMM_LimitConditionArray EMM_DisplacementOperator::getLimitConditionOnPointsByReference ( ) const
inlineinherited

◆ getMassMatrixType()

const tFlag& EMM_DisplacementFEMOperator::getMassMatrixType ( ) const
inlineinherited

get the mass matrix type

Returns
the mass matrix type CANONICAL,BLOCK,CONDENSED

References EMM_DisplacementFEMOperator::mMassMatrixType, and EMM_DisplacementFEMOperator::NewMassMatrix().

Here is the call graph for this function:

◆ getMaxChar()

static tChar CORE_Object::getMaxChar ( )
inlinestaticinherited

get the max value for tChar type

Returns
the max value for tChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxDouble()

static tDouble CORE_Object::getMaxDouble ( )
inlinestaticinherited

get the max value for tDouble type

Returns
the max value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxFlag()

static tFlag CORE_Object::getMaxFlag ( )
inlinestaticinherited

get the max value for the tFlag type

Returns
the max value for the tFlag type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxFloat()

static tFloat CORE_Object::getMaxFloat ( )
inlinestaticinherited

get the max value for tFloat type

Returns
the max value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxIndex()

static tIndex CORE_Object::getMaxIndex ( )
inlinestaticinherited

get the max value for the array/vector indexing type

Returns
the max value for the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxInt()

static tInt CORE_Object::getMaxInt ( )
inlinestaticinherited

get the max value for tInt type

Returns
the max value for tInt type

Referenced by MATSGN_FFT::fastFourierTransform3D_FFTW(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxInteger()

static tInteger CORE_Object::getMaxInteger ( )
inlinestaticinherited

get the max value for the integer type

Returns
the max value for the integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLDouble()

static tLDouble CORE_Object::getMaxLDouble ( )
inlinestaticinherited

get the max value for tLDouble type

Returns
the max value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLInt()

static tLInt CORE_Object::getMaxLInt ( )
inlinestaticinherited

get the max value for tLInt type

Returns
the max value for tLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxLLInt()

static tLLInt CORE_Object::getMaxLLInt ( )
inlinestaticinherited

get the max value for tULInt type

Returns
the max value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxReal()

static tReal CORE_Object::getMaxReal ( )
inlinestaticinherited

get the max value for the real type

Returns
he max value for the real type

Referenced by EMM_MatterField::adimensionize(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxSInt()

static tSInt CORE_Object::getMaxSInt ( )
inlinestaticinherited

get the max value for tSInt type

Returns
the max value for tSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUChar()

static tUChar CORE_Object::getMaxUChar ( )
inlinestaticinherited

get the max value for tUChar type

Returns
the max value for tUChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUIndex()

static tUIndex CORE_Object::getMaxUIndex ( )
inlinestaticinherited

get the max value for difference the array/vector indexing type

Returns
the max value for difference the array/vector indexing type

Referenced by CORE_Vector< T >::addAfterIndices(), CORE_Vector< T >::search(), CORE_Test::testType(), CORE_Integer::toHexString(), and CORE_Integer::toString().

Here is the caller graph for this function:

◆ getMaxUInt()

static tUInt CORE_Object::getMaxUInt ( )
inlinestaticinherited

get the max value for tUInt type

Returns
the max value for tUInt type

Referenced by EMM_Array< tCellFlag >::loadFromFile(), EMM_RealField::loadFromFile(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUInteger()

static tUInteger CORE_Object::getMaxUInteger ( )
inlinestaticinherited

get the max value for the unsigned integer type

Returns
the max value for the unsigned integer type

Referenced by MATH_Pn::computeExtrenums(), EMM_MultiScaleGrid::computeLevelsNumber(), EMM_Input::restoreBackup(), MATH_P0::solve(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxULInt()

static tULInt CORE_Object::getMaxULInt ( )
inlinestaticinherited

get the max value for tULInt type

Returns
the max value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxULLInt()

static tULLInt CORE_Object::getMaxULLInt ( )
inlinestaticinherited

get the max value for tULLInt type

Returns
the max value for tULLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMaxUSInt()

static tUSInt CORE_Object::getMaxUSInt ( )
inlinestaticinherited

get the max value for tUSInt type

Returns
the max value for tUSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMemorySize()

virtual tULLInt EMM_DisplacementFEMOperator::getMemorySize ( ) const
inlinevirtualinherited

return the memory size in byte

Returns
the memory size of the storage in bytes 1 Kb = 1024 bytes 1 Mb = 1024 Kb 1 Gb = 1024 Mb 1 Tb = 1024 Gb 1 Hb = 1024 Tb

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::getMemorySize().

Here is the call graph for this function:

◆ getMinChar()

static tChar CORE_Object::getMinChar ( )
inlinestaticinherited

get the min value for tChar type

Returns
the min value for tChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinDouble()

static tDouble CORE_Object::getMinDouble ( )
inlinestaticinherited

get the min value for tDouble type

Returns
the min value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinFlag()

static tFlag CORE_Object::getMinFlag ( )
inlinestaticinherited

get the min value for the tFlag type

Returns
the min value for the tFlag type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinFloat()

static tFloat CORE_Object::getMinFloat ( )
inlinestaticinherited

get the min value for tFloat type

Returns
the min value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinIndex()

static tIndex CORE_Object::getMinIndex ( )
inlinestaticinherited

get the min value for the array/vector indexing type

Returns
the min value for the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinInt()

static tInt CORE_Object::getMinInt ( )
inlinestaticinherited

get the min value for tInt type

Returns
the min value for tInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinInteger()

static tInteger CORE_Object::getMinInteger ( )
inlinestaticinherited

get the min value for the integer type

Returns
the minin value for the integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLDouble()

static tLDouble CORE_Object::getMinLDouble ( )
inlinestaticinherited

get the min value for tLDouble type

Returns
the min value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLInt()

static tLInt CORE_Object::getMinLInt ( )
inlinestaticinherited

get the min value for tLInt type

Returns
the min value for tLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinLLInt()

static tLLInt CORE_Object::getMinLLInt ( )
inlinestaticinherited

get the min value for tLLInt type

Returns
the min value for tLLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinReal()

static tReal CORE_Object::getMinReal ( )
inlinestaticinherited

get the min value for the real type

Returns
the min value for the real type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinSInt()

static tSInt CORE_Object::getMinSInt ( )
inlinestaticinherited

get the min value for tSInt type

Returns
the min value for tSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUChar()

static tUChar CORE_Object::getMinUChar ( )
inlinestaticinherited

get the min value for tUChar type

Returns
the min value for tUChar type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUIndex()

static tUIndex CORE_Object::getMinUIndex ( )
inlinestaticinherited

get the min value for difference the array/vector indexing type

Returns
the min value for difference the array/vector indexing type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUInt()

static tUInt CORE_Object::getMinUInt ( )
inlinestaticinherited

get the min value for tUInt type

Returns
the min value for tUInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUInteger()

static tUInteger CORE_Object::getMinUInteger ( )
inlinestaticinherited

get the min value for the unsigned integer type

Returns
the min value for the unsigned integer type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinULInt()

static tULInt CORE_Object::getMinULInt ( )
inlinestaticinherited

get the min value for tULInt type

Returns
the min value for tULInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinULLInt()

static tULLInt CORE_Object::getMinULLInt ( )
inlinestaticinherited

get the min value for tULLInt type

Returns
the min value for tULLInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getMinUSInt()

static tUSInt CORE_Object::getMinUSInt ( )
inlinestaticinherited

get the min value for tUSInt type

Returns
the min value for tUSInt type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getName()

virtual tString EMM_Operator::getName ( ) const
inlinevirtualinherited

return an human reading name of the operator

Returns
the name of the operator

References CORE_Object::getClassName(), EMM_Operator::isAffine(), EMM_Operator::isGradientComputationable(), tBoolean, tString, and tUIndex.

Here is the call graph for this function:

◆ getNeighborsIndicator()

const EMM_CellFlagArray& EMM_DisplacementFEMOperator::getNeighborsIndicator ( ) const
inlineinherited

return the neighbors indicator in bits $ \displaystyle \sum_{f=0}^{f=F-1} v_f 2^f $ where F is the number of faces per element and $ v_f $ is 1 if there is a neighbor cell with the face f

Referenced by EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticTensor(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFEMOperator::computeMagneticStress(), and EMM_DisplacementFEMOperator::computeStressConstraintEnergy().

Here is the caller graph for this function:

◆ getOut()

static SP::CORE_Out CORE_Object::getOut ( )
inlinestaticinherited

get the output

Returns
the shared pointer to the output stream

References CORE_Object::OUT.

◆ getPeriodicIndicator()

const tCellFlag& EMM_DisplacementFEMOperator::getPeriodicIndicator ( ) const
inlineinherited

get the periodicity indication

Returns
the periodicity indicator in bits: $ \displaystyle \sum_{f=0}^{f=F-1} v_f 2^f $ where F is the number of faces per element and $ v_f $ is 1 if there is a periodiity in the face f

Referenced by EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), and EMM_DisplacementFEMOperator::spaceRelevant().

Here is the caller graph for this function:

◆ getPointerAddress()

tString CORE_Object::getPointerAddress ( ) const
inlineinherited

return the identity string of the object

Returns
the identity string of the object

References CORE_Object::pointer2String().

Here is the call graph for this function:

◆ getPointsNumber()

const tUIndex* EMM_DisplacementFEMOperator::getPointsNumber ( ) const
inlineinherited

◆ getRealEpsilon()

static tReal CORE_Object::getRealEpsilon ( )
inlinestaticinherited

get the eps which is the difference between 1 and the least value greater than 1 that is representable.

Returns
the eps which is the difference between 1 and the least value greater than 1 that is representable.

Referenced by MATH_P4::solveP4De(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ getRealInfinity()

static tReal CORE_Object::getRealInfinity ( )
inlinestaticinherited

◆ getSharedPointer() [1/2]

void CORE_Object::getSharedPointer ( SP::CORE_Object &  p)
inlineinherited

◆ getSharedPointer() [2/2]

void CORE_Object::getSharedPointer ( SPC::CORE_Object &  p) const
inlineinherited

get the shared pointer of this class into p

Parameters
p: shared pointer of the class This

◆ getSolver()

MATH_Solver* EMM_DisplacementOperator::getSolver ( )
inlineinherited

get the solver of the system

Returns
the solver null by default

Referenced by EMM_DisplacementOperator::computeEquilibriumState(), EMMG_ClassFactory::NewInstance(), and EMM_DisplacementFEMOperator::solveAcceleratorSystem().

Here is the caller graph for this function:

◆ getThread()

static CORE_Thread& CORE_Object::getThread ( )
inlinestaticinherited

get the profilier

Returns
the profiler

Referenced by MATH_MaskVector::add(), MATH_Vector::add(), EMM_DisplacementFEMOperator::addBoundaryElasticStress(), EMM_DisplacementFEMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFVMOperator::computeCineticEnergy(), EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementFEMOperator::computeElasticStress(), EMM_DisplacementFVMOperator::computeElasticTensor(), EMM_DisplacementFEMOperator::computeElasticTensor(), EMM_StaticMagneticTensorOperator::computeEnergy(), EMM_CubicAnisotropyOperator::computeEnergy(), EMM_MagnetostrictionOperator::computeEnergy(), EMM_DisplacementOperator::computeEnergy(), EMM_AnisotropyOperator::computeEnergyWithMagneticExcitation(), EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_FullExchangeOperator::computeMagneticExcitationField(), EMM_StaticMagnetostrictionOperator::computeMagneticExcitationField(), EMM_LinearAnisotropyOperator::computeMagneticExcitationField(), EMM_StaticMagneticTensorOperator::computeMagneticExcitationField(), EMM_CubicAnisotropyOperator::computeMagneticExcitationField(), EMM_MinimalExchangeOperator::computeMagneticExcitationField(), EMM_AnisotropyOperator::computeMagneticExcitationField(), EMM_MagnetostrictionOperator::computeMagneticExcitationField(), EMM_CubicAnisotropyOperator::computeMagneticExcitationFieldGradient(), EMM_AnisotropyOperator::computeMagneticExcitationFieldGradient(), EMM_DisplacementFVMOperator::computeMagneticStress(), EMM_DisplacementFEMOperator::computeMagneticStress(), EMM_OptimalTimeStep::computeOptimalTimeStep(), EMM_DisplacementFEMOperator::computeStressConstraintEnergy(), EMM_FullExchangeOperator::discretize(), EMM_MinimalExchangeOperator::discretize(), EMM_CondensedMassMatrix::discretize(), EMM_LinearAnisotropyOperator::discretize(), EMM_AnisotropyOperator::discretize(), EMM_DemagnetizedOperator::discretize(), EMMG_SLDemagnetizedOperator::discretize(), EMM_LandauLifschitzSystem::discretize(), MATH_Vector::divide(), MATH_MaskVector::dot(), MATH_Vector::dot(), EMM_4SymmetricTensors::doubleDot(), EMM_4Tensors::doubleDotCrossDoubleDotScalar(), EMM_4Tensors::doubleDotCrossProduct(), EMM_4Tensors::doubleDotCrossSquaredScalar(), EMM_4Tensors::doubleDotProduct(), MATH_Vector::init(), MATH_MaskVector::init(), EMM_LandauLifschitzODE_RK::integrateMagnetizationFieldAtTime(), EMM_DisplacementFVM_Interpolator::interpolateUAtVertices(), EMMG_SLDemagnetizedOperator::localAssembly(), EMM_DisplacementOperator::nullProjectionOnDirichletBoundary(), EMM_DisplacementOperator::periodicProjection(), EMM_2PackedSymmetricTensors::product(), EMM_CanonicalMassMatrix::product(), MATH_FullMatrix::product(), EMM_CondensedMassMatrix::product(), EMM_BlockMassMatrix::product(), MATH_MorseMatrix::product(), EMMG_SLDemagnetizedOperator::product(), EMM_DisplacementOperator::projectionOnDirichletBoundary(), EMM_LandauLifschitzSystem::resetOperatorsToInitialState(), EMM_DisplacementFVMOperator::setBoundaryFaceTypes(), FFTW_MultiDFTs::setFFT(), FFTW_MultiLevelsDFT::setFFT(), FFTW_MultiLevelsDFT::setLevels(), FFTW_MultiDFTs::setPlan(), FFTW_MultiLevelsDFT::setPlan(), EMM_CondensedMassMatrix::solve(), EMM_LandauLifschitzODE::solveODE(), EMM_4SymmetricTensors::squaredDoubleDot(), EMM_4Tensors::squaredDoubleDotCrossScalar(), EMM_4Tensors::squaredDoubleDotScalar(), EMM_CanonicalMassMatrix::symmetricDot(), EMM_CondensedMassMatrix::symmetricDot(), EMM_BlockMassMatrix::symmetricDot(), FFTW_Test::test(), MATH_SolverTest::test(), EMM_ODETest::testODE(), and EMM_Grid3D::updateLimitConditionOnPoints().

Here is the caller graph for this function:

◆ getTimeIntegrationMethod()

const tFlag& EMM_DisplacementOperator::getTimeIntegrationMethod ( ) const
inlineinherited

get the time integration method for next time step

Returns
integration method in P1 | TE

References EMM_DisplacementOperator::mTimeIntegrationMethod.

◆ getTimeIntegrationOrder()

const tUCInt& EMM_DisplacementOperator::getTimeIntegrationOrder ( ) const
inlineinherited

get the time integration order for new field

Returns
integration order in {1,2}

References EMM_DisplacementOperator::mTimeIntegrationOrder.

◆ getTimeStep()

const tReal& EMM_DisplacementOperator::getTimeStep ( ) const
inlineinherited

get the time step for elasticty

Returns
the time step for elasticity

References EMM_DisplacementOperator::mDt.

◆ getTypeName()

template<class T >
static tString CORE_Object::getTypeName ( )
inlinestaticinherited

get type name

Returns
the type name of the class

References tString.

◆ getVelocity() [1/3]

EMM_RealField& EMM_DisplacementOperator::getVelocity ( )
inlineinherited

◆ getVelocity() [2/3]

const EMM_RealField& EMM_DisplacementOperator::getVelocity ( const tReal t) const
inlineinherited

get the velocity at time

Parameters
ttime to get velocity

References EMM_DisplacementOperator::isSteadyState().

Here is the call graph for this function:

◆ getVelocity() [3/3]

const EMM_RealField& EMM_DisplacementOperator::getVelocity ( ) const
inlineinherited

get the velocity at t for reading

Returns
the velocity field

◆ initializeEquilibriumSolver()

void EMM_DisplacementOperator::initializeEquilibriumSolver ( const EMM_RealField U0)
protectedvirtualinherited

◆ is32Architecture()

static tBoolean CORE_Object::is32Architecture ( )
inlinestaticinherited

return true if the machine is a 32 bits machine

Returns
true is the computing is done in a 32 bits machine

References CORE_Object::pointer2String(), CORE_Object::printObjectsInMemory(), and tString.

Referenced by CORE_Test::testType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is64Architecture()

static tBoolean CORE_Object::is64Architecture ( )
inlinestaticinherited

return true if the machine is a 64 bits machine

Returns
true is the computing is done in a 64 bits machine

Referenced by EMM_VTK::getVTKType(), and CORE_Test::testType().

Here is the caller graph for this function:

◆ isAffine()

virtual tBoolean EMM_DisplacementOperator::isAffine ( ) const
inlinevirtualinherited

return true if the operator is either constant or linear

Returns
true if the operator is either constant or linear

Implements EMM_Operator.

◆ isCubicVolume()

const tBoolean& EMM_Operator::isCubicVolume ( ) const
inlineinherited

return the true if the element is cubic

Returns
true is all size of the volum is same

References EMM_Operator::mIsCubic.

Referenced by EMM_FullExchangeOperator::discretize(), and EMM_MinimalExchangeOperator::discretize().

Here is the caller graph for this function:

◆ isEquilibriumMatrixReconditioned()

const tBoolean& EMM_DisplacementOperator::isEquilibriumMatrixReconditioned ( ) const
inlineinherited

get if the equilibrium matrix is conditioned

Returns
true to recondition the equilibrium matrix

References EMM_DisplacementOperator::mIsEquilibriumMatrixConditioned.

Referenced by EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner(), and EMM_DisplacementFEMOperator::computeEquilibriumMatrixDiagonalConditioner().

Here is the caller graph for this function:

◆ isEquilibriumState()

tBoolean EMM_DisplacementOperator::isEquilibriumState ( ) const
inlineinherited

◆ isFrozenState()

tBoolean EMM_DisplacementOperator::isFrozenState ( ) const
inlineinherited

Referenced by EMM_DisplacementOperator::backup(), and EMM_DisplacementOperator::updateAtNextTimeStep().

Here is the caller graph for this function:

◆ isGradientComputationable()

virtual tBoolean EMM_DisplacementOperator::isGradientComputationable ( ) const
inlinevirtualinherited

return true if the gradient of the magnetic excitation is computationable

Returns
true if the the gradient of the magnetic excitation is computationable

Implements EMM_Operator.

◆ isInstanceOf() [1/2]

template<class T >
tBoolean CORE_Object::isInstanceOf ( ) const
inlineinherited

test if the clas T is an instance of this class

Returns
true if the object is an instance of T

References null.

Referenced by MATH_ToeplitzTest::toeplitzTest().

Here is the caller graph for this function:

◆ isInstanceOf() [2/2]

tBoolean CORE_Object::isInstanceOf ( const tString name) const
inlineinherited

test if the object is an instance of className

Parameters
namename of the class
Returns
true if the object is an instance of class Name

References CORE_Object::getIdentityString().

Here is the call graph for this function:

◆ isMemoryChecked()

static const tBoolean& CORE_Object::isMemoryChecked ( )
inlinestaticinherited

get if the memory checking is used

Returns
true: if the memory checking is used.

References CORE_Object::getClassName(), CORE_Object::mIsMemoryTesting, and tString.

Referenced by main().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ isSteadyState()

tBoolean EMM_DisplacementOperator::isSteadyState ( ) const
inlineinherited

◆ New()

static SP::EMMG_DisplacementFEMOperator EMMG_DisplacementFEMOperator::New ( )
inlinestatic

create a cubic anisotropy operator

Returns
a shared cubic to a planar anisotropy operator

References EMMG_DisplacementFEMOperator().

Referenced by EMMG_ClassFactory::NewInstance().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NewEquilibriumMatrix()

SP::EMM_BlockEquilibriumMatrix EMM_DisplacementOperator::NewEquilibriumMatrix ( ) const
virtualinherited

create the equilibrium matrix

Returns
the equilibrium matrix

References EMM_DisplacementOperator::getDisplacement(), CORE_Object::getThis(), and EMM_BlockEquilibriumMatrix::New().

Referenced by EMM_DisplacementOperator::initializeEquilibriumSolver(), and EMM_DisplacementOperator::setCFL().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NewMassMatrix()

SP::EMM_MassMatrix EMM_DisplacementFEMOperator::NewMassMatrix ( ) const
virtualinherited

◆ nullProjectionOnDirichletBoundary() [1/2]

void EMM_DisplacementOperator::nullProjectionOnDirichletBoundary ( EMM_RealField V) const
inherited

project the velocity to 0 on dirichlet boundary points

Parameters
Vthe field

set V=0 on Dirichlet points; V must be defined on points (return an exception if not)

References EMM_RealField::getDimension(), EMM_RealField::getValues(), EMM_RealField::initField(), EMM_DisplacementOperator::mLimitConditionOnPoints, tDimension, tReal, and tUIndex.

Referenced by EMM_DisplacementOperator::getLimitConditionOnPointsByReference(), EMM_DisplacementOperator::projectionOnDirichletBoundary(), EMM_DisplacementOperator::resetToInitialState(), and EMM_DisplacementFEMOperator::spaceProjection().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ nullProjectionOnDirichletBoundary() [2/2]

void EMM_DisplacementOperator::nullProjectionOnDirichletBoundary ( const tUIndex nPoints,
const tDimension dim,
tReal V 
) const
inherited

project the velocity to 0 on dirichlet boundary points

Parameters
[in]nPoints: the number of points
[in]dim: the dimension of each point
[in,out]V: the values field defined on points

set V=0 on Dirichlet points; V must be defined on points (return an excepion if not)

References EMM_Grid3D::DIRICHLET_LIMIT_CONDITION, EMM_DisplacementOperator::getLimitConditionOnPoints(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tLimitCondition, tReal, tUIndex, and tUInteger.

Here is the call graph for this function:

◆ out()

static CORE_Out& CORE_Object::out ( )
inlinestaticinherited

get the output

Returns
the output stream

Referenced by EMM_Matter::adimensionize(), EMM_DisplacementFVMOperator::backup(), EMM_DisplacementOperator::backup(), MATH_ElementaryMultiLevelsToeplitzMatrix::buildSpectralVectorProjector(), EMM_Test::caseTest(), EMM_Test::caseTests(), EMM_MatterField::computeAnisotropyDirectionsField(), EMM_OptimalTimeStep::computeOptimalTimeStep(), MATH_MultiLevelsToeplitzMatrix::copy(), CORE_Exception::CORE_Exception(), EMM_MatterField::createAnisotropyOperator(), CORE_Run::createIO(), EMM_ElementaryTest::defaultBackupTest(), EMM_ElementaryTest::defaultTest(), MATH_MultiLevelsFFTToeplitzMatrix::diagonalize(), EMM_DisplacementFVMOperator::discretize(), EMM_MagnetostrictionOperator::discretize(), EMM_DisplacementFEMOperator::discretize(), EMM_4SymmetricTensors::doubleDot(), EMM_4Tensors::doubleDotCrossDoubleDotScalar(), EMM_TensorsTest::doubleDotCrossDoubleDotScalarTests(), EMM_4Tensors::doubleDotCrossProduct(), EMM_TensorsTest::doubleDotCrossProductTests(), EMM_4Tensors::doubleDotCrossSquaredScalar(), EMM_TensorsTest::doubleDotCrossSquaredScalarTests(), EMM_4Tensors::doubleDotProduct(), EMM_TensorsTest::doubleDotProductTests(), EMM_DisplacementWaveTest::elasticWaveTest(), EMM_Test::elementaryTests(), FFTW_Test::fftwTutorial(), MATH_IntegrationTest::gaussLegendreTest(), EMM_MagnetostrictionTest::HComputingTest(), EMM_DemagnetizedPeriodicalTest::HTest(), EMMH_HysteresisTest::hysteresisDefaultCycleTest(), EMM_TensorsTest::initializationTests(), EMM_MultiScaleGrid::initialize(), EMM_MultiScaleSDGrid::initialize(), EMM_MatterField::loadFromANIFile(), EMM_AnisotropyDirectionsField::loadFromFile(), EMM_Matter::loadFromFile(), EMM_Grid3D::loadFromGEOFile(), EMM_MatterField::loadFromLOCFile(), EMM_Array< tCellFlag >::loadFromStream(), EMM_Matter::loadFromStream(), EMM_Matter::loadMattersFromFile(), EMM_Run::loadSystemFromOptions(), EMM_ElementaryTest::magnetostrictionBackupTest(), CORE_Run::make(), EMMH_Run::makeHysteresis(), EMM_Run::makeRun(), CORE_Run::makeType(), EMM_ElementaryTest::optionsTest(), MATH_PolynomialTest::P4Tests(), EMM_Test::primaryTests(), EMM_LandauLifschitzSystem::printLog(), CORE_Run::printOptions(), EMM_2PackedSymmetricTensors::product(), EMMG_SLDemagnetizedOperator::projectionOnSpectralSpace(), CORE_Run::readOptionsFromCommandLine(), CORE_Test::readVectorTest(), EMM_DemagnetizedPeriodicalTest::relaxationTest(), EMM_DisplacementFVMOperator::restore(), EMM_DisplacementOperator::restore(), EMM_Input::restoreBackup(), EMMH_Hysteresis::run(), EMM_Output::save(), EMM_AnisotropyDirectionsField::saveToFile(), EMM_MatterField::saveToFile(), EMM_Grid3D::saveToGEOFile(), CORE_IOTest::searchTest(), EMMH_Hysteresis::setInitialMagnetizationField(), MATH_MultiLevelsToeplitzMatrix::setLevels(), EMM_4SymmetricTensors::squaredDoubleDot(), EMM_4Tensors::squaredDoubleDotCrossScalar(), EMM_TensorsTest::squaredDoubleDotCrossScalarTests(), EMM_4Tensors::squaredDoubleDotScalar(), EMM_TensorsTest::squaredDoubleDotScalarTests(), EMM_TensorsTest::squaredDoubleDotTests(), EMM_MatterTest::testAdimensionize(), EMM_MatterTest::testANIFile(), CORE_Test::testComplex(), CORE_Test::testDateWeek(), FFTW_Test::testDFT(), EMM_MatterTest::testIO(), EMM_ODETest::testODE(), CORE_Test::testOut(), CORE_Test::testReal(), EMM_FieldTest::testRealArray(), EMM_Grid3DTest::testSegment(), EMM_Grid3DTest::testThinSheet(), CORE_Test::testTime(), CORE_Test::testType(), MATH_FullMatrix::toString(), EMM_DemagnetizedPeriodicalTest::xyPeriodicalCubeSDGTest(), and EMM_DemagnetizedPeriodicalTest::xyPeriodicalSheetSDGTest().

Here is the caller graph for this function:

◆ periodicProjection()

void EMM_DisplacementOperator::periodicProjection ( const tCellFlag periodicity,
const tUInteger  nPoints[3],
EMM_RealField V 
) const
inherited

make the periodic projection of the field V

Parameters
periodicity:: periodcidcity projection
nPointsnumber of points of each direction
Vfield to project

V at slave point is set to V at master point

References EMM_Grid3D::GET_MASTER_PERIODIC_POINT(), EMM_RealField::getDimension(), EMM_DisplacementOperator::getLimitConditionOnPoints(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_RealField::getValues(), null, OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, EMM_Grid3D::SLAVE_LIMIT_CONDITION, tDimension, tLimitCondition, CORE_Integer::toString(), tReal, tUIndex, and tUInteger.

Referenced by EMM_DisplacementOperator::getLimitConditionOnPointsByReference(), EMM_DisplacementOperator::resetToInitialState(), and EMM_DisplacementFEMOperator::spaceRelevant().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pointer2String()

tString CORE_Object::pointer2String ( const void *  obj)
staticinherited

return the string representation of a pointer

Parameters
obj: oject to get the string pointer
Returns
the string pointer of the object

References tString.

Referenced by CORE_Object::CORE_Object(), CORE_Object::getIdentityString(), CORE_Object::getPointerAddress(), CORE_Object::is32Architecture(), and CORE_Object::~CORE_Object().

Here is the caller graph for this function:

◆ printObjectsInMemory() [1/2]

void CORE_Object::printObjectsInMemory ( ostream &  f)
staticinherited

print object in memory

Parameters
f: output to print the objects in memory

References CORE_Object::getIdentityString(), CORE_Object::getSharedPointer(), CORE_Object::mIsMemoryTesting, CORE_Object::mObjects, and tInteger.

Here is the call graph for this function:

◆ printObjectsInMemory() [2/2]

static void CORE_Object::printObjectsInMemory ( )
inlinestaticinherited

print object in memory in the standart output

Referenced by CORE_Object::is32Architecture(), and main().

Here is the caller graph for this function:

◆ projectionOnDirichletBoundary() [1/2]

void EMM_DisplacementOperator::projectionOnDirichletBoundary ( const EMM_RealField V0,
EMM_RealField V 
) const
inherited

project the velocity to 0 on dirichlet boundary points

Parameters
[in]V0the field value on dirichlet points
[out]Vthe field

set V=V0 on Dirichlet points; V must be defined on points (return an excepion if not)

References EMM_RealField::getDimension(), EMM_RealField::getSize(), EMM_RealField::getValues(), EMM_RealField::initField(), EMM_DisplacementOperator::mLimitConditionOnPoints, null, EMM_DisplacementOperator::nullProjectionOnDirichletBoundary(), tBoolean, tDimension, tReal, and tUIndex.

Referenced by EMM_DisplacementOperator::getLimitConditionOnPointsByReference(), and EMM_DisplacementFEMOperator::spaceProjection().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ projectionOnDirichletBoundary() [2/2]

void EMM_DisplacementOperator::projectionOnDirichletBoundary ( const tUIndex nPoints,
const tDimension dim,
const tBoolean incV0,
const tReal V0,
tReal V 
) const
inherited

project the velocity to 0 on dirichlet boundary points

Parameters
[in]nPointsthe number of points
[in]dimthe dimension of each point
[in]incV0increment (either 0 or 1) of the values field on dirichlet points
[in]V0the values field on dirichlet points of size >=3
[in,out]Vthe values field defined on points

set V=V0 on Dirichlet points; V must be defined on points (return an excepion if not)

References EMM_Grid3D::DIRICHLET_LIMIT_CONDITION, EMM_DisplacementOperator::getLimitConditionOnPoints(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, tDimension, tLimitCondition, tReal, tUIndex, and tUInteger.

Here is the call graph for this function:

◆ resetOut()

static void CORE_Object::resetOut ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ resetThread()

static void CORE_Object::resetThread ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ resetToInitialState()

tBoolean EMM_DisplacementFEMOperator::resetToInitialState ( const EMM_LandauLifschitzSystem system)
virtualinherited

reset the operator to initial state the operator

Parameters
systemthe data to initialize the operator
Returns
true if it succeeds
  • call EMM_DisplacementOperator::resetToInitialStep()
  • recompute the accelerator vector at time 0

Reimplemented from EMM_DisplacementOperator.

References EMM_LandauLifschitzSystem::getMagnetizationField(), EMM_LandauLifschitzSystem::getSigma(), EMM_DisplacementOperator::resetToInitialState(), tBoolean, and EMM_DisplacementOperator::updateAtNextTimeStep().

Referenced by EMM_DisplacementFEMOperator::buildDataOnBoundaryFaces().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ restore()

tBoolean EMM_DisplacementOperator::restore ( const EMM_LandauLifschitzSystem system,
const tString prefix,
const tString suffix,
const tString ext 
)
virtualinherited

restore the operator data from file(s)

Parameters
system: general data to restore the operator
prefix: common prefix of the saving files
suffix: common suffix of the saving files
ext: common extension of the saving files
Returns
if the restoring of the displacament & velocity field have succeeds

It restore the state from :

  • the current time step in {prefix}_dt_{suffix}.{ext}
  • U at previous time step in {prefix}_Unm1_{suffix}.{ext}
  • U at current time step in {prefix}_Un_{suffix}.{ext}
  • V at current time step in {prefix}_Vn_{suffix}.{ext}
  • dV/dt at current time step in {prefix}_Acc_{suffx}.{ext}

Reimplemented from EMM_Operator.

Reimplemented in EMM_DisplacementFVMOperator.

References EMM_DisplacementOperator::computeAccelerator(), EMM_DisplacementOperator::computeElasticTensor(), EMM_DisplacementOperator::computeStress(), EMM_LandauLifschitzSystem::getMagnetizationField(), EMM_LandauLifschitzSystem::getSigma(), EMM_DisplacementOperator::initializeEquilibriumSolver(), EMM_DisplacementOperator::isEquilibriumState(), EMM_DisplacementOperator::mAccelerator, EMM_DisplacementOperator::mDt, EMM_DisplacementOperator::mEpsilonUt, EMM_DisplacementOperator::mKappa, EMM_DisplacementOperator::mTimeIntegrationMethod, EMM_DisplacementOperator::mUn, EMM_DisplacementOperator::mUnm1, EMM_DisplacementOperator::mVn, CORE_Object::out(), CORE_Out::println(), tBoolean, EMM_DisplacementOperator::TE, CORE_Real::toString(), and tString.

Referenced by EMM_DisplacementOperator::getLimitConditionOnPointsByReference(), and EMM_DisplacementFVMOperator::restore().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setCFL()

void EMM_DisplacementOperator::setCFL ( const tReal cfl)
inlineinherited

◆ setConstraints() [1/4]

void EMM_DisplacementOperator::setConstraints ( const tFlag C,
const tString dataFile 
)
inlineinherited

set constraints from file defined on points

Parameters
Cconstraints faces in bit : $ C=\sum_{f=0}^5 C_f 2^f $ $ C_f=1 $ if face f is constrainted
dataFile: file which contains the constraints field defined on points

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setConstraints() [2/4]

void EMM_DisplacementOperator::setConstraints ( const tFlag C,
const tReal  data[3] 
)
inlineinherited

set constraints field

Parameters
Cconstraint faces in bit : $ C=\sum_{f=0}^5 C_f 2^f $ $ C_f=1 $ if face f is constrainted
data: uniform data for constraints

References EMM_RealField::setValue().

Here is the call graph for this function:

◆ setConstraints() [3/4]

void EMM_DisplacementOperator::setConstraints ( const tFlag C,
const tReal C0,
const tReal C1,
const tReal C2 
)
inlineinherited

set initial constriants field

Parameters
Cconstraint faces in bit : $ C=\sum_{f=0}^5 C_f 2^f $ $ C_f=1 $ if face f is constrainted
C0x-coordinate of constraint
C1y-coordinate of constraint
C2z-coordinate of constraint

References EMM_RealField::initField().

Here is the call graph for this function:

◆ setConstraints() [4/4]

void EMM_DisplacementOperator::setConstraints ( const tFlag C,
const EMM_RealField data 
)
inlineinherited

set constraints

Parameters
Cconstraint faces in bit : $ C=\sum_{f=0}^5 C_f 2^f $ $ C_f=1 $ if face f is constrainted
dataconstraints field

◆ setDisplacement() [1/2]

void EMM_DisplacementOperator::setDisplacement ( const EMM_RealField u)
inlineinherited

set the displacement field

Parameters
u: is the displacement field defined ob points

◆ setDisplacement() [2/2]

void EMM_DisplacementOperator::setDisplacement ( const tReal Ux,
const tReal Uy,
const tReal Uz 
)
inlineinherited

set the displacement field to an uniform vector defied on points

Parameters
Uxuniform value of the field on the x-direction
Uyuniform value of the field on the y-direction
Uzuniform value of the field on the z-direction

◆ setElasticityState()

void EMM_DisplacementOperator::setElasticityState ( const tFlag v)
inlineinherited

set the elasticity state

Parameters
vthe elasticity state eithet equilibrium | steady | unsteady

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setInitialDisplacement() [1/4]

void EMM_DisplacementOperator::setInitialDisplacement ( const tReal scale,
const tString dataFile 
)
inlineinherited

set initial displacement field.

Parameters
scale: the scale factor of the file
dataFile: file which contains the displacement field defined on points

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setInitialDisplacement() [2/4]

void EMM_DisplacementOperator::setInitialDisplacement ( const tReal  data[3])
inlineinherited

set initial displacement field

Parameters
data: uniform data for displacement

References EMM_RealField::setValue().

Here is the call graph for this function:

◆ setInitialDisplacement() [3/4]

void EMM_DisplacementOperator::setInitialDisplacement ( const tReal  U0,
const tReal U1,
const tReal U2 
)
inlineinherited

set initial displacement field

Parameters
U0x-coordinate of displacement
U1y-coordinate of displacement
U2z-coordinate of displacement

References EMM_RealField::initField().

Here is the call graph for this function:

◆ setInitialDisplacement() [4/4]

void EMM_DisplacementOperator::setInitialDisplacement ( const EMM_RealField data)
inlineinherited

set initial displacement field

Parameters
data: data for displacement

◆ setInitialVelocity() [1/4]

void EMM_DisplacementOperator::setInitialVelocity ( const tReal scale,
const tString dataFile 
)
inlineinherited

set initial velocity field

Parameters
scalescale of the file
dataFile: file which contains the velocity field defined on points

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setInitialVelocity() [2/4]

void EMM_DisplacementOperator::setInitialVelocity ( const EMM_RealField data)
inlineinherited

set initial velocity field

Parameters
datavelocity field

◆ setInitialVelocity() [3/4]

void EMM_DisplacementOperator::setInitialVelocity ( const tReal  data[3])
inlineinherited

set initial velocity field

Parameters
data: uniform data for velocity

References EMM_RealField::setValue().

Here is the call graph for this function:

◆ setInitialVelocity() [4/4]

void EMM_DisplacementOperator::setInitialVelocity ( const tReal V0,
const tReal V1,
const tReal V2 
)
inlineinherited

set initial velocity field

Parameters
V0x-coordinate of velocity
V1y-coordinate of velocity
V2z-coordinate of velocity

References EMM_RealField::initField().

Here is the call graph for this function:

◆ setIsEquilibriumMatrixReconditioned()

void EMM_DisplacementOperator::setIsEquilibriumMatrixReconditioned ( const tBoolean c)
inlineinherited

set to true if the equilibrium matrix is conditioned

Parameters
ctrue to recondition the equilibrium matrix

◆ setIsMemoryChecked()

static void CORE_Object::setIsMemoryChecked ( const tBoolean v)
inlinestaticinherited

set if the memory checking is used

Parameters
v: true to check memory

Referenced by main().

Here is the caller graph for this function:

◆ setLimitConditionOnPoints() [1/2]

void EMM_DisplacementOperator::setLimitConditionOnPoints ( const EMM_IntArray lc)
inlineinherited

set the limit condition each point is set to

Parameters
lcthe limit condition value for all points of the mesh. Interior point are ignored (0)
  • NO_LIMIT_CONDITION for all interior points or not magnetized point
  • DIRICHLET_LIMIT_CONDITION for all points on Dirichlet boundary
  • NEUMANN_LIMIT_CONDITION for all points on Neumann boundary

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setLimitConditionOnPoints() [2/2]

void EMM_DisplacementOperator::setLimitConditionOnPoints ( const tLimitCondition lc)
inlineinherited

set the limit condition to all points

Parameters
lcthe limit condition value for all points of the mesh. Interiror point are ignored (0)
  • NO_LIMIT_CONDITION for all interior points or not magnetized point
  • DIRICHLET_LIMIT_CONDITION for all points on Dirichlet boundary
  • NEUMANN_LIMIT_CONDITION for all points on Neumann boundary

◆ setMassMatrixType()

void EMM_DisplacementFEMOperator::setMassMatrixType ( const tFlag t)
inlineinherited

set the mass matrix type

Parameters
t: the mass matrix type CANONICAL,BLOCK,CONDENSED

◆ setOut()

static void CORE_Object::setOut ( SP::CORE_Out  out)
inlinestaticinherited

set the output stream

Parameters
out: the shared pointer to the new output stream

References null.

◆ setSolver() [1/2]

void EMM_DisplacementOperator::setSolver ( const tString solverName)
virtualinherited

set the solver

Parameters
solverNamename of the solver which can be either :
  • CG or
  • biCGStab or
  • empty

If empty biCGStab is used only for FVM displacement with equilibrium state

Reimplemented in EMM_DisplacementFVMOperator.

References tString.

Referenced by EMM_DisplacementOperator::getAccelerator(), EMMG_ClassFactory::NewInstance(), and EMM_DisplacementFVMOperator::setSolver().

Here is the caller graph for this function:

◆ setSolver() [2/2]

void EMM_DisplacementOperator::setSolver ( SP::MATH_Solver  solver)
inlineinherited

set the solver

Parameters
solver: the solver

◆ setThis()

void CORE_Object::setThis ( SP::CORE_Object  p)
inlineprotectedinherited

set this weak shared pointer called toDoAfterThis setting method

Parameters
p: shared pointer of the class This

References CORE_Object::toDoAfterThisSetting().

Here is the call graph for this function:

◆ setThread()

static void CORE_Object::setThread ( SP::CORE_Thread  thread)
inlinestaticinherited

set the thread

Parameters
threadthe shared pointer to the thread

References null.

Referenced by EMM_Run::EMM_Run(), EMM_TensorsRun::EMM_TensorsRun(), and MATH_SolverRun::MATH_SolverRun().

Here is the caller graph for this function:

◆ setTimeIntegrationMethod()

void EMM_DisplacementOperator::setTimeIntegrationMethod ( const tFlag m)
inlineinherited

set the time integration method for new field

Parameters
mintegration method in P1 | TE

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setTimeIntegrationOrder()

void EMM_DisplacementOperator::setTimeIntegrationOrder ( const tInt o)
inlineinherited

set the time integration order for new field

Parameters
ointegration ordre in {1,2}

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setVelocity() [1/2]

void EMM_DisplacementOperator::setVelocity ( const EMM_RealField v)
inlineinherited

set the velocity of dicplacement defined on points

Parameters
v: is the displacement velocity field

◆ setVelocity() [2/2]

void EMM_DisplacementOperator::setVelocity ( const tReal Vx,
const tReal Vy,
const tReal Vz 
)
inlineinherited

set the displacement velocity field to an uniform vector defined on points

Parameters
Vxuniform value of the field on the x-direction
Vyuniform value of the field on the y-direction
Vzuniform value of the field on the z-direction

◆ solveAcceleratorSystem()

tBoolean EMM_DisplacementFEMOperator::solveAcceleratorSystem ( EMM_RealField V)
protectedvirtualinherited

solve the velocity form the accelerator matrix : M.X=V V:=X

Parameters
V
  • input : the total stress
  • output : the accelerator $ U^{"} $
Returns
true if the solving succeeds

M is the mass matrix

Implements EMM_DisplacementOperator.

References EMM_DisplacementOperator::getSolver(), EMM_DisplacementFEMOperator::mMassMatrix, and tBoolean.

Referenced by EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SP_OBJECT()

EMMG_DisplacementFEMOperator::SP_OBJECT ( EMMG_DisplacementFEMOperator  )
private

◆ spaceProjection() [1/2]

void EMM_DisplacementFEMOperator::spaceProjection ( EMM_RealField V) const
protectedvirtualinherited

make the projection of the vector B into the solving linear space

Parameters
[out]Vfield to project in linear solving space

V is set to 0 on all dirichlet points

Implements EMM_DisplacementOperator.

References EMM_DisplacementOperator::nullProjectionOnDirichletBoundary().

Referenced by EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spaceProjection() [2/2]

void EMM_DisplacementFEMOperator::spaceProjection ( const EMM_RealField V0,
EMM_RealField V 
) const
protectedvirtualinherited

make the projection of the vector B into the solving linear space

Parameters
[in]V0:orthogonal vector of the linear solving space
[out]V: field to project in linear solving space

V is set to V0 on all dirichlet points

Implements EMM_DisplacementOperator.

References EMM_DisplacementOperator::projectionOnDirichletBoundary().

Here is the call graph for this function:

◆ spaceRelevant()

void EMM_DisplacementFEMOperator::spaceRelevant ( EMM_RealField V) const
protectedvirtualinherited

make the rebuild of the vector V from the solving space.

Parameters
Vthe vector to rebuild from the solving space

V at slave periodical point is set to the value of V at the master periodical point

Implements EMM_DisplacementOperator.

References EMM_DisplacementFEMOperator::getPeriodicIndicator(), EMM_DisplacementFEMOperator::mMassMatrix, and EMM_DisplacementOperator::periodicProjection().

Referenced by EMM_DisplacementFEMOperator::getDataFieldSpace().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toDoAfterThisSetting()

virtual void EMM_DisplacementOperator::toDoAfterThisSetting ( )
inlineprotectedvirtualinherited

method called after the setting of the shared pointer this method can only be called once.

Reimplemented from EMM_Object.

Reimplemented in EMM_DisplacementFVMOperator.

References EMM_Object::toDoAfterThisSetting().

Referenced by EMM_DisplacementFVMOperator::toDoAfterThisSetting().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toString()

virtual tString EMM_DisplacementFEMOperator::toString ( ) const
inlinevirtualinherited

turn the martix into string

Reimplemented from EMM_DisplacementOperator.

Referenced by EMM_DisplacementFEMOperator::discretize().

Here is the caller graph for this function:

◆ updateAtNextTimeStep()

tBoolean EMM_DisplacementOperator::updateAtNextTimeStep ( const tReal dt,
const EMM_RealArray sigma,
const EMM_RealField Mt 
)
virtualinherited

update the data of operator at next time step

Parameters
dtthe time step
sigmathe magnetized weight of each cell
Mtthe magnetization field at each point at next time step
Returns
true if the updating of the operator has succeeded if (dt==0) the function is called after discretization during the relaxation process

Implements EMM_Operator.

References EMM_DisplacementOperator::computeAccelerator(), EMM_DisplacementOperator::computeElasticTensor(), EMM_DisplacementOperator::computeEquilibriumState(), EMM_DisplacementOperator::computePastDisplacement(), EMM_DisplacementOperator::computeStress(), EMM_DisplacementOperator::initializeEquilibriumSolver(), EMM_DisplacementOperator::isEquilibriumState(), EMM_DisplacementOperator::isFrozenState(), EMM_DisplacementOperator::mAccelerator, EMM_DisplacementOperator::mDt, EMM_DisplacementOperator::mEpsilonUt, EMM_DisplacementOperator::mKappa, EMM_DisplacementOperator::mTimeIntegrationMethod, EMM_DisplacementOperator::mTimeIntegrationOrder, EMM_DisplacementOperator::mUn, EMM_DisplacementOperator::mUnm1, EMM_DisplacementOperator::mUt, EMM_DisplacementOperator::mVn, EMM_DisplacementOperator::mVt, tBoolean, and EMM_DisplacementOperator::TE.

Referenced by EMM_DisplacementFVMOperator::discretize(), EMM_DisplacementFEMOperator::discretize(), EMM_DisplacementFVMOperator::resetToInitialState(), EMM_DisplacementFEMOperator::resetToInitialState(), EMM_DisplacementOperator::resetToInitialState(), and EMM_DisplacementOperator::setCFL().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ BLOCK_MASS_MATRIX

const tFlag EMM_DisplacementFEMOperator::BLOCK_MASS_MATRIX =1
staticinherited

mass matrix whose each element is a digonal matrixof size 3

Referenced by EMM_DisplacementFEMOperator::EMM_DisplacementFEMOperator(), and EMM_DisplacementFEMOperator::NewMassMatrix().

◆ CANONICAL_MASS_MATRIX

const tFlag EMM_DisplacementFEMOperator::CANONICAL_MASS_MATRIX =0
staticinherited

mass matrix whose each element is real

Referenced by EMM_DisplacementFEMOperator::NewMassMatrix().

◆ CONDENSED_MASS_MATRIX

const tFlag EMM_DisplacementFEMOperator::CONDENSED_MASS_MATRIX =2
staticinherited

mass matrix is diagonal

Referenced by EMM_DisplacementFEMOperator::NewMassMatrix().

◆ EQUILIBRIUM_STATE

const tFlag EMM_DisplacementOperator::EQUILIBRIUM_STATE =3
staticinherited

◆ FROZEN_STATE

const tFlag EMM_DisplacementOperator::FROZEN_STATE =1
staticinherited

◆ Gamma

const tReal EMM_Object::Gamma =-1.7e11
staticinherited

◆ Mu0

const tReal EMM_Object::Mu0 =4*M_PI*1e-07
staticinherited

◆ NULL_VALUE

const tReal EMM_Object::NULL_VALUE ={0,0,0}
staticinherited

◆ P1

const tFlag EMM_DisplacementOperator::P1 =1
staticinherited

◆ TE

const tFlag EMM_DisplacementOperator::TE =0
staticinherited

◆ UNSTEADY_STATE

const tFlag EMM_DisplacementOperator::UNSTEADY_STATE =0
staticinherited

◆ X

const tDimension EMM_Object::X =0
staticinherited

◆ Y

const tDimension EMM_Object::Y =1
staticinherited

◆ Z

const tDimension EMM_Object::Z =2
staticinherited

The documentation for this class was generated from the following file: