43#define IDM_USE_MMAContainingElementProjection
50#define IDM_USE_MAPPEDSTRAIN
59#ifdef IDM_USE_MMAClosestIPTransfer
63#ifdef IDM_USE_MMAContainingElementProjection
67#ifdef IDM_USE_MMAShapeFunctProjection
71#ifdef IDM_USE_MMALeastSquareProjection
77#define _IFT_IsotropicDamageMaterial1_Name "idm1"
78#define _IFT_IsotropicDamageMaterial1_e0 "e0"
79#define _IFT_IsotropicDamageMaterial1_ef "ef"
80#define _IFT_IsotropicDamageMaterial1_wf "wf"
81#define _IFT_IsotropicDamageMaterial1_equivstraintype "equivstraintype"
82#define _IFT_IsotropicDamageMaterial1_damageLaw "damlaw"
83#define _IFT_IsotropicDamageMaterial1_k "k"
84#define _IFT_IsotropicDamageMaterial1_md "md"
85#define _IFT_IsotropicDamageMaterial1_ecsm "ecsm"
86#define _IFT_IsotropicDamageMaterial1_At "at"
87#define _IFT_IsotropicDamageMaterial1_Bt "bt"
88#define _IFT_IsotropicDamageMaterial1_ft "ft"
89#define _IFT_IsotropicDamageMaterial1_wkwf "wkwf"
90#define _IFT_IsotropicDamageMaterial1_e1ef "e1ef"
91#define _IFT_IsotropicDamageMaterial1_skft "skft"
92#define _IFT_IsotropicDamageMaterial1_s1 "s1"
93#define _IFT_IsotropicDamageMaterial1_sk "sk"
94#define _IFT_IsotropicDamageMaterial1_wk "wk"
95#define _IFT_IsotropicDamageMaterial1_e1 "e1"
96#define _IFT_IsotropicDamageMaterial1_ek "ek"
97#define _IFT_IsotropicDamageMaterial1_gf "gf"
98#define _IFT_IsotropicDamageMaterial1_gft "gft"
99#define _IFT_IsotropicDamageMaterial1_ep "ep"
100#define _IFT_IsotropicDamageMaterial1_e2 "e2"
101#define _IFT_IsotropicDamageMaterial1_nd "nd"
102#define _IFT_IsotropicDamageMaterial1_checkSnapBack "checksnapback"
103#define _IFT_IsotropicDamageMaterial1_n "griff_n"
104#define _IFT_IsotropicDamageMaterial1_c1 "c1"
105#define _IFT_IsotropicDamageMaterial1_c2 "c2"
106#define _IFT_IsotropicDamageMaterial1_alphaps "alphaps"
107#define _IFT_IsotropicDamageMaterial1_h "h"
108#define _IFT_IsotropicDamageMaterial1_w_k "w_k"
109#define _IFT_IsotropicDamageMaterial1_w_r "w_r"
110#define _IFT_IsotropicDamageMaterial1_w_f "w_f"
111#define _IFT_IsotropicDamageMaterial1_f_k "f_k"
112#define _IFT_IsotropicDamageMaterial1_f_r "f_r"
116#define IDM1_ITERATION_LIMIT 1.e-9
128 const char *
giveClassName()
const override {
return "IsotropicDamageMaterial1Status"; }
208 enum SofteningType {
ST_Unknown,
ST_Exponential,
ST_Linear,
ST_Mazars,
ST_Smooth,
ST_SmoothExtended,
ST_Exponential_Cohesive_Crack,
ST_Linear_Cohesive_Crack,
ST_BiLinear_Cohesive_Crack,
ST_Disable_Damage,
ST_PowerExponential,
ST_DoubleExponential,
ST_Hordijk_Cohesive_Crack,
ST_ModPowerExponential,
ST_Trilinear_Cohesive_Crack };
235#ifdef IDM_USE_MMAClosestIPTransfer
239#ifdef IDM_USE_MMAContainingElementProjection
243#ifdef IDM_USE_MMAShapeFunctProjection
247#ifdef IDM_USE_MMALeastSquareProjection
258 const char *
giveClassName()
const override {
return "IsotropicDamageMaterial1"; }
Interface * giveInterface(InterfaceType it) override
const char * giveClassName() const override
IsotropicDamageMaterial1Status(GaussPoint *g)
Constructor.
SofteningType softType
Parameter specifying the type of softening (damage law).
double e0
Equivalent strain at stress peak (or a similar parameter).
IsotropicDamageMaterial1(int n, Domain *d)
Constructor.
double wf
Determines ductility -> corresponds to crack opening in the cohesive crack model.
static MMAContainingElementProjection mapper
Mapper used to map internal variables in adaptivity.
double computeEquivalentStrain(const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) const override
double md
Parameter used in "smooth damage law".
Interface * giveInterface(InterfaceType it) override
double ek
Determines the softening for the bilinear law -> corresponds to the strain at the knee point.
void initializeFrom(InputRecord &ir) override
void saveContext(DataStream &stream, ContextMode mode) override
int MMI_map(GaussPoint *gp, Domain *oldd, TimeStep *tStep) override
double griff_n
Parameter used in Griffith's criterion.
const char * giveInputRecordName() const override
double wk
Determines the softening for the bilinear law -> corresponds to the crack opening at the knee point.
double computeDamageParam(double kappa, const FloatArray &strain, GaussPoint *gp) const override
void giveInputRecord(DynamicInputRecord &input) override
double ps_alpha
Parameters used by the model with permanent strain.
virtual ~IsotropicDamageMaterial1()
Destructor.
double k
Parameter used in Mises definition of equivalent strain.
double evaluatePermanentStrain(double kappa, double omega) const override
MaterialStatus * giveStatus(GaussPoint *gp) const override
static void computeStrainInvariants(const FloatArray &strainVector, double &I1e, double &J2e)
bool isCrackBandApproachUsed() const
EquivStrainType equivStrainType
Parameter specifying the definition of equivalent strain.
double computeDamageParamForCohesiveCrack(double kappa, GaussPoint *gp) const
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
ElementCharSizeMethod ecsMethod
Method used for evaluation of characteristic element size.
@ EST_ElasticEnergyPositiveStrain
@ EST_ElasticEnergyPositiveStress
Set * sourceElemSet
Cached source element set used to map internal variables (adaptivity), created on demand.
void initDamaged(double kappa, FloatArray &totalStrainVector, GaussPoint *gp) const override
double c1
Parameters used in Hordijk's softening law.
double sk
Determines the softening for the bilinear law -> corresponds to the stress at the knee point.
double w_k
Parameters used in Trilinear_Cohesive_Crack softening law.
void restoreContext(DataStream &stream, ContextMode mode) override
int MMI_update(GaussPoint *gp, TimeStep *tStep, FloatArray *estrain=nullptr) override
double damageFunctionPrime(double kappa, GaussPoint *gp) const override
double At
Parameters used in Mazars damage law.
double ef
Determines ductility -> corresponds to fracturing strain.
const char * giveClassName() const override
double give(int aProperty, GaussPoint *gp) const override
int damageLaw
Temporary parameter reading type of softening law, used in other isotropic damage material models.
double damageFunction(double kappa, GaussPoint *gp) const
double gft
Determines the softening for the bilinear law -> corresponds to the total fracture energy.
int MMI_finish(TimeStep *tStep) override
int checkSnapBack
Check possible snap back flag.
void computeEta(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) const override
double e1
Parameters used if softType = 7 (extended smooth damage law).
double ep
auxiliary input variablesfor softType == ST_SmoothExtended
double complianceFunction(double kappa, GaussPoint *gp) const
@ ST_BiLinear_Cohesive_Crack
@ ST_Exponential_Cohesive_Crack
@ ST_Linear_Cohesive_Crack
@ ST_Hordijk_Cohesive_Crack
@ ST_Trilinear_Cohesive_Crack
IsotropicDamageMaterialStatus(GaussPoint *g)
Constructor.
IsotropicDamageMaterial(int n, Domain *d)
Constructor.
MaterialModelMapperInterface()
Constructor.
RandomMaterialExtensionInterface()
Constructor.
RandomMaterialStatusExtensionInterface()
#define _IFT_IsotropicDamageMaterial1_Name