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

This class describes the displacement operator defined on the data of the mesh. More...

#include <EMM_DisplacementOperator.h>

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

Public Member Functions

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
 
virtual void buildDataOnBoundaryFaces (const EMM_Grid3D &mesh, const EMM_LimitConditionArray &limitConditionOnPoints, const EMM_RealField &U0, EMM_RealField &DnU0)=0
 build the data on boundary faces More...
 
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 tULLInt getMemorySize () const
 return the memory size in byte More...
 
virtual tBoolean discretize (const EMM_LandauLifschitzSystem &system)
 discretize and initialize the operator More...
 
virtual tBoolean resetToInitialState (const EMM_LandauLifschitzSystem &system)
 reset the opertaro to initial state 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...
 
virtual void computeEquilibriumMatrixDiagonalConditioner (MATH_Vector &D) const
 compute the diagonal conditioner 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...
 
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 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...
 
virtual void computeElasticStress (const EMM_RealField &U, EMM_RealField &S) const
 compute the elastic stress for all cells $ div(\lambda^e:\epsilon(U)) $ 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 void computeMagneticStress (const tReal &alpha, const tReal &beta, const EMM_RealArray &sigma, const EMM_RealField &M, EMM_RealField &S) const =0
 compute the magnetic stress for all cells from the stress $ S=alpha*S+beta*div(\lambda^e:\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...
 
virtual tReal computeCineticEnergy (const EMM_RealField &V) const =0
 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 tReal computePotentialEnergy (const EMM_RealField &U) const
 compute the potential energy to the space variation of the displacement More...
 
tReal computeStressConstraintEnergy (const tReal &t) const
 compute the energy of the boundary stress constraint More...
 
virtual tReal computeStressConstraintEnergy (const EMM_RealField &U) const =0
 compute the energy of the stress constraint with displacemet More...
 
virtual tString toString () const
 turn the martix into string 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...
 
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...
 
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 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 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

 EMM_DisplacementOperator (void)
 create More...
 
virtual ~EMM_DisplacementOperator (void)
 destroy More...
 
virtual void toDoAfterThisSetting ()
 method called after the setting of the shared pointer this method can only be called once. More...
 
virtual void spaceRelevant (EMM_RealField &V) const =0
 make the relevment of the vector B from the solving linear space. More...
 
virtual void initializeEquilibriumSolver (const EMM_RealField &U0)
 initialize the equilibrium solver More...
 
virtual void computeElasticTensor (const tUIndex &nData, const tDimension &dim, const tReal *U, EMM_2PackedSymmetricTensors &eTensor) const =0
 compute the elastic tensor for all cells $ \epsilon(U)=\frac{1}{2} \left (\nabla U + \nabla^t U \right ) $ More...
 
virtual void computeElasticStress (const tBoolean &withConstraints, const tReal &beta, const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *D) const =0
 compute the elastic stress $ S_e(u) = beta * div \left (\tilde \lambda^e : \varepsilon(u) \right )$ which is an affine operator $ S_e(U)= A. U + B.U_0 + C.F $ where 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 &nS, tReal *S) const =0
 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...
 
void setThis (SP::CORE_Object p)
 set this weak shared pointer called toDoAfterThis setting method More...
 

Private Member Functions

 SP_OBJECT (EMM_DisplacementOperator)
 
tBoolean computePastDisplacement (const tReal &dt, const EMM_RealField &accelerator, const EMM_RealField &U0, const EMM_RealField &V0, EMM_RealField &U) const
 compute $ U_{1} $ from $ U_0 $ and $ V_0 $ with time step dt More...
 
tBoolean computeFieldsAtTimeWithTE2 (const tReal &dtau, const tReal &dt, const EMM_RealField &accelerator, const EMM_RealField &U0, const EMM_RealField &U1, EMM_RealField &U2, EMM_RealField &V2) const
 compute the new U & V at by taylor extension of order 2 More...
 
tBoolean computeFieldsAtTimeWithTE1 (const tReal &dt, const EMM_RealField &accelerator, const EMM_RealField &U0, const EMM_RealField &V0, EMM_RealField &U1, EMM_RealField &V1) const
 compute the new U & V at by taylor extension of order 2 More...
 
tBoolean computeFieldsAtTimeWithGL1Interpolation (const tReal &dt, const EMM_RealArray &sigma, const EMM_RealField &dM_dt0, const EMM_RealField &M0, const EMM_RealField &U0, const EMM_RealField &V0, EMM_RealField &Ut, EMM_RealField &Vt) const
 compute the new U & V at by gauss legendre interpolation of degre N (N=1) More...
 
tBoolean computeFieldsAtTimeWithGLnInterpolation (const tReal &dt, const EMM_RealArray &sigma, const EMM_RealField &dM_dt0, const EMM_RealField &M0, const EMM_RealField &U0, const EMM_RealField &V0, EMM_RealField &Ut, EMM_RealField &Vt, EMM_RealField &Us, EMM_RealField &Ms)
 compute the new U & V at by gauss legendre interpolation of degre N (N=4) More...
 
tBoolean computeAccelerator (EMM_RealField &V)
 compute the accelerator from the mass matrix : M.X=V V:=X More...
 
virtual tBoolean solveAcceleratorSystem (EMM_RealField &V)=0
 solve the accelerator system : M.X=V V:=X More...
 
virtual void spaceProjection (EMM_RealField &V) const =0
 make the projection of the vector B into the solving linear space More...
 
virtual void spaceProjection (const EMM_RealField &V0, EMM_RealField &V) const =0
 make the projection of the vector B into the solving linear space More...
 

Private Attributes

SP::EMM_4SymmetricTensors mLe
 
SP::EMM_4Tensors mLme
 
SP::EMM_4Tensors mLem
 
SP::EMM_4SymmetricTensors mLmem
 
tFlag mElasticityState
 
tFlag mTimeIntegrationMethod
 
tUCInt mTimeIntegrationOrder
 
tReal mL [3]
 
tReal mCFL
 
tReal mDt
 
