OOFEM 3.0
Loading...
Searching...
No Matches
concretedpm2.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35#ifndef ConcreteDPM2_h
36#define ConcreteDPM2_h
37
39#include "floatarray.h"
40#include "floatmatrix.h"
41#include "cltypes.h"
44#include "gausspoint.h"
45#include "mathfem.h"
46
47#define CDPM2_TOL 1.e-6
48#define keep_track_of_dissipated_energy
50
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"
76
77namespace oofem {
86{
87public:
100
101
102
103protected:
104
106
109
112
116
118
119 double kappaP = 0.;
120 double tempKappaP = 0.;
122
123 double kappaPPeak = 0.;
124
125 double deltaLambda = 0.;
126
127 double le = 0.;
128
129 double alpha = 0.;
130 double tempAlpha = 0.;
131
132 double equivStrain = 0.;
133 double tempEquivStrain = 0.;
134
137
140
141 double kappaDTension = 0.;
142 double tempKappaDTension = 0.;
143
144 double kappaDCompression = 0.;
146
147 double kappaDTensionOne = 0.;
149
152
153 double kappaDTensionTwo = 0.;
155
158
159 double damageTension = 0.;
160 double tempDamageTension = 0.;
161
162 double damageCompression = 0.;
164
165 double deltaEquivStrain = 0.;
166
167 double rateFactor = 1.;
168 double tempRateFactor = 0.;
169
171 double rateStrain = 0.;
172 double tempRateStrain = 0.;
173
177
178
179#ifdef keep_track_of_dissipated_energy
181 double stressWork = 0.;
183 double tempStressWork = 0.;
185 double dissWork = 0.;
187 double tempDissWork = 0.;
188#endif
189
190public:
193
194 void initTempStatus() override;
195 void updateYourself(TimeStep *tStep) override;
196 void printOutputAt(FILE *file, TimeStep *tStep) const override;
197 void saveContext(DataStream &stream, ContextMode mode) override;
198 void restoreContext(DataStream &stream, ContextMode mode) override;
199 const char *giveClassName() const override { return "ConcreteDPM2Status"; }
200
201
202 // Inline functions for access to state variables
203
209
215
216
222
228
234 {
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 ] ) );
238 }
239
245 {
246 return 1. / 3. * ( plasticStrain [ 0 ] + plasticStrain [ 1 ] + plasticStrain [ 2 ] );
247 }
248
253 double giveKappaP() const
254 { return kappaP; }
255
261 double giveKappaDTensionOne() const
262 { return kappaDTensionOne; }
263
270 { return kappaDCompressionOne; }
271
272
278 double giveKappaDTensionTwo() const
279 { return kappaDTensionTwo; }
280
281
288 { return kappaDCompressionTwo; }
289
290
296 double giveEquivStrain() const
297 { return equivStrain; }
298
305 { return equivStrainTension; }
306
307
315
321 double giveDamageTension() const
322 { return damageTension; }
323
330 { return damageCompression; }
331
337 double giveRateFactor() const
338 { return rateFactor; }
339
345 double giveTempRateFactor() const
346 { return tempRateFactor; }
347
348
349 double giveRateStrain() const
350 { return rateStrain; }
351
352 void letTempRateStrainBe(double v)
353 { tempRateStrain = v; }
354
355
356 void letTempAlphaBe(double v)
357 { tempAlpha = v; }
358
363 int giveStateFlag() const
364 { return state_flag; }
365
366
367 // giveTemp:
368
369 // Functions used to access the temp variables.
375
380 { return 1. / 3. * ( tempPlasticStrain [ 0 ] + tempPlasticStrain [ 1 ] + tempPlasticStrain [ 2 ] ); }
381
387 double giveTempKappaP() const
388 { return tempKappaP; }
389
390 double giveDeltaLambda() const
391 { return deltaLambda; }
392
398 double giveKappaDTension() const
399 { return kappaDTension; }
400
405 double giveAlpha() const
406 { return alpha; }
407
412 double giveTempAlpha() const
413 { return tempAlpha; }
414
415
416
423 { return kappaDCompression; }
424
431 { return tempDamageTension; }
432
439 { return tempDamageCompression; }
440
446 double giveDeltaEquivStrain() const
447 { return deltaEquivStrain; }
448
455 { return temp_state_flag; }
456
457 // letTemp...be :
458 // Functions used by the material to assign a new value to a temp variable.
465
466
469
472
473
478 void letTempKappaPBe(double v)
479 { tempKappaP = v; }
480
481 void letDeltaLambdaBe(double v)
482 { deltaLambda = v; }
483
489 { tempKappaDTension = v; }
490
497
504
511
518
525
531 { tempDamageTension = v; }
532
539
544 void letTempRateFactorBe(double v)
545 { tempRateFactor = v; }
546
551 void letTempEquivStrainBe(double v)
552 { tempEquivStrain = v; }
553
560
567
571 double giveLe() const { return le; }
572
576 void setLe(double ls)
577 { le = ls; }
578
583 void letTempStateFlagBe(const int v)
584 { temp_state_flag = v; }
585
586 void letKappaPPeakBe(double kappa)
587 { kappaPPeak = kappa; }
588#ifdef keep_track_of_dissipated_energy
590 double giveStressWork() { return stressWork; }
594 void setTempStressWork(double w) { tempStressWork = w; }
596 double giveDissWork() { return dissWork; }
598 double giveTempDissWork() { return tempDissWork; }
600 void setTempDissWork(double w) { tempDissWork = w; }
608 void computeWork(GaussPoint *gp, double ft);
609#endif
610};
611
612
613// **************************************************
614// *** CLASS CONCRETE DAMAGE PLASTICITY MODEL 2 ***
615// **************************************************
616
628{
629public:
630
636
644
645
646protected:
648 double fc = 0., ft = 0., ecc = 0.;
649
653 int damageFlag = 0;
654
655 double e0 = 0.;
656
658 double AHard = 0.;
660 double BHard = 0.;
662 double CHard = 0.;
664 double DHard = 0.;
665
667 double hardeningModulus = 0.;
668
670 double ASoft = 0.;
671
674
676 double yieldHardInitial = 0.;
677
679 double dilationConst = 0.;
680
682 double m = 0.;
683
685 double mQ = 0.;
686
688 double helem = 0.;
689
692
694 double eM = 0.;
696 double gM = 0.;
698 double kM = 0.;
700 double nu = 0.;
701
703 double efCompression = 0.;
704
706 double wf = 0.;
707
709 double wfOne = 0.;
710
712 double ftOne = 0.;
713
715 double yieldTol = 0.;
716
718 double yieldTolDamage = 0.;
719
721 int newtonIter = 0;
722
725
727 double deltaTime = 0.;
728
735
743
744public:
746 ConcreteDPM2(int n, Domain *d);
747
748 void initializeFrom(InputRecord &ir) override;
749
750 const char *giveClassName() const override { return "ConcreteDPM2"; }
751 const char *giveInputRecordName() const override { return _IFT_ConcreteDPM2_Name; }
752
753 FloatArrayF< 6 >giveRealStressVector_3d(const FloatArrayF< 6 > &strain, GaussPoint *gp, TimeStep *tStep) const override;
754
755 bool hasMaterialModeCapability(MaterialMode mode) const override;
756
764 const FloatMatrixF< 6, 6 > &D,
765 const FloatArrayF< 6 > &strain) const;
766
775 void checkForVertexCase(double &answer,
776 ConcreteDPM2_ReturnType &returnType,
777 double sig,
778 double tempKappa,
779 GaussPoint *gp) const;
780
789 ConcreteDPM2_ReturnResult &returnResult,
790 ConcreteDPM2_ReturnType &returnType,
791 double kappaP,
792 GaussPoint *gp,
793 double theta) const;
794
804 double rho,
805 double theta,
806 double tempKappa,
807 double deltaLambda,
808 GaussPoint *gp) const;
809
820 ConcreteDPM2_ReturnResult &returnResult,
821 ConcreteDPM2_ReturnType &returnType,
822 double apexStress,
823 double tempKappaP,
824 GaussPoint *gp) const;
825
834 double computeYieldValue(double sig,
835 double rho,
836 double theta,
837 double tempKappa) const;
838
844 double computeHardeningOne(double tempKappa) const;
845
851 double computeHardeningOnePrime(double tempKappa) const;
852
858 double computeHardeningTwo(double tempKappa) const;
859
866 double computeHardeningTwoPrime(double tempKappa) const;
867
876 double computeDFDKappa(double sig,
877 double rho,
878 double theta,
879 double tempKappa) const;
880
889 double computeDKappaDDeltaLambda(double sig, double rho, double theta, double tempKappa) const;
890
891
899 virtual double computeDuctilityMeasure(double sig,
900 double rho,
901 double theta) const;
902
912 double rho,
913 double theta,
914 double tempKappa) const;
915
924 double rho,
925 double tempKappa) const;
926
932 double computeRatioPotential(double sig,
933 double rho,
934 double tempKappa) const;
935
939 double computeRateFactor(double alpha,
940 double timeFactor,
941 GaussPoint *gp,
942 TimeStep *deltaTime) const;
943
949 double rho,
950 double tempKappa) const;
951
952
958 const double tempKappa) const;
959
960
966
972
978 double rho,
979 double tempKappa) const;
980
981
988 double rho,
989 double theta,
990 double tempKappa) const;
991
996 FloatArrayF< 6 >computeDDKappaDDeltaLambdaDStress(const FloatArrayF< 6 > &stress, double tempKappa) const;
997
998
1003 FloatArrayF< 6 >computeDDGDStressDKappa(const FloatArrayF< 6 > &stress, double tempKappa) const;
1004
1008 double computeDDKappaDDeltaLambdaDKappa(double sig, double rho, double theta, double tempKappa) const;
1009
1010
1016 double rho,
1017 double theta,
1018 double tempKappa) const;
1019
1025 const double tempKappa) const;
1026
1032 const double tempKappa) const;
1033
1038 const double deltaLambda,
1039 GaussPoint *gp,
1040 TimeStep *atTime,
1041 const double tempKappa) const;
1042
1044 double computeTempKappa(double kappaInitial,
1045 double sigTrial,
1046 double rhoTrial,
1047 double sig) const;
1048
1050 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;
1051
1052
1054 int checkForUnAndReloading(double &tempEquivStrain,
1055 double &minEquivStrain,
1056 const FloatMatrixF< 6, 6 > &D,
1057 GaussPoint *gp) const;
1058
1060 double computeAlpha(FloatArrayF< 6 > &effectiveStressTension, FloatArrayF< 6 > &effectiveStressCompression, const FloatArrayF< 6 > &effectiveStress) const;
1061
1063 virtual double computeDamageParamTension(double equivStrain, double kappaOne, double kappaTwo, double le, double omegaOld, double rateFactor) const;
1064
1066 virtual double computeDamageParamCompression(double equivStrain, double kappaOne, double kappaTwo, double omegaOld, double rateFactor) const;
1067
1069 double computeDeltaPlasticStrainNormTension(double tempKappaD, double kappaD, GaussPoint *gp) const;
1070
1072 double computeDeltaPlasticStrainNormCompression(double tempAlpha, double tempKappaD, double kappaD, GaussPoint *gp, const double rho) const;
1073
1075 virtual double computeEquivalentStrain(double sig, double rho, double theta) const;
1076
1078 double computeDuctilityMeasureDamage(GaussPoint *gp, const double sig, const double rho) const;
1079
1084 void initDamaged(double kappa,
1085 const FloatArrayF< 6 > &strain,
1086 GaussPoint *gp) const;
1087
1089 void computeCoordinates(const FloatArrayF< 6 > &stress, double &sig, double &rho, double &theta) const;
1090
1091
1093 void assignStateFlag(GaussPoint *gp) const;
1094
1097
1099 double computeDRDCosTheta(const double theta, const double ecc) const;
1100
1102 double computeDDRDDCosTheta(const double theta, const double ecc) const;
1103
1104
1107
1110
1111 FloatMatrixF< 6, 6 >give3dMaterialStiffnessMatrix(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
1112
1115
1118
1119 bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) const override { return false; }
1120
1121 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
1122
1123 void saveContext(DataStream &stream, ContextMode mode) override;
1124 void restoreContext(DataStream &stream, ContextMode mode) override;
1125
1126
1127protected:
1128 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
1129};
1130} //end namespace oofem
1131#endif
double giveTempVolumetricPlasticStrain() const
void letDeltaLambdaBe(double v)
void letTempKappaDTensionTwoBe(double v)
double giveRateFactor() const
double giveDeltaEquivStrain() const
double giveVolumetricPlasticStrain() const
state_flag_values
Values of history variable state_flag.
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 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)
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.
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)
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 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
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 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
void letTempRateFactorBe(double v)
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
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.
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
long ContextMode
Definition contextmode.h:43

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011