OOFEM 3.0
Loading...
Searching...
No Matches
concrete2.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 concrete2_h
36#define concrete2_h
37
38#include "femcmpnn.h"
39#include "dictionary.h"
40#include "material.h"
43#include "floatarray.h"
45
47
48#define _IFT_Concrete2_Name "concrete2"
49#define _IFT_Concrete2_e "e"
50#define _IFT_Concrete2_n "n"
51#define _IFT_Concrete2_sccc "sccc"
52#define _IFT_Concrete2_scct "scct"
53#define _IFT_Concrete2_epp "epp"
54#define _IFT_Concrete2_epu "epu"
55#define _IFT_Concrete2_eopp "eopp"
56#define _IFT_Concrete2_eopu "eopu"
57#define _IFT_Concrete2_sheartol "sheartol"
58#define _IFT_Concrete2_is_plastic_flow "is_plastic_flow"
59#define _IFT_Concrete2_ifad "ifad"
60#define _IFT_Concrete2_stirr_e "stirr_e"
61#define _IFT_Concrete2_stirr_ft "stirr_ft"
62#define _IFT_Concrete2_stirr_a "stirr_a"
63#define _IFT_Concrete2_stirr_tol "stirr_tol"
64#define _IFT_Concrete2_stirr_eref "stirr_eref"
65#define _IFT_Concrete2_stirr_lambda "stirr_lambda"
67
68namespace oofem {
69#define c2_SCCC 300
70#define c2_SCCT 301
71#define c2_EPP 302
72#define c2_EPU 303
73#define c2_EOPP 304
74#define c2_EOPU 305
75#define c2_SHEARTOL 306
76#define c2_E 307
77#define c2_n 308
78#define stirr_E 309
79#define stirr_Ft 310
80#define stirr_A 311
81#define stirr_TOL 312
82#define stirr_EREF 313
83#define stirr_LAMBDA 314
84#define c2_IS_PLASTIC_FLOW 315
85#define c2_IFAD 316
86
91{
92protected:
95
96 double tempSCCM = 0., tempEPM = 0., tempSCTM = 0., tempE0PM = 0., tempSRF = 0., tempSEZ = 0.;
97
98 double SCCM = 0.;
99 double EPM = 0.;
100 double SCTM = -1.;
101 double E0PM = 0.;
102 double SRF = 0.;
103 double SEZ = 0.;
104
105public:
107
108 void printOutputAt(FILE *file, TimeStep *tStep) const override
109 { StructuralMaterialStatus :: printOutputAt(file, tStep); }
110
115 { plasticStrainVector = std :: move(v); }
118
125
126 // query for non-tem variables (usefull for postprocessing)
127 double &giveCurrentPressureStrength() { return SCCM; }
128 double &giveMaxEffPlasticStrain() { return EPM; }
129 double &giveCurrentTensionStrength() { return SCTM; }
130 double &giveCurrentStressInStirrups() { return SRF; }
131 double &giveCurrentStrainInZDir() { return SEZ; }
132 double &giveMaxVolPlasticStrain() { return E0PM; }
133
134
135 void initTempStatus() override;
136 void updateYourself(TimeStep *tStep) override;
137
138 void saveContext(DataStream &stream, ContextMode mode) override;
139 void restoreContext(DataStream &stream, ContextMode mode) override;
140
141 const char *giveClassName() const override { return "Concrete2MaterialStatus"; }
142};
143
144
151{
152private:
153 double SCCC = 0.;
154 double SCCT = 0.;
155 double EPP = 0.;
156 double EPU = 0.;
157 double EOPP = 0.;
158 double EOPU = 0.;
165 double SHEARTOL = 0.;
166
167 double E = 0., n = 0.;
168 // stirrups
169 double stirrE = 0., stirrFt = 0., stirrA = 0., stirrTOL = 0., stirrEREF = 0., stirrLAMBDA = 0.;
173 int IFAD = 0;
174
176
177public:
178 Concrete2(int n, Domain * d);
179
180 FloatArrayF<5> giveRealStressVector_PlateLayer(const FloatArrayF<5> &strain, GaussPoint *gp,TimeStep *tStep) const override;
181
182 FloatMatrixF<5,5> givePlateLayerStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override;
183
184 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
185
186 double give(int, GaussPoint *gp) const override;
187
188 const char *giveClassName() const override { return "Concrete2"; }
189 const char *giveInputRecordName() const override { return _IFT_Concrete2_Name; }
190 void initializeFrom(InputRecord &ir) override;
191
192protected:
193 void dtp3(GaussPoint *gp, FloatArray &e, FloatArray &s, FloatArray &ep,
194 double SCC, double SCT, int *ifplas) const;
195 void dtp2(GaussPoint *gp, FloatArray &e, FloatArray &s, FloatArray &ep,
196 double SCC, double SCT, int *ifplas) const;
197 void stirr(double dez, double srf) const;
198 void strsoft(GaussPoint *gp, double epsult, FloatArray &ep, double &ep1,
199 double &ep2, double &ep3, double SCC, double SCT, int &ifupd) const;
200
201 // two functions used to initialize and updating temporary variables in
202 // gp's status. These variables are used to control process, when
203 // we try to find equilibrium state.
204 void updateStirrups(GaussPoint *gp, FloatArray &strainIncrement, TimeStep *tStep) const;
205};
206} // end namespace oofem
207#endif // concrete2_h
void updateYourself(TimeStep *tStep) override
Definition concrete2.C:1354
double SEZ
Current strain in transverse (z) direction.
Definition concrete2.h:103
const char * giveClassName() const override
Definition concrete2.h:141
void saveContext(DataStream &stream, ContextMode mode) override
Definition concrete2.C:1249
double & giveTempCurrentPressureStrength()
Definition concrete2.h:119
double & giveTempCurrentStressInStirrups()
Definition concrete2.h:122
FloatArray plasticStrainIncrementVector
Definition concrete2.h:94
double & giveTempCurrentTensionStrength()
Definition concrete2.h:121
double SCCM
Current pressure strength.
Definition concrete2.h:98
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
Definition concrete2.h:108
void letPlasticStrainIncrementVectorBe(FloatArray v)
Definition concrete2.h:116
double EPM
Max. eff. plastic strain.
Definition concrete2.h:99
void restoreContext(DataStream &stream, ContextMode mode) override
Definition concrete2.C:1286
const FloatArray & givePlasticStrainIncrementVector() const
Definition concrete2.h:112
double SCTM
Current tension strength.
Definition concrete2.h:100
const FloatArray & givePlasticStrainVector() const
Definition concrete2.h:111
double E0PM
Max. vol. plastic strain.
Definition concrete2.h:101
void letPlasticStrainVectorBe(FloatArray v)
Definition concrete2.h:114
double SRF
current stress in stirrups.
Definition concrete2.h:102
Concrete2MaterialStatus(GaussPoint *g)
Definition concrete2.C:1242
double EOPU
Ultimate vol. pl. strain.
Definition concrete2.h:158
double EPP
Threshold eff. plastic strain for softening in compress.
Definition concrete2.h:155
double SCCC
Pressure strength.
Definition concrete2.h:153
void updateStirrups(GaussPoint *gp, FloatArray &strainIncrement, TimeStep *tStep) const
Definition concrete2.C:1159
void stirr(double dez, double srf) const
double EPU
Ultimate eff. pl. strain.
Definition concrete2.h:156
int IFAD
Determines if state variables should be updated or not (>0 updates).
Definition concrete2.h:173
double EOPP
Threshold volumetric plastic strain for soft. in tension.
Definition concrete2.h:157
void initializeFrom(InputRecord &ir) override
Definition concrete2.C:54
void strsoft(GaussPoint *gp, double epsult, FloatArray &ep, double &ep1, double &ep2, double &ep3, double SCC, double SCT, int &ifupd) const
Definition concrete2.C:993
double give(int, GaussPoint *gp) const override
Definition concrete2.C:83
int IS_PLASTIC_FLOW
Indicates that plastic flow (not deformation theory) is used in pressure.
Definition concrete2.h:171
const char * giveClassName() const override
Definition concrete2.h:188
FloatMatrixF< 5, 5 > givePlateLayerStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const override
Definition concrete2.C:1219
void dtp3(GaussPoint *gp, FloatArray &e, FloatArray &s, FloatArray &ep, double SCC, double SCT, int *ifplas) const
Definition concrete2.C:642
double SCCT
Tension strength.
Definition concrete2.h:154
Concrete2(int n, Domain *d)
Definition concrete2.C:48
IsotropicLinearElasticMaterial linearElasticMaterial
Definition concrete2.h:175
const char * giveInputRecordName() const override
Definition concrete2.h:189
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition concrete2.C:1235
void dtp2(GaussPoint *gp, FloatArray &e, FloatArray &s, FloatArray &ep, double SCC, double SCT, int *ifplas) const
Definition concrete2.C:845
FloatArrayF< 5 > giveRealStressVector_PlateLayer(const FloatArrayF< 5 > &strain, GaussPoint *gp, TimeStep *tStep) const override
Default implementation relies on giveRealStressVector_StressControl.
Definition concrete2.C:151
StructuralMaterialStatus(GaussPoint *g)
Constructor. Creates new StructuralMaterialStatus with IntegrationPoint g.
#define _IFT_Concrete2_Name
Definition concrete2.h:48
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