EMM_RealArray mKappa
 
SP::EMM_LimitConditionArray mLimitConditionOnPoints
 
EMM_2PackedSymmetricTensors mEpsilonUt
 
SP::EMM_RealField mUnm1
 
SP::EMM_RealField mUn
 
SP::EMM_RealField mUt
 
SP::EMM_RealField mVt
 
SP::EMM_RealField mVn
 
SP::EMM_RealField mAccelerator
 
SP::EMM_RealField mAccelerator_t
 
tString mInitUFile
 
tReal mInitUFileScale
 
SP::EMM_RealField mInitU
 
tString mInitVFile
 
tReal mInitVFileScale
 
SP::EMM_RealField mInitV
 
tFlag mConstraintFaces
 
SP::EMM_RealField mConstraints
 
tReal mElasticTensorAdimensionizedParameter
 
tReal mTc
 
tReal mLc
 
tReal mMsat
 
SP::MATH_GaussLegendreIntegration mIntegrator
 
SP::EMM_RealField mUs
 
SP::EMM_RealField mMs
 
SP::MATH_Solver mSolver
 
tBoolean mIsEquilibriumMatrixConditioned
 
SP::EMM_BlockEquilibriumMatrix mEquilibriumMatrix
 

Detailed Description

This class describes the displacement operator defined on the data of the mesh.

It solves the equation either

with mixed limit condition :

The physical parameters are:

The mathematical operators are:

We normalize the variables by $ U=Lu $, $ M=M_s \sigma(x) m $ and $ H_m(M)=M_s h_m(m) $ when L denotes the reference length of cells (max step size of the cell).

The unsteady equation becomes:

$ \displaystyle \kappa \frac{\partial^2 u}{\partial t^2} - div( \tilde \lambda^e:\epsilon(u))=-div(\sigma^2(x) \tilde \lambda^e:(\tilde \lambda^m:m \otimes m) ) $ with :

There is two kinds of numerical integrations:

We denote by $M_n=M(t_n) $, $ U_{n-1}=U(t_{n-1}) $, $ U_{n}=U(t_n) $, $ t_n-t_{n-1}=d\tau $, $t_{n+1}=t_n+dt $ and $ \eta= \frac{dt}{d\tau} $.

The first use the Gauss Legendre integrations:

$ \displaystyle (u,\frac{\partial u}{\partial t}) $ verifies the system:

we have:

This first method is unconditionally unstable in dimension 1. So we prefer to use the second integration method which use a Taylor expansion with respect of time which is stable with a CFL defined by $ C.\frac{dt}{dx}$ of 1.

So, $ \displaystyle U_{n+1} + \eta U_{n-1} =(1+\eta). U_n +\left ( \eta (\eta +1) \frac{d\tau^2}{2}\right ) U^{''}(t_n)+d\tau^2\epsilon(d\tau) $, then we conclude that

$ \displaystyle U_{n+1} =(1+\eta). U_n - \eta U_{n-1} +\left ( \eta (\eta +1) \frac{d\tau^2}{2}\right ) U^{''}(t_n) $

and the elasticity equation gives $ U^{''}(t_n) = S_e(U(t_n))-S_m(M(t_n)) $

For computing the first step before t=0, we can forseen $U(-dt) $ by $U_{-1}=U_0-dt.V_0+\frac{dt^2}{2}.U^{''}(0) $ when $V_0$ is the initial velocity of the displacement.

At any time, it is possible to compute the velocity in 2 order precision in time by using $U_{n-1}$, $U_n$ and $ U_{n+1}$ :

