58PFEMElement :: PFEMElement(
int n,
Domain *aDomain) :
63PFEMElement :: ~PFEMElement()
69 FMElement :: initializeFrom(ir, priority);
87 if ( mtrx == LumpedMassMatrix ) {
90 }
else if ( mtrx == StiffnessMatrix ) {
93 }
else if ( mtrx == TangentStiffnessMatrix ) {
96 }
else if ( mtrx == PressureGradientMatrix ) {
99 }
else if ( mtrx == DivergenceMatrix ) {
102 }
else if ( mtrx == PressureLaplacianMatrix ) {
106 OOFEM_ERROR(
"giveCharacteristicMatrix: Unknown Type of characteristic mtrx.");
122 if ( mtrx == ExternalForcesVector ) {
125 }
else if ( mtrx == PressureGradientVector ) {
133 }
else if ( mtrx == MassVelocityVector ) {
141 }
else if ( mtrx == LaplaceVelocityVector ) {
149 }
else if ( mtrx == MassAuxVelocityVector ) {
155 }
else if ( mtrx == DivergenceAuxVelocityVector ) {
161 }
else if ( mtrx == DivergenceVelocityVector ) {
167 }
else if ( mtrx == LumpedMassMatrix ) {
171 OOFEM_ERROR(
"giveCharacteristicVector: Unknown Type of characteristic mtrx.");
178 if ( type != ExternalForcesVector ) {
192PFEMElement :: checkConsistency()
213PFEMElement :: printOutputAt(FILE *file,
TimeStep *tStep)
216#ifdef __MPI_PARALLEL_MODE
219 fprintf(file,
"element %d :\n",
number);
222 iRule->printOutputAt(file, tStep);
235 if ( type == IST_Velocity ) {
239 answer.
at(indx++) = n->giveDof(dofindx)->giveUnknown(VM_Total, atTime);
243 answer.
at(indx++) = n->giveDof(dofindx)->giveUnknown(VM_Total, atTime);
247 answer.
at(indx++) = n->giveDof(dofindx)->giveUnknown(VM_Total, atTime);
251 }
else if ( type == IST_Pressure ) {
255 answer.
at(1) = n->giveDof(dofindx)->giveUnknown(VM_Total, atTime);
261 return Element :: giveInternalStateAtNode(answer, type, mode, node, atTime);
std::vector< Dof * >::const_iterator findDofWithDofId(DofIDItem dofID) const
int giveGlobalNumber() const
Node * giveNode(int i) const
virtual void computeGaussPoints()
virtual int giveSpatialDimension()
virtual int computeNumberOfDofs()
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
int number
Component number.
void computeVectorOfPressures(ValueModeType mode, TimeStep *tStep, FloatArray &pressures)
void computeVectorOfVelocities(ValueModeType mode, TimeStep *tStep, FloatArray &velocities)
FMElement(int n, Domain *aDomain)
void assemble(const FloatArray &fe, const IntArray &loc)
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
void assemble(const FloatMatrix &src, const IntArray &loc)
void giveCharacteristicMatrix(FloatMatrix &answer, CharType, TimeStep *) override
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, TimeStep *atTime)=0
Calculates the stiffness matrix.
virtual const IntArray & givePressureDofMask() const =0
Returns mask of pressure Dofs.
virtual void computeDiagonalMassMtrx(FloatArray &answer, TimeStep *)=0
virtual void computeDivergenceMatrix(FloatMatrix &answer, TimeStep *atTime)=0
Calculates the velocity divergence matrix.
virtual void computePressureLaplacianMatrix(FloatMatrix &answer, TimeStep *atTime)=0
Calculates the pressure laplacian matrix.
virtual const IntArray & giveVelocityDofMask() const =0
Returns mask of velocity Dofs.
virtual void computeDeviatoricStress(FloatArray &answer, GaussPoint *gp, TimeStep *)=0
Computes deviatoric stress vector in given integration point and solution step from given total strai...
virtual void computeGradientMatrix(FloatMatrix &answer, TimeStep *atTime)=0
Calculates the pressure gradient matrix.
virtual void computeBodyLoadVectorAt(FloatArray &answer, BodyLoad *load, TimeStep *tStep, ValueModeType mode)=0
InternalStateMode
Determines the mode of internal variable.