OOFEM 3.0
Loading...
Searching...
No Matches
m4.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 m4_h
36#define m4_h
37
40
42
43#define _IFT_M4Material_Name "microplane_m4"
44#define _IFT_M4Material_c3 "c3"
45#define _IFT_M4Material_c4 "c4"
46#define _IFT_M4Material_c20 "c20"
47#define _IFT_M4Material_k1 "k1"
48#define _IFT_M4Material_k2 "k2"
49#define _IFT_M4Material_k3 "k3"
50#define _IFT_M4Material_k4 "k4"
51#define _IFT_M4Material_talpha "talpha"
53
54namespace oofem {
61{
62protected:
63 std::vector<MicroplaneState> microplaneStrain, tempMicroplaneStrain;
64 std::vector<MicroplaneState> microplaneStress, tempMicroplaneStress;
65
66public:
67 M4MaterialStatus(GaussPoint *g, int nplanes);
68
69 const char *giveClassName() const override { return "M4MaterialStatus"; }
70
71 void initTempStatus() override;
72 void updateYourself(TimeStep *tStep) override;
73
74 const MicroplaneState &giveMicroplaneStrain(int mnumber) const { return microplaneStrain[mnumber-1]; }
75 const MicroplaneState &giveMicroplaneStress(int mnumber) const { return microplaneStress[mnumber-1]; }
76
77 const MicroplaneState &giveTempMicroplaneStress(int mnumber) const { return tempMicroplaneStress[mnumber-1]; }
78
79 void letTempMicroplaneStrainBe(int mnumber, const MicroplaneState &state) { tempMicroplaneStrain[mnumber-1] = state; }
80 void letTempMicroplaneStressBe(int mnumber, const MicroplaneState &state) { tempMicroplaneStress[mnumber-1] = state; }
81
82 void saveContext(DataStream &stream, ContextMode mode) override;
83 void restoreContext(DataStream &stream, ContextMode mode) override;
84};
85
86
92{
93protected:
94 double c1 = 0., c2 = 0., c3 = 0., c4 = 0., c5 = 0.;
95 double c6 = 0., c7 = 0., c8 = 0., c9 = 0., c10 = 0.;
96 double c11 = 0., c12 = 0., c13 = 0., c14 = 0., c15 = 0.;
97 double c16 = 0., c17 = 0., c18 = 0., c19 = 0., c20 = 0.; /*c... fixed empirical constants*/
98 double k1 = 0., k2 = 0., k3 = 0., k4 = 0., k5 = 0., mu = 0.;
99 double EV = 0., ED = 0., ET = 0.;
100 double talpha = 0.;
101
102public:
109 M4Material(int n, Domain *d);
110
112
113 MicroplaneState giveRealMicroplaneStressVector(GaussPoint *gp, int mnumber, const MicroplaneState &strain, TimeStep *tStep) const override;
114
115 static double FVplus(double ev, double k1, double c13, double c14, double c15, double Ev);
116 static double FVminus(double ev, double k1, double k3, double k4, double E);
117 static double FDminus(double ed, double k1, double c7, double c8, double c9, double E);
118 static double FDplus(double ed, double k1, double c5, double c6, double c7, double c20, double E);
119 static double FN(double en, double sv, double k1, double c1, double c2, double c3, double c4,
120 double E, double Ev);
121 static double FT(double sn, double ev, double k1, double k2, double c10,
122 double c11, double c12, double Et);
123
124 void updateVolumetricStressTo(GaussPoint *gp, int mnumber, double sigv) const override;
125
126 void initializeFrom(InputRecord &ir) override;
127 const char *giveInputRecordName() const override { return _IFT_M4Material_Name; }
128 const char *giveClassName() const override { return "M4Material"; }
129
130protected:
131 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<M4MaterialStatus>(gp, numberOfMicroplanes); }
132};
133} // end namespace oofem
134#endif // m4_h
void letTempMicroplaneStrainBe(int mnumber, const MicroplaneState &state)
Definition m4.h:79
const char * giveClassName() const override
Definition m4.h:69
const MicroplaneState & giveMicroplaneStress(int mnumber) const
Definition m4.h:75
M4MaterialStatus(GaussPoint *g, int nplanes)
Definition m4.C:267
void initTempStatus() override
Definition m4.C:275
const MicroplaneState & giveMicroplaneStrain(int mnumber) const
Definition m4.h:74
const MicroplaneState & giveTempMicroplaneStress(int mnumber) const
Definition m4.h:77
void letTempMicroplaneStressBe(int mnumber, const MicroplaneState &state)
Definition m4.h:80
void saveContext(DataStream &stream, ContextMode mode) override
Definition m4.C:289
void restoreContext(DataStream &stream, ContextMode mode) override
Definition m4.C:296
std::vector< MicroplaneState > microplaneStrain
Definition m4.h:63
std::vector< MicroplaneState > tempMicroplaneStress
Definition m4.h:64
std::vector< MicroplaneState > tempMicroplaneStrain
Definition m4.h:63
std::vector< MicroplaneState > microplaneStress
Definition m4.h:64
void updateYourself(TimeStep *tStep) override
Definition m4.C:281
static double FVplus(double ev, double k1, double c13, double c14, double c15, double Ev)
Definition m4.C:49
static double FT(double sn, double ev, double k1, double k2, double c10, double c11, double c12, double Et)
Definition m4.C:92
double c19
Definition m4.h:97
double mu
Definition m4.h:98
FloatArrayF< 6 > giveThermalDilatationVector(GaussPoint *gp, TimeStep *tStep) const override
Definition m4.C:246
double c3
Definition m4.h:94
double c6
Definition m4.h:95
double c15
Definition m4.h:96
double c7
Definition m4.h:95
double c16
Definition m4.h:97
double c12
Definition m4.h:96
const char * giveClassName() const override
Definition m4.h:128
double k2
Definition m4.h:98
double c5
Definition m4.h:94
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition m4.h:131
static double FVminus(double ev, double k1, double k3, double k4, double E)
Definition m4.C:56
double talpha
Definition m4.h:100
double c1
Definition m4.h:94
void updateVolumetricStressTo(GaussPoint *gp, int mnumber, double sigv) const override
Definition m4.C:232
double k1
Definition m4.h:98
M4Material(int n, Domain *d)
Definition m4.C:44
double c13
Definition m4.h:96
static double FDplus(double ed, double k1, double c5, double c6, double c7, double c20, double E)
Definition m4.C:74
double c20
Definition m4.h:97
double k3
Definition m4.h:98
double c11
Definition m4.h:96
double c10
Definition m4.h:95
double EV
Definition m4.h:99
double k4
Definition m4.h:98
double c9
Definition m4.h:95
void initializeFrom(InputRecord &ir) override
Definition m4.C:191
double k5
Definition m4.h:98
double ED
Definition m4.h:99
static double FDminus(double ed, double k1, double c7, double c8, double c9, double E)
Definition m4.C:64
static double FN(double en, double sv, double k1, double c1, double c2, double c3, double c4, double E, double Ev)
Definition m4.C:84
double c14
Definition m4.h:96
double c2
Definition m4.h:94
MicroplaneState giveRealMicroplaneStressVector(GaussPoint *gp, int mnumber, const MicroplaneState &strain, TimeStep *tStep) const override
Definition m4.C:105
const char * giveInputRecordName() const override
Definition m4.h:127
double ET
Definition m4.h:99
double c17
Definition m4.h:97
double c18
Definition m4.h:97
double c8
Definition m4.h:95
double c4
Definition m4.h:94
double E
Young's modulus.
int numberOfMicroplanes
Number of microplanes.
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
#define _IFT_M4Material_Name
Definition m4.h:43
long ContextMode
Definition contextmode.h:43
Defines the stress or strain state in a micro plane.

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