OOFEM 3.0
Loading...
Searching...
No Matches
b3solidmat.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 b3solidmat_h
36#define b3solidmat_h
37
38#include "kelvinChM.h"
39
41
42#define _IFT_B3SolidMaterial_Name "b3solidmat"
43#define _IFT_B3SolidMaterial_emodulimode "emodulimode"
44#define _IFT_B3SolidMaterial_microprestress "microprestress"
45#define _IFT_B3SolidMaterial_c0 "c0"
46#define _IFT_B3SolidMaterial_c1 "c1"
47#define _IFT_B3SolidMaterial_ksh "ksh"
48#define _IFT_B3SolidMaterial_finalhumidity "finalhumidity"
49#define _IFT_B3SolidMaterial_initialhumidity "initialhumidity"
50#define _IFT_B3SolidMaterial_lambda0 "lambda0"
52
53namespace oofem {
58{
59protected:
61 double microprestress_old = 0.;
62 double microprestress_new = 0.;
63
64public:
65 B3SolidMaterialStatus(GaussPoint *g, int nunits);
66
67 void updateYourself(TimeStep *tStep) override;
68
69 void saveContext(DataStream &stream, ContextMode mode) override;
70 void restoreContext(DataStream &stream, ContextMode mode) override;
71
72 double giveMPS() const { return microprestress_old; }
73 void setMPS(double src) { microprestress_new = src; }
74
75 // definition
76 const char *giveClassName() const override { return "B3SolidMaterialStatus"; }
77};
78
79
86{
87protected:
88 double t0 = 0.;
89 double w = 0., E28 = 0., q1 = 0., q2 = 0., q3 = 0., q4 = 0., q5 = 0.; // predicted data
90
92 double lambda0 = 0.;
93
96 double EpsSinf = 0., kt = 0., ks = 0., vs = 0., hum = 0.;
98 double es0 = 0., r = 0., rprime = 0., at = 0.;
99 // Additional parameters for sorption isotherm (used to compute relative humidity from water content)
100 double w_h = 0.;
101 double n = 0.;
102 double a = 0.;
103 mutable double EspringVal = 0.;
108 int EmoduliMode = 0;
114 double c0 = 0.;
115 double c1 = 0.;
116 double tS0 = 0.;
117 double kSh = 0.;
118
119
120public:
122
124 const FloatArray &reducedStrain, TimeStep *tStep) const override;
125
126 void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override;
127
128 const char *giveClassName() const override { return "B3SolidMaterial"; }
129 const char *giveInputRecordName() const override { return _IFT_B3SolidMaterial_Name; }
130 void initializeFrom(InputRecord &ir) override;
131
132 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
133
135 double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep) const override;
136
137protected:
138 bool hasIncrementalShrinkageFormulation() const override { return true; }
139
141
143 void computePointShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const;
144
145 void predictParametersFrom(double, double, double, double, double, double, double);
146
148 double computeSolidifiedVolume(TimeStep *tStep) const;
149
151 double computeFlowTermViscosity(GaussPoint *gp, TimeStep *tStep) const;
152
153 double inverse_sorption_isotherm(double w) const;
154
156 FloatArray computeCharCoefficients(double tPrime, GaussPoint *gp, TimeStep *tStep) const override;
157
159 void updateEparModuli(double tPrime, GaussPoint *gp, TimeStep *tStep) const override;
160
161 void computeCharTimes() override;
162
163 double giveEModulus(GaussPoint *gp, TimeStep *tStep) const override;
164
165 void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override;
166
174 double computeMicroPrestress(GaussPoint *gp, TimeStep *tStep, int option) const;
175
177 double giveInitMicroPrestress() const;
178
180 double giveHumidity(GaussPoint *gp, TimeStep *tStep) const;
181
183 double giveHumidityIncrement(GaussPoint *gp, TimeStep *tStep) const;
184};
185} // end namespace oofem
186#endif // b3solidmat_h
#define _IFT_B3SolidMaterial_Name
Definition b3solidmat.h:42
void setMPS(double src)
Definition b3solidmat.h:73
double microprestress_old
Microprestresses.
Definition b3solidmat.h:61
B3SolidMaterialStatus(GaussPoint *g, int nunits)
Definition b3solidmat.C:779
void updateYourself(TimeStep *tStep) override
Definition b3solidmat.C:783
const char * giveClassName() const override
Definition b3solidmat.h:76
void restoreContext(DataStream &stream, ContextMode mode) override
Definition b3solidmat.C:803
void saveContext(DataStream &stream, ContextMode mode) override
Definition b3solidmat.C:793
double giveHumidity(GaussPoint *gp, TimeStep *tStep) const
Computes relative humidity at given time step and GP.
Definition b3solidmat.C:699
void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
Definition b3solidmat.C:537
double computeFlowTermViscosity(GaussPoint *gp, TimeStep *tStep) const
Evaluation of the flow term viscosity.
Definition b3solidmat.C:520
double n
Constant-exponent (obtained from experiments) n [Pedersen, 1990].
Definition b3solidmat.h:101
void computePointShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of the shrinkageStrainVector. Shrinkage is fully dependent on humidity rate in given GP.
Definition b3solidmat.C:472
double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep) const override
Evaluation of the compliance function of the non-aging solidifying constituent.
Definition b3solidmat.C:378
double a
Constant (obtained from experiments) A [Pedersen, 1990].
Definition b3solidmat.h:102
double inverse_sorption_isotherm(double w) const
Definition b3solidmat.C:576
double giveInitMicroPrestress() const
Computes initial value of the MicroPrestress.
Definition b3solidmat.C:692
double computeSolidifiedVolume(TimeStep *tStep) const
Evaluation of the relative volume of the solidified material.
Definition b3solidmat.C:500
void initializeFrom(InputRecord &ir) override
Definition b3solidmat.C:49
FloatArray computeCharCoefficients(double tPrime, GaussPoint *gp, TimeStep *tStep) const override
Evaluation of characteristic moduli of the non-aging Kelvin chain.
Definition b3solidmat.C:342
void computeCharTimes() override
Evaluation of characteristic times.
Definition b3solidmat.C:295
enum oofem::B3SolidMaterial::b3ShModeType shMode
double lambda0
constant equal to one day in time units of analysis (eg. 86400 if the analysis runs in seconds)
Definition b3solidmat.h:92
bool hasIncrementalShrinkageFormulation() const override
Definition b3solidmat.h:138
void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
Definition b3solidmat.C:391
double giveHumidityIncrement(GaussPoint *gp, TimeStep *tStep) const
Computes relative humidity increment at given time step and GP.
Definition b3solidmat.C:725
double EpsSinf
Additional parameters for average cross section shrinkage.
Definition b3solidmat.h:96
double computeMicroPrestress(GaussPoint *gp, TimeStep *tStep, int option) const
Definition b3solidmat.C:599
double tS0
MPS tS0 - necessary for the initial value of microprestress (age when the load is applied).
Definition b3solidmat.h:116
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
Definition b3solidmat.C:764
double es0
Additional parameters for free shrinkage at material point.
Definition b3solidmat.h:98
double w_h
Constant water content (obtained from experiments) w_h [Pedersen, 1990].
Definition b3solidmat.h:100
B3SolidMaterial(int n, Domain *d)
Definition b3solidmat.h:121
double EspringVal
elastic modulus of the aging spring (first member of Kelvin chain if retardation spectrum is used)
Definition b3solidmat.h:103
void predictParametersFrom(double, double, double, double, double, double, double)
Definition b3solidmat.C:184
void updateEparModuli(double tPrime, GaussPoint *gp, TimeStep *tStep) const override
Update of partial moduli of individual chain units.
Definition b3solidmat.C:283
double c1
MPS constant c1 (=C1*R*T/M).
Definition b3solidmat.h:115
const char * giveInputRecordName() const override
Definition b3solidmat.h:129
void computeTotalAverageShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const
Definition b3solidmat.C:421
const char * giveClassName() const override
Definition b3solidmat.h:128
double giveEModulus(GaussPoint *gp, TimeStep *tStep) const override
Evaluation of the incremental modulus.
Definition b3solidmat.C:243
double c0
MPS constant c0 [MPa^-1 * day^-1].
Definition b3solidmat.h:114
double kSh
MPS shrinkage parameter. Either this or inithum and finalhum must be given in input record.
Definition b3solidmat.h:117
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition b3solidmat.C:754
KelvinChainMaterialStatus(GaussPoint *g, int nunits)
Definition kelvinChM.C:290
KelvinChainMaterial(int n, Domain *d)
Definition kelvinChM.C:44
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