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

This class describes the displacement operator defined on the cells of the mesh with Surface Gradient Reconstruction. More...

#include <EMM_DisplacementFVM_STEGROperator.h>

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

Public Member Functions

virtual void computeGradUAtFace (const tBoolean &withConstraints, const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUIndex &nextCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const CORE_UIndexMorseArray &neighborsIndices, const tDimension &dim, const tReal *Ucells, const tReal *Ui, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, tReal gradU[9]) const
 compute the gradient U at the center of the face f of a cell. f is either an interior face or a Dirichlet face More...
 
virtual void computeGradUAtCell (const tBoolean &withConstraints, const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const tUIndex *neighbors, const tDimension &dim, const tReal *Ucells, const tReal *Ui, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, tReal gradU[9]) const
 compute the value of Grad U on cell $ \omega $ More...
 
virtual void buildDataOnBoundaryFaces (const EMM_Grid3D &mesh, const EMM_LimitConditionArray &limitConditionOnPoints, const EMM_RealField &U0, EMM_RealField &DnU0)
 build the data on boundary faces Dirichlet and Neumann More...
 
const EMM_RealFieldgetDisplacementOnDirichletBoundary () const
 get the displacement field at boundary for reading More...
 
EMM_RealFieldgetDisplacementOnDirichletBoundary ()
 get the displacement field at boundary for writing More...
 
virtual tBoolean discretize (const EMM_LandauLifschitzSystem &system)
 discretize and initialize the operator More...
 
virtual tBoolean resetToInitialState (const EMM_LandauLifschitzSystem &system)
 reset the operator to initial step More...
 
virtual tULLInt getMemorySize () const
 return the memory size in byte More...
 
const CORE_UIndexMorseArraygetNeighborsIndices () const
 get the index of the neighbor cells for each cell of the mesh for reading More...
 
CORE_UIndexMorseArraygetNeighborsIndices ()
 get the index of the neighbor cells for each cell of the mesh More...
 
const tUIntegergetSegmentsNumber () const
 get number of segments in each direction More...
 
const tBooleanisDirectionPeriodic () const
 get priodic directions More...
 
void setIsGhostCellOn (const tBoolean &isOn)
 set true to considered ghost cells on boundary faces More...
 
const tBooleanisGhostCellOn () const
 get true to considered ghost cells on boundary faces 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...
 
virtual tBoolean getDataFieldSpace (const tUSInt &index, tString &dataName, tFlag &supportType, tString &dFieldType, tUIndex &n, tDimension &dim) const
 get the data field at index for saving data in vtk,txt,... files. More...
 
virtual void spaceProjection (const tUIndex &nPoints, const tDimension &dim, const tReal *V0, tReal *V) const
 make the projection of the vector B into the solving linear space More...
 
virtual void setSolver (const tString &solverName)
 set the solver More...
 
void setSolver (SP::MATH_Solver solver)
 set the solver More...
 
virtual void computeEquilibriumMatrixDiagonalConditioner (MATH_Vector &D) const
 compute the diagonal conditioner More...
 
virtual void computeElasticTensor (const EMM_RealField &U, EMM_2PackedSymmetricTensors &eTensor)
 compute the elastic tensor for all cells 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...
 
virtual tReal computeCineticEnergy (const EMM_RealField &V) const
 compute the energy of the magnetostriction operator at current displacement and velocity More...
 
virtual tReal computePotentialEnergy (const EMM_RealField &U) const
 compute the potential energy to the space variation of the displacement More...
 
tReal computeStressConstraintEnergy (const EMM_RealField &Uf) const
 compute the stress constraint energy on boundary More...
 
tReal computeStressConstraintEnergy (const tReal &t) const
 compute the energy of the boundary stress constraint More...
 
virtual void adimensionize (const tReal &Le, const tReal &Ms, const tReal &T, const tReal &L)
 adimensionize the operator More...
 
const tRealgetAdimensionizedSegmentsSize () const
 get the segments size in all directions More...
 
const EMM_RealArraygetAdimensionizedVolumicMass () const
 get the adimensionized volumic mass per cell More...
 
const EMM_4SymmetricTensorsgetLambdaE () const
 return the adimensionized elastic tensor distribution $ \lambda^e $ More...
 
const EMM_4TensorsgetLambdaEDoubleDotLambdaM () const
 return the adimensionized magnetic tensor distribution $ \lambda^e:\lambda^m $ More...
 
const EMM_4TensorsgetLambdaMDoubleDotLambdaE () const
 return the adimensionized magnetic tensor distribution $ \lambda^m:\lambda^e $ More...
 
const EMM_4SymmetricTensorsgetLambdaMDoubleDotLambdaEDoubleDotLambdaM () const
 return the adimensionized magnetic tensor distribution $ \lambda^m:\lambda^e:\lambda^m $ More...
 
void setInitialDisplacement (const tReal &scale, const tString &dataFile)
 set initial displacement field. More...
 
void setInitialDisplacement (const tReal data[3])
 set initial displacement field More...
 
void setInitialDisplacement (const tReal U0, const tReal &U1, const tReal &U2)
 set initial displacement field More...
 
void setInitialDisplacement (const EMM_RealField &data)
 set initial displacement field More...
 
void setInitialVelocity (const tReal &scale, const tString &dataFile)
 set initial velocity field More...
 
void setInitialVelocity (const EMM_RealField &data)
 set initial velocity field More...
 
void setInitialVelocity (const tReal data[3])
 set initial velocity field More...
 
void setInitialVelocity (const tReal &V0, const tReal &V1, const tReal &V2)
 set initial velocity field More...
 
void setLimitConditionOnPoints (const EMM_IntArray &lc)
 set the limit condition each point is set to More...
 
void setLimitConditionOnPoints (const tLimitCondition &lc)
 set the limit condition to all points More...
 
void setConstraints (const tFlag &C, const tString &dataFile)
 set constraints from file defined on points More...
 
void setConstraints (const tFlag &C, const tReal data[3])
 set constraints field More...
 
void setConstraints (const tFlag &C, const tReal &C0, const tReal &C1, const tReal &C2)
 set initial constriants field More...
 
void setConstraints (const tFlag &C, const EMM_RealField &data)
 set constraints More...
 
const tFlaggetConstraintFaces () const
 get the constraint faces $ C=\sum_{f=0}^{f=5} C_f 2^f $ $ C_f=1 $ if face f is constrainted More...
 
const EMM_RealFieldgetConstraints () const
 get the constraints field for reading More...
 
EMM_RealFieldgetConstraints ()
 get the constraints field for writing More...
 
const EMM_LimitConditionArraygetLimitConditionOnPoints () const
 
SPC::EMM_LimitConditionArray getLimitConditionOnPointsByReference () const
 
