59BaseMixedPressureElement :: BaseMixedPressureElement()
76 for (
int j = 1; j <= dofIdArray_u.
giveSize(); j++ ) {
83 for (
int j = 1; j <= dofIdArray_p.
giveSize(); j++ ) {
102 if ( !mixedPressureMat ) {
103 OOFEM_ERROR(
"Material doesn't implement the required Micromorphic interface!");
120 OOFEM_ERROR(
"Large-strain formulaton is not available yet")
133 this->
giveElement()->computeVectorOf(IdMask_u, VM_Total, tStep, d_u);
146 this->
giveElement()->computeVectorOf(IdMask_p, VM_Total, tStep, d_p);
154BaseMixedPressureElement :: giveInternalForcesVector_u(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
161 if ( useUpdatedGpRecord == 1 ) {
162 if ( this->
giveElement()->giveGeometryMode() == 0 ) {
172 if ( !mixedPressureMat ) {
173 OOFEM_ERROR(
"Material doesn't implement the required Micromorphic interface!");
185BaseMixedPressureElement :: giveInternalForcesVector_p(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
187 double pressure, kappa, factor;
196 if ( !mixedPressureMat ) {
197 OOFEM_ERROR(
"Material doesn't implement the required Mixed pressure interface!");
209 factor = eps_V + pressure * kappa;
210 answer.
times(dV * factor);
215BaseMixedPressureElement :: giveInternalForcesVector(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
233BaseMixedPressureElement :: computeForceLoadVector(
FloatArray &answer,
TimeStep *tStep, ValueModeType mode)
244BaseMixedPressureElement :: computeLocForceLoadVector(
FloatArray &answer,
TimeStep *tStep, ValueModeType mode)
270BaseMixedPressureElement :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
290BaseMixedPressureElement :: computeStiffnessMatrix_uu(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
300 if ( !mixedPressureMat ) {
301 OOFEM_ERROR(
"Material doesn't implement the required Mixed Pressure Material interface!");
310 if ( matStiffSymmFlag ) {
317 if ( matStiffSymmFlag ) {
325BaseMixedPressureElement :: computeStiffnessMatrix_up(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
345BaseMixedPressureElement :: computeStiffnessMatrix_pp(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
355 if ( !mixedPressureMat ) {
356 OOFEM_ERROR(
"Material doesn't implement the required Mixed Pressure Material interface!");
376BaseMixedPressureElement :: updateInternalState(
TimeStep *tStep)
393BaseMixedPressureElement :: postInitialize()
void computeStiffnessMatrix_uu(FloatMatrix &, MatResponseMode, TimeStep *)
void giveInternalForcesVector_u(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
void computeStiffnessMatrix_up(FloatMatrix &, MatResponseMode, TimeStep *)
void computeStiffnessMatrix_pp(FloatMatrix &, MatResponseMode, TimeStep *)
virtual int giveNumberOfDofs()=0
void giveLocationArrayOfDofIDs(IntArray &locationArray_u, IntArray &locationArray_p, const UnknownNumberingScheme &s, const IntArray &dofIdArray_u, const IntArray &dofIdArray_p)
virtual int giveNumberOfPressureDofs()=0
virtual void giveDofManDofIDMask_p(IntArray &answer)=0
void computePressure(double &answer, GaussPoint *gp, TimeStep *tStep)
void computeStressVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
virtual void giveDofManDofIDMask_u(IntArray &answer)=0
void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
virtual void computePressureNMatrixAt(GaussPoint *, FloatArray &)=0
virtual void computeVolumetricBmatrixAt(GaussPoint *gp, FloatArray &Bvol, NLStructuralElement *element)=0
virtual NLStructuralElement * giveElement()=0
Pure virtual functions.
void computeLocForceLoadVector(FloatArray &answer, TimeStep *tStep, ValueModeType mode)
void giveInternalForcesVector_p(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
virtual int giveNumberOfDisplacementDofs()=0
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const
bool hasDofID(DofIDItem id) const
int giveNumberOfDofs() const
virtual bool computeGtoLRotationMatrix(FloatMatrix &answer)
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
virtual IntegrationRule * giveIntegrationRule(int i)
virtual int giveNumberOfDofManagers() const
DofManager * giveDofManager(int i) const
CrossSection * giveCrossSection()
virtual double computeVolumeAround(GaussPoint *gp)
void assemble(const FloatArray &fe, const IntArray &loc)
double dotProduct(const FloatArray &x) const
void zero()
Zeroes all coefficients of receiver.
void rotatedWith(FloatMatrix &r, char mode)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beTProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void add(const FloatArray &src)
bool isNotEmpty() const
Returns true if receiver is not empty.
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
static FloatMatrix fromArray(const FloatArray &vector, bool transpose=false)
void resize(Index rows, Index cols)
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void beTranspositionOf(const FloatMatrix &src)
void zero()
Zeroes all coefficient of receiver.
void assemble(const FloatMatrix &src, const IntArray &loc)
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, double pressure, TimeStep *tStep) const
virtual void giveDeviatoricConstitutiveMatrix(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep) const
virtual void giveInverseOfBulkModulus(double &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
virtual Interface * giveMaterialInterface(InterfaceType t, IntegrationPoint *ip)
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)=0
const FloatArray & giveTempStressVector() const
Returns the const pointer to receiver's temporary stress vector.
const FloatArray & giveTempPVector() const
Returns the const pointer to receiver's temporary first Piola-Kirchhoff stress vector.
@ MixedPressureMaterialExtensionInterfaceType