$ U_{n-1}=U_{n+1}-dt.V_{n+1}+\frac{dt^2}{2}.U^{"} $

$ U_{n-2}=U_{n+1}-(dt+d\tau).V_{n+1}+\frac{(dt+d\tau)^2}{2}.U^{"} $

so with $ \eta= \frac{dt}{d\tau} $,

$ V_{n+1}=\displaystyle \frac{\left( 2\eta+1\right)\cdot U_{n+1}+(\eta)^2.U_{n-1}-(1+\eta)^2.U_{n}}{dt.(\eta+1)} $.

For constant time step the formula becomes:

$ V_{n+1}=\displaystyle \frac{3 U_{n+1}+U_{n-1}-4. U_{n}}{2.dt} $.

The main idea algorithm to compute the displacement is to discretize the elastic equation in a discrete solving space space $ \upsilon $ to leads to a matrix equation : $ M . P(U^{"}) = S_e(U_n),U_0,F)-S_m(PM_n) $ where

Note that the discrete solving space is either the vertices of the grid for the Finite Element Methods or the elements of the grid for the Finite Volume Methods.

To solve the equilibrium state, we suppose that $ P(U^{"})=0 $ which leads to :

$ S_e.P(U_n) + B.P(U_0)+ C.P(F) - S_m . P(M_{n-1}) = 0 $

In this formulation $ S_e $ is a symetric definite negative matrix. So we prefer to solve the equation in order to have better performance of conjugate gradient linear solver :

$ - S_e.P(U_n) = B.P(U_0)+ C.P(F) -S_m. P(M_{n-1}) $

The solving of this linear equation is done by the Conjugate Gradient method which needs only the definition of the Matrix.Vector product.

As displacement is known in dirichlet point, we ensure that $ S_e.P(U_n)[i]=P(U_n)[i] $ for all Dirichlet points i and that the right hand side of the equation verifies $ B.P(U_0)[i]+ C.P(F)[i] -S_m. P(M_{n-1})[i]=P(U_n)[i] $. This is done by the spaceProjection() method.

For sqalve point s, we ensure that $ P(U_n)[s] $ is replaced by its corresponding $ P(U_n)[m] $ values when m is the master vertex corresponding to s in the periodic slave boundary. At the end the sapceRelevant() method set $ P(U_n)[s] $ to $ P(U_n)[m] $.

The input data of the algorithm to solve the displacement and velocity field are:

The output results at each time is the

The algorithm to compute the unsteady output results :

The algorithm to compute the steady output results : $ S_e.P(U_n) + B.P(U_0)+ C.P(F) = S_m. P(M_{n-1}) $

$ S_e.P(U_n) = W_m - W_e $ with $ W_e=B.P(U_0)+ C.P(F) $ and $W_m= S_m. P(M_{n-1}) $

As $ S_e $ is definite negative, we solve instead $ (-S_e).P(U_n) = W_e - W_m $

Author
Stephane Despreaux
Version
1.0

Constructor & Destructor Documentation

◆ EMM_DisplacementOperator()

EMM_DisplacementOperator::EMM_DisplacementOperator ( void  )
protected

◆ ~EMM_DisplacementOperator()

EMM_DisplacementOperator::~EMM_DisplacementOperator ( void  )
protectedvirtual

destroy

Member Function Documentation

◆ adimensionize()

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

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
virtual

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 isEquilibriumState(), isFrozenState(), mAccelerator, mDt, mEpsilonUt, mTimeIntegrationMethod, mUn, mUnm1, mVn, CORE_Object::out(), CORE_Out::println(), EMM_Tensors::saveToFile(), tBoolean, TE, and tString.

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

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

◆ buildDataOnBoundaryFaces()

virtual void EMM_DisplacementOperator::buildDataOnBoundaryFaces ( const EMM_Grid3D mesh,
const EMM_LimitConditionArray limitConditionOnPoints,
const EMM_RealField U0,
EMM_RealField DnU0 
)
pure virtual

build the data on boundary faces

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

discretize the limit condition into the linar solving space

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

Referenced by getLimitConditionOnPointsByReference().

Here is the caller graph for this function:

◆ computeAccelerator()

tBoolean EMM_DisplacementOperator::computeAccelerator ( EMM_RealField V)
private

compute the accelerator from the mass matrix : M.X=V V:=X

Parameters
V
  • input : the stress
  • output : the accelerator
Returns
true if the solving succeeds
  • make a projection of the solving space : the accelearyor mudt be null on Dirichlet point
  • solve the linear equation
  • make a relevant of the solution

References solveAcceleratorSystem(), spaceProjection(), spaceRelevant(), and tBoolean.

Referenced by computeFieldsAtTimeWithGLnInterpolation(), restore(), setCFL(), and updateAtNextTimeStep().

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

◆ computeCineticEnergy()

virtual tReal EMM_DisplacementOperator::computeCineticEnergy ( const EMM_RealField V) const
pure virtual

compute the energy due to velocity

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

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

Referenced by computeCineticEnergyAtTime().

Here is the caller graph for this function:

◆ computeCineticEnergyAtTime()

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

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 computeCineticEnergy(), getVelocity(), and tReal.

Referenced by computeEnergy().

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

◆ computeElasticStress() [1/3]

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

compute the elastic stress for all cells $ div(\lambda^e:\epsilon(U)) $

Parameters
Uthe displacement field
Sthe elastic stress field

It computes:

$ \forall (i,k) \in [0,N[\times[0,d[, S^i_k= \displaystyle div(\lambda^e:\varepsilon(u^i))_k = \displaystyle \sum_{l=0}^{d-1} \frac{\partial \left( \displaystyle \sum_{r,s=0}^{r,s=d-1} \lambda^e_{klrs} \frac{\partial u^i_s}{\partial x_r} \right )}{\partial x_l} $ where

  • $ u^i_s $ is the s-coordinate of the displacement u 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 points in cell

Reimplemented in EMMG_DisplacementFVM_VOGGROperator, EMMG_DisplacementFVM_SSGROperator, EMMG_DisplacementFVM_STEGROperator, EMMG_DisplacementFVM_VTEGROperator, and EMMG_DisplacementFEMOperator.

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

Referenced by computeElasticStress(), computeElasticStressMatrixProduct(), computeStress(), and initializeEquilibriumSolver().

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

◆ computeElasticStress() [2/3]

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

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 computeElasticStress(), tBoolean, tDimension, tReal, and tUIndex.

Here is the call graph for this function:

◆ computeElasticStress() [3/3]

virtual void EMM_DisplacementOperator::computeElasticStress ( const tBoolean withConstraints,
const tReal beta,
const tUIndex nData,
const tDimension dim,
const tReal U,
tReal D 
) const
protectedpure virtual

compute the elastic stress $ S_e(u) = beta * div \left (\tilde \lambda^e : \varepsilon(u) \right )$ which 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
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

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

◆ computeElasticStressMatrixProduct()

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

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 computeElasticStress(), computeElasticTensor(), tDimension, tReal, and tUIndex.

Here is the call graph for this function:

◆ computeElasticTensor() [1/2]

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

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 computeElasticStressMatrixProduct(), EMM_DisplacementFVMOperator::computeElasticTensor(), computeFieldsAtTime(), restore(), and updateAtNextTimeStep().

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

◆ computeElasticTensor() [2/2]

virtual void EMM_DisplacementOperator::computeElasticTensor ( const tUIndex nData,
const tDimension dim,
const tReal U,
EMM_2PackedSymmetricTensors eTensor 
) const
protectedpure virtual

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

Parameters
nDatasize of the displacement field
dimdimension of the displacement field
Uvalues of the displacement field of size nData x dim
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

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

◆ computeEnergy()

tReal EMM_DisplacementOperator::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

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 computeCineticEnergyAtTime(), computePotentialEnergyAtTime(), computeStressConstraintEnergy(), getConstraints(), getElasticTensor(), EMM_Operator::getElementVolume(), CORE_Array< T >::getSize(), CORE_Object::getThread(), isEquilibriumState(), mLme, CORE_Thread::startChrono(), tBoolean, tReal, and tString.

Referenced by EMM_MagnetostrictionOperator::computeEnergy(), and 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()

virtual void EMM_DisplacementOperator::computeEquilibriumMatrixDiagonalConditioner ( MATH_Vector D) const
inlinevirtual

compute the diagonal conditioner

Parameters
[out]Dis the diagonal conditioner of the equilibrium matrix by defualt the diagonal matrix is the identity (its size if set to 0);

Reimplemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

References computeEquilibriumState(), initializeEquilibriumSolver(), MATH_Vector::setSize(), and tBoolean.

Here is the call graph for this function:

◆ computeEquilibriumState()

tBoolean EMM_DisplacementOperator::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) $

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 computeMagneticStress(), EMM_RealField::copy(), getAccelerator(), getSolver(), mEquilibriumMatrix, mUt, MATH_Solver::setMaximumIterationsNumber(), spaceProjection(), spaceRelevant(), and tBoolean.

Referenced by computeEquilibriumMatrixDiagonalConditioner(), and 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 
)
virtual

compute the fields of operator at time

Parameters
tthe time
orderorder of integration of the fields
sigmathe magnetized weight of each cell
dM_dt0the variation of M at time 0
M0the magnetization field at each point at time t 0
Returns
true if the computation has succeeded.

compute fields at time from M and its first time derivative

Implements EMM_Operator.

References computeElasticTensor(), computeFieldsAtTimeWithGL1Interpolation(), computeFieldsAtTimeWithGLnInterpolation(), computeFieldsAtTimeWithTE1(), computeFieldsAtTimeWithTE2(), isSteadyState(), mAccelerator, mDt, mEpsilonUt, mMs, mTimeIntegrationMethod, mTimeIntegrationOrder, mUn, mUnm1, mUs, mUt, mVn, mVt, P1, tBoolean, TE, and tFlag.

Referenced by setCFL().

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

◆ computeFieldsAtTimeWithGL1Interpolation()

tBoolean EMM_DisplacementOperator::computeFieldsAtTimeWithGL1Interpolation ( const tReal dt,
const EMM_RealArray sigma,
const EMM_RealField dM_dt0,
const EMM_RealField M0,
const EMM_RealField U0,
const EMM_RealField V0,
EMM_RealField Ut,
EMM_RealField Vt 
) const
private

compute the new U & V at by gauss legendre interpolation of degre N (N=1)

Parameters
dtthe time step
sigmathe magnetized weight of each cell
dM_dt0: the magnetization field variation at time 0
M0the magnetization field at time 0
U0the displacement field at time 0
V0the velocity field at time 0
Utthe returned displacement field at time t
Vtthe returned velocity field at time t

The new M is given by the formula: $ U(t+dt) =U(t) + dt. V(t) $ $ V(t+dt) =V(t) + dt. \kappa . S(t) $ where $ S(t)=div\left (\sigma(U(t),M(t))\right )$

References EMM_RealField::add(), EMM_RealField::copy(), EMM_RealField::getSize(), EMM_RealField::initField(), mAccelerator, and EMM_RealField::setSize().

Referenced by computeFieldsAtTime(), and setCFL().

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

◆ computeFieldsAtTimeWithGLnInterpolation()

tBoolean EMM_DisplacementOperator::computeFieldsAtTimeWithGLnInterpolation ( const tReal dt,
const EMM_RealArray sigma,
const EMM_RealField dM_dt0,
const EMM_RealField M0,
const EMM_RealField U0,
const EMM_RealField V0,
EMM_RealField Ut,
EMM_RealField Vt,
EMM_RealField Us,
EMM_RealField Ms 
)
private

compute the new U & V at by gauss legendre interpolation of degre N (N=4)

Parameters
dtthe time step
sigmathe magnetized weight of each cell
dM_dt0: the magnetization field variation at time 0
M0the magnetization field at time 0
U0the displacement field at time 0
V0the velocity field at time 0
Utoutput displacement field at time dt
Vtoutput velocity field at time dt
Usworking displacement field at time s.dt
Msworking magnetization field at time s.dt
Returns
true if the GL integrator has succeeded

M variation in [0,dt[:

  • $ M^+= \displaystyle M_0+dt. \left ( \frac{\partial M}{\partial t } \right )_0 $
  • $ M(s)=\displaystyle M_0+s.(M^+-M_0)=M_0+ s.dt. \left ( \frac{\partial M}{\partial t } \right )_0 $

U Variation in [0,dt[ :

  • $ U^+=U_0+ dt. V_0 $
  • $ U(s)=\displaystyle U_0+s.(U^+-U_0)=U_0+ s.dt. V_0 $
  • $ U(t+dt)=\displaystyle U(0)+dt.V(0)+ \frac{dt^2}{2}. S(U(0),M(0)) $

V variation in [0,dt[

  • $ V^+=V_0+ dt. S(M_0,U_0)/kappa $
  • $ V(s)=\displaystyle V_0+s.(V^+-V_0)=V_0+ s.dt. S(U_0,M_0)/kappa $
  • $ V(t+dt)=\displaystyle V(t)+dt \int_0^1 S(U(s),M(s))/kappa ds = V(t)+ dt . \sum_{i=0}^{i=N} \rho_i . \frac{1}{\kappa} . S(U(s_i),M(s_i)) $

References EMM_RealField::add(), computeAccelerator(), computeStress(), EMM_RealField::copy(), MATH_GaussLegendreIntegration::getOrder(), MATH_GaussLegendreIntegration::getPoints(), EMM_RealField::getSize(), MATH_GaussLegendreIntegration::getWeights(), mAccelerator, mAccelerator_t, mIntegrator, mKappa, EMM_RealField::setSize(), tBoolean, tReal, tUIndex, and tUSInt.

Referenced by computeFieldsAtTime(), and setCFL().

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

◆ computeFieldsAtTimeWithTE1()

tBoolean EMM_DisplacementOperator::computeFieldsAtTimeWithTE1 ( const tReal dt,
const EMM_RealField accelerator,
const EMM_RealField U0,
const EMM_RealField V0,
EMM_RealField U1,
EMM_RealField V1 
) const
private

compute the new U & V at by taylor extension of order 2

Parameters
dtthe time step $ dt=t_2-t_1 $
accelerator: the accelerator d^2U/dt^2 at each cell $ M^{-1}.S(U_0,M_0)/kappa $
U0the displacement U at time $ t_{n} $
V0the velocity field V at time $ t_{n} $
U1the OUTPUT displacement U at time $ t_{n+1} $
V1the OUTPUT velocity V at time $ t_{n+1} $

$ \displaystyle U_1 = U_0+dt.V_0+(dt^2/2).\frac{1}{\kappa}S(U_0,M_0) $

$ \displaystyle V_1= V_0+ dt. \frac{1}{\kappa}S(U_0,M_0) $

References EMM_RealField::add(), EMM_RealField::getSize(), EMM_RealField::initField(), and EMM_RealField::setSize().

Referenced by computeFieldsAtTime(), and setCFL().

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

◆ computeFieldsAtTimeWithTE2()

tBoolean EMM_DisplacementOperator::computeFieldsAtTimeWithTE2 ( const tReal dtau,
const tReal dt,
const EMM_RealField accelerator,
const EMM_RealField U0,
const EMM_RealField U1,
EMM_RealField U2,
EMM_RealField V2 
) const
private

compute the new U & V at by taylor extension of order 2

Parameters
dtauthe time step $ d\tau=t_1-t_0 $
dtthe time step $ dt=t_2-t_1 $
accelerator: the accelerator d^2U/dt2 at each cell $ M^{-1}.S(U_0,M_0)/kappa $
U0the displacement U at time $ t_{n-1} $
U1the displacement U at time $ t_{n} $
U2the OUTPUT displacement U at time $ t_{n+1} $
V2the OUTPUT velocity V at time $ t_{n+1} $

$ eta=\frac{dt}{d\tau}$ and $ \mu=\frac{1}{\eta}=\frac{d\tau}{dt} $,

$ \displaystyle U_{2} =\displaystyle (1+\eta). U_1 - \eta U_{0} +\left ( \eta (\eta +1) \frac{d\tau^2}{2}\right ) \frac{1}{\kappa}S(U_0,M_0) $

$ \displaystyle V_{2}=\displaystyle \frac{U_{0}-(1+\mu)^2.U_1+\mu.(2+\mu).U_{2}}{dt.\mu.(\mu+1)} $ with $ \displaystyle \mu=\frac{1}{\eta}=\frac{d\tau}{dt} $

References EMM_RealField::add(), EMM_RealField::getSize(), EMM_RealField::initField(), EMM_RealField::setSize(), and tReal.

Referenced by computeFieldsAtTime(), and setCFL().

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

◆ computeMagneticStress() [1/3]

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

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 computeEnergy(), EMM_RealField::setDimension(), EMM_RealField::setSize(), tDimension, tReal, and tUIndex.

Referenced by computeEquilibriumState(), and computeStress().

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

◆ computeMagneticStress() [2/3]

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

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

Parameters
[in]alpha: multiplicator factor for S
[in]beta: multiplicator factor for magnetic stress
[in]sigmathe magnetized weight of cells
[in]Mthe magnetization field
[in,out]Sthe total stress field

It computes:

$ \forall (i,k) \in [0,N[\times[0,d[, S^i_k= \alpha S^i_k +\displaystyle \beta. div(\lambda^e:(\lambda^m:m \times m)_k = \alpha S^i_k + \displaystyle \beta . \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

Implemented in EMMG_DisplacementFVM_VOGGROperator, EMMG_DisplacementFVM_SSGROperator, EMMG_DisplacementFVM_STEGROperator, EMMG_DisplacementFVM_VTEGROperator, and EMMG_DisplacementFEMOperator.

◆ computeMagneticStress() [3/3]

virtual void EMM_DisplacementOperator::computeMagneticStress ( const tReal alpha,
const tReal beta,
const tUIndex nCells,
const tDimension dim,
const EMM_RealArray sigma,
const tReal M,
const tUIndex nS,
tReal S 
) const
protectedpure virtual

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
[in]alpha: multiplicator factor for S
[in]beta: multiplicator factor for magnetic stress
[in]nCellsthe size of the magnetism value
[in]dimdimension of the problem in [1,3]
[in]sigmaweight of each cell
[in]Mthe magnetization field values of size nCells x dim
[in]nSsize of stress field values
[in,out]Sthe stress in input the elastic stress , in output the total stress of size nData x dim

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

◆ computePastDisplacement()

tBoolean EMM_DisplacementOperator::computePastDisplacement ( const tReal dt,
const EMM_RealField accelerator,
const EMM_RealField U0,
const EMM_RealField V0,
EMM_RealField U 
) const
private

compute $ U_{1} $ from $ U_0 $ and $ V_0 $ with time step dt

Parameters
dttime step $ t_0-t_{-1} $.
acceleratord2U/dt^2 at t=0
U0displacement field at t=0
V0: velocity field at t=0
U: OUTPUT displacement field at t=t_{-1}

$U=U_0-dt.V_0+\frac{dt^2}{2}.\sigma/\kappa $

References EMM_RealField::add(), and EMM_RealField::copy().

Referenced by setCFL(), and updateAtNextTimeStep().

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

◆ computePotentialEnergy()

tReal EMM_DisplacementOperator::computePotentialEnergy ( const EMM_RealField U) const
virtual

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 in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

References EMM_Operator::getElementVolume(), mEpsilonUt, mLe, and tReal.

Referenced by EMM_DisplacementFVMOperator::computePotentialEnergy(), EMM_DisplacementFEMOperator::computePotentialEnergy(), and computePotentialEnergyAtTime().

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
inline

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 computePotentialEnergy(), getDisplacement(), and tReal.

Referenced by 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
inline

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 computeElasticStress(), and computeMagneticStress().

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

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

◆ computeStressConstraintEnergy() [1/2]

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

compute the energy of the boundary stress constraint

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

References getDisplacement(), and tReal.

Referenced by computeEnergy().

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

◆ computeStressConstraintEnergy() [2/2]

virtual tReal EMM_DisplacementOperator::computeStressConstraintEnergy ( const EMM_RealField U) const
pure virtual

compute the energy of the stress constraint with displacemet

Parameters
Uthe displacement field
Returns
the stress constraint energy on boundary $ \int_{partial \omega} C.U d\sigma $

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

◆ discretize()

tBoolean EMM_DisplacementOperator::discretize ( const EMM_LandauLifschitzSystem system)
virtual

discretize and initialize the operator

Parameters
systemthe data to discretize the operator
Returns
true if it succeeds
  • crete the field U & V on the points of the mesh
  • build the limit condition on all the points
  • create the time step integrator
  • create all the integrator fields
  • compute the elastic time step
  • initialize U & V
  • project U & V on the working spaces
  • build the data on boundaries

Reimplemented from EMM_Operator.

Reimplemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

References EMM_Grid3D::getAdimensionizedSegmentsSize(), EMM_Grid3D::getElementsNumber(), EMM_LandauLifschitzSystem::getMatterField(), EMM_MatterField::getMatterParameterDistribution(), EMM_LandauLifschitzSystem::getMesh(), EMM_Grid3D::getVerticesNumber(), mKappa, mL, mLmem, EMM_Matter::RHOd, tBoolean, tReal, tUIndex, and tUSInt.

Referenced by EMM_DisplacementFVMOperator::discretize(), EMM_DisplacementFEMOperator::discretize(), and getLimitConditionOnPointsByReference().

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

◆ getAccelerator() [1/2]

EMM_RealField& EMM_DisplacementOperator::getAccelerator ( )
inline

◆ getAccelerator() [2/2]

const EMM_RealField& EMM_DisplacementOperator::getAccelerator ( ) const
inline

get the accelerator for reading

Returns
the accelerator field

References setSolver(), and tString.

Here is the call graph for this function:

◆ getAdimensionizedSegmentsSize()

const tReal* EMM_DisplacementOperator::getAdimensionizedSegmentsSize ( ) const
inline

◆ getAdimensionizedVolumicMass()

const EMM_RealArray& EMM_DisplacementOperator::getAdimensionizedVolumicMass ( ) const
inline

get the adimensionized volumic mass per cell

Returns
the adimensionized volumic mass

References 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
inline

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 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
inline

get the constraints field for reading

Returns
the constraints field

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

Here is the caller graph for this function:

◆ getConstraints() [2/2]

EMM_RealField& EMM_DisplacementOperator::getConstraints ( )
inline

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

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
inlinevirtual

get the number of field used in the operator

Returns
the number of data

Reimplemented from EMM_Operator.

References isSteadyState().

Here is the call graph for this function:

◆ getDataFieldSpace()

virtual tBoolean EMM_Operator::getDataFieldSpace ( const tUSInt index,
tString dataName,
tFlag supportType,
tString dFieldType,
tUIndex n,
tDimension dim 
) 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
supportType: mesh element whre the field is applied EMM_Grid3D::ELEMENT or EMM_Grid3D::POINT
dFieldType: type of the field double,float,int,....
nnumber of element of the field
dimdimension of the field in [1,3[
Returns
true if the field at index exists

Reimplemented in EMM_DisplacementFEMOperator, EMM_DisplacementFVMOperator, EMM_MagnetostrictionOperator, and EMM_ZeemanOperator.

References EMM_Grid3D::ELEMENT.

◆ getDisplacement() [1/3]

EMM_RealField& EMM_DisplacementOperator::getDisplacement ( )
inline

◆ getDisplacement() [2/3]

const EMM_RealField& EMM_DisplacementOperator::getDisplacement ( ) const
inline

get the displacement for reading

Returns
the displacement field

◆ getDisplacement() [3/3]

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

get the veolicty at time

Parameters
ttime to get velocity

References 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
inline

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 mEpsilonUt.

Referenced by 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
inline

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
inline

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
inline

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
inline

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
inline

◆ getLimitConditionOnPointsByReference()

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

◆ 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()

tULLInt EMM_DisplacementOperator::getMemorySize ( ) const
virtual

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_Operator.

Reimplemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

References EMM_Operator::getMemorySize(), EMM_Tensors::getMemorySize(), CORE_Array< T >::getMemorySize(), mAccelerator, mAccelerator_t, mConstraints, mEpsilonUt, mEquilibriumMatrix, mKappa, mLe, mLem, mLme, mLmem, mMs, mUn, mUnm1, mUs, mUt, mVn, mVt, null, and tULLInt.

Referenced by getLimitConditionOnPointsByReference(), EMM_DisplacementFVMOperator::getMemorySize(), and EMM_DisplacementFEMOperator::getMemorySize().

Here is the call graph for this function:
Here is the caller 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:

◆ getOut()

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

get the output

Returns
the shared pointer to the output stream

References CORE_Object::OUT.

◆ 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:

◆ 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 ( )
inline

get the solver of the system

Returns
the solver null by default

Referenced by 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(), 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(), nullProjectionOnDirichletBoundary(), periodicProjection(), EMM_2PackedSymmetricTensors::product(), EMM_CanonicalMassMatrix::product(), MATH_FullMatrix::product(), EMM_CondensedMassMatrix::product(), EMM_BlockMassMatrix::product(), MATH_MorseMatrix::product(), EMMG_SLDemagnetizedOperator::product(), 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
inline

get the time integration method for next time step

Returns
integration method in P1 | TE

References mTimeIntegrationMethod.

◆ getTimeIntegrationOrder()

const tUCInt& EMM_DisplacementOperator::getTimeIntegrationOrder ( ) const
inline

get the time integration order for new field

Returns
integration order in {1,2}

References mTimeIntegrationOrder.

◆ getTimeStep()

const tReal& EMM_DisplacementOperator::getTimeStep ( ) const
inline

get the time step for elasticty

Returns
the time step for elasticity

References 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 ( )
inline

◆ getVelocity() [2/3]

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

get the velocity at time

Parameters
ttime to get velocity

References isSteadyState().

Here is the call graph for this function:

◆ getVelocity() [3/3]

const EMM_RealField& EMM_DisplacementOperator::getVelocity ( ) const
inline

get the velocity at t for reading

Returns
the velocity field

◆ initializeEquilibriumSolver()

void EMM_DisplacementOperator::initializeEquilibriumSolver ( const EMM_RealField U0)
protectedvirtual

initialize the equilibrium solver

Parameters
[in]U0is the value of U on dirichlet points
  • create the equilibrium matrix
  • compute the preconditioner matrix
  • compute the constant part of the affine elastic stree operator and store it in accelerator field $ W_e=S_e.U+B.U_0+C.F $

Reimplemented in EMM_DisplacementFVM_VIGROperator.

References computeElasticStress(), getAccelerator(), EMM_RealField::getDimension(), getDisplacement(), EMM_RealField::getSize(), EMM_RealField::getValues(), EMM_RealField::initField(), mEquilibriumMatrix, NewEquilibriumMatrix(), EMM_RealField::NewInstance(), EMM_RealField::setDimension(), EMM_RealField::setSize(), spaceProjection(), spaceRelevant(), tDimension, tReal, tUIndex, and EMM_Object::Z.

Referenced by computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFVM_VIGROperator::initializeEquilibriumSolver(), restore(), and updateAtNextTimeStep().

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

◆ 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
inlinevirtual

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
inline

get if the equilibrium matrix is conditioned

Returns
true to recondition the equilibrium matrix

References mIsEquilibriumMatrixConditioned.

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

Here is the caller graph for this function:

◆ isEquilibriumState()

tBoolean EMM_DisplacementOperator::isEquilibriumState ( ) const
inline

Referenced by backup(), computeEnergy(), resetToInitialState(), restore(), and updateAtNextTimeStep().

Here is the caller graph for this function:

◆ isFrozenState()

tBoolean EMM_DisplacementOperator::isFrozenState ( ) const
inline

Referenced by backup(), and updateAtNextTimeStep().

Here is the caller graph for this function:

◆ isGradientComputationable()

virtual tBoolean EMM_DisplacementOperator::isGradientComputationable ( ) const
inlinevirtual

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
inline

Referenced by computeFieldsAtTime(), getDataFieldsNumber(), getDisplacement(), and getVelocity().

Here is the caller graph for this function:

◆ NewEquilibriumMatrix()

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

create the equilibrium matrix

Returns
the equilibrium matrix

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

Referenced by initializeEquilibriumSolver(), and setCFL().

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

◆ nullProjectionOnDirichletBoundary() [1/2]

void EMM_DisplacementOperator::nullProjectionOnDirichletBoundary ( EMM_RealField V) const

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(), mLimitConditionOnPoints, tDimension, tReal, and tUIndex.

Referenced by getLimitConditionOnPointsByReference(), projectionOnDirichletBoundary(), 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

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, 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(), 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(), 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

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(), 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 getLimitConditionOnPointsByReference(), 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

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(), mLimitConditionOnPoints, null, nullProjectionOnDirichletBoundary(), tBoolean, tDimension, tReal, and tUIndex.

Referenced by 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

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, 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_DisplacementOperator::resetToInitialState ( const EMM_LandauLifschitzSystem system)
virtual

◆ restore()

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

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 computeAccelerator(), computeElasticTensor(), computeStress(), EMM_LandauLifschitzSystem::getMagnetizationField(), EMM_LandauLifschitzSystem::getSigma(), initializeEquilibriumSolver(), isEquilibriumState(), mAccelerator, mDt, mEpsilonUt, mKappa, mTimeIntegrationMethod, mUn, mUnm1, mVn, CORE_Object::out(), CORE_Out::println(), tBoolean, TE, CORE_Real::toString(), and tString.

Referenced by 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)
inline

◆ setConstraints() [1/4]

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

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] 
)
inline

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 
)
inline

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 
)
inline

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)
inline

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 
)
inline

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)
inline

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 
)
inline

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])
inline

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 
)
inline

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)
inline

set initial displacement field

Parameters
data: data for displacement

◆ setInitialVelocity() [1/4]

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

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)
inline

set initial velocity field

Parameters
datavelocity field

◆ setInitialVelocity() [3/4]

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

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 
)
inline

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)
inline

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)
inline

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)
inline

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

◆ 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)
virtual

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 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)
inline

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)
inline

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)
inline

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)
inline

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 
)
inline

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()

