40 #include "../sm/Materials/structuralmaterial.h" 41 #include "../sm/Materials/structuralms.h" 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 143 return charLengths.
at(icrack);
191 virtual int hasMaterialModeCapability(
MaterialMode mode);
201 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
210 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
212 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
214 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
216 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
218 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
220 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
237 virtual double giveNormalCrackingStress(
GaussPoint *gp,
double eps_cr,
int i) = 0;
238 virtual double giveMinCrackStrainsForFullyOpenCrack(
GaussPoint *gp,
int i) = 0;
239 virtual double computeStrength(
GaussPoint *gp,
double) = 0;
240 virtual void updateStatusForNewCrack(
GaussPoint *,
int,
double);
241 virtual double giveCharacteristicElementLength(
GaussPoint *gp,
const FloatArray &crackPlaneNormal);
243 double effStrain,
int i) {
return 1.e20; }
249 void giveCrackedStiffnessMatrix(
FloatMatrix &answer,
258 virtual void giveEffectiveMaterialStiffnessMatrix(
FloatMatrix &answer,
264 void giveNormalElasticStiffnessMatrix(
FloatMatrix &answer,
const FloatArray & getPrincipalStrainVector() const
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual const char * giveClassName() const
GaussPoint * gp
Associated integration point.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
void letTempCrackDirsBe(FloatMatrix a)
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void giveRealStressVector_2dBeamLayer(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
FloatMatrix tempCrackDirs
const IntArray & giveCrackStatus()
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
double & at(int i)
Coefficient access function.
LinearElasticMaterial * linearElasticMaterial
virtual void giveRealStressVector_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_3d.
LinearElasticMaterial * giveLinearElasticMaterial()
This class implements a structural material status information.
const IntArray & giveTempCrackStatus()
double giveCrackStrain(int icrack) const
FloatArray oldCrackStrainVector
int giveTempCrackStatus(int icrack) const
void setTempCrackStatus(int icrack, int val)
void letCrackMapBe(IntArray map)
virtual void giveRealStressVector_PlateLayer(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
MaterialMode
Type representing material mode of integration point.
const FloatArray & givePrevPrincStrainVector() const
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
const FloatMatrix & giveCrackDirs()
This class is a abstract base class for all linear elastic material models in a finite element proble...
int giveAlreadyCrack() const
double giveResidualStrength()
RCM2MaterialStatus(int n, Domain *d, GaussPoint *g)
This class implements a Rotating Crack Model for fracture in smeared fashion ( only material stiffnes...
const FloatArray & getPrincipalStressVector() const
virtual int giveNumberOfActiveCracks() const
virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void setCharLength(int icrack, double val)
FloatArray maxCrackStrains
Max crack strain reached.
const IntArray & giveCrackMap() const
FloatArray crackStrainVector
Components of crack strain vector.
This class implements associated Material Status to SmearedCrackingMaterail.
const FloatArray & givePrevPrincStressVector() const
const FloatArray & giveCrackStrainVector() const
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
int giveTempAlreadyCrack() const
virtual ~RCM2MaterialStatus()
void letCrackStrainVectorBe(FloatArray a)
Abstract base class representing a material status information.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
const FloatArray & giveOldCrackStrainVector()
virtual int giveNumberOfTempActiveCracks() const
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
void setTempMaxCrackStrain(int icrack, double val)
IntArray tempCrackStatuses
void letPrincipalStressVectorBe(FloatArray pv)
virtual int checkSizeLimit(GaussPoint *gp, double)
virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
Returns a vector of coefficients of thermal dilatation in direction of each material principal (local...
FloatArray principalStrain
FloatArray principalStress
FloatArray tempMaxCrackStrains
FloatArray oldPrincipalStrain
FloatArray oldPrincipalStress
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
FloatMatrix crackDirs
Storing direction of cracks in columwise format.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
const FloatMatrix & giveTempCrackDirs()
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int isCrackActive(int i) const
double giveTempMaxCrackStrain(int icrack)
IntArray crackStatuses
One value from (pscm_NONE, pscm_OPEN, pscm_SOFTENING, pscm_RELOADING, pscm_UNLOADING, pscm_CLOSED.
double giveCharLength(int icrack) const
Class representing integration point in finite element program.
void letOldCrackStrainVectorBe(FloatArray a)
Class representing solution step.
virtual double giveCrackingModulus(MatResponseMode rMode, GaussPoint *gp, double effStrain, int i)
void letPrincipalStrainVectorBe(FloatArray pv)
virtual const char * giveClassName() const