46#define _IFT_RCM2Material_gf "gf"
47#define _IFT_RCM2Material_ft "ft"
62#define pscm_SOFTENING 2
63#define pscm_RELOADING 3
64#define pscm_UNLOADING 4
67#define pscm_NEW_CRACK 20
68#define pscm_NEW_FULLY_OPEN_CRACK 21
69#define pscm_REOPEN_CRACK 22
71#define rcm_SMALL_STRAIN 1.e-7
72#define rcm2_BIGNUMBER 1.e8
239 std::unique_ptr<MaterialStatus>
CreateStatus(
GaussPoint *gp)
const override {
return std::make_unique<RCM2MaterialStatus>(gp); }
258 double effStrain,
int i)
const {
return 1.e20; }
265 MatResponseMode rMode,
273 MatResponseMode rMode,
279 bool reduce, MatResponseMode,
virtual int giveNumberOfTempActiveCracks() const
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
const char * giveClassName() const override
const IntArray & giveCrackMap() const
const IntArray & giveTempCrackStatus()
IntArray crackStatuses
One value from (pscm_NONE, pscm_OPEN, pscm_SOFTENING, pscm_RELOADING, pscm_UNLOADING,...
void initTempStatus() override
double giveCrackStrain(int icrack) const
virtual int giveNumberOfActiveCracks() const
FloatArray crackStrainVector
Components of crack strain vector.
const FloatArray & getPrincipalStressVector() const
FloatArray principalStress
RCM2MaterialStatus(GaussPoint *g)
void updateYourself(TimeStep *tStep) override
int giveTempAlreadyCrack() const
const FloatArray & getPrincipalStrainVector() const
const FloatArray & giveCrackStrainVector() const
void restoreContext(DataStream &stream, ContextMode mode) override
void saveContext(DataStream &stream, ContextMode mode) override
void setTempCrackStatus(int icrack, int val)
FloatArray oldPrincipalStrain
double giveTempMaxCrackStrain(int icrack)
const FloatMatrix & giveCrackDirs()
FloatMatrix crackDirs
Storing direction of cracks in columwise format.
double giveCharLength(int icrack) const
FloatMatrix tempCrackDirs
void letOldCrackStrainVectorBe(FloatArray a)
void setCharLength(int icrack, double val)
const FloatMatrix & giveTempCrackDirs()
FloatArray maxCrackStrains
Max crack strain reached.
void letCrackStrainVectorBe(FloatArray a)
FloatArray oldCrackStrainVector
const FloatArray & giveOldCrackStrainVector()
void letTempCrackDirsBe(FloatMatrix a)
IntArray tempCrackStatuses
int giveTempCrackStatus(int icrack) const
FloatArray oldPrincipalStress
const FloatArray & givePrevPrincStrainVector() const
void letPrincipalStressVectorBe(FloatArray pv)
void letCrackMapBe(IntArray map)
virtual int isCrackActive(int i) const
int giveAlreadyCrack() const
void setTempMaxCrackStrain(int icrack, double val)
FloatArray principalStrain
const IntArray & giveCrackStatus()
FloatArray tempMaxCrackStrains
const FloatArray & givePrevPrincStressVector() const
void letPrincipalStrainVectorBe(FloatArray pv)
virtual void giveEffectiveMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
virtual double giveNormalCrackingStress(GaussPoint *gp, double eps_cr, int i) const =0
virtual double giveCharacteristicElementLength(GaussPoint *gp, const FloatArray &crackPlaneNormal) const
void giveRealPrincipalStressVector3d(FloatArray &answer, GaussPoint *, FloatArray &, FloatMatrix &, TimeStep *) const
FloatArrayF< 6 > giveThermalDilatationVector(GaussPoint *gp, TimeStep *tStep) const override
void giveCrackedStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) const
FloatArrayF< 4 > giveRealStressVector_PlaneStrain(const FloatArrayF< 4 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_3d.
LinearElasticMaterial * linearElasticMaterial
const char * giveClassName() const override
FloatMatrixF< 2, 2 > give2dBeamLayerStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 2 > giveRealStressVector_2dBeamLayer(const FloatArrayF< 2 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
virtual double computeStrength(GaussPoint *gp, double) const =0
FloatArrayF< 5 > giveRealStressVector_PlateLayer(const FloatArrayF< 5 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
FloatArrayF< 3 > giveRealStressVector_PlaneStress(const FloatArrayF< 3 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
FloatMatrixF< 3, 3 > givePlaneStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
RCM2Material(int n, Domain *d)
double give(int aProperty, GaussPoint *gp) const override
virtual int checkSizeLimit(GaussPoint *gp, double) const
virtual void checkIfClosedCracks(GaussPoint *gp, FloatArray &crackStrainVector, IntArray &) const
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
void updateActiveCrackMap(GaussPoint *gp, const IntArray *activatedCracks=NULL) const
virtual double giveMinCrackStrainsForFullyOpenCrack(GaussPoint *gp, int i) const =0
virtual double giveCrackingModulus(MatResponseMode rMode, GaussPoint *gp, double effStrain, int i) const
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
LinearElasticMaterial * giveLinearElasticMaterial() const
bool hasMaterialModeCapability(MaterialMode mode) const override
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
void giveNormalElasticStiffnessMatrix(FloatMatrix &answer, bool reduce, MatResponseMode, GaussPoint *, TimeStep *tStep, const FloatMatrix &) const
FloatMatrixF< 1, 1 > give1dStressStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
FloatArrayF< 1 > giveRealStressVector_1d(const FloatArrayF< 1 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
double giveResidualStrength()
void initializeFrom(InputRecord &ir) override
virtual void checkForNewActiveCracks(IntArray &answer, GaussPoint *gp, const FloatArray &, const FloatArray &, FloatArray &, const FloatArray &) const
FloatMatrixF< 4, 4 > givePlaneStrainStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
virtual void updateCrackStatus(GaussPoint *gp, const FloatArray &crackStrain) const
FloatMatrixF< 5, 5 > givePlateLayerStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
virtual void giveMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep) const
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
virtual void updateStatusForNewCrack(GaussPoint *, int, double) const
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)