virtual tBoolean EMM_DisplacementOperator::solveAcceleratorSystem ( EMM_RealField V)
privatepure virtual

solve the accelerator system : M.X=V V:=X

Parameters
V
  • input : the secund member
  • output : the solution
Returns
true if the solving succeeds

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

Referenced by computeAccelerator(), and setCFL().

Here is the caller graph for this function:

◆ SP_OBJECT()

EMM_DisplacementOperator::SP_OBJECT ( EMM_DisplacementOperator  )
private

◆ spaceProjection() [1/2]

virtual void EMM_DisplacementOperator::spaceProjection ( EMM_RealField V) const
privatepure virtual

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

Parameters
[out]Vfield to project in linear solving space

It is used in the constraint stress computing method EMM_DisplacementOperator::computeAccelerator()

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

Referenced by computeAccelerator(), computeEquilibriumState(), initializeEquilibriumSolver(), and setCFL().

Here is the caller graph for this function:

◆ spaceProjection() [2/2]

virtual void EMM_DisplacementOperator::spaceProjection ( const EMM_RealField V0,
EMM_RealField V 
) const
privatepure virtual

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

It is used in the constraint stress computing method EMM_DisplacementOperator::computeAccelerator()

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

◆ spaceRelevant()

virtual void EMM_DisplacementOperator::spaceRelevant ( EMM_RealField V) const
protectedpure virtual