void nullProjectionOnDirichletBoundary (EMM_RealField &V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void nullProjectionOnDirichletBoundary (const tUIndex &nPoints, const tDimension &dim, tReal *V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void projectionOnDirichletBoundary (const EMM_RealField &V0, EMM_RealField &V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void projectionOnDirichletBoundary (const tUIndex &nPoints, const tDimension &dim, const tBoolean &incV0, const tReal *V0, tReal *V) const
 project the velocity to 0 on dirichlet boundary points More...
 
void periodicProjection (const tCellFlag &periodicity, const tUInteger nPoints[3], EMM_RealField &V) const
 make the periodic projection of the field V More...
 
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...
 
MATH_SolvergetSolver ()
 get the solver of the system More...
 
void setElasticityState (const tFlag &v)
 set the elasticity state More...
 
tBoolean isSteadyState () const
 
tBoolean isEquilibriumState () const
 
tBoolean isFrozenState () const
 
void setTimeIntegrationMethod (const tFlag &m)
 set the time integration method for new field More...
 
const tFlaggetTimeIntegrationMethod () const
 get the time integration method for next time step More...
 
void setTimeIntegrationOrder (const tInt &o)
 set the time integration order for new field More...
 
const tUCIntgetTimeIntegrationOrder () const
 get the time integration order for new field More...
 
const tRealgetTimeStep () const
 get the time step for elasticty More...
 
void setCFL (const tReal &cfl)
 set the cfl for computing the initial time step More...
 
virtual tBoolean computeFieldsAtTime (const tReal &t, const tFlag &order, const EMM_RealArray &sigma, const EMM_RealField &dM_dt0, const EMM_RealField &M0)
 compute the fields of operator at time More...
 
virtual tBoolean updateAtNextTimeStep (const tReal &dt, const EMM_RealArray &sigma, const EMM_RealField &Mt)
 update the data of operator at next time step More...
 
virtual SP::EMM_BlockEquilibriumMatrix NewEquilibriumMatrix () const
 create the equilibrium matrix More...
 
void setIsEquilibriumMatrixReconditioned (const tBoolean &c)
 set to true if the equilibrium matrix is conditioned More...
 
const tBooleanisEquilibriumMatrixReconditioned () const
 get if the equilibrium matrix is conditioned More...
 
tBoolean computeEquilibriumState (const EMM_RealArray &sigma, const EMM_RealField &M, const EMM_RealField &U0, EMM_RealField &U)
 compute the equilibirum state $ div(\lambda^e:epsilon(U))=div(\lambda^e:\lambda^m:M \otimes M) $ More...
 
virtual void computeElasticStressMatrixProduct (const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *D) const
 compute the elastic stress Matrix product $ A.U = - div \left (\tilde \lambda^e : \varepsilon(u) \right ) $ More...
 
void computeStress (const EMM_RealArray &sigma, const EMM_RealField &U, const EMM_RealField &M, EMM_RealField &stress) const
 compute the stress $ div(sigma(U,M))=div(\lambda^e:\epsilon(U))-div(\lambda^2:\lambda^m:M\otimes M)$ More...
 
tReal computeEnergy (const tReal &t, const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M) const
 compute the energy of the magnetostriction operator at current displacement and velocity More...
 
tReal computeCineticEnergyAtTime (const tReal &t) const
 compute the energy due to velocity More...
 
tReal computePotentialEnergyAtTime (const tReal &t) const
 compute the potential energy to the space variation of the displacement More...
 
virtual tString getName () const
 return an human reading name of the operator More...
 
const tBooleanisCubicVolume () const
 return the true if the element is cubic More...
 
const tRealgetElementVolume () const
 return the adimensionized volume of the element More...
 
void getSharedPointer (SP::CORE_Object &p)
 get the shared pointer of this class into p More...
 
void getSharedPointer (SPC::CORE_Object &p) const
 get the shared pointer of this class into p More...
 
tString getClassName () const
 return the class name of the object More...
 
tString getIdentityString () const
 return the identity string of the object of the form className_at_address More...
 
tString getPointerAddress () const
 return the identity string of the object More...
 
template<class T >
tBoolean isInstanceOf () const
 test if the clas T is an instance of this class More...
 
tBoolean isInstanceOf (const tString &name) const
 test if the object is an instance of className More...
 
void interpolateUAtEdge (const tBoolean &withConstraints, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const tDimension &dim, const tUCInt &l, const tUCInt &r, const tReal *Ucells, const tReal *Uc, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, const tUIndex *Nc, const CORE_UIndexMorseArray &neighbors, tReal *iUc, const tReal *&iU) const
 interpolate U at edge 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 tUSInt computeNeighborCellsNumber (const tUInteger &iP, const tUInteger &jP, const tUInteger &kP, const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tBoolean *periodicity, const CORE_UIndexMorseArray &neighbors)
 compute the number of cells connected to vertex More...
 
static void interpolateUAtVertex (tUInteger xP, tUInteger yP, tUInteger zP, const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tBoolean isPeriodic[3], const CORE_UIndexMorseArray &neighborIndices, const tDimension &dim, const tReal *Ucells, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, const tLimitCondition &LCp, tReal *Up)
 
static void interpolateAlmostNullUAtVertex (const tUInteger &xP, const tUInteger &yP, const tUInteger &zP, const tUInteger &Nx, const tUInteger &Ny, const tUInteger &Nz, const tBoolean isPeriodic[3], const CORE_UIndexMorseArray &neighborIndices, const tDimension &dim, const tUIndex &iCell, const tReal *Ui, const tLimitCondition *lc, const tLimitCondition &LCp, tReal *Up)
 
static void interpolateUAtVertices (const tBoolean &withDirichletPoints, const tUInteger N[3], const tBoolean isPeriodic[3], const CORE_UIndexMorseArray &neighborIndices, const EMM_RealField &Ucells, const EMM_LimitConditionArray &limitConditionOnPoints, const EMM_RealField &U0, EMM_RealField &Up)
 
static void interpolateUAtVertices (const tBoolean &withDirichletPoints, const tUInteger N[3], const tBoolean isPeriodic[3], const CORE_UIndexMorseArray &neighborIndices, const tUIndex &nCells, const tDimension &dim, const tReal *U, const EMM_LimitConditionArray &limitConditionOnPoints, const EMM_RealField &U0, EMM_RealField &Up)
 
static tBoolean edgeMean (const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUCInt &g, const tBoolean *isPeriodic, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tDimension &dim, const tLimitCondition *lc, const tBoolean &incU, const tReal *Upoints, tReal *Um)
 compute the mean value of U defined on points at edge between face f and face g of the cell (xCell,yCell,zCell) More...
 
static void interpolateUAtFace (const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean periodicity[3], const CORE_UIndexMorseArray &neighborsIndices, const tUCInt &f, const tDimension &dim, const tReal *Ucells, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, tReal *Umean)
 compute interpolation of U at Face More...
 
static void interpolateAlmostNullUAtFace (const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean periodicity[3], const CORE_UIndexMorseArray &neighborsIndices, const tUCInt &f, const tDimension &dim, const tReal *Ui, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, tReal *Umean)
 compute interpolation of U at Face More...
 
static tBoolean faceMean (const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tBoolean *isPeriodic, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tDimension &dim, const tLimitCondition *lc, const tBoolean &incU, const tReal *Upoints, tReal *Um)
 compute the mean value of U defined on points at face f of the cell (xCell,yCell,zCell) More...
 
static tBoolean cellMean (const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tBoolean *isPeriodic, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tDimension &dim, const tLimitCondition *lc, const tBoolean &incU, const tReal *Upoints, tReal *Um)
 compute the mean value of U defined on points at cell (xCell,yCell,zCell) 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_DisplacementFVM_STEGROperator (void)
 create More...
 
virtual ~EMM_DisplacementFVM_STEGROperator (void)
 destroy More...
 
virtual void computeGradAlmostNullUAtFace (const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUIndex &nextCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const CORE_UIndexMorseArray &neighborsIndices, const tLimitCondition *lc, const tDimension &dim, const tReal *Ui, tReal gradU[9]) const
 compute the gradient U at the center of the face f of a cell when U is almost null More...
 
virtual void computeGradAlmostNullUAtCell (const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const CORE_UIndexMorseArray &neighborsIndices, const tDimension &dim, const tReal *Ui, tReal gradU[9]) const
 compute the value of Grad U on cell $ \omega $ when U is almost null everywhere except at cell More...
 
virtual void computeGradAlmostNullUAtNextCell (const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUIndex &nextCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const CORE_UIndexMorseArray &neighborsIndices, const tDimension &dim, const tReal *Ui, tReal gradU[9]) const
 compute the value of Grad U on next cell when U is almost null everywhere except at cell. More...
 
virtual void toDoAfterThisSetting ()
 to to after thios setting More...
 
virtual tBoolean solveAcceleratorSystem (EMM_RealField &V)
 solve the velocity from the mass matrix : M.X=V V:=X More...
 
virtual void spaceProjection (EMM_RealField &V) const
 make the projection of the vector B into the solving linear space More...
 
virtual void spaceProjection (const EMM_RealField &V0, EMM_RealField &V) const
 make the projection of the vector B into the solving linear space More...
 
virtual void spaceRelevant (EMM_RealField &V) const
 make the relevment of the vector B from the solving linear space. More...
 
virtual void computeElasticTensor (const tUIndex &nData, const tDimension &dim, const tReal *U, EMM_2PackedSymmetricTensors &eTensor) const
 compute the elastic tensor for all cells More...
 
virtual void computeElasticStress (const tBoolean &withConstraints, const tReal &beta, const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *S) const
 compute the elastic stress $ S_e(u) =\beta div \left (\tilde \lambda^e_{klrs} / \frac{\partial U_s}{\partial x_r}\right )$ More...
 
virtual void computeMagneticStress (const tReal &alpha, const tReal &beta, const tUIndex &nCells, const tDimension &dim, const EMM_RealArray &sigma, const tReal *M, const tUIndex &nData, tReal *D) const
 compute the magnetic stress $ S = \alpha . S + \beta . \displaystyle \frac{1}{|\partial \omega|} \int_{\partial \omega} \left (\sigma^2 . \tilde \lambda^2 : ( \lambda^m : m \otimes m ) \right ) \cdot N d\S $ to elastic stress S More...
 
virtual void initializeEquilibriumSolver (const EMM_RealField &U0)
 initialize the equilibrium solver More...
 
void setThis (SP::CORE_Object p)
 set this weak shared pointer called toDoAfterThis setting method More...
 

Static Protected Attributes

static const tUIndex NEUMANN_FACE =CORE_Object::getMaxIndex()
 
static const tUIndex DIRICHLET_FACE =CORE_Object::getMaxIndex()+1
 

Private Member Functions

 SP_OBJECT (EMM_DisplacementFVM_STEGROperator)
 
void computeGradUAtFaceByTaylorExpansion (const tBoolean &withConstraints, const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tBoolean *periodicity, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const CORE_UIndexMorseArray &neighbors, const tUIndex *Ni, const tDimension &dim, const tReal *Ucells, const tReal *Ui, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, tReal gradU[9]) const
 compute the gradient U on face by using the Taylor Expansion of U More...
 
void computeGradAlmostNullUAtFaceByTaylorExpansion (const tReal *h, const tUInteger &xCell, const tUInteger &yCell, const tUInteger &zCell, const tUCInt &f, const tUIndex &nextCell, const tUInteger &Px, const tUInteger &Py, const tUInteger &Pz, const tBoolean *periodicity, const CORE_UIndexMorseArray &neighbors, const tDimension &dim, const tReal *Ui, tReal gradU[9]) const
 compute the gradient U on face by using the Taylor Expansion of U More...
 
virtual tString toString () const
 turn the class into string More...
 

Detailed Description

This class describes the displacement operator defined on the cells of the mesh with Surface Gradient Reconstruction.

The elasticity equation consists in solving :

$ \displaystyle \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) ) $

It solves the displacement equation by finite volume method where $ U=U^0 $ on dirichlet points and $ (\tilde \lambda^e : \varepsilon(u) ) .N =C $ on Neuman points

The implementation of the integration of the gradient of displacement over the surface is computed by using a Taylor Expansion see EMM_DisplacementFVM_STEGROperator::computeGradUAtFaceByTaylorExpansion()

The implementation of the integration of the gradient of displacement over the cell is computed by using a Taylor Expansion with interpolation of dispacement over Neumann Boundaries see EMM_DisplacementFVM_VTEGROperator::computeGradUAtCellByTaylorExpansionWithNeumannInterpolation()

The gradient of the displacement is decomposed by its normal and tangential components :

It needs the interpolation of U over the edge of the face whcih is the mean of the value of U over the 4 cells containing the edge.

$ U(N)= \displaystyle \frac{1}{card(\Omega_N)} \sum_{\omega \in \Omega_N } U(\omega) $ where $ \Omega_N=\{ \omega | N \in \omega \} $.

so $ \displaystyle \frac{1}{|\omega|} \int_{\omega} 1 \cdot div(\lambda^e:\epsilon(u)) d\omega = \displaystyle \frac{1}{h^n} \left (\lambda^e:\nabla u \right ) \cdot \epsilon_n e_n $.

Note that this implementation is similarly to the EMM_DisplacementFVM_SSGROperator except from the interpolation of U :

Normaly the results is supposed to be similar and EMM_DisplacementFVM_STEGROperator is more efficient.

Author
Stephane Despreaux
Version
.0

Constructor & Destructor Documentation

◆ EMM_DisplacementFVM_STEGROperator()

EMM_DisplacementFVM_STEGROperator::EMM_DisplacementFVM_STEGROperator ( void  )
protected

create

◆ ~EMM_DisplacementFVM_STEGROperator()

EMM_DisplacementFVM_STEGROperator::~EMM_DisplacementFVM_STEGROperator ( void  )
protectedvirtual

destroy

Member Function Documentation

◆ adimensionize()

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

adimensionize the operator

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

adimensionize the associated displacement operator

Reimplemented from EMM_Operator.

◆ backup()

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

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

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

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::backup(), EMM_DisplacementFVMOperator::mU0, CORE_Object::out(), CORE_Out::println(), tBoolean, and tString.

Referenced by EMM_DisplacementFVMOperator::isGhostCellOn().

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

◆ buildDataOnBoundaryFaces()

virtual void EMM_DisplacementFVMOperator::buildDataOnBoundaryFaces ( const EMM_Grid3D mesh,
const EMM_LimitConditionArray limitConditionOnPoints,
const EMM_RealField U0,
EMM_RealField DnU0 
)
inlinevirtualinherited

build the data on boundary faces Dirichlet and Neumann

Parameters
meshthe mesh of the domain
limitConditionOnPoints: limit condition on points
U0: U at all points
DnU0: grad UO . N at each point (applied forces)
  • builds the data on dirichlet boundary into U0
  • builds the data on Neumann boundary into DnU0
  • updates the boundary neighbor index for each element

Implements EMM_DisplacementOperator.

References EMM_DisplacementFVMOperator::buildDataOnDirichletBoundaryFaces(), EMM_DisplacementFVMOperator::buildDataOnNeumannBoundaryFaces(), and EMM_DisplacementFVMOperator::setBoundaryFaceTypes().

Here is the call graph for this function:

◆ cellMean()

tBoolean EMM_DisplacementFVM_Interpolator::cellMean ( const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tBoolean isPeriodic,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tDimension dim,
const tLimitCondition lc,
const tBoolean incU,
const tReal Upoints,
tReal Um 
)
staticinherited

compute the mean value of U defined on points at cell (xCell,yCell,zCell)

Parameters
[in]xCellx-index of the cell in [0,Nx[ to compute the mean of U
[in]yCelly-index of the cell in [0,Ny[ to compute the mean of U
[in]zCellz-index of the cell in [0,Nz[ to compute the mean of U
[in]isPeriodic: periodicity of the domain
[in]Px: number of points in x-direction
[in]Py: number of points in y-direction
[in]Pz: number of points in z-direction
[in]dim: dimension of each point of U
[in]lc: limit condition on points
[in]incU: size of incement of U (0: if constant)
[in]Upointsvalues of U at all points
[out]Ummean of U on cell
Returns
false if U is null

commpute the mean of U over the cell at segment indices xcell,yCell,zCell into Um

$ U_m = \frac{1}{8} \sum_{i=0}^{i=7} U[iP] $ with iP is the point of the cell

References EMM_Grid3D::ELEMENT_POINTS, EMM_Grid3D::GET_MASTER_PERIODIC_POINT(), EMM_Grid3D::getPeriodicIndicator(), null, EMM_Grid3D::POINTS_NUMBER_PER_ELEMENT, EMM_Grid3D::SLAVE_LIMIT_CONDITION, tBoolean, tDimension, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by EMM_DisplacementFVM_Interpolator::interpolateAlmostNullUAtFace().

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

◆ computeCineticEnergy()

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

◆ computeCineticEnergyAtTime()

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

compute the energy due to velocity

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

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

Referenced by EMM_DisplacementOperator::computeEnergy().

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

◆ computeElasticStress() [1/3]

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

compute the elastic stress $ S_e(u) =\beta div \left (\tilde \lambda^e_{klrs} / \frac{\partial U_s}{\partial x_r}\right )$

Parameters
withConstraints: false if constraints on neumann boundary are ignored
betamultiplicator factor
nDatanumber of data for U / S (nCells or nVertices depending on the method)
dimdimension of the problem in [1,3]
Uthe displacement field values of size nData x dim
Sthe elastics stress of size nData x dim

On a cell w, we have

$ S_e(u) =\beta \int_\omega div \left (\tilde \lambda^e_{klrs} / \frac{\partial U_s}{\partial x_r}\right ) d\omega $

$ S_e(u) =\beta \int_{\partial \omega} \left (\tilde \lambda^e_{klrs} / \frac{\partial U_s}{\partial x_r}\right ).N d\sigma $

So, is only needs to compute the gradient U at all faces of the cell.

Implements EMM_DisplacementOperator.

References CORE_MorseArray< T >::begin(), EMM_DisplacementFVMOperator::computeGradUAtFace(), EMM_DisplacementFVM_Interpolator::faceMean(), EMM_DisplacementOperator::getAdimensionizedSegmentsSize(), EMM_DisplacementOperator::getConstraintFaces(), EMM_DisplacementOperator::getConstraints(), EMM_DisplacementFVMOperator::getDisplacementOnDirichletBoundary(), EMM_4Tensors::getIndex(), EMM_DisplacementOperator::getLambdaE(), EMM_DisplacementOperator::getLimitConditionOnPoints(), EMM_DisplacementFVMOperator::getNeighborsIndices(), EMM_DisplacementFVMOperator::getSegmentsNumber(), EMM_4Tensors::getTensorSize(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_Tensors::getValues(), EMM_RealField::getValues(), iand, EMM_DisplacementFVMOperator::isDirectionPeriodic(), EMM_DisplacementFVM_Interpolator::NEUMANN_FACE, null, OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, CORE_MorseArrayConstIterator< T >::size(), tBoolean, tCInt, tDimension, tFlag, tLimitCondition, tReal, tUCInt, tUIndex, tUInteger, EMM_Grid3D::UNMAGNETIZED_ELEMENT, and CORE_MorseArrayConstIterator< T >::values().

Referenced by EMMG_DisplacementFVM_SSGROperator::computeElasticStress(), EMMG_DisplacementFVM_STEGROperator::computeElasticStress(), EMMG_DisplacementFVM_VTEGROperator::computeElasticStress(), EMMG_DisplacementFVM_VOGGROperator::computeElasticStress(), EMM_DisplacementFVM_VIGROperator::computeElasticStressMatrixProduct(), and EMM_DisplacementFVMOperator::computeElasticTensor().

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

◆ computeElasticStress() [2/3]

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

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 EMM_DisplacementOperator::computeElasticStress(), EMM_DisplacementOperator::computeElasticStressMatrixProduct(), EMM_DisplacementOperator::computeStress(), and EMM_DisplacementOperator::initializeEquilibriumSolver().

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

◆ computeElasticStress() [3/3]

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

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

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

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

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

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

Algorithm:

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

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

Here is the call graph for this function:

◆ computeElasticStressMatrixProduct()

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

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

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

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

Reimplemented in EMM_DisplacementFVM_VIGROperator.

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

Here is the call graph for this function:

◆ computeElasticTensor() [1/2]

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

compute the elastic tensor for all cells

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 from EMM_DisplacementOperator.

Reimplemented in EMM_DisplacementFVM_VIGROperator.

References EMM_DisplacementFVMOperator::computeCineticEnergy(), EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementOperator::computeElasticTensor(), EMM_DisplacementFVMOperator::computeMagneticStress(), EMM_DisplacementFVMOperator::computePotentialEnergy(), tBoolean, tDimension, tReal, and tUIndex.

Referenced by EMM_DisplacementFVM_VIGROperator::computeElasticTensor().

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

◆ computeElasticTensor() [2/2]

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

compute the elastic tensor for all cells

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

It needs to compute the gradient of U at the center of the cell

Implements EMM_DisplacementOperator.

References CORE_MorseArray< T >::begin(), EMM_DisplacementFVMOperator::computeGradUAtCell(), CORE_MorseArray< T >::fitToSize(), EMM_DisplacementOperator::getAdimensionizedSegmentsSize(), EMM_DisplacementFVMOperator::getDisplacementOnDirichletBoundary(), CORE_MorseArray< T >::getIndicesByReference(), EMM_DisplacementOperator::getLimitConditionOnPoints(), EMM_DisplacementFVMOperator::getNeighborsIndices(), EMM_DisplacementFVMOperator::getSegmentsNumber(), EMM_2PackedSymmetricTensors::getTensorSize(), EMM_Tensors::getTensorsNumber(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_Tensors::getValues(), EMM_DisplacementFVMOperator::isDirectionPeriodic(), null, OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, CORE_MorseArray< T >::setIndicesByReference(), EMM_Tensors::setTensorsNumber(), CORE_MorseArrayIterator< T >::size(), tBoolean, tDimension, tLimitCondition, tReal, tUCInt, tUIndex, tUInteger, CORE_MorseArrayIterator< T >::values(), and CORE_MorseArrayConstIterator< T >::values().

Here is the call graph for this function:

◆ computeEnergy()

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

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

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

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

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

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

◆ computeEpsilon()

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

compute epsilon

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

◆ computeEquilibriumMatrixDiagonalConditioner()

void EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner ( MATH_Vector D) const
virtualinherited

◆ computeEquilibriumState()

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

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

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

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

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

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

◆ computeFieldsAtTime()

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

◆ computeGradAlmostNullUAtCell()

virtual void EMM_DisplacementFVM_VTEGROperator::computeGradAlmostNullUAtCell ( const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const CORE_UIndexMorseArray neighborsIndices,
const tDimension dim,
const tReal Ui,
tReal  gradU[9] 
) const
inlineprotectedvirtualinherited

compute the value of Grad U on cell $ \omega $ when U is almost null everywhere except at cell

Parameters
[in]h: size of cell in each direction
[in]xCellindex of the segment in the x-direction
[in]yCellindex of the segment in the y-direction
[in]zCellindex of the segment in the z-direction
[in]Px: number of points in the x-direction
[in]Py: number of points in the y-direction
[in]Pz: number of points in the z-direction
[in]periodicity: periodicity of the mesh
[in]neighborsIndices: indices of the neigbor cells per cells
[in]dim: dimension of the field
[in]Ui: displacement field on the cell (xCell,yCell,zCell)
[out]gradUthe gradiend of U for all coordinates in all directions $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

Computes the gradient of U at the center of the cell when U is null everywhere excecpt in cell

Implements EMM_DisplacementFVM_VGROperator.

References EMM_DisplacementFVM_VTEGROperator::computeGradAlmostNullUAtCellByTaylorExpansionWithNeumannInterpolation().

Here is the call graph for this function:

◆ computeGradAlmostNullUAtFace()

virtual void EMM_DisplacementFVM_STEGROperator::computeGradAlmostNullUAtFace ( const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUIndex nextCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const CORE_UIndexMorseArray neighborsIndices,
const tLimitCondition lc,
const tDimension dim,
const tReal Ui,
tReal  gradU[9] 
) const
inlineprotectedvirtual

compute the gradient U at the center of the face f of a cell when U is almost null

Parameters
[in]h: size of cell in each direction
[in]xCell: index of the segment in the x-direction
[in]yCell: index of the segment in the y-direction
[in]zCell: index of the segment in the z-direction
[in]f: index of the face
[in]nextCell:neighbor cell index of the current cell with the face f
[in]Px: number of points in the x-direction
[in]Py: number of points in the y-direction
[in]Pz: number of points in the y-direction
[in]periodicity: periodicty of the mesh in each direction
[in]neighborsIndices:neighbors indices of all the cell
[in]lc: limit condition on points
[in]dim: dimension of the field
[in]Ui: displacement field on the cell
[out]gradU: the gradient of U for all coordiantes in all direction $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

It computes the value of gradient at cell when U is almost null everywhere except in the cell (xCell,yCell,zCell)

It is used for preconditionning the equilibrium matrix

Reimplemented from EMM_DisplacementFVM_VGROperator.

References computeGradAlmostNullUAtFaceByTaylorExpansion(), computeGradUAtFaceByTaylorExpansion(), tBoolean, tDimension, tLimitCondition, tReal, tUCInt, tUIndex, and tUInteger.

Here is the call graph for this function:

◆ computeGradAlmostNullUAtFaceByTaylorExpansion()

void EMM_DisplacementFVM_STEGROperator::computeGradAlmostNullUAtFaceByTaylorExpansion ( const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUIndex nextCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const CORE_UIndexMorseArray neighbors,
const tDimension dim,
const tReal Ui,
tReal  gradU[9] 
) const
private

compute the gradient U on face by using the Taylor Expansion of U

Parameters
h: size of cell in each direction
xCell: index of the segment in the x-direction
yCell: index of the segment in the y-direction
zCell: index of the segment in the z-direction
f: index of the face
nextCell: neighbor of the curent cell
Px: number of points in the x-direction
Py: number of points in the y-direction
Pz: number of points in the z-direction
periodicity: periodicity of the domain
neighborsneighbors of all the cells
dim: dimension of the field
Ui: displacement field on the current cell
gradU: the gradiend of U for all coordiantes in all direction $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

For all face with normal $ \epsilon_l . e_l $,

$ \left (\nabla u^s \right )_l = \frac{U(\omega_n)-u(\omega)}{h_l}$ is $ \omega_n $ is the neigbor cell of $ \omega $.

If there is no neighbor that means that the face f is a boundary face. so that

$ U(\omega_n) = \frac{1}{4} \sum_{N \in \gamma_f} u(N) $ with $ U(N) = \frac{1}{|W_N|} \sum_{\omega \in W_N} U(\omega) $ where $ W_n=\{ \omega | N \in \omega \} $.

For the tangential derivative in the direction r:

$ \left (\nabla u^s \right )_r = \frac{U(E_{r^{+}})-U(E_{r^{-}})}{h_r}$ where $ U(E_{r^{+}} $ is the mean of U on the edge in the face in the direction $ epsilon_l e_l $ and $ e_r $.

References EMM_DisplacementFVM_Interpolator::computeNeighborCellsNumber(), EMM_DisplacementFVM_Interpolator::DIRICHLET_FACE, EMM_Grid3D::EDGE_POINTS, EMM_Grid3D::ELEMENT_POINTS, EMM_DisplacementFVMOperator::isGhostCellOn(), tBoolean, tCInt, tReal, tUCInt, and EMM_Grid3D::UNMAGNETIZED_ELEMENT.

Referenced by computeGradAlmostNullUAtFace().

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

◆ computeGradAlmostNullUAtNextCell()

virtual void EMM_DisplacementFVM_VTEGROperator::computeGradAlmostNullUAtNextCell ( const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUIndex nextCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const CORE_UIndexMorseArray neighborsIndices,
const tDimension dim,
const tReal Ui,
tReal  gradU[9] 
) const
inlineprotectedvirtualinherited

compute the value of Grad U on next cell when U is almost null everywhere except at cell.

Parameters
[in]h: size of cell in each direction
[in]xCellindex of the segment in the x-direction
[in]yCellindex of the segment in the y-direction
[in]zCellindex of the segment in the z-direction
[in]finterface to find the next cell
[in]nextCellindex of the next cell
[in]Py: number of points in the y-direction
[in]Px: number of points in the x-direction
[in]Pz: number of points in the z-direction
[in]periodicity: periodicity of the mesh
[in]neighborsIndices: indices of the neigbor cells per cells
[in]dim: dimension of the field
[in]Ui: displacement field on the cell (xCell,yCell,zCell)
[out]gradUthe gradiend of U for all coordinates in all directions $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

Computes the gradient of U at the center of the cell when U is null everywhere excecpt in cell

Implements EMM_DisplacementFVM_VGROperator.

References EMM_DisplacementFVM_VTEGROperator::computeGradAlmostNullUAtCellByTaylorExpansionWithNeumannInterpolation(), EMM_DisplacementFVM_VTEGROperator::computeGradAlmostNullUAtNextCellByTaylorExpansionWithNeumannInterpolation(), EMM_DisplacementFVM_VTEGROperator::computeGradUAtCellByTaylorExpansionWithNeumannInterpolation(), tBoolean, tDimension, tLimitCondition, tReal, tUIndex, tUInteger, and tUSInt.

Here is the call graph for this function:

◆ computeGradUAtCell()

virtual void EMM_DisplacementFVM_VTEGROperator::computeGradUAtCell ( const tBoolean withConstraints,
const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const tUIndex neighbors,
const tDimension dim,
const tReal Ucells,
const tReal Ui,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
tReal  gradU[9] 
) const
inlinevirtualinherited

compute the value of Grad U on cell $ \omega $

Parameters
[in]withConstraints: true tu use the Dirichlet & Neumann constraints
[in]h: size of cell in each direction
[in]xCellindex of the segment in the x-direction
[in]yCellindex of the segment in the y-direction
[in]zCellindex of the segment in the z-direction
[in]Px: number of points in the x-direction
[in]Py: number of points in the y-direction
[in]Pz: number of points in the z-direction
[in]periodicity: periodicity of the mesh
[in]neighbors: indices of the neigbor cells of the current cell
[in]dim: dimension of the field
[in]Ucells: displacement field value on all cells
[in]Ui: displacement field on the cell (xCell,yCell,zCell)
[in]lc: limit condition on points
[in]incU0increment of U0 for fixed displacement on Dirichlet boundary
[in]U0: displacement values on Dirichlet boundary
[out]gradUthe gradiend of U for all coordinates in all directions $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

compute grad U at cell by the Taylon extension approximation

For all boundaries of the cell $ \partial \omega_f | \cup_f \partial \omega_f = \partial \omega $, with exterior normal $ \epsilon_f . e_f $ where $ e_f $ is one of the canonical directions and $ \epsilon_f \in \{-1,1\}$ is the orientation of the normal with respect of the canonical direction , the gradient of the s-coordinate of U within the face is :

  • if the face is an interior face, $ \nabla^{\epsilon_f} U^s[e_f] = \displaystyle \frac{\partial U}{\partial x_f} = \displaystyle \epsilon_f.{U^s_n - U^s}{h_f \eta_f }$, $ U_n $ is the displacement U at the the center of the neighbor cell , $ eta_f=1 $ and $ h_f$ is the size of the cell in the direction $ e_f $.
  • if the face is a Dirichlet face, $ \nabla^{\epsilon_f} U^s[e_f] = \displaystyle \frac{\partial U}{\partial x_f} = \displaystyle \epsilon_f.{U^s_n - U^s}{\eta_f h_f }$, $ \eta_f = \frac{1}{2} $, $ U_n = \displaystyle \frac{1}{|v|} \sum_{v \in \partial \omega_f} U(v) $ is the displacement U at the dirichlet boundary face.
  • if the face is a Neumann face, $ \nabla^{epsilon_f} U^s[e_f] $ verify $ \lambda^e_{kftd}.\epsilon_f.\nabla U^d[e_t] = C_k $ where $ C_k $ is the constraints on the boundary face in the direction $ e_k $, $ \nabla U^d[e_t] $ on the Neumann surface is supposed to be $ \nabla U^d[e_t] $ on the center of the cell and $ \eta_f=\frac{1}{2} $

The gradient of U $ \nabla U^s [e_k] $ at the center of the cell in the k-direction is the barycenter of $ \nabla^+ U^s [e_k] $ and $ \nabla^- U^s [e_k] $ in order to have an interpolation of 2 order:

$ \nabla U^s [e_k] = \frac{\eta_{2k}}{\eta_{2k}+\eta_{2k+1}} \nabla^+ U^s [e_k] + \frac{\eta_{2k+1}}{eta_{2k}+\eta_{2k+1}} \nabla^- U^s [e_k] $

This methods is quite expensive because it needs solving a system of size 3x6 equations.

Implements EMM_DisplacementFVMOperator.

References EMM_DisplacementFVM_VTEGROperator::computeGradUAtCellByTaylorExpansionWithNeumannInterpolation().

Here is the call graph for this function:

◆ computeGradUAtFace()

virtual void EMM_DisplacementFVM_STEGROperator::computeGradUAtFace ( const tBoolean withConstraints,
const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUIndex nextCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const CORE_UIndexMorseArray neighborsIndices,
const tDimension dim,
const tReal Ucells,
const tReal Ui,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
tReal  gradU[9] 
) const
inlinevirtual

compute the gradient U at the center of the face f of a cell. f is either an interior face or a Dirichlet face

Parameters
[in]withConstraintstrue if constraints is applied in the diriclhlet boundary
[in]h: size of cell in each direction
[in]xCell: index of the segment in the x-direction
[in]yCell: index of the segment in the y-direction
[in]zCell: index of the segment in the z-direction
[in]f: index of the face
[in]nextCell: neighbor cells index
[in]Px: number of points in the x-direction
[in]Py: number of points in the y-direction
[in]Pz: number of points in the z-direction
[in]periodicity: periodicity of the mesh
[in]neighborsIndices: neighbor cells indices of all cell
[in]dim: dimension of the field
[in]Ucells: displacement field value on all cells
[in]Ui: displacement field on the cell
[in]lc: limit condition on points
[in]incU0increment of U0 for fixed displacement on Dirichlet boundary
[in]U0: displacement values on Dirichlet boundary
[out]gradU: the gradiend of U for all coordiantes in all direction $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

It computes the gradient of U at the face f which is either an interior face or a Dirichlet face

It is used for computing the elastic stress

For all face with normal $ \epsilon_l . e_l $,

$ \left (\nabla u^s \right )_l = \frac{U(\omega_n)-u(\omega)}{h_l}$ is $ \omega_n $ is the neigbor cell of $ \omega $.

If there is no neighbor that means that the face f is a boundary face. so that

$ U(\omega_n) = \frac{1}{4} \sum_{N \in \gamma_f} u(N) $ with $ U(N) = \frac{1}{|W_N|} \sum_{\omega \in W_N} U(\omega) $ where $ W_n=\{ \omega | N \in \omega \} $.

For the tangential derivative in the direction r:

$ \left (\nabla u^s \right )_r = \frac{U(E_{r^{+}})-U(E_{r^{-}})}{h_r}$ where $ U(E_{r^{+}} $ is the mean of U on the edge in the face in the direction $ epsilon_l e_l $ and $ e_r $.

Reimplemented from EMM_DisplacementFVM_VGROperator.

References computeGradUAtFaceByTaylorExpansion().

Here is the call graph for this function:

◆ computeGradUAtFaceByTaylorExpansion()

void EMM_DisplacementFVM_STEGROperator::computeGradUAtFaceByTaylorExpansion ( const tBoolean withConstraints,
const tReal h,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tBoolean periodicity,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const CORE_UIndexMorseArray neighbors,
const tUIndex Ni,
const tDimension dim,
const tReal Ucells,
const tReal Ui,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
tReal  gradU[9] 
) const
private

compute the gradient U on face by using the Taylor Expansion of U

Parameters
withConstraints: true if constraints are applied on the dirichlet boundary
h: size of cell in each direction
f: index of the face
xCell: index of the segment in the x-direction
yCell: index of the segment in the y-direction
zCell: index of the segment in the z-direction
periodicity: periodicity of the domain
Px: number of points in the x-direction
Py: number of points in the y-direction
Pz: number of points in the z-direction
neighborsneighbors of all the cells
Nineighbors of the curent cell
dim: dimension of the field
Ucells: displacement field value on all cells
Ui: displacement field on the current cell
lc: limit condition on all points
incU0increment of U0 for fixed displacement on Dirichlet boundary
U0: displacement values on Dirichlet boundary
gradU: the gradiend of U for all coordiantes in all direction $ \frac{\partial U^s}{\partial x_k}=gradU[3*k+s]$

For all face with normal $ \epsilon_l . e_l $,

$ \left (\nabla u^s \right )_l = \frac{U(\omega_n)-u(\omega)}{h_l}$ is $ \omega_n $ is the neigbor cell of $ \omega $.

If there is no neighbor that means that the face f is a boundary face. so that

$ U(\omega_n) = \frac{1}{4} \sum_{N \in \gamma_f} u(N) $ with $ U(N) = \frac{1}{|W_N|} \sum_{\omega \in W_N} U(\omega) $ where $ W_n=\{ \omega | N \in \omega \} $.

For the tangential derivative in the direction r:

$ \left (\nabla u^s \right )_r = \frac{U(E_{r^{+}})-U(E_{r^{-}})}{h_r}$ where $ U(E_{r^{+}} $ is the mean of U on the edge in the face in the direction $ epsilon_l e_l $ and $ e_r $.

References EMM_DisplacementFVM_Interpolator::faceMean(), EMM_DisplacementFVM_Interpolator::interpolateUAtEdge(), EMM_DisplacementFVMOperator::isGhostCellOn(), null, EMM_Object::NULL_VALUE, tCInt, tReal, tUCInt, and EMM_Grid3D::UNMAGNETIZED_ELEMENT.

Referenced by computeGradAlmostNullUAtFace(), and computeGradUAtFace().

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

◆ computeMagneticStress() [1/3]

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

compute the magnetic stress $ S = \alpha . S + \beta . \displaystyle \frac{1}{|\partial \omega|} \int_{\partial \omega} \left (\sigma^2 . \tilde \lambda^2 : ( \lambda^m : m \otimes m ) \right ) \cdot N d\S $ to elastic stress S

Parameters
[in]alpha: multiplicator factor for S
[in]beta: multiplicator factor for magnetic stress
[in]nCells: the size of the magnetism value
[in]dim: dimension of the problem in [1,3]
[in]sigma: weight of each cell
[in]M: the magnetization field values of size nCells x dim
[in]nData: size of stress field values
[in,out]D: in input the elastic stress , in output the total stress of size nData x dim

For all cell i, the k-coordinate is $ \left ( (\sigma_i^2.\lambda^i:M^i \times M^i ) \cdot N \right )_k = \displaystyle \sigma_i^2 . \lambda^i_{klrs}.M^i_r.M^i_s . N_l $ on the interface (null for neuman boundary : no magnetic constraint)

$ \displaystyle \left ( \sigma_i^2 . \lambda^i_{klrs}.M^i_r.M^i_s \cdot N_l\right )_f = \frac{1}{2} \left ( \left ( \sigma_n^2 . \lambda^n_{klrs}.M^n_r.M^n_s \right ) + \left ( \sigma_i^2 . \lambda^i_{klrs}.M^i_r.M^i_s \right ) \epsilon_l e_l \right ) $ where

  • l in the normal direction of the face in {0,1,2}
  • $ \epsilon_l $ is the orientation of the normal of the face in {-1,1}
  • n is the index of the next cell. For Dirichlet boundray n=i. (dM/dN=0)
  • i is the current cell

Implements EMM_DisplacementOperator.

References CORE_MorseArray< T >::begin(), EMM_DisplacementOperator::getAdimensionizedSegmentsSize(), EMM_DisplacementOperator::getLambdaEDoubleDotLambdaM(), CORE_Array< T >::getSize(), EMM_4Tensors::getTensorSize(), CORE_Object::getThread(), CORE_Thread::getThreadsNumber(), EMM_Tensors::getValues(), EMM_DisplacementFVMOperator::mNeighborsIndices, EMM_DisplacementFVM_Interpolator::NEUMANN_FACE, OMP_GET_THREAD_ID, OMP_PARALLEL_PRIVATE_SHARED_DEFAULT, CORE_MorseArrayConstIterator< T >::size(), tBoolean, tCInt, tDimension, tReal, tUCInt, tUIndex, tUInteger, EMM_Grid3D::UNMAGNETIZED_ELEMENT, and CORE_MorseArrayConstIterator< T >::values().

Referenced by EMM_DisplacementFVMOperator::computeElasticTensor(), EMMG_DisplacementFVM_VTEGROperator::computeMagneticStress(), EMMG_DisplacementFVM_STEGROperator::computeMagneticStress(), EMMG_DisplacementFVM_SSGROperator::computeMagneticStress(), and EMMG_DisplacementFVM_VOGGROperator::computeMagneticStress().

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

◆ computeMagneticStress() [2/3]

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

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

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

It computes:

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

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

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

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

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

◆ computeMagneticStress() [3/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 virtualinherited

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.

◆ computeNeighborCellsNumber()

tUSInt EMM_DisplacementFVM_Interpolator::computeNeighborCellsNumber ( const tUInteger iP,
const tUInteger jP,
const tUInteger kP,
const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tBoolean periodicity,
const CORE_UIndexMorseArray neighbors 
)
staticinherited

compute the number of cells connected to vertex

References EMM_Grid3D::ELEMENT_POINTS, CORE_MorseArray< T >::getSize(), EMM_Grid3D::POINTS_NUMBER_PER_ELEMENT, tBoolean, tInteger, tUInt, and tUSInt.

Referenced by computeGradAlmostNullUAtFaceByTaylorExpansion().

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

◆ computePotentialEnergy()

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

compute the potential energy to the space variation of the displacement

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

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::computePotentialEnergy().

Referenced by EMM_DisplacementFVMOperator::computeElasticTensor().

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

◆ computePotentialEnergyAtTime()

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

compute the potential energy to the space variation of the displacement

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

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

Referenced by EMM_DisplacementOperator::computeEnergy().

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

◆ computeStress()

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

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

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

It calls:

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

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

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

◆ computeStressConstraintEnergy() [1/2]

tReal EMM_DisplacementFVMOperator::computeStressConstraintEnergy ( const EMM_RealField Uf) const
inlinevirtualinherited

compute the stress constraint energy on boundary

Parameters
Ufthe displacement field
Returns
the corresponding energy $ \int_{partial \omega} C.U d\sigma $

return 0 because there is no constraint forces energy

Implements EMM_DisplacementOperator.

◆ computeStressConstraintEnergy() [2/2]

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

compute the energy of the boundary stress constraint

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

References EMM_DisplacementOperator::getDisplacement(), and tReal.

Referenced by EMM_DisplacementOperator::computeEnergy().

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

◆ discretize()

tBoolean EMM_DisplacementFVMOperator::discretize ( const EMM_LandauLifschitzSystem system)
virtualinherited

◆ edgeMean()

tBoolean EMM_DisplacementFVM_Interpolator::edgeMean ( const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tUCInt g,
const tBoolean isPeriodic,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tDimension dim,
const tLimitCondition lc,
const tBoolean incU,
const tReal Upoints,
tReal Um 
)
staticinherited

compute the mean value of U defined on points at edge between face f and face g of the cell (xCell,yCell,zCell)

Parameters
[in]xCellindex of the segment of cell in the x-direction within [0,Nx[ to compute the mean of U
[in]yCellindex of the segment of cell in the y-direction within [0,Ny[ to compute the mean of U
[in]zCellindex of the segment of cell in the z-direction within [0,Nz[ to compute the mean of U
[in]fface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]gface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]isPeriodicperiodicity per direction
[in]Px: number of points in x-direction
[in]Py: number of points in y-direction
[in]Pz: number of points in z-direction
[in]dim: dimension of each point of U
[in]lc: limit condition on points
[in]incU: size of incement of U (0: if constant)
[in]Upointsvalues of U at all points
[out]Um: mean of U on cell
Returns
false if U is null

commpute the mean of U over the edge intersection with the face f and g on the cell at segment indices xcell,yCell,zCell into Um $ U_m= \frac{1}{2} \sum_{i=0}^{i=1} U[iP] $ with iP is the point of the edge

References EMM_Grid3D::EDGE_POINTS, EMM_Grid3D::ELEMENT_POINTS, EMM_Grid3D::GET_MASTER_PERIODIC_POINT(), EMM_Grid3D::getPeriodicIndicator(), null, EMM_Grid3D::SLAVE_LIMIT_CONDITION, tBoolean, tCInt, tDimension, CORE_Integer::toString(), tReal, tUCInt, tUIndex, and tUInteger.

Referenced by EMM_DisplacementFVM_Interpolator::interpolateUAtEdge(), and EMM_DisplacementFVM_Interpolator::interpolateUAtVertices().

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

◆ faceMean()

tBoolean EMM_DisplacementFVM_Interpolator::faceMean ( const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUCInt f,
const tBoolean isPeriodic,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tDimension dim,
const tLimitCondition lc,
const tBoolean incU,
const tReal Upoints,
tReal Um 
)
staticinherited

compute the mean value of U defined on points at face f of the cell (xCell,yCell,zCell)

Parameters
[in]xCellx-index of the cell in [0,Nx[ to compute the mean of U
[in]yCelly-index of the cell in [0,Ny[ to compute the mean of U
[in]zCellz-index of the cell in [0,Nz[ to compute the mean of U
[in]fface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]isPeriodic: periodicity of the domain
[in]Px: number of points in x-direction
[in]Py: number of points in y-direction
[in]Pz: number of points in z-direction
[in]dim: dimension of each point of U
[in]lc: limit condition on points
[in]incU: size of incement of U (0: if constant)
[in]Upointsvalues of U at all points
[out]Ummean of U on cell
Returns
false if the mean of U is null. commpute the mean of U over the face f on the cell at segment indices xcell,yCell,zCell into Um

$ U_m = \frac{1}{4} \sum_{i=0}^{i=3} U[iP] $ with iP is the point of the face

References EMM_Grid3D::ELEMENT_POINTS, EMM_Grid3D::FACE_POINTS, EMM_Grid3D::GET_MASTER_PERIODIC_POINT(), EMM_Grid3D::getPeriodicIndicator(), null, EMM_Grid3D::POINTS_NUMBER_PER_FACE, EMM_Grid3D::SLAVE_LIMIT_CONDITION, tBoolean, tDimension, tLimitCondition, tReal, tUCInt, tUIndex, and tUInteger.

Referenced by EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementFVM_VTEGROperator::computeGradUAtCellByTaylorExpansionWithNeumannInterpolation(), EMM_DisplacementFVM_VGROperator::computeGradUAtFace(), EMM_DisplacementFVM_SSGROperator::computeGradUAtFaceByStokesIntegration(), computeGradUAtFaceByTaylorExpansion(), and EMM_DisplacementFVM_Interpolator::interpolateAlmostNullUAtFace().

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

◆ getAccelerator() [1/2]

EMM_RealField& EMM_DisplacementOperator::getAccelerator ( )
inlineinherited

◆ getAccelerator() [2/2]

const EMM_RealField& EMM_DisplacementOperator::getAccelerator ( ) const
inlineinherited

get the accelerator for reading

Returns
the accelerator field

References EMM_DisplacementOperator::setSolver(), and tString.

Here is the call graph for this function:

◆ getAdimensionizedSegmentsSize()

const tReal* EMM_DisplacementOperator::getAdimensionizedSegmentsSize ( ) const
inlineinherited

◆ getAdimensionizedVolumicMass()

const EMM_RealArray& EMM_DisplacementOperator::getAdimensionizedVolumicMass ( ) const
inlineinherited

get the adimensionized volumic mass per cell

Returns
the adimensionized volumic mass

References EMM_DisplacementOperator::mKappa.

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

Here is the caller graph for this function:

◆ getClassName() [1/2]

tString CORE_Object::getClassName ( ) const
inherited

return the class name of the object

Returns
the class name of the object

References tString.

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

Here is the caller graph for this function:

◆ getClassName() [2/2]

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

return the class name of the object

Parameters
identityStringthe identity string of the object
Returns
the class name

◆ getConstraintFaces()

const tFlag& EMM_DisplacementOperator::getConstraintFaces ( ) const
inlineinherited

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

Returns
the constraints faces

References EMM_DisplacementOperator::mConstraintFaces.

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

Here is the caller graph for this function:

◆ getConstraints() [1/2]

const EMM_RealField& EMM_DisplacementOperator::getConstraints ( ) const
inlineinherited

get the constraints field for reading

Returns
the constraints field

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

Here is the caller graph for this function:

◆ getConstraints() [2/2]

EMM_RealField& EMM_DisplacementOperator::getConstraints ( )
inlineinherited

get the constraints field for writing

Returns
the constraints field

◆ getDataField() [1/3]

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

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

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

Reimplemented from EMM_Operator.

References tBoolean.

◆ getDataField() [2/3]

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

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

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

Reimplemented from EMM_Operator.

References tBoolean.

◆ getDataField() [3/3]

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

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

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

Reimplemented from EMM_Operator.

References tBoolean.

◆ getDataFieldsNumber()

virtual tUSInt EMM_DisplacementOperator::getDataFieldsNumber ( ) const
inlinevirtualinherited

get the number of field used in the operator

Returns
the number of data

Reimplemented from EMM_Operator.

References EMM_DisplacementOperator::isSteadyState().

Here is the call graph for this function:

◆ getDataFieldSpace()

virtual tBoolean EMM_DisplacementFVMOperator::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; || 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

for index :

  • 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 EMM_Grid3D::ELEMENT, EMM_DisplacementOperator::getAccelerator(), EMM_RealField::getDimension(), EMM_DisplacementOperator::getDisplacement(), EMM_RealField::getSize(), and EMM_DisplacementOperator::getVelocity().

Here is the call graph for this function:

◆ getDisplacement() [1/3]

EMM_RealField& EMM_DisplacementOperator::getDisplacement ( )
inlineinherited

◆ getDisplacement() [2/3]

const EMM_RealField& EMM_DisplacementOperator::getDisplacement ( ) const
inlineinherited

get the displacement for reading

Returns
the displacement field

◆ getDisplacement() [3/3]

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

get the veolicty at time

Parameters
ttime to get velocity

References EMM_DisplacementOperator::isSteadyState().

Here is the call graph for this function:

◆ getDisplacementOnDirichletBoundary() [1/2]

const EMM_RealField& EMM_DisplacementFVMOperator::getDisplacementOnDirichletBoundary ( ) const
inlineinherited

get the displacement field at boundary for reading

Returns
the displacement at all points at time 0
  • U0 is null is U0 is null everywhere on dirichlet points
  • U0 is of size 1 if U0 is constant but not null on dirichlet points
  • U0 is of size of number of points in all other cases

Referenced by EMM_DisplacementFVMOperator::computeElasticStress(), EMM_DisplacementFVM_VIGROperator::computeElasticStressMatrixProduct(), EMM_DisplacementFVM_VIGROperator::computeElasticTensor(), EMM_DisplacementFVMOperator::computeElasticTensor(), and EMM_DisplacementFVM_VIGROperator::initializeEquilibriumSolver().

Here is the caller graph for this function:

◆ getDisplacementOnDirichletBoundary() [2/2]

EMM_RealField& EMM_DisplacementFVMOperator::getDisplacementOnDirichletBoundary ( )
inlineinherited

get the displacement field at boundary for writing

Returns
the displacament at all points at time 0
  • U0 is null is U0 is null everywhere on dirichlet points
  • U0 is of size 1 if U0 is constant but not null on dirichlet points
  • U0 is of size of number of points in all other cases

References EMM_DisplacementFVMOperator::buildDataOnDirichletBoundaryFaces(), EMM_DisplacementFVMOperator::buildDataOnNeumannBoundaryFaces(), EMM_DisplacementFVMOperator::discretize(), EMM_DisplacementFVMOperator::getMemorySize(), EMM_DisplacementFVMOperator::resetToInitialState(), EMM_DisplacementFVMOperator::setBoundaryFaceTypes(), tBoolean, and tULLInt.

Here is the call graph for this function:

◆ getDoubleEpsilon()

static tDouble CORE_Object::getDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tDouble type

Returns
the epsilon value for tDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getDoubleInfinity()

static tDouble CORE_Object::getDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getElasticTensor()

const EMM_2PackedSymmetricTensors& EMM_DisplacementOperator::getElasticTensor ( ) const
inlineinherited

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

Returns
the aelastic tensor

References EMM_DisplacementOperator::mEpsilonUt.

Referenced by EMM_DisplacementOperator::computeEnergy().

Here is the caller graph for this function:

◆ getElementVolume()

const tReal& EMM_Operator::getElementVolume ( ) const
inlineinherited

◆ getEpsilon()

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

get the epsilon value for T type

Returns
the epsilon value for T type

◆ getFloatEpsilon()

static tFloat CORE_Object::getFloatEpsilon ( )
inlinestaticinherited

get the epsilon value for tFloat type

Returns
the epsilon value for tFloat type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getFloatInfinity()

static tFloat CORE_Object::getFloatInfinity ( )
inlinestaticinherited

get the infinity value for tFloat type

Returns
the intinity value for tFloat type

◆ getIdentityString()

tString CORE_Object::getIdentityString ( ) const
inlineinherited

◆ getInfinity()

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

get the infinity for T type

Returns
the infinity value for T type

◆ getLambdaE()

const EMM_4SymmetricTensors& EMM_DisplacementOperator::getLambdaE ( ) const
inlineinherited

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

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

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

Here is the caller graph for this function:

◆ getLambdaEDoubleDotLambdaM()

const EMM_4Tensors& EMM_DisplacementOperator::getLambdaEDoubleDotLambdaM ( ) const
inlineinherited

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

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

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

Here is the caller graph for this function:

◆ getLambdaMDoubleDotLambdaE()

const EMM_4Tensors& EMM_DisplacementOperator::getLambdaMDoubleDotLambdaE ( ) const
inlineinherited

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

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

◆ getLambdaMDoubleDotLambdaEDoubleDotLambdaM()

const EMM_4SymmetricTensors& EMM_DisplacementOperator::getLambdaMDoubleDotLambdaEDoubleDotLambdaM ( ) const
inlineinherited

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

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

Referenced by EMM_MagnetostrictionOperator::computeEnergy().

Here is the caller graph for this function:

◆ getLDoubleEpsilon()

static tLDouble CORE_Object::getLDoubleEpsilon ( )
inlinestaticinherited

get the epsilon value for tLDouble type

Returns
the epsilon value for tLDouble type

Referenced by CORE_Test::testType().

Here is the caller graph for this function:

◆ getLDoubleInfinity()

static tDouble CORE_Object::getLDoubleInfinity ( )
inlinestaticinherited

get the infinity value for tDouble type

Returns
the infinity value for tDouble type

◆ getLimitConditionOnPoints()

const EMM_LimitConditionArray& EMM_DisplacementOperator::getLimitConditionOnPoints ( ) const
inlineinherited

◆ getLimitConditionOnPointsByReference()

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

◆ 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_DisplacementFVMOperator::getMemorySize ( ) const
virtualinherited

return the memory size in byte

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

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::getMemorySize(), and EMM_DisplacementFVMOperator::mU0.

Referenced by EMM_DisplacementFVMOperator::getDisplacementOnDirichletBoundary().

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:

◆ getNeighborsIndices() [1/2]

const CORE_UIndexMorseArray& EMM_DisplacementFVMOperator::getNeighborsIndices ( ) const
inlineinherited

◆ getNeighborsIndices() [2/2]

CORE_UIndexMorseArray& EMM_DisplacementFVMOperator::getNeighborsIndices ( )
inlineinherited

get the index of the neighbor cells for each cell of the mesh

Returns
a morse array of vector

References EMM_DisplacementFVMOperator::mNeighborsIndices.

◆ 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

◆ getSegmentsNumber()

const tUInteger* EMM_DisplacementFVMOperator::getSegmentsNumber ( ) const
inlineinherited

◆ getSharedPointer() [1/2]

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

◆ getSharedPointer() [2/2]

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

get the shared pointer of this class into p

Parameters
p: shared pointer of the class This

◆ getSolver()

MATH_Solver* EMM_DisplacementOperator::getSolver ( )
inlineinherited

get the solver of the system

Returns
the solver null by default

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

Here is the caller graph for this function:

◆ getThread()

static CORE_Thread& CORE_Object::getThread ( )
inlinestaticinherited

get the profilier

Returns
the profiler

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

Here is the caller graph for this function:

◆ getTimeIntegrationMethod()

const tFlag& EMM_DisplacementOperator::getTimeIntegrationMethod ( ) const
inlineinherited

get the time integration method for next time step

Returns
integration method in P1 | TE

References EMM_DisplacementOperator::mTimeIntegrationMethod.

◆ getTimeIntegrationOrder()

const tUCInt& EMM_DisplacementOperator::getTimeIntegrationOrder ( ) const
inlineinherited

get the time integration order for new field

Returns
integration order in {1,2}

References EMM_DisplacementOperator::mTimeIntegrationOrder.

◆ getTimeStep()

const tReal& EMM_DisplacementOperator::getTimeStep ( ) const
inlineinherited

get the time step for elasticty

Returns
the time step for elasticity

References EMM_DisplacementOperator::mDt.

◆ getTypeName()

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

get type name

Returns
the type name of the class

References tString.

◆ getVelocity() [1/3]

EMM_RealField& EMM_DisplacementOperator::getVelocity ( )
inlineinherited

◆ getVelocity() [2/3]

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

get the velocity at time

Parameters
ttime to get velocity

References EMM_DisplacementOperator::isSteadyState().

Here is the call graph for this function:

◆ getVelocity() [3/3]

const EMM_RealField& EMM_DisplacementOperator::getVelocity ( ) const
inlineinherited

get the velocity at t for reading

Returns
the velocity field

◆ initializeEquilibriumSolver()

void EMM_DisplacementOperator::initializeEquilibriumSolver ( const EMM_RealField U0)
protectedvirtualinherited

◆ interpolateAlmostNullUAtFace()

static void EMM_DisplacementFVM_Interpolator::interpolateAlmostNullUAtFace ( const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean  periodicity[3],
const CORE_UIndexMorseArray neighborsIndices,
const tUCInt f,
const tDimension dim,
const tReal Ui,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
tReal Umean 
)
inlinestaticinherited

compute interpolation of U at Face

Parameters
[in]xCellindex of the segment of cell in the x-direction within [0,Px-1[
[in]yCellindex of the segment of cell in the y-direction within [0,Py-1[
[in]zCellindex of the segment of cell in the z-direction within [0,Pz-1[
[in]Px: number of points in the direction x
[in]Py: number of points in the direction y
[in]Pz: number of points in the direction z
[in]periodicity: periodicty of the domain per direction
[in]neighborsIndices:indices of the neighbor of each cell
[in]fface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]dim: dimension of each point of U
[in]Uivalues of U at cell (xCell,yCell,zCell)
[in]lclimit condition on all points of the mesh
[in]incU0increment for U0 (0: for constant U0, 1:for not uniform U0)
[in]U0values of U0 of size dim when incU0=0 or dim x Px x Py x Pz
[out]Umean: mean of U on cell
Returns
false if U is null

commpute the mean value of U on the face when U is null outside the cell (xCell,yCell,zCell) into Um

$ U_m = \frac{1}{4} \sum_{i=0}^{i=3} U[iP] $ with iP is the point of the face

References EMM_DisplacementFVM_Interpolator::cellMean(), EMM_DisplacementFVM_Interpolator::faceMean(), EMM_DisplacementFVM_Interpolator::interpolateUAtFace(), null, tBoolean, tDimension, tLimitCondition, tReal, tUCInt, and tUInteger.

Referenced by EMM_DisplacementFVM_VOGGROperator::computeGradAlmostNullUAtCellByOstrogradskiGreenIntegration(), EMM_DisplacementFVM_VTEGROperator::computeGradAlmostNullUAtCellByTaylorExpansionWithNeumannInterpolation(), EMM_DisplacementFVM_SSGROperator::computeGradAlmostNullUAtFaceByStokesIntegration(), and EMM_DisplacementFVM_VOGGROperator::computeGradAlmostNullUAtNextCellByOstrogradskiGreenIntegration().

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

◆ interpolateAlmostNullUAtVertex()

static void EMM_DisplacementFVM_Interpolator::interpolateAlmostNullUAtVertex ( const tUInteger xP,
const tUInteger yP,
const tUInteger zP,
const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tBoolean  isPeriodic[3],
const CORE_UIndexMorseArray neighborIndices,
const tDimension dim,
const tUIndex iCell,
const tReal Ui,
const tLimitCondition lc,
const tLimitCondition LCp,
tReal Up 
)
inlinestaticinherited

References EMM_DisplacementFVM_Interpolator::interpolateUAtVertex(), and null.

Referenced by EMM_DisplacementFVM_SSGROperator::computeGradAlmostNullUAtFaceByStokesIntegration().

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

◆ interpolateUAtEdge()

void EMM_DisplacementFVM_Interpolator::interpolateUAtEdge ( const tBoolean withConstraints,
const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean periodicity,
const tDimension dim,
const tUCInt l,
const tUCInt r,
const tReal Ucells,
const tReal Uc,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
const tUIndex Nc,
const CORE_UIndexMorseArray neighbors,
tReal iUc,
const tReal *&  iU 
) const
inherited

interpolate U at edge

Parameters
[in]withConstraints: true if there is a dirichlet constraint on edge
[in]xCellindex of the segment of cell in the x-direction within [0,Nx[ to compute the mean of U
[in]yCellindex of the segment of cell in the y-direction within [0,Ny[ to compute the mean of U
[in]zCellindex of the segment of cell in the z-direction within [0,Nz[ to compute the mean of U
[in]Px: number of points in x-direction
[in]Py: number of points in y-direction
[in]Pz: number of points in z-direction
[in]periodicity: periodicity of the mesh
[in]dim: dimension of each point of U
[in]lface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]rface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]UcellsU at all cells
[in]UcU at all cell (xCell,yCell,zCell)
[in]lclimit condition on points
[in]incU0: size of incement of U at Dirichlet Points (0: if constant)
[in]U0values of U at all points (especialy dirichlet points)
[in]Ncneighbors cell index of the cell (xCell,yCell,zCell)
[in]neighborsneighbors cell index of the all cells
[out]iUc: a working array pf size 3
[out]iU: a pointer to the interpolation of U where can be iUc or another values
Returns
false if U is null

Computes the mean of U at the edge using the values of U over all the cells connected to the edge.

References EMM_DisplacementFVM_Interpolator::DIRICHLET_FACE, EMM_DisplacementFVM_Interpolator::edgeMean(), EMM_Object::NULL_VALUE, tDimension, tReal, tUCInt, tUIndex, and EMM_Grid3D::UNMAGNETIZED_ELEMENT.

Referenced by computeGradUAtFaceByTaylorExpansion(), and EMM_DisplacementFVM_Interpolator::interpolateUAtVertices().

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

◆ interpolateUAtFace()

static void EMM_DisplacementFVM_Interpolator::interpolateUAtFace ( const tUInteger xCell,
const tUInteger yCell,
const tUInteger zCell,
const tUInteger Px,
const tUInteger Py,
const tUInteger Pz,
const tBoolean  periodicity[3],
const CORE_UIndexMorseArray neighborsIndices,
const tUCInt f,
const tDimension dim,
const tReal Ucells,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
tReal Umean 
)
inlinestaticinherited

compute interpolation of U at Face

Parameters
[in]xCellindex of the segment of cell in the x-direction within [0,Px-1[
[in]yCellindex of the segment of cell in the y-direction within [0,Py-1[
[in]zCellindex of the segment of cell in the z-direction within [0,Pz-1[
[in]Px: number of points in the direction x
[in]Py: number of points in the direction y
[in]Pz: number of points in the direction z
[in]periodicity: periodicty of the domain per direction
[in]neighborsIndices:indices of the neighbor of each cell
[in]fface index in [0,FACES_NUMBER_PER_ELEMENT[
[in]dim: dimension of each point of U
[in]Ucellsvalues of U at all cells
[in]lclimit condition on all points of the mesh
[in]incU0increment for U0 (0: for constant U0, 1:for not uniform U0)
[in]U0values of U0 of size dim when incU0=0 or dim x Px x Py x Pz
[out]Umean: mean of U on cell
Returns
false if U is null

commpute the mean of U over the face f on the cell at segment indices xcell,yCell,zCell into Um

$ U_{mean} = \frac{1}{4} \sum_{i=0}^{i=3} U[iP] $ with iP is the point of the face

References null.

Referenced by EMM_DisplacementFVM_VTEGROperator::computeGradUAtCellByTaylorExpansionWithNeumannInterpolation(), and EMM_DisplacementFVM_Interpolator::interpolateAlmostNullUAtFace().

Here is the caller graph for this function:

◆ interpolateUAtVertex()

static void EMM_DisplacementFVM_Interpolator::interpolateUAtVertex ( tUInteger  xP,
tUInteger  yP,
tUInteger  zP,
const tUInteger Nx,
const tUInteger Ny,
const tUInteger Nz,
const tBoolean  isPeriodic[3],
const CORE_UIndexMorseArray neighborIndices,
const tDimension dim,
const tReal Ucells,
const tLimitCondition lc,
const tBoolean incU0,
const tReal U0,
const tLimitCondition LCp,
tReal Up 
)
inlinestaticinherited

References EMM_DisplacementFVM_Interpolator::interpolateUAtVertex(), and null.

Here is the call graph for this function:

◆ interpolateUAtVertices() [1/2]

static void EMM_DisplacementFVM_Interpolator::interpolateUAtVertices ( const tBoolean withDirichletPoints,
const tUInteger  N[3],
const tBoolean  isPeriodic[3],
const CORE_UIndexMorseArray neighborIndices,
const EMM_RealField Ucells,
const EMM_LimitConditionArray limitConditionOnPoints,
const EMM_RealField U0,
EMM_RealField Up 
)
inlinestaticinherited

◆ interpolateUAtVertices() [2/2]

void EMM_DisplacementFVM_Interpolator::interpolateUAtVertices ( const tBoolean withDirichletPoints,
const tUInteger  N[3],
const tBoolean  isPeriodic[3],
const CORE_UIndexMorseArray neighborIndices,
const tUIndex nCells,
const tDimension dim,
const tReal U,
const EMM_LimitConditionArray limitConditionOnPoints,
const EMM_RealField U0,
EMM_RealField Up 
)
staticinherited

◆ is32Architecture()

static tBoolean CORE_Object::is32Architecture ( )
inlinestaticinherited

return true if the machine is a 32 bits machine

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

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

Referenced by CORE_Test::testType().

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

◆ is64Architecture()

static tBoolean CORE_Object::is64Architecture ( )
inlinestaticinherited

return true if the machine is a 64 bits machine

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

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

Here is the caller graph for this function:

◆ isAffine()

virtual tBoolean EMM_DisplacementOperator::isAffine ( ) const
inlinevirtualinherited

return true if the operator is either constant or linear

Returns
true if the operator is either constant or linear

Implements EMM_Operator.

◆ isCubicVolume()

const tBoolean& EMM_Operator::isCubicVolume ( ) const
inlineinherited

return the true if the element is cubic

Returns
true is all size of the volum is same

References EMM_Operator::mIsCubic.

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

Here is the caller graph for this function:

◆ isDirectionPeriodic()

const tBoolean* EMM_DisplacementFVMOperator::isDirectionPeriodic ( ) const
inlineinherited

◆ isEquilibriumMatrixReconditioned()

const tBoolean& EMM_DisplacementOperator::isEquilibriumMatrixReconditioned ( ) const
inlineinherited

get if the equilibrium matrix is conditioned

Returns
true to recondition the equilibrium matrix

References EMM_DisplacementOperator::mIsEquilibriumMatrixConditioned.

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

Here is the caller graph for this function:

◆ isEquilibriumState()

tBoolean EMM_DisplacementOperator::isEquilibriumState ( ) const
inlineinherited

◆ isFrozenState()

tBoolean EMM_DisplacementOperator::isFrozenState ( ) const
inlineinherited

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

Here is the caller graph for this function:

◆ isGhostCellOn()

const tBoolean& EMM_DisplacementFVMOperator::isGhostCellOn ( ) const
inlineinherited

◆ isGradientComputationable()

virtual tBoolean EMM_DisplacementOperator::isGradientComputationable ( ) const
inlinevirtualinherited

return true if the gradient of the magnetic excitation is computationable

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

Implements EMM_Operator.

◆ isInstanceOf() [1/2]

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

test if the clas T is an instance of this class

Returns
true if the object is an instance of T

References null.

Referenced by MATH_ToeplitzTest::toeplitzTest().

Here is the caller graph for this function:

◆ isInstanceOf() [2/2]

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

test if the object is an instance of className

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

References CORE_Object::getIdentityString().

Here is the call graph for this function:

◆ isMemoryChecked()

static const tBoolean& CORE_Object::isMemoryChecked ( )
inlinestaticinherited

get if the memory checking is used

Returns
true: if the memory checking is used.

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

Referenced by main().

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

◆ isSteadyState()

tBoolean EMM_DisplacementOperator::isSteadyState ( ) const
inlineinherited

◆ NewEquilibriumMatrix()

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

create the equilibrium matrix

Returns
the equilibrium matrix

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

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

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

◆ nullProjectionOnDirichletBoundary() [1/2]

void EMM_DisplacementOperator::nullProjectionOnDirichletBoundary ( EMM_RealField V) const
inherited

project the velocity to 0 on dirichlet boundary points

Parameters
Vthe field

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

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

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

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

◆ nullProjectionOnDirichletBoundary() [2/2]

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

project the velocity to 0 on dirichlet boundary points

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

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

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

Here is the call graph for this function:

◆ out()

static CORE_Out& CORE_Object::out ( )
inlinestaticinherited

get the output

Returns
the output stream

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

Here is the caller graph for this function:

◆ periodicProjection()

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

make the periodic projection of the field V

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

V at slave point is set to V at master point

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

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

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

◆ pointer2String()

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

return the string representation of a pointer

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

References tString.

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

Here is the caller graph for this function:

◆ printObjectsInMemory() [1/2]

void CORE_Object::printObjectsInMemory ( ostream &  f)
staticinherited

print object in memory

Parameters
f: output to print the objects in memory

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

Here is the call graph for this function:

◆ printObjectsInMemory() [2/2]

static void CORE_Object::printObjectsInMemory ( )
inlinestaticinherited

print object in memory in the standart output

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

Here is the caller graph for this function:

◆ projectionOnDirichletBoundary() [1/2]

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

project the velocity to 0 on dirichlet boundary points

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

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

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

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

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

◆ projectionOnDirichletBoundary() [2/2]

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

project the velocity to 0 on dirichlet boundary points

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

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

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

Here is the call graph for this function:

◆ resetOut()

static void CORE_Object::resetOut ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ resetThread()

static void CORE_Object::resetThread ( )
inlinestaticinherited

reset the output stream

Referenced by run().

Here is the caller graph for this function:

◆ resetToInitialState()

tBoolean EMM_DisplacementFVMOperator::resetToInitialState ( const EMM_LandauLifschitzSystem system)
virtualinherited

reset the operator to initial step

Parameters
systemthe data to initialize the operator
Returns
true if it succeeds
  • call EMM_DisplacementOperator::resetToInitialStep()
  • project U & V on centered cells
  • recompute the accelerator vector at time 0

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::getDisplacement(), EMM_LandauLifschitzSystem::getMagnetizationField(), EMM_LandauLifschitzSystem::getMesh(), EMM_LandauLifschitzSystem::getSigma(), EMM_DisplacementOperator::getVelocity(), EMM_RealField::pointDataToCellData(), EMM_DisplacementOperator::resetToInitialState(), tBoolean, and EMM_DisplacementOperator::updateAtNextTimeStep().

Referenced by EMM_DisplacementFVMOperator::getDisplacementOnDirichletBoundary().

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

◆ restore()

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

restore the operator data from file(s)

Parameters
systemgeneral datat of system to restore the backup
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

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementFVMOperator::mU0, CORE_Object::out(), CORE_Out::println(), EMM_DisplacementOperator::restore(), tBoolean, and tString.

Referenced by EMM_DisplacementFVMOperator::isGhostCellOn().

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

◆ setCFL()

void EMM_DisplacementOperator::setCFL ( const tReal cfl)
inlineinherited

◆ setConstraints() [1/4]

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

set constraints from file defined on points

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

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setConstraints() [2/4]

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

set constraints field

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

References EMM_RealField::setValue().

Here is the call graph for this function:

◆ setConstraints() [3/4]

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

set initial constriants field

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

References EMM_RealField::initField().

Here is the call graph for this function:

◆ setConstraints() [4/4]

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

set constraints

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

◆ setDisplacement() [1/2]

void EMM_DisplacementOperator::setDisplacement ( const EMM_RealField u)
inlineinherited

set the displacement field

Parameters
u: is the displacement field defined ob points

◆ setDisplacement() [2/2]

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

set the displacement field to an uniform vector defied on points

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

◆ setElasticityState()

void EMM_DisplacementOperator::setElasticityState ( const tFlag v)
inlineinherited

set the elasticity state

Parameters
vthe elasticity state eithet equilibrium | steady | unsteady

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setInitialDisplacement() [1/4]

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

set initial displacement field.

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

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setInitialDisplacement() [2/4]

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

set initial displacement field

Parameters
data: uniform data for displacement

References EMM_RealField::setValue().

Here is the call graph for this function:

◆ setInitialDisplacement() [3/4]

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

set initial displacement field

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

References EMM_RealField::initField().

Here is the call graph for this function:

◆ setInitialDisplacement() [4/4]

void EMM_DisplacementOperator::setInitialDisplacement ( const EMM_RealField data)
inlineinherited

set initial displacement field

Parameters
data: data for displacement

◆ setInitialVelocity() [1/4]

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

set initial velocity field

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

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setInitialVelocity() [2/4]

void EMM_DisplacementOperator::setInitialVelocity ( const EMM_RealField data)
inlineinherited

set initial velocity field

Parameters
datavelocity field

◆ setInitialVelocity() [3/4]

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

set initial velocity field

Parameters
data: uniform data for velocity

References EMM_RealField::setValue().

Here is the call graph for this function:

◆ setInitialVelocity() [4/4]

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

set initial velocity field

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

References EMM_RealField::initField().

Here is the call graph for this function:

◆ setIsEquilibriumMatrixReconditioned()

void EMM_DisplacementOperator::setIsEquilibriumMatrixReconditioned ( const tBoolean c)
inlineinherited

set to true if the equilibrium matrix is conditioned

Parameters
ctrue to recondition the equilibrium matrix

◆ setIsGhostCellOn()

void EMM_DisplacementFVMOperator::setIsGhostCellOn ( const tBoolean isOn)
inlineinherited

set true to considered ghost cells on boundary faces

Parameters
isOntrue to consider ghost cells

◆ setIsMemoryChecked()

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

set if the memory checking is used

Parameters
v: true to check memory

Referenced by main().

Here is the caller graph for this function:

◆ setLimitConditionOnPoints() [1/2]

void EMM_DisplacementOperator::setLimitConditionOnPoints ( const EMM_IntArray lc)
inlineinherited

set the limit condition each point is set to

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

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setLimitConditionOnPoints() [2/2]

void EMM_DisplacementOperator::setLimitConditionOnPoints ( const tLimitCondition lc)
inlineinherited

set the limit condition to all points

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

◆ 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_DisplacementFVMOperator::setSolver ( const tString solverName)
virtualinherited

set the solver

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

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

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::setSolver(), and tString.

Referenced by EMM_DisplacementFVMOperator::spaceRelevant().

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

◆ setSolver() [2/2]

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

set the solver

Parameters
solver: the solver

◆ setThis()

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

set this weak shared pointer called toDoAfterThis setting method

Parameters
p: shared pointer of the class This

References CORE_Object::toDoAfterThisSetting().

Here is the call graph for this function:

◆ setThread()

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

set the thread

Parameters
threadthe shared pointer to the thread

References null.

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

Here is the caller graph for this function:

◆ setTimeIntegrationMethod()

void EMM_DisplacementOperator::setTimeIntegrationMethod ( const tFlag m)
inlineinherited

set the time integration method for new field

Parameters
mintegration method in P1 | TE

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setTimeIntegrationOrder()

void EMM_DisplacementOperator::setTimeIntegrationOrder ( const tInt o)
inlineinherited

set the time integration order for new field

Parameters
ointegration ordre in {1,2}

Referenced by EMMG_ClassFactory::NewInstance().

Here is the caller graph for this function:

◆ setVelocity() [1/2]

void EMM_DisplacementOperator::setVelocity ( const EMM_RealField v)
inlineinherited

set the velocity of dicplacement defined on points

Parameters
v: is the displacement velocity field

◆ setVelocity() [2/2]

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

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

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

◆ solveAcceleratorSystem()

virtual tBoolean EMM_DisplacementFVMOperator::solveAcceleratorSystem ( EMM_RealField V)
inlineprotectedvirtualinherited

solve the velocity from the mass matrix : M.X=V V:=X

Parameters
V
  • input : the stress
  • output : the velocity
Returns
true if the solving succeeds

Do nothing because for the FVM method, the mass matrix is identity

Implements EMM_DisplacementOperator.

◆ SP_OBJECT()

EMM_DisplacementFVM_STEGROperator::SP_OBJECT ( EMM_DisplacementFVM_STEGROperator  )
private

◆ spaceProjection() [1/3]

virtual void EMM_DisplacementFVMOperator::spaceProjection ( EMM_RealField V) const
inlineprotectedvirtualinherited

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

Do nothing because there is no dirichlet points within FVM methods

Implements EMM_DisplacementOperator.

◆ spaceProjection() [2/3]

virtual void EMM_DisplacementFVMOperator::spaceProjection ( const EMM_RealField V0,
EMM_RealField V 
) const
inlineprotectedvirtualinherited

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

Do nothing because there is no dirichlet points within FVM methods

Implements EMM_DisplacementOperator.

◆ spaceProjection() [3/3]

virtual void EMM_DisplacementFVMOperator::spaceProjection ( const tUIndex nPoints,
const tDimension dim,
const tReal V0,
tReal V 
) const
inlinevirtualinherited

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

Parameters
[in]nPointsnumber of points
[in]dimdimension of each points
[in]V0values of the orthognal space of the linear solving sapce
[in,out]Vvalues of the field to project in linear solving space It is used in the constraint stress computing method EMM_BlockEquilibriumMatrix::product()

Do nothing because there is no dirichlet points within FVM methods

◆ spaceRelevant()

virtual void EMM_DisplacementFVMOperator::spaceRelevant ( EMM_RealField V) const
inlineprotectedvirtualinherited

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

Do nothing because there is no slave points within FVM methods

Implements EMM_DisplacementOperator.

References EMM_DisplacementFVMOperator::computeEquilibriumMatrixDiagonalConditioner(), EMM_DisplacementFVMOperator::computeGradAlmostNullUAtFace(), EMM_DisplacementFVMOperator::computeGradUAtCell(), EMM_DisplacementFVMOperator::computeGradUAtFace(), EMM_DisplacementFVMOperator::setSolver(), tBoolean, tDimension, tLimitCondition, tReal, tString, tUCInt, tUIndex, and tUInteger.

Here is the call graph for this function:

◆ toDoAfterThisSetting()

virtual void EMM_DisplacementFVMOperator::toDoAfterThisSetting ( )
inlineprotectedvirtualinherited

to to after thios setting

Reimplemented from EMM_DisplacementOperator.

References EMM_DisplacementOperator::toDoAfterThisSetting().

Here is the call graph for this function:

◆ toString()

virtual tString EMM_DisplacementFVM_STEGROperator::toString ( ) const
inlineprivatevirtual

turn the class into string

Reimplemented from EMM_DisplacementFVM_VTEGROperator.

References EMM_DisplacementFVMOperator::toString(), and tString.

Here is the call graph for this function:

◆ updateAtNextTimeStep()

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

update the data of operator at next time step

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

Implements EMM_Operator.

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

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

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

Member Data Documentation

◆ DIRICHLET_FACE

const tUIndex EMM_DisplacementFVM_Interpolator::DIRICHLET_FACE =CORE_Object::getMaxIndex()+1
staticprotectedinherited

◆ EQUILIBRIUM_STATE

const tFlag EMM_DisplacementOperator::EQUILIBRIUM_STATE =3
staticinherited

◆ FROZEN_STATE

const tFlag EMM_DisplacementOperator::FROZEN_STATE =1
staticinherited

◆ Gamma

const tReal EMM_Object::Gamma =-1.7e11
staticinherited

◆ Mu0

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

◆ NEUMANN_FACE

const tUIndex EMM_DisplacementFVM_Interpolator::NEUMANN_FACE =CORE_Object::getMaxIndex()
staticprotectedinherited

◆ NULL_VALUE

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

◆ P1

const tFlag EMM_DisplacementOperator::P1 =1
staticinherited

◆ TE

const tFlag EMM_DisplacementOperator::TE =0
staticinherited

◆ UNSTEADY_STATE

const tFlag EMM_DisplacementOperator::UNSTEADY_STATE =0
staticinherited

◆ X

const tDimension EMM_Object::X =0
staticinherited

◆ Y

const tDimension EMM_Object::Y =1
staticinherited

◆ Z

const tDimension EMM_Object::Z =2
staticinherited

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