OOFEM 3.0
Loading...
Searching...
No Matches
mps.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// ***********************************************************************************
36// *** CLASS Material Model based on Microprestress Solidification Theory & Status ***
37// ***********************************************************************************
38
39#ifndef mps_h
40#define mps_h
41
42#include "kelvinChSolM.h"
43
45
46#define _IFT_MPSMaterial_Name "mps"
47#define _IFT_MPSMaterial_mode "mode"
48#define _IFT_MPSMaterial_coupledanalysistype "coupledanalysistype"
49#define _IFT_MPSMaterial_fc "fc"
50#define _IFT_MPSMaterial_cc "cc"
51#define _IFT_MPSMaterial_wc "w/c"
52#define _IFT_MPSMaterial_wcr "wc" //for Python bindings
53#define _IFT_MPSMaterial_ac "a/c"
54#define _IFT_MPSMaterial_acr "ac" //for Python bindings
55#define _IFT_MPSMaterial_q1 "q1"
56#define _IFT_MPSMaterial_q2 "q2"
57#define _IFT_MPSMaterial_q3 "q3"
58#define _IFT_MPSMaterial_q4 "q4"
59#define _IFT_MPSMaterial_lambda0 "lambda0"
60// in input record t0 replaced by relMatAge
61//#define _IFT_MPSMaterial_t0 "t0"
62#define _IFT_MPSMaterial_ksh "ksh"
63#define _IFT_MPSMaterial_qetor "qetor"
64#define _IFT_MPSMaterial_qrtor "qrtor"
65#define _IFT_MPSMaterial_qstor "qstor"
66#define _IFT_MPSMaterial_alphae "alphae"
67#define _IFT_MPSMaterial_alphar "alphar"
68#define _IFT_MPSMaterial_alphas "alphas"
69#define _IFT_MPSMaterial_mus "mus"
70#define _IFT_MPSMaterial_ktm "ktm"
71#define _IFT_MPSMaterial_ktc "ktc"
72#define _IFT_MPSMaterial_khc "khc"
73#define _IFT_MPSMaterial_stiffnessfactor "stiffnessfactor"
74#define _IFT_MPSMaterial_p "p"
75#define _IFT_MPSMaterial_p_tilde "p_tilde"
76#define _IFT_MPSMaterial_k3 "k3"
77#define _IFT_MPSMaterial_sh_a "sh_a"
78#define _IFT_MPSMaterial_sh_hC "sh_hc"
79#define _IFT_MPSMaterial_sh_n "sh_n"
80#define _IFT_MPSMaterial_factor_ksh_h "factor_ksh_h"
81#define _IFT_MPSMaterial_factor_ksh_fh "factor_ksh_f(h)"
82#define _IFT_MPSMaterial_timedependent_ksh "timedependent_ksh"
83#define _IFT_MPSMaterial_alpha_as "alpha_as"
84#define _IFT_MPSMaterial_eps_cas0 "eps_cas0"
85#define _IFT_MPSMaterial_B4_eps_au_infty "b4_eps_au_infty"
86#define _IFT_MPSMaterial_B4_tau_au "b4_tau_au"
87#define _IFT_MPSMaterial_B4_alpha "b4_alpha"
88#define _IFT_MPSMaterial_B4_r_t "b4_r_t"
89#define _IFT_MPSMaterial_B4_cem_type "b4_cem_type"
90#define _IFT_MPSMaterial_temperInCelsius "temperincelsius"
91#define _IFT_MPSMaterial_hydrationTimescaleTF "hydrationtimescaletf"
92#define _IFT_MPSMaterial_autoShrinkageTF "autoshrinkagetf"
93#define _IFT_MPSMaterial_tau_nano "tau_nano"
95
96namespace oofem {
105{
106protected:
108 double hum = -1.;
109 double hum_increment = -1.;
110 double h_min = 1.;
111 double T = -1.;
112 double T_increment = -1.;
113 double T_max = 0.;
115 double equivalentTime = 0.;
117 double flowTermViscosity = 0.;
120 bool storedEmodulusFlag = false;
121 double storedEmodulus = -1.;
122
124 double humNano = -1.;
125 double humNanoTemp = -1.;
126
127#ifdef keep_track_of_strains
134#endif
135
136
137public:
138 MPSMaterialStatus(GaussPoint *g, int nunits);
139
140 void initTempStatus() override;
141 void updateYourself(TimeStep *tStep) override;
142
143 void saveContext(DataStream &stream, ContextMode mode) override;
144 void restoreContext(DataStream &stream, ContextMode mode) override;
145
147 double giveHum() { return hum; }
149 void setHum(double src) { hum = src; }
151 double giveHumIncrement() { return hum_increment; }
153 void setHumIncrement(double src) { hum_increment = src; }
154
155
157 double giveHumNano() { return humNano; }
159 void setHumNanoTemp(double src) { humNanoTemp = src; }
160
162 double giveHumMin() { return h_min; }
164 void setHumMin(double src) { h_min = src; }
165
166
168 double giveT() { return T; }
170 void setT(double src) { T = src; }
171
173 double giveTIncrement() { return T_increment; }
175 void setTIncrement(double src) { T_increment = src; }
176
178 double giveTmax() { return T_max; }
180 void setTmax(double src) { T_max = src; }
181
185 void setEquivalentTimeTemp(double src) { equivalentTimeTemp = src; }
186
191
193 void storeEmodulus(double src) { storedEmodulus = src; }
194 void setEmodulusFlag(bool src) { storedEmodulusFlag = src; }
196 double giveStoredEmodulus(void) { return storedEmodulus; }
198
199#ifdef keep_track_of_strains
203
207
209 const FloatArray &giveCreepStrain() const { return creepStrain; }
210#endif
211
212 // definition
213 const char *giveClassName() const override { return "MPSMaterialStatus"; }
214};
215
216
228{
229protected:
231 double t0 = 0.;
233 double q1 = 0., q2 = 0., q3 = 0., q4 = 0.;
235 double lambda0 = 0.;
236
237
239
240 mutable double EspringVal = 0.; // elastic modulus of the aging spring (first member of Kelvin chain if retardation spectrum is used)
241
243 //double w_h, n, a; //constant (obtained from experiments) A [Pedersen, 1990]
244
245 // MPS theory parameters
247 double kSh = 0.;
249 double muS = 0., k3 = 0.;
251 double kTm = 0.;
253 double kTc = 0.;
255 double khc = 0.;
257 // commented - unused parameter? PH
258 //double ct = 0.;
260 double roomTemperature = 0.;
262 double QEtoR = 0., QRtoR = 0., QStoR = 0.; //[K]
264 double alphaE = 0., alphaR = 0., alphaS = 0.; //[-]
266 double p = 0.;
268 double sh_a = 0., sh_hC = 0., sh_n = 0.;
270 bool timeDependent_ksh = false;
274 double eps_cas0 = 0.;
276 double b4_eps_au_infty = 0., b4_tau_au = 0., b4_alpha = 0., b4_r_t = 0.;
277
279 double stiffnessFactor = 0.;
280
283
292
297
303 double tau_nano = 0.;
304
305
306
307public:
309
310 const char *giveInputRecordName() const override { return _IFT_MPSMaterial_Name; }
311 const char *giveClassName() const override { return "MPSMaterial"; }
312
313 void initializeFrom(InputRecord &ir) override;
314
315 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
316
317 void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override;
318 //void updateYourself(GaussPoint *gp, TimeStep *tStep) override;
319
320 void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override;
321
323 double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep) const override;
324
325 double giveEquivalentTime(GaussPoint *gp, TimeStep *tStep) const override;
326
327 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override;
328
329protected:
330 void predictParametersFrom(double, double, double, double);
331
332 void computeCharTimes() override;
333
335 FloatArray computeCharCoefficients(double tPrime, GaussPoint *gp, TimeStep *tStep) const override;
336
337 double giveEModulus(GaussPoint *gp, TimeStep *tStep) const override;
338
339 double computeSolidifiedVolume(GaussPoint *gp, TimeStep *tStep) const override;
340
341 double computeBetaMu(GaussPoint *gp, TimeStep *tStep, int Mu) const override;
342 double computeLambdaMu(GaussPoint *gp, TimeStep *tStep, int Mu) const override;
343
345 double computeFlowTermViscosity(GaussPoint *gp, TimeStep *tStep) const;
346
348 double giveInitViscosity(TimeStep *tStep) const;
349
350 void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override;
351
352 bool hasIncrementalShrinkageFormulation() const override { return true; }
353
355 void computePointShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const;
356
359
362
365
366 //double inverse_sorption_isotherm(double w) const;
367
373 double giveHumidity(GaussPoint *gp, TimeStep *tStep, int option) const;
374
381 double giveHumidityNano(GaussPoint *gp, TimeStep *tStep, int option) const;
382
388 double giveTemperature(GaussPoint *gp, TimeStep *tStep, int option) const;
389
394 double computePsiR(GaussPoint *gp, TimeStep *tStep, int option) const;
395
397 double computePsiS(GaussPoint *gp, TimeStep *tStep) const;
398
400 double computePsiE(GaussPoint *gp, TimeStep *tStep) const;
401
405 double computeEquivalentTime(GaussPoint *gp, TimeStep *tStep, int option) const;
406
407 friend class RankineMPSmat;
408};
409} // end namespace oofem
410#endif // mps_h
KelvinChainSolidMaterialStatus(GaussPoint *g, int nunits)
KelvinChainSolidMaterial(int n, Domain *d)
void setHum(double src)
Stores relative humidity.
Definition mps.h:149
void setFlowTermViscosityTemp(double src)
Definition mps.h:190
double tempDryingShrinkageStrain
Definition mps.h:129
void storeEmodulus(double src)
Returns Emodulus if computed previously in the same tStep.
Definition mps.h:193
MPSMaterialStatus(GaussPoint *g, int nunits)
Definition mps.C:54
double giveTIncrement()
Returns temperature increment.
Definition mps.h:173
void setEmodulusFlag(bool src)
Definition mps.h:194
FloatArray creepStrain
Definition mps.h:132
void updateYourself(TimeStep *tStep) override
Definition mps.C:65
double giveHumIncrement()
Returns relative humidity increment.
Definition mps.h:151
void setTmax(double src)
Stores maximum reached temperature.
Definition mps.h:180
FloatArray creepStrainIncrement
Definition mps.h:133
void saveContext(DataStream &stream, ContextMode mode) override
Definition mps.C:128
double dryingShrinkageStrain
Definition mps.h:128
const FloatArray & giveCreepStrain() const
Definition mps.h:209
bool giveStoredEmodulusFlag(void)
Definition mps.h:197
double humNano
value of relative humidity in the nanopores
Definition mps.h:124
double giveStoredEmodulus(void)
Returns Emodulus if computed previously in the same tStep.
Definition mps.h:196
void setTempDryingShrinkageStrain(double src)
Definition mps.h:200
double giveDryingShrinkageStrain(void)
Definition mps.h:202
double flowTermViscosity
Definition mps.h:117
const char * giveClassName() const override
Definition mps.h:213
double giveHumNano()
Returns relative humidity (nanopores).
Definition mps.h:157
double giveHumMin()
Returns previously minimum previously reached humidity - treatment of cyclic ambient coditions.
Definition mps.h:162
void setEquivalentTimeTemp(double src)
Stores equivalent time.
Definition mps.h:185
void restoreContext(DataStream &stream, ContextMode mode) override
Definition mps.C:154
double giveEquivalentTime()
Returns equivalent time.
Definition mps.h:183
double giveFlowTermViscosityTemp()
Definition mps.h:189
void initTempStatus() override
Definition mps.C:101
bool storedEmodulusFlag
flag for Emodulus - true if modulus has been already computed in the current time step
Definition mps.h:120
double giveTmax()
Returns previously maximum reached temperature.
Definition mps.h:178
double giveFlowTermViscosity()
Returns viscosity of the flow term (associated with q4 and microprestress evolution).
Definition mps.h:188
double autogenousShrinkageStrain
Definition mps.h:130
double giveTempAutogenousShrinkageStrain(void)
Definition mps.h:205
double giveAutogenousShrinkageStrain(void)
Definition mps.h:206
double giveT()
Returns temperature.
Definition mps.h:168
double giveTempDryingShrinkageStrain(void)
Definition mps.h:201
void setTempAutogenousShrinkageStrain(double src)
Definition mps.h:204
void setHumNanoTemp(double src)
Stores relative humidity (nanopores).
Definition mps.h:159
double equivalentTimeTemp
Definition mps.h:116
double flowTermViscosityTemp
Definition mps.h:118
void setHumIncrement(double src)
Stores relative humidity increment.
Definition mps.h:153
double hum
Values of humidity and temperature in a particular GP, their increment, and maximum/minimum to treat ...
Definition mps.h:108
double equivalentTime
Hidden variable - equivalent time: necessary to compute solidified volume.
Definition mps.h:115
double tempAutogenousShrinkageStrain
Definition mps.h:131
void setHumMin(double src)
Stores minimum reached humidity.
Definition mps.h:164
void setTIncrement(double src)
Stores temperature increment.
Definition mps.h:175
void setT(double src)
Stores temperature.
Definition mps.h:170
double giveHum()
Returns relative humidity.
Definition mps.h:147
void setCreepStrainIncrement(FloatArray src)
Definition mps.h:208
double roomTemperature
parameter reducing creep effects of thermal cycling
Definition mps.h:260
double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep) const override
Evaluation of the basic creep compliance function - can be used to compute elastic modulus in derived...
Definition mps.C:619
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
Definition mps.C:467
double temperScaleDifference
0 for Kelvin, 273.15 for Celsius
Definition mps.h:282
double kTm
kTm replaces ln(h) on RHS of the differential equation describing evolution of MPS
Definition mps.h:251
double QRtoR
Definition mps.h:262
int hydrationTimescaleTF
Definition mps.h:291
void computeAutogenousShrinkageDefinedByTF(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of the autogenousShrinkageStrainVector given by an auxiliary time function (autoShrinkageT...
Definition mps.C:1376
double computeEquivalentTime(GaussPoint *gp, TimeStep *tStep, int option) const
Definition mps.C:1705
double khc
parameter reducing creep effects of hygral cycling (0 = complete reduction, 1 = no reduction,...
Definition mps.h:255
void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
Definition mps.C:1149
double computeBetaMu(GaussPoint *gp, TimeStep *tStep, int Mu) const override
factors for exponential algorithm
Definition mps.C:839
double giveHumidityNano(GaussPoint *gp, TimeStep *tStep, int option) const
Definition mps.C:1500
double computeFlowTermViscosity(GaussPoint *gp, TimeStep *tStep) const
Evaluation of the flow term viscosity.
Definition mps.C:877
double giveHumidity(GaussPoint *gp, TimeStep *tStep, int option) const
Definition mps.C:1438
double computeLambdaMu(GaussPoint *gp, TimeStep *tStep, int Mu) const override
Definition mps.C:857
double alphaS
Definition mps.h:264
FloatArray computeCharCoefficients(double tPrime, GaussPoint *gp, TimeStep *tStep) const override
Evaluation of characteristic moduli of the non-aging Kelvin chain.
Definition mps.C:689
double eps_cas0
parameter for autogenous shrinkage according to fib MC 2010
Definition mps.h:274
void predictParametersFrom(double, double, double, double)
Definition mps.C:583
int autoShrinkageTF
Definition mps.h:296
double alphaR
Definition mps.h:264
double computePsiS(GaussPoint *gp, TimeStep *tStep) const
Evaluation of the factor transforming real time to reduced time (effect on the evolution of micropres...
Definition mps.C:1643
void initializeFrom(InputRecord &ir) override
Definition mps.C:187
double computeSolidifiedVolume(GaussPoint *gp, TimeStep *tStep) const override
Evaluation of the relative volume of the solidified material.
Definition mps.C:819
double kTc
parameter reducing creep effects of thermal cycling (replaces kTm in such case)
Definition mps.h:253
double giveEModulus(GaussPoint *gp, TimeStep *tStep) const override
Evaluation of the incremental modulus.
Definition mps.C:714
MPSMaterial(int n, Domain *d)
Definition mps.h:308
void computeB4AutogenousShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of the autogenousShrinkageStrainVector according to Bazant's B4 model. In the model the ev...
Definition mps.C:1334
double sh_n
Definition mps.h:268
void computeCharTimes() override
Evaluation of characteristic times.
Definition mps.C:650
double kSh
additional parameters for sorption isotherm (used to compute relative humidity from water content)
Definition mps.h:247
double stiffnessFactor
scaling factor 1. for Pa, 1.e6 for MPa - only for empirical formulas - q1-q4 and ft and gf
Definition mps.h:279
double tau_nano
Definition mps.h:303
double alphaE
parameters that control the effect of humidity on rates of hydration, creep and microprestress relaxa...
Definition mps.h:264
double giveInitViscosity(TimeStep *tStep) const
Returns initial value of the flow term viscosity.
Definition mps.C:1138
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition mps.C:573
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition mps.C:1741
double giveEquivalentTime(GaussPoint *gp, TimeStep *tStep) const override
By default returns equivalent time in the middle of the time step.
Definition mps.C:643
double b4_alpha
Definition mps.h:276
double computePsiE(GaussPoint *gp, TimeStep *tStep) const
Evaluation of the factor transforming real time to equivalent time (effect on the solidified volume).
Definition mps.C:1677
void computeFibAutogenousShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of the autogenousShrinkageStrainVector according to fib MC 2010 - autogenous shrinkage is ...
Definition mps.C:1285
FloatArray ksh_fh
Definition mps.h:272
bool hasIncrementalShrinkageFormulation() const override
Definition mps.h:352
double EspringVal
Definition mps.h:240
double lambda0
constant equal to one day in time units of analysis (eg. 86400 if the analysis runs in seconds)
Definition mps.h:235
const char * giveClassName() const override
Definition mps.h:311
double t0
age when temperature or humidity starts to change
Definition mps.h:231
double computePsiR(GaussPoint *gp, TimeStep *tStep, int option) const
Definition mps.C:1611
double giveTemperature(GaussPoint *gp, TimeStep *tStep, int option) const
Definition mps.C:1553
void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode) const override
Definition mps.C:482
double b4_tau_au
Definition mps.h:276
FloatArray ksh_h
nonlinear shrinkage function - user-defined piecewise-linear function
Definition mps.h:272
double QStoR
Definition mps.h:262
double sh_a
parameters for nonlinear shrinkage function
Definition mps.h:268
void computePointShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep) const
Evaluation of the shrinkageStrainVector - shrinkage is fully dependent on humidity rate in given GP.
Definition mps.C:1232
const char * giveInputRecordName() const override
Definition mps.h:310
double sh_hC
Definition mps.h:268
enum oofem::MPSMaterial::coupledAnalysisType CoupledAnalysis
friend class RankineMPSmat
Definition mps.h:407
double q1
compliances of the B3 model
Definition mps.h:233
double b4_r_t
Definition mps.h:276
double muS
fluidity parameter used in viscosity evolution equation
Definition mps.h:249
bool timeDependent_ksh
flag activating equivalent-time-dependence of shrinkage coefficient
Definition mps.h:270
double p
exponent in the microprestress/viscosity governing equation
Definition mps.h:266
double QEtoR
activation energies
Definition mps.h:262
double b4_eps_au_infty
parameters for autogenous shrinkage according to B4 model
Definition mps.h:276
#define _IFT_MPSMaterial_Name
Definition mps.h:46
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