make the relevment of the vector B from the solving linear space.

Parameters
Vfield to rebuild from the solving space

It is used in the new displacement fields computing EMM_DisplacementOperator::computeAcccelerator()

Implemented in EMM_DisplacementFEMOperator, and EMM_DisplacementFVMOperator.

Referenced by computeAccelerator(), computeEquilibriumState(), initializeEquilibriumSolver(), and setCFL().

Here is the caller graph for this function:

◆ toDoAfterThisSetting()

virtual void EMM_DisplacementOperator::toDoAfterThisSetting ( )
inlineprotectedvirtual

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_DisplacementOperator::toString ( ) const
inlinevirtual

turn the martix into string

Reimplemented from CORE_Object.

Reimplemented in EMM_DisplacementFEMOperator, EMM_DisplacementFVMOperator, EMM_DisplacementFVM_VTEGROperator, EMM_DisplacementFVM_SSGROperator, and EMM_DisplacementFVM_STEGROperator.

References CORE_Object::toString().

Referenced by EMM_DisplacementFVMOperator::toString().

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

◆ updateAtNextTimeStep()

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

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 computeAccelerator(), computeElasticTensor(), computeEquilibriumState(), computePastDisplacement(), computeStress(), initializeEquilibriumSolver(), isEquilibriumState(), isFrozenState(), mAccelerator, mDt, mEpsilonUt, mKappa, mTimeIntegrationMethod, mTimeIntegrationOrder, mUn, mUnm1, mUt, mVn, mVt, tBoolean, and TE.

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

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

