60void QPlaneStress2dSlip :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
68void QPlaneStress2dSlip :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
TimeStep *tStep)
72 FloatMatrix Kaa, Kab, Kba, Kbb, daa, dab1, dab2, dba1, dba2, dbb1, dbb2, dbb3, dbb4;
83 FloatMatrix dStressdEps, dStressdS, dStressdG, dBStressdEps, dBStressdS, dBStressdG, dRStressdEps, dRStressdS, dRStressdG;
84 this->
giveSensitivities(dStressdEps, dStressdS, dStressdG, dBStressdEps, dBStressdS, dBStressdG, dRStressdEps, dRStressdS, dRStressdG, rMode, gp, tStep );
114void QPlaneStress2dSlip :: giveInternalForcesVector(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
150 for (
int i=1; i <= ndof/2 ; i++) {
152 answer.
at(2*i-1) = finta.
at(i);
153 answer.
at(2*i+1) = fintb.
at(i);
154 }
else if (i % 2 == 0) {
155 answer.
at(2*i-2) = finta.
at(i);
156 answer.
at(2*i) = fintb.
at(i);
165 if ( type == IST_DisplacementVector ) {
173 }
else if ( type == IST_MacroSlipVector ) {
181 }
else if ( type == IST_TransferStress ) {
185 }
else if ( type == IST_MacroSlipGradient ) {
193 }
else if (type == IST_ReinfMembraneStress ) {
198 return Element :: giveIPValue(answer, gp, type, tStep);
209 OOFEM_ERROR(
"Can't homogenize the fields. StructuralSlipFE2Material needed.");
215void QPlaneStress2dSlip::giveSensitivities(
FloatMatrix &dStressdEps,
FloatMatrix &dStressdS,
FloatMatrix &dStressdG,
FloatMatrix &dBStressdEps,
FloatMatrix &dBStressdS,
FloatMatrix &dBStressdG,
FloatMatrix &dRStressdEps,
FloatMatrix &dRStressdS,
FloatMatrix &dRStressdG, MatResponseMode mode,
GaussPoint *gp,
TimeStep *tStep )
219 mat->
giveSensitivities(dStressdEps, dStressdS, dStressdG, dBStressdEps, dBStressdS, dBStressdG, dRStressdEps, dRStressdS, dRStressdG, mode, gp, tStep);
240 OOFEM_ERROR(
"Can't compute sensitivities. StructuralSlipFE2Material needed.");
#define REGISTER_Element(class)
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beSubArrayOf(const FloatArray &src, const IntArray &indx)
void resize(Index rows, Index cols)
void plusProductUnsym(const FloatMatrix &a, const FloatMatrix &b, double dV)
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void assemble(const FloatMatrix &src, const IntArray &loc)
const FloatArray & giveSubPatchCoordinates() const
Returns local sub-patch coordinates of the receiver.
IntegrationPointStatus * giveMaterialStatus(IntegrationPointStatusIDType key=IPSID_Default)
void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int lowerIndx=1, int upperIndx=ALL_STRAINS) override
void computeBHmatrixAt(GaussPoint *gp, FloatMatrix &answer) override
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
void giveHomogenizedFields(FloatArray &stress, FloatArray &bStress, FloatArray &rStress, const FloatArray &strain, const FloatArray &slip, const FloatArray &slipGradient, GaussPoint *gp, TimeStep *tStep)
void giveSensitivities(FloatMatrix &dStressdEps, FloatMatrix &dStressdS, FloatMatrix &dStressdG, FloatMatrix &dBStressdEps, FloatMatrix &dBStressdS, FloatMatrix &dBStressdG, FloatMatrix &dRStressdEps, FloatMatrix &dRStressdS, FloatMatrix &dRStressdG, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
QPlaneStress2d(int n, Domain *d)
void NodalAveragingRecoveryMI_computeNodalValue(FloatArray &answer, int node, InternalStateType type, TimeStep *tStep) override
int computeNumberOfDofs() override
double computeVolumeAround(GaussPoint *gp) override
Material * giveMaterial(IntegrationPoint *ip) const override
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
const FloatArray & giveReinfStressVector() const
const FloatArray & giveTransferStressVector() const
virtual void giveHomogenizedFields(FloatArray &stress, FloatArray &bStress, FloatArray &rStress, const FloatArray &strain, const FloatArray &slip, const FloatArray &slipGradient, GaussPoint *gp, TimeStep *tStep)
virtual void giveSensitivities(FloatMatrix &dStressdEps, FloatMatrix &dStressdS, FloatMatrix &dStressdG, FloatMatrix &dBStressdEps, FloatMatrix &dBStressdS, FloatMatrix &dBStressdG, FloatMatrix &dRStressdEps, FloatMatrix &dRStressdS, FloatMatrix &dRStressdG, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)