46 #define _IFT_FCM_nAllowedCracks "ncracks" 47 #define _IFT_FCM_crackSpacing "crackspacing" 48 #define _IFT_FCM_multipleCrackShear "multiplecrackshear" 49 #define _IFT_FCM_ecsm "ecsm" 55 #define pscm_JUST_INIT 1 56 #define pscm_SOFTENING 2 57 #define pscm_UNLO_RELO 3 60 #define fcm_SMALL_STRAIN 1.e-12 61 #define fcm_BIGNUMBER 1.e6 62 #define fcm_TOLERANCE 1.e-6 160 return charLengths.
at(icrack);
208 virtual int hasMaterialModeCapability(
MaterialMode mode);
218 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
224 virtual void givePlaneStressStiffMtrx(
FloatMatrix &answer,
229 virtual void givePlaneStrainStiffMtrx(
FloatMatrix &answer,
240 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
242 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
244 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
246 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
248 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
250 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
256 virtual double computeNormalCrackOpening(
GaussPoint *gp,
int i);
258 virtual double computeMaxNormalCrackOpening(
GaussPoint *gp,
int i);
261 virtual double computeShearSlipOnCrack(
GaussPoint *gp,
int i);
277 virtual double giveTensileStrength(
GaussPoint *gp) = 0;
280 virtual void checkSnapBack(
GaussPoint *gp,
int crack) = 0;
283 virtual void updateCrackStatus(
GaussPoint *gp);
286 virtual double giveNormalCrackingStress(
GaussPoint *gp,
double eps_cr,
int i) = 0;
289 virtual double giveCharacteristicElementLength(
GaussPoint *gp,
const FloatArray &crackPlaneNormal);
295 virtual double computeEffectiveShearModulus(
GaussPoint *gp,
int i) = 0;
298 virtual double computeTotalD2Modulus(
GaussPoint *gp,
int i);
301 virtual double computeD2ModulusForCrack(
GaussPoint *gp,
int icrack) = 0;
304 virtual double maxShearStress(
GaussPoint *gp,
int i) = 0;
307 virtual bool isIntactForShear(
GaussPoint *gp,
int i);
310 virtual bool isIntact(
GaussPoint *gp,
int icrack);
319 virtual double computeShearStiffnessRedistributionFactor(
GaussPoint *gp,
int ithCrackPlane,
int jthCrackDirection);
325 virtual double giveCrackSpacing(
void);
328 virtual double giveNumberOfCracksInDirection(
GaussPoint *gp,
int iCrack);
331 virtual double giveNumberOfCracksForShearDirection(
GaussPoint *gp,
int i);
339 virtual void giveLocalCrackedStiffnessMatrix(
FloatMatrix &answer,
void setG2LStressVectorTransformationMtrx(FloatMatrix t)
sets transformation matrix for stress transformation from global to local coordinate system ...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
bool multipleCrackShear
if true = takes shear compliance of all cracks, false = only dominant crack contribution, default value is false
int giveTempCrackStatus(int icrack) const
returns temporary value of status associated with i-th crack direction
virtual double computeOverallElasticStiffness(void)
returns overall Young's modulus
FloatMatrix crackDirs
Storing direction of cracks (crack normals) in columwise format.
int nMaxCracks
number of maximum possible cracks (optional parameter)
void setL2GStrainVectorTransformationMtrx(FloatMatrix s)
sets transformation matrix for stress transformation from global to local coordinate system ...
void setMaxCrackStrain(int icrack, double val)
sets value of the maximum crack strain for the i-th crack (equilibrated value)
GaussPoint * gp
Associated integration point.
double crackSpacing
value of crack spacing (allows to "have" more parallel cracks in one direction if the element size ex...
Domain * domain
Link to domain object, useful for communicating with other FEM components.
virtual void giveRealStressVector_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_3d.
int nAllowedCracks
allowed number of cracks (user-defined)
This class implements associated Material Status to FCMMaterial (fixed crack material).
void setTempCrackStatus(int icrack, int val)
sets temporary value of status for of the i-th crack
const FloatMatrix & giveG2LStressVectorTransformationMtrx()
returns transformation matrix for stress transformation from global to local coordinate system ...
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
saves current context(state) into stream
double & at(int i)
Coefficient access function.
const FloatMatrix & giveG2LStrainVectorTransformationMtrx()
sets transformation matrix for strain transformation from global to local coordinate system ...
FloatArray charLengths
Characteristic lengths computed from the crack orientation and element geometry.
This class implements a structural material status information.
This class implements a Fixed Crack Model for fracture (after initiation the crack directions cannot ...
FloatArray maxCrackStrains
Max. crack strain reached in the entire previous history.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
virtual int giveNumberOfCracks() const
returns number of cracks from the previous time step (equilibrated value)
FloatArray tempCrackStrainVector
const FloatMatrix & giveCrackDirs()
returns crack directions
double giveCharLength(int icrack) const
returns characteristic length associated with i-th crack direction
ElementCharSizeMethod ecsMethod
Method used for evaluation of characteristic element size.
double giveShearModulus()
Returns the shear elastic modulus .
MaterialMode
Type representing material mode of integration point.
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void giveRealStressVector_PlateLayer(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
const IntArray & giveCrackStatus()
returns crack statuses
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
const FloatArray & giveMaxCrackStrainVector()
returns vector with maximum cracking strains (max 3 components)
void setCrackDirs(FloatMatrix a)
sets matrix with crack directions (normal vectors)
virtual void initTempStatus()
initializes temporary status
double giveTempCrackStrain(int icrack) const
returns i-th component of the crack strain vector (temporary)
IntArray tempCrackStatuses
const FloatArray & giveTempCrackStrainVector()
return temporary crack strain vector (max 6 components)
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void setTempCrackStrain(int icrack, double val)
sets temporary value of i-th cracking strain (max 6 components)
This class implements an isotropic linear elastic material in a finite element problem.
void setG2LStrainVectorTransformationMtrx(FloatMatrix s)
sets transformation matrix for strain transformation from global to local coordinate system ...
const FloatMatrix & giveL2GStressVectorTransformationMtrx()
sets transformation matrix for stress transformation from local to global coordinate system ...
virtual int giveNumberOfTempCracks() const
returns temporary number of cracks
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
restores context(state) from stream
FloatArray tempMaxCrackStrains
FloatMatrix transMatrix_G2Lstress
transformation matrix converting stress from global to local coordinate system
void setTempMaxCrackStrain(int icrack, double val)
sets value of the maximum crack strain for the i-th crack (temporary value)
void setTempCrackStrainVector(FloatArray a)
sets temporary vector of cracking strains (max 6 components)
Abstract base class representing a material status information.
Class representing vector of real numbers.
const IntArray & giveTempCrackStatus()
returns vector of temporary crack statuses
Implementation of matrix containing floating point numbers.
const FloatArray & giveCrackStrainVector() const
return equilibrated crack strain vector (max 6 components)
IRResultType
Type defining the return values of InputRecord reading operations.
const FloatMatrix & giveL2GStrainVectorTransformationMtrx()
sets transformation matrix for stress transformation from global to local coordinate system ...
virtual const char * giveClassName() const
IntArray crackStatuses
crack statuses (none, just initialized, softenin, unlo-relo, closed)
void setL2GStressVectorTransformationMtrx(FloatMatrix t)
sets transformation matrix for stress transformation from local to global coordinate system ...
IsotropicLinearElasticMaterial * linearElasticMaterial
double giveMaxCrackStrain(int icrack)
returns maximum crack strain for the i-th crack (equilibrated value)
double giveCrackStrain(int icrack) const
returns i-th component of the crack strain vector (equilibrated)
virtual int giveMaxNumberOfCracks(GaussPoint *gp)
returns maximum number of cracks associated with current mode
virtual void printOutputAt(FILE *file, TimeStep *tStep)
prints the output into the output file
virtual const char * giveClassName() const
virtual void updateYourself(TimeStep *tStep)
replaces equilibrated values with temporary values
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
FloatArray crackStrainVector
Components of crack strain vector (normal as well as shear).
double giveTempMaxCrackStrain(int icrack)
returns maximum crack strain for the i-th crack (temporary value)
void setCharLength(int icrack, double val)
sets characteristic length for i-th crack
FloatMatrix transMatrix_G2Lstrain
transformation matrix converting strain from global to local coordinate system
FloatMatrix transMatrix_L2Gstrain
transformation matrix converting strain from local to global coordinate system
the oofem namespace is to define a context or scope in which all oofem names are defined.
void setCrackStrainVector(FloatArray a)
sets equilibrated vector of cracking strains (max 6 components)
double giveYoungsModulus()
Returns Young's modulus.
FCMMaterialStatus(int n, Domain *d, GaussPoint *g)
int giveCrackStatus(int icrack) const
return equilibrated value of status associated with i-th crack direction
Class representing integration point in finite element program.
Class representing solution step.
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_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
IsotropicLinearElasticMaterial * giveLinearElasticMaterial()
virtual void giveRealStressVector_2dBeamLayer(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
FloatMatrix transMatrix_L2Gstress
transformation matrix converting stress from local to global coordinate system
virtual double computeOverallElasticShearModulus(void)
returns overall shear modulus
virtual ~FCMMaterialStatus()