Member Data Documentation

◆ EQUILIBRIUM_STATE

const tFlag EMM_DisplacementOperator::EQUILIBRIUM_STATE =3
static

◆ FROZEN_STATE

const tFlag EMM_DisplacementOperator::FROZEN_STATE =1
static

◆ Gamma

const tReal EMM_Object::Gamma =-1.7e11
staticinherited

◆ mAccelerator

SP::EMM_RealField EMM_DisplacementOperator::mAccelerator
private

◆ mAccelerator_t

SP::EMM_RealField EMM_DisplacementOperator::mAccelerator_t
private

◆ mCFL

tReal EMM_DisplacementOperator::mCFL
private

◆ mConstraintFaces

tFlag EMM_DisplacementOperator::mConstraintFaces
private

Referenced by getConstraintFaces().

◆ mConstraints

SP::EMM_RealField EMM_DisplacementOperator::mConstraints
private

Referenced by getMemorySize().

◆ mDt

tReal EMM_DisplacementOperator::mDt
private

◆ mElasticityState

tFlag EMM_DisplacementOperator::mElasticityState
private

◆ mElasticTensorAdimensionizedParameter

tReal EMM_DisplacementOperator::mElasticTensorAdimensionizedParameter
private

◆ mEpsilonUt

EMM_2PackedSymmetricTensors EMM_DisplacementOperator::mEpsilonUt
private

