35 #ifndef ConcreteDPM2_h 36 #define ConcreteDPM2_h 38 #include "../sm/Materials/structuralmaterial.h" 42 #include "../sm/Materials/structuralms.h" 47 #define DYNCON_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_fcZero "fczero" 54 #define _IFT_ConcreteDPM2_ft "ft" 55 #define _IFT_ConcreteDPM2_ecc "ecc" 56 #define _IFT_ConcreteDPM2_kinit "kinit" 57 #define _IFT_ConcreteDPM2_ahard "ahard" 58 #define _IFT_ConcreteDPM2_bhard "bhard" 59 #define _IFT_ConcreteDPM2_chard "chard" 60 #define _IFT_ConcreteDPM2_dhard "dhard" 61 #define _IFT_ConcreteDPM2_dilation "dilation" 62 #define _IFT_ConcreteDPM2_asoft "asoft" 63 #define _IFT_ConcreteDPM2_hp "hp" 64 #define _IFT_ConcreteDPM2_yieldtol "yieldtol" 65 #define _IFT_ConcreteDPM2_newtoniter "newtoniter" 66 #define _IFT_ConcreteDPM2_wf "wf" 67 #define _IFT_ConcreteDPM2_efc "efc" 68 #define _IFT_ConcreteDPM2_softeningType "stype" 69 #define _IFT_ConcreteDPM2_ftOne "ft1" 70 #define _IFT_ConcreteDPM2_wfOne "wf1" 71 #define _IFT_ConcreteDPM2_rateFlag "rateflag" 72 #define _IFT_ConcreteDPM2_timeFactor "timefactor" 73 #define _IFT_ConcreteDPM2_helem "helem" 74 #define _IFT_ConcreteDPM2_isoflag "isoflag" 165 #ifdef keep_track_of_dissipated_energy 207 return sqrt( .5 * ( 2. * dev [ 0 ] * dev [ 0 ] + 2. * dev [ 1 ] * dev [ 1 ] + 2. * dev [ 2 ] * dev [ 2 ] +
208 dev [ 3 ] * dev [ 3 ] + dev [ 4 ] * dev [ 4 ] + dev [ 5 ] * dev [ 5 ] ) );
327 { tempRateStrain = v; }
428 { tempPlasticStrain = v; }
449 { tempKappaDTension = v; }
456 { tempKappaDCompression = v; }
463 { tempKappaDTensionOne = v; }
470 { tempKappaDCompressionOne = v; }
477 { tempKappaDTensionTwo = v; }
484 { tempKappaDCompressionTwo = v; }
491 { tempDamageTension = v; }
498 { tempDamageCompression = v; }
505 { tempRateFactor = v; }
512 { tempEquivStrain = v; }
519 { tempEquivStrainTension = v; }
526 { tempEquivStrainCompression = v; }
546 { temp_state_flag = v; }
550 { kappaPPeak = kappa; }
551 #ifdef keep_track_of_dissipated_energy 708 {
return linearElasticMaterial; }
730 bool checkForVertexCase(
double &answer,
741 double performRegularReturn(
FloatArray &stress,
781 double performVertexReturn(
FloatArray &stress,
794 double computeYieldValue(
double sig,
797 double tempKappa)
const;
804 double computeHardeningOne(
double tempKappa)
const;
811 double computeHardeningOnePrime(
double tempKappa)
const;
818 double computeHardeningTwo(
double tempKappa)
const;
826 double computeHardeningTwoPrime(
double tempKappa)
const;
835 double computeDFDKappa(
double sig,
848 double computeDKappaDDeltaLambda(
double sig,
double rho,
double tempKappa);
849 double computeDKappaDDeltaLambda1d(
double sig,
double tempKappa);
859 virtual double computeDuctilityMeasure(
double sig,
872 void computeDDuctilityMeasureDInv(
FloatArray &answer,
882 double computeDDuctilityMeasureDInv1d(
double sigma,
double tempKappa);
901 double computeDGDInv1d(
double sig,
double tempKappa);
908 double computeRatioPotential(
double sig,
914 double computeRateFactor(
double alpha,
931 double computeDDGDDInv1d(
double sigma,
double tempKappa);
941 double computeDDGDInvDKappa1d(
double sigma,
double tempKappa);
947 void computeDDKappaDDeltaLambdaDInv(
FloatArray &answer,
952 double computeDDKappaDDeltaLambdaDInv1d(
double sigma,
double tempKappa);
956 double computeDDKappaDDeltaLambdaDKappa(
double sig,
double rho,
double tempKappa);
957 double computeDDKappaDDeltaLambdaDKappa1d(
double sig,
double tempKappa);
967 double tempKappa)
const;
968 double computeDFDInv1d(
double sigma,
double tempKappa)
const;
972 double computeTempKappa(
double kappaInitial,
988 double &minEquivStrain,
995 virtual double computeDamageParamTension(
double equivStrain,
double kappaOne,
double kappaTwo,
double le,
double omegaOld);
997 virtual double computeDamageParamCompression(
double equivStrain,
double kappaOne,
double kappaTwo,
double omegaOld);
1000 double computeDeltaPlasticStrainNormTension(
double tempKappaD,
double kappaD,
GaussPoint *gp);
1002 double computeDeltaPlasticStrainNormCompression(
double tempAlpha,
double tempKappaD,
double kappaD,
GaussPoint *gp);
1004 virtual double computeEquivalentStrain(
double sig,
double rho,
double theta);
1014 void initDamaged(
double kappa,
1020 void computeTrialCoordinates(
const FloatArray &stress,
double &sig,
double &rho,
double &theta);
1031 void computeDSigDStress(
FloatArray &answer)
const;
1038 void computeDCosThetaDStress(
FloatArray &answer,
1042 double computeDRDCosTheta(
double theta,
double ecc)
const;
1046 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
This class contains the combination of a local plasticity model for concrete with a local isotropic d...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
state_flag_values
Values of history variable state_flag.
double mQ
Dilation parameter of the plastic potential.
int giveTempStateFlag() const
Get the temp value of the state flag from the material status.
double kM
Elastic bulk modulus.
double timeFactor
Input parameter which simulates a loading rate. Only for debugging purposes.
double giveKappaDCompressionTwo() const
Get the compression hardening variable two of the damage model from the material status.
void letTempPlasticStrainBe(const FloatArray &v)
Assign the temp value of deviatoric plastic strain.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
void letTempKappaDCompressionOneBe(double v)
Assign the temp value of the hardening variable of the damage model.
void letTempKappaDTensionBe(double v)
Assign the temp value of the rate factor of the damage model.
double giveKappaDCompression() const
Get the temp value of the hardening variable of the damage model from the material status...
double giveKappaDTension() const
Get the temp value of the hardening variable of the damage model from the material status...
double tempKappaDCompressionOne
GaussPoint * gp
Associated integration point.
double fcZero
This parameter is needed for the rate dependence. It should be read in if rate dependence is consider...
double giveKappaDCompressionOne() const
Get the compression hardening variable one of the damage model from the material status.
virtual ~ConcreteDPM2Status()
Destructor.
const FloatArray & givePlasticStrain() const
Get the plastic strain deviator from the material status.
double m
Friction parameter of the yield surface.
double eM
Elastic Young's modulus.
void letTempKappaDCompressionBe(double v)
Assign the temp value of the rate factor of the damage model.
int newtonIter
Maximum number of iterations for stress return.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
double ASoft
Parameter of the ductilityMeasure of the damage model.
double giveEquivStrainCompression() const
Get the compression equivalent strain from the material status.
virtual const char * giveClassName() const
void letTempAlphaBe(double v)
This class implements a structural material status information.
void computeWork(GaussPoint *gp, double ft)
Computes the increment of total stress work and of dissipated work (gf is the dissipation density per...
LinearElasticMaterial * giveLinearElasticMaterial()
double giveTempRateFactor() const
Get the temp variable of the damage model from the material status.
void setTempStressWork(double w)
Sets the density of total work of stress on strain increments to given value.
LinearElasticMaterial * linearElasticMaterial
Pointer for linear elastic material.
double yieldHardInitial
Parameter of the hardening law of the plasticity model.
double giveTempVolumetricPlasticStrain() const
Get the temp value of the volumetric plastic strain in plane stress.
void letTempDamageCompressionBe(double v)
Assign the temp value of the compressive damage variable of the damage model.
void letTempKappaDTensionTwoBe(double v)
Assign the temp value of the second tension hardening variable of the damage model.
#define _IFT_ConcreteDPM2_Name
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
double giveTempDamageCompression() const
Get the temp value of the hardening variable of the damage model from the material status...
MatResponseMode
Describes the character of characteristic material matrix.
double helem
Element size (to be used in fracture energy approach (crack band).
double tempKappaDTensionTwo
double giveTempKappaP() const
Get the temp value of the hardening variable of the plasticity model from the material status...
virtual contextIOResultType saveContext(DataStream &, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
This class is a abstract base class for all linear elastic material models in a finite element proble...
void letTempStateFlagBe(const int v)
Assign the temp value of the state flag.
double AHard
Parameter of the ductilityMeasure of the plasticity model.
double giveDissWork()
Returns the density of dissipated work.
double equivStrainCompression
void letTempRateStrainBe(double v)
double giveRateFactor() const
Get the rate factor of the damage model from the material status.
double tempStressWork
Non-equilibrated density of total work done by stresses on strain increments.
const FloatArray & giveTempPlasticStrain() const
Get the temp value of the full plastic strain vector from the material status.
double tempEquivStrainTension
void letTempDamageTensionBe(double v)
Assign the temp value of the tensile damage variable of the damage model.
double giveEquivStrain() const
Get the equivalent strain from the material status.
FloatArray tempPlasticStrain
double yieldHardPrimePeak
Parameter of the hardening law of the plasticity model.
ConcreteDPM2_ReturnResult
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double wfOne
Control parameter for the bilinear softening law in tension.
double thetaTrial
Lode angle of the trial stress..
double tempDissWork
Non-equilibrated density of dissipated work.
double nu
Elastic poisson's ration.
double BHard
Parameter of the ductilityMeasure of the plasticity model.
double giveDeviatoricPlasticStrainNorm()
Get the deviatoric plastic strain norm from the material status.
double dilationConst
Control parameter for te volumetric plastic flow of the plastic potential.
virtual const char * giveClassName() const
void setLe(double ls)
Sets the characteristic length.
double hardeningModulus
Hardening modulus.
double efCompression
Control parameter for the exponential softening law.
double giveRateStrain() const
void letTempRateFactorBe(double v)
Assign the temp value of the rate factor of the damage model.
double giveTempDissWork()
Returns the density of temp dissipated work.
double giveTempStressWork()
Returns the temp density of total work of stress on strain increments.
double giveDeltaEquivStrain() const
Get the temp value of the hardening variable of the damage model from the material status...
ConcreteDPM2_ReturnType returnType
double kappaDCompressionOne
double stressWork
Density of total work done by stresses on strain increments.
ConcreteDPM2Status(int n, Domain *d, GaussPoint *gp)
Constructor.
double wf
Control parameter for the linear/bilinear softening law in tension.
double tempKappaDTensionOne
double yieldTol
yield tolerance for the plasticity model.
virtual const char * giveInputRecordName() const
double giveKappaP() const
Get the hardening variable of the plasticity model.
double giveDamageTension() const
Get the tension damage variable of the damage model from the material status.
void setTempDissWork(double w)
Sets the density of dissipated work to given value.
Abstract base class representing a material status information.
double tempEquivStrainCompression
Class representing vector of real numbers.
This class implements the material status associated to ConcreteDPM2.
double tempKappaDCompressionTwo
FloatArray strainVector
Equilibrated strain vector in reduced form.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
double ftOne
Control parameter for the bilinear softening law.
virtual contextIOResultType restoreContext(DataStream &, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
double kappaDCompressionTwo
double DHard
Parameter of the ductilityMeasure of the plasticity model.
double giveDamageCompression() const
Get the compressive damage variable of the damage model from the material status. ...
double tempKappaDCompression
double equivStrainTension
double rho
Length of the deviatoric stress.
int softeningType
Type of softening function used.
double giveTempDamageTension() const
Get the temp value of the hardening variable of the damage model from the material status...
double yieldTolDamage
yield tolerance for the damage model.
double giveLe()
Gives the characteristic length.
int state_flag
Indicates the state (i.e. elastic, unloading, plastic, damage, vertex) of the Gauss point...
int strainRateFlag
Flag which signals if strainRate effects should be considered.
static double computeDeviatoricVolumetricSplit(FloatArray &dev, const FloatArray &s)
Computes split of receiver into deviatoric and volumetric part.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
double rateStrain
Strains that are used for calculation of strain rates.
Abstract base class for all "structural" constitutive models.
void letTempKappaPBe(double v)
Assign the temp value of the hardening variable of the plasticity model.
double giveStressWork()
Returns the density of total work of stress on strain increments.
double gM
Elastic shear modulus.
void letDeltaLambdaBe(double v)
Assign the temp value of the rate factor of the damage model.
int giveStateFlag() const
Get the state flag from the material status.
void letTempEquivStrainCompressionBe(double v)
Assign the temp value of the rate factor of the damage model.
ConcreteDPM2_ReturnResult returnResult
void letTempKappaDCompressionTwoBe(double v)
Assign the temp value of the second compression hardening variable of the damage model.
the oofem namespace is to define a context or scope in which all oofem names are defined.
double giveVolumetricPlasticStrain() const
Get the volumetric plastic strain from the material status.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
void letTempEquivStrainBe(double v)
Assign the temp value of the rate factor of the damage model.
Class representing integration point in finite element program.
Class representing solution step.
double CHard
Parameter of the ductilityMeasure of the plasticity model.
double giveKappaDTensionTwo() const
Get the tension hardening variable two of the damage model from the material status.
double dissWork
Density of dissipated work.
void letKappaPPeakBe(double kappa)
double tempDamageCompression
double giveKappaDTensionOne() const
Get the hardening variable of the damage model from the material status.
void letTempKappaDTensionOneBe(double v)
Assign the temp value of the hardening variable of the damage model.
double giveEquivStrainTension() const
Get the tension equivalent strain from the material status.
void letTempEquivStrainTensionBe(double v)
Assign the temp value of the rate factor of the damage model.