47#define CDPM2_TOL 1.e-6
48#define keep_track_of_dissipated_energy
51#define _IFT_ConcreteDPM2_Name "con2dpm"
52#define _IFT_ConcreteDPM2_fc "fc"
53#define _IFT_ConcreteDPM2_ft "ft"
54#define _IFT_ConcreteDPM2_ecc "ecc"
55#define _IFT_ConcreteDPM2_kinit "kinit"
56#define _IFT_ConcreteDPM2_ahard "ahard"
57#define _IFT_ConcreteDPM2_bhard "bhard"
58#define _IFT_ConcreteDPM2_chard "chard"
59#define _IFT_ConcreteDPM2_dhard "dhard"
60#define _IFT_ConcreteDPM2_dilation "dilation"
61#define _IFT_ConcreteDPM2_asoft "asoft"
62#define _IFT_ConcreteDPM2_hp "hp"
63#define _IFT_ConcreteDPM2_yieldtol "yieldtol"
64#define _IFT_ConcreteDPM2_newtoniter "newtoniter"
65#define _IFT_ConcreteDPM2_wf "wf"
66#define _IFT_ConcreteDPM2_efc "efc"
67#define _IFT_ConcreteDPM2_softeningType "stype"
68#define _IFT_ConcreteDPM2_ftOne "ft1"
69#define _IFT_ConcreteDPM2_wfOne "wf1"
70#define _IFT_ConcreteDPM2_strengthratetype "sratetype"
71#define _IFT_ConcreteDPM2_energyratetype "eratetype"
72#define _IFT_ConcreteDPM2_deltatime "deltat"
73#define _IFT_ConcreteDPM2_helem "helem"
74#define _IFT_ConcreteDPM2_damflag "damflag"
179#ifdef keep_track_of_dissipated_energy
236 return sqrt( .5 * ( 2. * dev [ 0 ] * dev [ 0 ] + 2. * dev [ 1 ] * dev [ 1 ] + 2. * dev [ 2 ] * dev [ 2 ] +
237 dev [ 3 ] * dev [ 3 ] + dev [ 4 ] * dev [ 4 ] + dev [ 5 ] * dev [ 5 ] ) );
588#ifdef keep_track_of_dissipated_energy
837 double tempKappa)
const;
879 double tempKappa)
const;
914 double tempKappa)
const;
925 double tempKappa)
const;
934 double tempKappa)
const;
950 double tempKappa)
const;
958 const double tempKappa)
const;
979 double tempKappa)
const;
990 double tempKappa)
const;
1018 double tempKappa)
const;
1025 const double tempKappa)
const;
1032 const double tempKappa)
const;
1038 const double deltaLambda,
1041 const double tempKappa)
const;
1055 double &minEquivStrain,
1063 virtual double computeDamageParamTension(
double equivStrain,
double kappaOne,
double kappaTwo,
double le,
double omegaOld,
double rateFactor)
const;
1066 virtual double computeDamageParamCompression(
double equivStrain,
double kappaOne,
double kappaTwo,
double omegaOld,
double rateFactor)
const;
int giveStateFlag() const
double giveTempVolumetricPlasticStrain() const
double tempKappaDCompression
void letDeltaLambdaBe(double v)
double tempDamageCompression
void letTempKappaDTensionTwoBe(double v)
double giveRateFactor() const
double giveDeltaEquivStrain() const
double giveVolumetricPlasticStrain() const
state_flag_values
Values of history variable state_flag.
@ ConcreteDPM2_VertexTension
@ ConcreteDPM2_VertexTensionDamage
@ ConcreteDPM2_VertexCompression
@ ConcreteDPM2_VertexCompressionDamage
@ ConcreteDPM2_PlasticDamage
double giveDamageCompression() const
double giveEquivStrain() const
double giveKappaDCompressionTwo() const
void letTempKappaDTensionOneBe(double v)
int state_flag
Indicates the state (i.e. elastic, unloading, plastic, damage, vertex) of the Gauss point.
void letTempAlphaBe(double v)
double giveEquivStrainTension() const
double giveDissWork()
Returns the density of dissipated work.
double rateStrain
Strains that are used for calculation of strain rates.
double giveKappaDTensionTwo() const
double tempEquivStrainCompression
double giveKappaDTension() const
double giveKappaDCompression() const
void letTempEffectiveStressBe(const FloatArrayF< 6 > &v)
double giveDeltaLambda() const
void initTempStatus() override
double giveRateStrain() const
void letTempPlasticStrainBe(const FloatArrayF< 6 > &v)
double equivStrainCompression
void letKappaPPeakBe(double kappa)
double giveKappaDCompressionOne() const
void computeWork(GaussPoint *gp, double ft)
FloatArrayF< 6 > reducedStrain
double giveTempAlpha() const
const FloatArrayF< 6 > & giveTempPlasticStrain() const
double giveDeviatoricPlasticStrainNorm() const
double giveTempKappaP() const
void letTempKappaPBe(double v)
double tempStressWork
Non-equilibrated density of total work done by stresses on strain increments.
double kappaDCompressionOne
void letTempDamageCompressionBe(double v)
double giveTempStressWork()
Returns the temp density of total work of stress on strain increments.
const char * giveClassName() const override
void updateYourself(TimeStep *tStep) override
FloatArrayF< 6 > tempEffectiveStress
void letTempKappaDCompressionBe(double v)
double giveKappaP() const
void setTempDissWork(double w)
Sets the density of dissipated work to given value.
double dissWork
Density of dissipated work.
double giveStressWork()
Returns the density of total work of stress on strain increments.
double tempEquivStrainTension
double giveTempDamageTension() const
FloatArrayF< 6 > plasticStrain
void saveContext(DataStream &stream, ContextMode mode) override
double giveTempDissWork()
Returns the density of temp dissipated work.
void letTempDamageTensionBe(double v)
double stressWork
Density of total work done by stresses on strain increments.
void letTempRateStrainBe(double v)
const FloatArrayF< 6 > & givePlasticStrain() const
double giveTempDamageCompression() const
const FloatArrayF< 6 > & giveTempReducedStrain() const
double tempKappaDCompressionTwo
void setTempStressWork(double w)
Sets the density of total work of stress on strain increments to given value.
void letTempEquivStrainCompressionBe(double v)
void letTempKappaDCompressionOneBe(double v)
double giveEquivStrainCompression() const
double kappaDCompressionTwo
double tempKappaDTensionTwo
double giveKappaDTensionOne() const
double giveTempRateFactor() const
void letTempEquivStrainBe(double v)
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
FloatArrayF< 6 > effectiveStress
void restoreContext(DataStream &stream, ContextMode mode) override
int giveTempStateFlag() const
double tempKappaDCompressionOne
void letTempRateFactorBe(double v)
double tempKappaDTensionOne
void letTempStateFlagBe(const int v)
void letTempKappaDTensionBe(double v)
ConcreteDPM2Status(GaussPoint *gp)
Constructor.
FloatArrayF< 6 > tempPlasticStrain
void letTempEquivStrainTensionBe(double v)
double giveDamageTension() const
double tempDissWork
Non-equilibrated density of dissipated work.
const FloatArrayF< 6 > & giveTempEffectiveStress() const
FloatArrayF< 6 > tempReducedStrain
double equivStrainTension
void letTempReducedStrainBe(const FloatArrayF< 6 > &v)
const FloatArrayF< 6 > & giveReducedStrain() const
void letTempKappaDCompressionTwoBe(double v)
FloatArrayF< 2 > computeDFDInv(double sig, double rho, double theta, double tempKappa) const
double yieldHardInitial
Parameter of the hardening law of the plasticity model.
FloatArrayF< 6 > computeDGDStress(const FloatArrayF< 6 > &stress, const double tempKappa) const
double deltaTime
Input parameter which simulates a loading rate. Only for debugging purposes.
double AHard
Parameter of the ductilityMeasure of the plasticity model.
FloatArrayF< 2 > computeDDGDInvDKappa(double sig, double rho, double tempKappa) const
void assignStateFlag(GaussPoint *gp) const
Assign state flag.
double computeDFDKappa(double sig, double rho, double theta, double tempKappa) const
FloatArrayF< 6 > performPlasticityReturn(GaussPoint *gp, const FloatMatrixF< 6, 6 > &D, const FloatArrayF< 6 > &strain) const
double yieldTolDamage
yield tolerance for the damage model.
double hardeningModulus
Hardening modulus.
FloatMatrixF< 8, 8 > computeFullJacobian(const FloatArrayF< 6 > &stress, const double deltaLambda, GaussPoint *gp, TimeStep *atTime, const double tempKappa) const
FloatMatrixF< 2, 2 > computeDDGDDInv(double sig, double rho, double tempKappa) const
FloatArrayF< 2 > computeDGDInv(double sig, double rho, double tempKappa) const
ConcreteDPM2(int n, Domain *d)
Constructor.
double ftOne
Control parameter for the bilinear softening law.
FloatArrayF< 6 > computeDRhoDStress(const FloatArrayF< 6 > &stress) const
Computes the derivative of rho with respect to the stress.
void saveContext(DataStream &stream, ContextMode mode) override
double computeHardeningTwo(double tempKappa) const
double mQ
Dilation parameter of the plastic potential.
double computeDKappaDDeltaLambda(double sig, double rho, double theta, double tempKappa) const
double DHard
Parameter of the ductilityMeasure of the plasticity model.
ConcreteDPM2_ReturnResult
double computeAlpha(FloatArrayF< 6 > &effectiveStressTension, FloatArrayF< 6 > &effectiveStressCompression, const FloatArrayF< 6 > &effectiveStress) const
Compute alpha for rate effect.
FloatMatrixF< 6, 6 > computeDDCosThetaDDStress(const FloatArrayF< 6 > &stress) const
double computeDDKappaDDeltaLambdaDKappa(double sig, double rho, double theta, double tempKappa) const
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
double computeDRDCosTheta(const double theta, const double ecc) const
Computes the derivative of function r with respect to cos theta.
double computeDuctilityMeasureDamage(GaussPoint *gp, const double sig, const double rho) const
Compute the ductility measure for the damage model.
FloatArrayF< 2 > computeDamage(const FloatArrayF< 6 > &strain, const FloatMatrixF< 6, 6 > &D, double timeFactor, GaussPoint *gp, TimeStep *tStep, double alpha, const FloatArrayF< 6 > &effectiveStress) const
Compute damage parameters.
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
bool hasMaterialModeCapability(MaterialMode mode) const override
int softeningType
Type of softening function used.
double gM
Elastic shear modulus.
virtual double computeDuctilityMeasure(double sig, double rho, double theta) const
double computeYieldValue(double sig, double rho, double theta, double tempKappa) const
FloatArrayF< 2 > computeDDuctilityMeasureDInv(double sig, double rho, double theta, double tempKappa) const
double performRegularReturn(FloatArrayF< 6 > &stress, ConcreteDPM2_ReturnResult &returnResult, ConcreteDPM2_ReturnType &returnType, double kappaP, GaussPoint *gp, double theta) const
double nu
Elastic poisson's ration.
double kM
Elastic bulk modulus.
virtual double computeDamageParamTension(double equivStrain, double kappaOne, double kappaTwo, double le, double omegaOld, double rateFactor) const
Compute damage parameter in tension.
double CHard
Parameter of the ductilityMeasure of the plasticity model.
void initDamaged(double kappa, const FloatArrayF< 6 > &strain, GaussPoint *gp) const
bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override
const char * giveInputRecordName() const override
FloatArrayF< 6 > computeDSigDStress() const
Computes the derivative of sig with respect to the stress.
FloatMatrixF< 6, 6 > compute3dTangentStiffness(GaussPoint *gp, TimeStep *tStep) const
Compute the 3d tangent stiffness matrix.
double computeTempKappa(double kappaInitial, double sigTrial, double rhoTrial, double sig) const
Compute tempKappa.
double fc
Parameters of the yield surface of the plasticity model. fc is the uniaxial compressive strength,...
double helem
Element size (to be used in fracture energy approach (crack band).
FloatArrayF< 6 > computeDCosThetaDStress(const FloatArrayF< 6 > &stress) const
double computeRatioPotential(double sig, double rho, double tempKappa) const
FloatArrayF< 6 > computeDFDStress(const FloatArrayF< 6 > &stress, const double tempKappa) const
double BHard
Parameter of the ductilityMeasure of the plasticity model.
FloatArrayF< 6 > computeDDGDStressDKappa(const FloatArrayF< 6 > &stress, double tempKappa) const
double dilationConst
Control parameter for te volumetric plastic flow of the plastic potential.
double performVertexReturn(FloatArrayF< 6 > &stress, ConcreteDPM2_ReturnResult &returnResult, ConcreteDPM2_ReturnType &returnType, double apexStress, double tempKappaP, GaussPoint *gp) const
void initializeFrom(InputRecord &ir) override
FloatMatrixF< 6, 6 > computeDDRhoDDStress(const FloatArrayF< 6 > &stress) const
Computes the second derivative of rho with the respect to the stress.
IsotropicLinearElasticMaterial linearElasticMaterial
Pointer for linear elastic material.
double computeDeltaPlasticStrainNormTension(double tempKappaD, double kappaD, GaussPoint *gp) const
Compute equivalent strain value for tension.
double yieldHardPrimePeak
Parameter of the hardening law of the plasticity model.
double computeRateFactor(double alpha, double timeFactor, GaussPoint *gp, TimeStep *deltaTime) const
int newtonIter
Maximum number of iterations for stress return.
FloatMatrixF< 6, 6 > compute3dSecantStiffness(GaussPoint *gp, TimeStep *tStep) const
Compute the 3d secant stiffness matrix.
double ASoft
Parameter of the ductilityMeasure of the damage model.
FloatArrayF< 2 > computeDDKappaDDeltaLambdaDInv(double sig, double rho, double theta, double tempKappa) const
FloatMatrixF< 6, 6 > computeDDGDDStress(const FloatArrayF< 6 > &stress, const double tempKappa) const
double efCompression
Control parameter for the exponential softening law.
double computeHardeningTwoPrime(double tempKappa) const
double wfOne
Control parameter for the bilinear softening law in tension.
int checkForUnAndReloading(double &tempEquivStrain, double &minEquivStrain, const FloatMatrixF< 6, 6 > &D, GaussPoint *gp) const
Check for un- and reloading in the damage part.
void computeCoordinates(const FloatArrayF< 6 > &stress, double &sig, double &rho, double &theta) const
Compute the Haigh-Westergaard coordinates.
void checkForVertexCase(double &answer, ConcreteDPM2_ReturnType &returnType, double sig, double tempKappa, GaussPoint *gp) const
void restoreContext(DataStream &stream, ContextMode mode) override
double yieldTol
yield tolerance for the plasticity model.
double m
Friction parameter of the yield surface.
virtual double computeEquivalentStrain(double sig, double rho, double theta) const
Compute the base equivalent strain value.
double computeHardeningOne(double tempKappa) const
FloatArrayF< 6 > giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
FloatArrayF< 6 > computeDDKappaDDeltaLambdaDStress(const FloatArrayF< 6 > &stress, double tempKappa) const
double computeDDRDDCosTheta(const double theta, const double ecc) const
Computes the second derivative of function r with respect to cos theta.
double eM
Elastic Young's modulus.
double computeDeltaPlasticStrainNormCompression(double tempAlpha, double tempKappaD, double kappaD, GaussPoint *gp, const double rho) const
Compute equivalent strain value for compression.
const char * giveClassName() const override
virtual double computeDamageParamCompression(double equivStrain, double kappaOne, double kappaTwo, double omegaOld, double rateFactor) const
Compute damage parameter in compression.
double wf
Control parameter for the linear/bilinear softening law in tension.
FloatMatrixF< 6, 6 > give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
FloatMatrixF< 4, 4 > computeJacobian(double sig, double rho, double theta, double tempKappa, double deltaLambda, GaussPoint *gp) const
double computeHardeningOnePrime(double tempKappa) const
GaussPoint * gp
Associated integration point.
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
StructuralMaterial(int n, Domain *d)
static FloatArrayF< 6 > computeDeviator(const FloatArrayF< 6 > &s)
#define _IFT_ConcreteDPM2_Name