◆ mEquilibriumMatrix

SP::EMM_BlockEquilibriumMatrix EMM_DisplacementOperator::mEquilibriumMatrix
private

◆ mInitU

SP::EMM_RealField EMM_DisplacementOperator::mInitU
private

◆ mInitUFile

tString EMM_DisplacementOperator::mInitUFile
private

Referenced by resetToInitialState().

◆ mInitUFileScale

tReal EMM_DisplacementOperator::mInitUFileScale
private

Referenced by resetToInitialState().

◆ mInitV

SP::EMM_RealField EMM_DisplacementOperator::mInitV
private

Referenced by resetToInitialState().

◆ mInitVFile

tString EMM_DisplacementOperator::mInitVFile
private

Referenced by resetToInitialState().

◆ mInitVFileScale

tReal EMM_DisplacementOperator::mInitVFileScale
private

Referenced by resetToInitialState().

◆ mIntegrator

SP::MATH_GaussLegendreIntegration EMM_DisplacementOperator::mIntegrator
private

◆ mIsEquilibriumMatrixConditioned

tBoolean EMM_DisplacementOperator::mIsEquilibriumMatrixConditioned
private

◆ mKappa

EMM_RealArray EMM_DisplacementOperator::mKappa
private

◆ mL

tReal EMM_DisplacementOperator::mL[3]
private

