81 vol += gp->giveWeight() * detJ * J;
109 if ( matMode == _3dMat || matMode == _PlaneStrain ) {
113 }
else if ( matMode == _PlaneStress ) {
116 }
else if ( matMode == _1dMat ) {
119 OOFEM_ERROR(
"MaterialMode is not supported yet (%s)", __MaterialModeToString(matMode) );
172 if ( useUpdatedGpRecord == 1 ) {
184 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
185 if ( useUpdatedGpRecord == 1 ) {
193 if ( useUpdatedGpRecord == 1 ) {
245 TimeStep *tStep,
int useUpdatedGpRecord)
277 if ( useUpdatedGpRecord == 1 ) {
284 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
285 if ( useUpdatedGpRecord == 1 ) {
293 if ( useUpdatedGpRecord == 1 ) {
333 MatResponseMode rMode,
TimeStep *tStep)
353 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
365 if ( matStiffSymmFlag ) {
372 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
375 answer.
add(initialStressMatrix);
378 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
379 OOFEM_ERROR(
"Updated lagrangian not supported yet");
382 int iStartIndx, iEndIndx, jStartIndx, jEndIndx;
405 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
420 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
430 Dij.
beSubMatrixOf(D, iStartIndx, iEndIndx, jStartIndx, jEndIndx);
433 if ( matStiffSymmFlag ) {
443 if ( matStiffSymmFlag ) {
451 MatResponseMode rMode,
TimeStep *tStep)
471 for (
auto &gp : * iRule ) {
476 if ( this->
domain->giveEngngModel()->giveFormulation() ==
AL ) {
488 if ( matStiffSymmFlag ) {
502 if ( matStiffSymmFlag ) {
529 OOFEM_ERROR(
"nlGeometry = 2 is not supported anymore. If access to F is needed, then the material \n should overload giveFirstPKStressVector which has F as input.");
virtual Material * giveMaterial(IntegrationPoint *ip) const =0
hidden by virtual oofem::Material* TransportCrossSection::giveMaterial() const
virtual bool isActivated(TimeStep *tStep)
virtual FEInterpolation * giveInterpolation() const
void initializeFrom(InputRecord &ir, int priority) override
virtual int giveIntegrationRuleLocalCodeNumbers(IntArray &answer, IntegrationRule &ie)
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
virtual double computeVolumeAround(GaussPoint *gp)
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo) const
Domain * domain
Link to domain object, useful for communicating with other FEM components.
int number
Component number.
void assemble(const FloatArray &fe, const IntArray &loc)
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Index giveSize() const
Returns the size of receiver.
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void subtract(const FloatArray &src)
void plusProductSymmUpper(const FloatMatrix &a, const FloatMatrix &b, double dV)
void add(const FloatMatrix &a)
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
void beSubMatrixOf(const FloatMatrix &src, Index topRow, Index bottomRow, Index topCol, Index bottomCol)
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
double giveDeterminant() const
void beMatrixForm(const FloatArray &aArray)
void assemble(const FloatMatrix &src, const IntArray &loc)
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
virtual void computeDeformationGradientVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
void computeCauchyStressVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
void initializeFrom(InputRecord &ir, int priority) override
NLStructuralElement(int n, Domain *d)
void computeFirstPKStressVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
void computeInitialStressMatrix(FloatMatrix &answer, TimeStep *tStep) override
static ParamKey IPK_NLStructuralElement_nlgeoflag
double computeCurrentVolume(TimeStep *tStep)
void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep) override
void computeStiffnessMatrix_withIRulesAsSubcells(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
void giveInternalForcesVector_withIRulesAsSubcells(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0) override
virtual void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer)
virtual void computeConstitutiveMatrix_dPdF_At(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)=0
int checkConsistency() override
void giveInputRecord(DynamicInputRecord &input) override
int nlGeometry
Flag indicating if geometrical nonlinearities apply.
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0) override
virtual void giveStiffnessMatrix_dCde(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
virtual FloatArray giveFirstPKStresses(const FloatArray &reducedF, GaussPoint *gp, TimeStep *tStep) const
bool isCharacteristicMtrxSymmetric(MatResponseMode mode) const override=0
virtual void giveCauchyStresses(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedFIncrement, TimeStep *tStep)=0
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)=0
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
StructuralElement(int n, Domain *d)
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS)=0
void giveInputRecord(DynamicInputRecord &input) override
std::unique_ptr< FloatArray > initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted.
virtual void computeStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)=0
const FloatArray & givePVector() const
Returns the const pointer to receiver's first Piola-Kirchhoff stress vector.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
const FloatArray & giveCVector() const
Returns the const pointer to receiver's Cauchy stress vector.
static void giveReducedSymVectorForm(FloatArray &answer, const FloatArray &vec, MaterialMode matMode)
Converts the full unsymmetric Voigt vector (2nd order tensor) to reduced form.
static void giveReducedVectorForm(FloatArray &answer, const FloatArray &vec, MaterialMode matMode)
Converts the full symmetric Voigt vector (2nd order tensor) to reduced form.
static int giveSizeOfVoigtSymVector(MaterialMode mmode)
#define PM_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)