1 #ifndef EMM_DisplacementFVMOperator_H 2 #define EMM_DisplacementFVMOperator_H 370 dFieldType=CORE_Object::getTypeName<tReal>();
516 tReal gradU[9])
const=0;
554 const tReal * Ucells,
557 tReal gradU[9])
const=0;
592 tReal gradU[9])
const=0;
This class describes a grid3d mesh.
Definition: EMM_Grid3D.h:48
SP_OBJECT(EMM_DisplacementFVMOperator)
virtual tString toString() const
turn the class into string
Definition: EMM_DisplacementFVMOperator.h:721
const tUInteger * getSegmentsNumber() const
get number of segments in each direction
Definition: EMM_DisplacementFVMOperator.h:298
virtual tUIndex getSize() const =0
return the size of the field
#define tLimitCondition
Definition: EMM_Types.h:19
#define tUInteger
Definition: types.h:91
virtual tBoolean discretize(const EMM_LandauLifschitzSystem &system)
discretize and initialize the operator
Definition: EMM_DisplacementFVMOperator.cpp:440
virtual tBoolean solveAcceleratorSystem(EMM_RealField &V)
solve the velocity from the mass matrix : M.X=V V:=X
Definition: EMM_DisplacementFVMOperator.h:406
This class describes the displacement operator defined on the cells of the mesh.
Definition: EMM_DisplacementFVMOperator.h:90
tBoolean mIsGhostCellOn
Definition: EMM_DisplacementFVMOperator.h:122
virtual tBoolean resetToInitialState(const EMM_LandauLifschitzSystem &system)
reset the operator to initial step
Definition: EMM_DisplacementFVMOperator.cpp:503
void setIsGhostCellOn(const tBoolean &isOn)
set true to considered ghost cells on boundary faces
Definition: EMM_DisplacementFVMOperator.h:310
EMM_RealField & getAccelerator()
get the accelerator for writing
Definition: EMM_DisplacementOperator.h:970
virtual void setSolver(const tString &solverName)
set the solver
Definition: EMM_DisplacementFVMOperator.cpp:587
EMM_RealField & getDisplacement()
get the displacement for writing
Definition: EMM_DisplacementOperator.h:911
virtual tBoolean restore(const EMM_LandauLifschitzSystem &system, const tString &prefix, const tString &suffix, const tString &ext)
restore the operator data from file(s)
Definition: EMM_DisplacementFVMOperator.cpp:568
SP::EMM_RealField mU0
Definition: EMM_DisplacementFVMOperator.h:119
virtual ~EMM_DisplacementFVMOperator(void)
destroy
Definition: EMM_DisplacementFVMOperator.cpp:38
#define tUCInt
Definition: types.h:21
#define tUSInt
Definition: types.h:28
virtual void spaceProjection(EMM_RealField &V) const
make the projection of the vector B into the solving linear space
Definition: EMM_DisplacementFVMOperator.h:417
#define tBoolean
Definition: types.h:139
virtual tULLInt getMemorySize() const
return the memory size in byte
Definition: EMM_DisplacementFVMOperator.cpp:538
tBoolean mPeriodicDirections[3]
Definition: EMM_DisplacementFVMOperator.h:103
virtual void computeElasticTensor(const EMM_RealField &U, EMM_2PackedSymmetricTensors &eTensor)
compute the elastic tensor for all cells
Definition: EMM_DisplacementOperator.cpp:1623
virtual tString toString() const
turn the martix into string
Definition: EMM_DisplacementOperator.h:1655
static const tFlag ELEMENT
Definition: EMM_Grid3D.h:69
CORE_UIndexMorseArray mNeighborsIndices
Definition: EMM_DisplacementFVMOperator.h:115
#define tDimension
Definition: EMM_Types.h:10
virtual void spaceRelevant(EMM_RealField &V) const
make the relevment of the vector B from the solving linear space.
Definition: EMM_DisplacementFVMOperator.h:453
const CORE_UIndexMorseArray & getNeighborsIndices() const
get the index of the neighbor cells for each cell of the mesh for reading
Definition: EMM_DisplacementFVMOperator.h:285
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 to elastic stress S
Definition: EMM_DisplacementFVMOperator.cpp:1427
This class describes a morse array of symmetric tensors of 2 order in packed form.
Definition: EMM_2PackedSymmetricTensors.h:20
void buildDataOnDirichletBoundaryFaces(const EMM_LimitConditionArray &limitConditionOnPoints, const EMM_RealField &Ut, EMM_RealField &U0) const
build the data on Dirichlet boundary faces
Definition: EMM_DisplacementFVMOperator.cpp:44
This class describes the displacement operator defined on the data of the mesh.
Definition: EMM_DisplacementOperator.h:193
const tBoolean * isDirectionPeriodic() const
get priodic directions
Definition: EMM_DisplacementFVMOperator.h:304
tReal computeStressConstraintEnergy(const EMM_RealField &Uf) const
compute the stress constraint energy on boundary
Definition: EMM_DisplacementFVMOperator.h:709
virtual tReal computePotentialEnergy(const EMM_RealField &U) const
compute the potential energy to the space variation of the displacement
Definition: EMM_DisplacementFVMOperator.cpp:1715
This class describes a resolution of landau-lifschitz system of the Core Package for E-MicroM...
Definition: EMM_LandauLifschitzSystem.h:88
Definition: EMM_DisplacementFVM_Interpolator.h:16
tUInteger mSegmentsNumber[3]
Definition: EMM_DisplacementFVMOperator.h:100
This class describes a masked vector.
Definition: MATH_Vector.h:16
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
Definition: EMM_DisplacementFVMOperator.cpp:1067
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 *Ni, const tDimension &dim, const tReal *Ucells, const tReal *Ui, const tLimitCondition *lc, const tBoolean &incU0, const tReal *U0, tReal gradU[9]) const =0
compute the value of Grad U on cell
#define tUIndex
Definition: types.h:126
This class describes a real array.
Definition: EMM_RealArray.h:16
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 =0
compute the gradient U at the center of the face f of a cell when U is almost null ...
const tDimension & getDimension() const
get the dimension
Definition: EMM_RealField.h:553
const EMM_RealField & getDisplacementOnDirichletBoundary() const
get the displacement field at boundary for reading
Definition: EMM_DisplacementFVMOperator.h:188
virtual tBoolean backup(const tString &prefix, const tString &suffix, const tString &ext) const
backup of the operator data into file(s) used for restoring
Definition: EMM_DisplacementFVMOperator.cpp:549
virtual tReal computeCineticEnergy(const EMM_RealField &V) const
compute the energy of the magnetostriction operator at current displacement and velocity ...
Definition: EMM_DisplacementFVMOperator.cpp:1721
#define tString
Definition: types.h:135
virtual void computeElasticTensor(const EMM_RealField &U, EMM_2PackedSymmetricTensors &eTensor)
compute the elastic tensor for all cells
Definition: EMM_DisplacementFVMOperator.h:606
virtual void toDoAfterThisSetting()
method called after the setting of the shared pointer this method can only be called once...
Definition: EMM_DisplacementOperator.h:345
CORE_UIndexMorseArray & getNeighborsIndices()
get the index of the neighbor cells for each cell of the mesh
Definition: EMM_DisplacementFVMOperator.h:291
EMM_RealField & getVelocity()
get the velocity for writing
Definition: EMM_DisplacementOperator.h:949
virtual void spaceProjection(const EMM_RealField &V0, EMM_RealField &V) const
make the projection of the vector B into the solving linear space
Definition: EMM_DisplacementFVMOperator.h:428
const tBoolean & isGhostCellOn() const
get true to considered ghost cells on boundary faces
Definition: EMM_DisplacementFVMOperator.h:317
void setBoundaryFaceTypes(const EMM_Grid3D &mesh, const EMM_LimitConditionArray &limitConditionOnPoints, CORE_UIndexMorseArray &neighborsIndices) const
set the boundary face type into indices
Definition: EMM_DisplacementFVMOperator.cpp:305
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
Definition: EMM_DisplacementFVMOperator.h:442
virtual void computeEquilibriumMatrixDiagonalConditioner(MATH_Vector &D) const
compute the diagonal conditioner
Definition: EMM_DisplacementFVMOperator.cpp:600
void buildDataOnNeumannBoundaryFaces(const EMM_LimitConditionArray &limitConditionOnPoints, EMM_RealField &C) const
build the data on Neumann boundary faces
Definition: EMM_DisplacementFVMOperator.cpp:167
EMM_DisplacementFVMOperator(void)
create
Definition: EMM_DisplacementFVMOperator.cpp:11
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 =0
compute the gradient U at the center of the face f of a cell. f is either an interior face or a Diric...
#define tULLInt
Definition: types.h:45
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
Definition: EMM_DisplacementFVMOperator.h:166
This class describes a real field.
Definition: EMM_RealField.h:21
DEFINE_SPTR(EMM_DisplacementFVMOperator)
#define tReal
Definition: types.h:118
virtual void toDoAfterThisSetting()
to to after thios setting
Definition: EMM_DisplacementFVMOperator.h:145
EMM_RealField & getDisplacementOnDirichletBoundary()
get the displacement field at boundary for writing
Definition: EMM_DisplacementFVMOperator.h:197
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.
Definition: EMM_DisplacementFVMOperator.h:368
#define tFlag
Definition: types.h:74