◆ mLc

tReal EMM_DisplacementOperator::mLc
private

◆ mLe

SP::EMM_4SymmetricTensors EMM_DisplacementOperator::mLe
private

◆ mLem

SP::EMM_4Tensors EMM_DisplacementOperator::mLem
private

Referenced by getMemorySize().

◆ mLimitConditionOnPoints

SP::EMM_LimitConditionArray EMM_DisplacementOperator::mLimitConditionOnPoints
private

◆ mLme

SP::EMM_4Tensors EMM_DisplacementOperator::mLme
private

Referenced by computeEnergy(), and getMemorySize().

◆ mLmem

SP::EMM_4SymmetricTensors EMM_DisplacementOperator::mLmem
private

Referenced by discretize(), and getMemorySize().

◆ mMs

SP::EMM_RealField EMM_DisplacementOperator::mMs
private

◆ mMsat

tReal EMM_DisplacementOperator::mMsat
private

◆ mSolver

SP::MATH_Solver EMM_DisplacementOperator::mSolver
private

◆ mTc

tReal EMM_DisplacementOperator::mTc
private

◆ mTimeIntegrationMethod

tFlag EMM_DisplacementOperator::mTimeIntegrationMethod
private

◆ mTimeIntegrationOrder

tUCInt EMM_DisplacementOperator::mTimeIntegrationOrder
private

◆ Mu0

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

◆ mUn

SP::EMM_RealField EMM_DisplacementOperator::mUn
private

◆ mUnm1

SP::EMM_RealField EMM_DisplacementOperator::mUnm1
private

◆ mUs

SP::EMM_RealField EMM_DisplacementOperator::mUs
private

◆ mUt

SP::EMM_RealField EMM_DisplacementOperator::mUt
private

◆ mVn

SP::EMM_RealField EMM_DisplacementOperator::mVn
private

◆ mVt

SP::EMM_RealField EMM_DisplacementOperator::mVt
private

◆ NULL_VALUE

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

◆ P1

const tFlag EMM_DisplacementOperator::P1 =1
static

◆ TE

const tFlag EMM_DisplacementOperator::TE =0
static

◆ UNSTEADY_STATE

const tFlag EMM_DisplacementOperator::UNSTEADY_STATE =0
static

◆ 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 files: