C++ main module for emicrom Package  1.0
EMM_DisplacementFVM_VIGROperator.h
Go to the documentation of this file.
1 #ifndef EMM_DisplacementFVM_VIGROperator_H
2 #define EMM_DisplacementFVM_VIGROperator_H
3 
5 
25 
27  // ATTRIBUTES
28 
29 
30 private:
31 
32 
33 
34 public:
35 
36 
37  // ASSOCIATION
38 
39 private:
40 
41  //gradient U at cells
42  mutable SP::EMM_RealField mUp;
43 
44 
45 
46 protected:
47 
48  // METHODS
49 
50  // CONSTRUCTORS
51 
55 
56  // DESTRUCTORS
57 
61 
62 
63 public:
64 
65  //Get methods
66 
67 
68 
72  inline const EMM_RealField& getUVertexInterpolation() const {
73  return *mUp.get();
74  }
75 
80  return *mUp.get();
81  }
82 
83 
84 
85 
86 
87  //Fields methods
88  //=============
89 
99 
100  //interpolate U at vertices from the displacement fields
105  U,
108  *mUp.get());
109 
111 
112  }
121  virtual void initializeEquilibriumSolver( const EMM_RealField& U0) {
122  //Z=0;
124  Z.setDimension(getDisplacement().getDimension());
125  Z.setSize(getDisplacement().getSize());
126  Z.initField(0.);
127 
128  //interpolate U at vertices only from displacement field
133  Z,
136  *mUp.get());
137 
139  }
140 
150  virtual void computeElasticStressMatrixProduct(const tUIndex& nData,const tDimension& dim, const tReal* U,tReal* D) const {
151 
152  //interpolate U at vertices from the displacement fields
157  nData,dim,U,
159  *mUp.get());
160 
162  }
163 
164 
165 };
166 
167 #endif
168 
virtual ~EMM_DisplacementFVM_VIGROperator(void)
destroy
Definition: EMM_DisplacementFVM_VIGROperator.cpp:20
const tUInteger * getSegmentsNumber() const
get number of segments in each direction
Definition: EMM_DisplacementFVMOperator.h:298
virtual void initializeEquilibriumSolver(const EMM_RealField &U0)
initialize the equilibrium solver
Definition: EMM_DisplacementOperator.cpp:1423
EMM_DisplacementFVM_VIGROperator(void)
create
Definition: EMM_DisplacementFVM_VIGROperator.cpp:6
EMM_RealField & getAccelerator()
get the accelerator for writing
Definition: EMM_DisplacementOperator.h:970
EMM_RealField & getDisplacement()
get the displacement for writing
Definition: EMM_DisplacementOperator.h:911
virtual void computeElasticStressMatrixProduct(const tUIndex &nData, const tDimension &dim, const tReal *U, tReal *D) const
compute the elastic stress Matrix product
Definition: EMM_DisplacementFVM_VIGROperator.h:150
SP::EMM_RealField mUp
Definition: EMM_DisplacementFVM_VIGROperator.h:42
virtual void initializeEquilibriumSolver(const EMM_RealField &U0)
initialize the equilibrium solver
Definition: EMM_DisplacementFVM_VIGROperator.h:121
const EMM_LimitConditionArray & getLimitConditionOnPoints() const
Definition: EMM_DisplacementOperator.h:583
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)
Definition: EMM_DisplacementFVM_Interpolator.h:202
#define tDimension
Definition: EMM_Types.h:10
DEFINE_SPTR(EMM_DisplacementFVM_VIGROperator)
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
This class describes a morse array of symmetric tensors of 2 order in packed form.
Definition: EMM_2PackedSymmetricTensors.h:20
const tBoolean * isDirectionPeriodic() const
get priodic directions
Definition: EMM_DisplacementFVMOperator.h:304
EMM_RealField & getUVertexInterpolation()
get the displacement at points for writing
Definition: EMM_DisplacementFVM_VIGROperator.h:79
virtual void initField(const tReal &f)=0
init the field to uniform value in each direction
This class describes the displacement operator defined on the cells of the mesh with Volume Gradient ...
Definition: EMM_DisplacementFVM_VIGROperator.h:24
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
#define tUIndex
Definition: types.h:126
const EMM_RealField & getDisplacementOnDirichletBoundary() const
get the displacement field at boundary for reading
Definition: EMM_DisplacementFVMOperator.h:188
virtual void computeElasticTensor(const EMM_RealField &U, EMM_2PackedSymmetricTensors &eTensor)
compute the elastic tensor for all cells
Definition: EMM_DisplacementFVMOperator.h:606
static const tDimension Z
Definition: EMM_Object.h:35
void setDimension(const tDimension &d)
set the dimension
Definition: EMM_RealField.h:158
const EMM_RealField & getUVertexInterpolation() const
get the displacement at points for reading
Definition: EMM_DisplacementFVM_VIGROperator.h:72
This class describes a real field.
Definition: EMM_RealField.h:21
virtual void setSize(const tUIndex &n)=0
set the size
#define tReal
Definition: types.h:118
SP_OBJECT(EMM_DisplacementFVM_VIGROperator)
virtual void computeElasticTensor(const EMM_RealField &U, EMM_2PackedSymmetricTensors &eTensor)
compute elastic tensor
Definition: EMM_DisplacementFVM_VIGROperator.h:98
This class describes the displacement operator defined on the cells of the mesh with Volume Gradient ...
Definition: EMM_DisplacementFVM_VGROperator.h:25