OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
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 - 2015 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_ac "a/c"
53 #define _IFT_MPSMaterial_q1 "q1"
54 #define _IFT_MPSMaterial_q2 "q2"
55 #define _IFT_MPSMaterial_q3 "q3"
56 #define _IFT_MPSMaterial_q4 "q4"
57 #define _IFT_MPSMaterial_lambda0 "lambda0"
58 #define _IFT_MPSMaterial_t0 "t0"
59 #define _IFT_MPSMaterial_ksh "ksh"
60 //#define _IFT_MPSMaterial_wh "w_h"
61 //#define _IFT_MPSMaterial_ncoeff "ncoeff"
62 //#define _IFT_MPSMaterial_a "a"
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_stiffnessfactor "stiffnessfactor"
73 #define _IFT_MPSMaterial_p "p"
74 #define _IFT_MPSMaterial_p_tilde "p_tilde"
75 #define _IFT_MPSMaterial_k3 "k3"
76 #define _IFT_MPSMaterial_sh_a "sh_a"
77 #define _IFT_MPSMaterial_sh_hC "sh_hc"
78 #define _IFT_MPSMaterial_sh_n "sh_n"
79 #define _IFT_MPSMaterial_alpha_as "alpha_as"
80 #define _IFT_MPSMaterial_eps_cas0 "eps_cas0"
81 #define _IFT_MPSMaterial_B4_eps_au_infty "b4_eps_au_infty"
82 #define _IFT_MPSMaterial_B4_tau_au "b4_tau_au"
83 #define _IFT_MPSMaterial_B4_alpha "b4_alpha"
84 #define _IFT_MPSMaterial_B4_r_t "b4_r_t"
85 #define _IFT_MPSMaterial_B4_cem_type "b4_cem_type"
86 #define _IFT_MPSMaterial_temperInCelsius "temperincelsius"
87 
88 
89 namespace oofem {
98 {
99 protected:
101  double hum;
103  double T;
104  double T_increment;
105  double T_max;
114 
115 #ifdef keep_track_of_strains
122 #endif
123 
124 
125 public:
126  MPSMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits);
127  virtual ~MPSMaterialStatus() { }
128 
129  virtual void initTempStatus();
130  virtual void updateYourself(TimeStep *tStep);
131 
132  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
133  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
134 
136  double giveHum() { return hum; }
138  void setHum(double src) { hum = src; }
140  double giveHumIncrement() { return hum_increment; }
142  void setHumIncrement(double src) { hum_increment = src; }
143 
145  double giveT() { return T; }
147  void setT(double src) { T = src; }
148 
150  double giveTIncrement() { return T_increment; }
152  void setTIncrement(double src) { T_increment = src; }
153 
155  double giveTmax() { return T_max; }
157  void setTmax(double src) { T_max = src; }
158 
160  double giveEquivalentTime() { return equivalentTime; }
162  void setEquivalentTimeTemp(double src) { equivalentTimeTemp = src; }
163 
167  void setFlowTermViscosityTemp(double src) { flowTermViscosityTemp = src; }
168 
170  void storeEmodulus(double src) { storedEmodulus = src; }
171  void setEmodulusFlag(bool src) { storedEmodulusFlag = src; }
173  double giveStoredEmodulus(void) { return storedEmodulus; }
175 
176 #ifdef keep_track_of_strains
177  void setTempDryingShrinkageStrain(double src) { tempDryingShrinkageStrain = src; }
180 
181  void setTempAutogenousShrinkageStrain(double src) { tempAutogenousShrinkageStrain = src; }
184 
185  void setCreepStrainIncrement(FloatArray src) { creepStrainIncrement = std :: move(src); }
186  const FloatArray &giveCreepStrain() const { return creepStrain; }
187 #endif
188 
189  // definition
190  virtual const char *giveClassName() const { return "MPSMaterialStatus"; }
191 };
192 
193 
205 {
206 protected:
207 
208 
210  double t0;
212  double q1, q2, q3, q4;
214  double lambda0;
215 
216 
217  enum coupledAnalysisType { Basic, MPS_full, MPS_humidity, MPS_temperature } CoupledAnalysis;
218 
219  double EspringVal; // elastic modulus of the aging spring (first member of Kelvin chain if retardation spectrum is used)
220 
222  //double w_h, n, a; //constant (obtained from experiments) A [Pedersen, 1990]
223 
224  // MPS theory parameters
226  double kSh;
228  double muS, k3;
230  double kTm;
232  double kTc;
234  double ct;
238  double QEtoR, QRtoR, QStoR; //[K]
240  double alphaE, alphaR, alphaS; //[-]
242  double p;
244  double sh_a, sh_hC, sh_n;
246  double eps_cas0;
248  double b4_eps_au_infty, b4_tau_au, b4_alpha, b4_r_t;
249 
252 
255 
256 
257 public:
259  virtual ~MPSMaterial() { }
260 
261  virtual const char *giveInputRecordName() const { return _IFT_MPSMaterial_Name; }
262  virtual const char *giveClassName() const { return "MPSMaterial"; }
263 
265 
266  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
267 
268  virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep);
269  //virtual void updateYourself(GaussPoint *gp, TimeStep *tStep);
270 
271 
272 
273  virtual void giveShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode);
274 
276  virtual double computeCreepFunction(double t, double t_prime, GaussPoint *gp, TimeStep *tStep);
277 
278  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const;
279 
280 protected:
281  void predictParametersFrom(double, double, double, double);
282 
283  virtual void computeCharTimes();
284 
286  virtual void computeCharCoefficients(FloatArray &answer, double, GaussPoint *gp, TimeStep *tStep);
287 
288  virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep);
289 
290  virtual double computeSolidifiedVolume(GaussPoint *gp, TimeStep *tStep);
291 
292  virtual double computeBetaMu(GaussPoint *gp, TimeStep *tStep, int Mu);
293  virtual double computeLambdaMu(GaussPoint *gp, TimeStep *tStep, int Mu);
294 
296  double computeFlowTermViscosity(GaussPoint *gp, TimeStep *tStep);
297 
299  double giveInitViscosity(TimeStep *tStep);
300 
301  virtual void giveEigenStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, ValueModeType mode);
302 
303  virtual int hasIncrementalShrinkageFormulation() { return 1; }
304 
305 
307  void computePointShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
308 
310  void computeFibAutogenousShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
311 
313  void computeB4AutogenousShrinkageStrainVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
314 
315  //double inverse_sorption_isotherm(double w);
316 
322  double giveHumidity(GaussPoint *gp, TimeStep *tStep, int option);
323 
329  double giveTemperature(GaussPoint *gp, TimeStep *tStep, int option);
330 
335  double computePsiR(GaussPoint *gp, TimeStep *tStep, int option);
336 
338  double computePsiS(GaussPoint *gp, TimeStep *tStep);
339 
341  double computePsiE(GaussPoint *gp, TimeStep *tStep);
342 
346  double computeEquivalentTime(GaussPoint *gp, TimeStep *tStep, int option);
347 
348  friend class RankineMPSmat;
349 };
350 } // end namespace oofem
351 #endif // mps_h
double giveStoredEmodulus(void)
Returns Emodulus if computed previously in the same tStep.
Definition: mps.h:173
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Definition: mps.C:164
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
This class implements a solidifying Kelvin chain model describing a viscoelastic material.
Definition: kelvinChSolM.h:67
virtual int hasIncrementalShrinkageFormulation()
If only incremental shrinkage strain formulation is provided, then total shrinkage strain must be tra...
Definition: mps.h:303
double q4
Definition: mps.h:212
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
double giveDryingShrinkageStrain(void)
Definition: mps.h:179
FloatArray creepStrainIncrement
Definition: mps.h:121
void setTIncrement(double src)
Stores temperature increment.
Definition: mps.h:152
const FloatArray & giveCreepStrain() const
Definition: mps.h:186
void setEquivalentTimeTemp(double src)
Stores equivalent time.
Definition: mps.h:162
double kTm
kTm replaces ln(h) on RHS of the differential equation describing evolution of MPS ...
Definition: mps.h:230
void setTempAutogenousShrinkageStrain(double src)
Definition: mps.h:181
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
double giveHumIncrement()
Returns relative humidity increment.
Definition: mps.h:140
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
void setTmax(double src)
Stores maximum reached temperature.
Definition: mps.h:157
bool giveStoredEmodulusFlag(void)
Definition: mps.h:174
void setCreepStrainIncrement(FloatArray src)
Definition: mps.h:185
MPSMaterial(int n, Domain *d)
Definition: mps.h:258
double giveEquivalentTime()
Returns equivalent time.
Definition: mps.h:160
double tempAutogenousShrinkageStrain
Definition: mps.h:119
FloatArray creepStrain
Definition: mps.h:120
MPSMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits)
Definition: mps.C:53
double temperScaleDifference
0 for Kelvin, 273.15 for Celsius
Definition: mps.h:254
double giveTmax()
Returns previously maximum reached temperature.
Definition: mps.h:155
double giveAutogenousShrinkageStrain(void)
Definition: mps.h:183
double storedEmodulus
Definition: mps.h:113
virtual const char * giveClassName() const
Definition: mps.h:262
double lambda0
constant equal to one day in time units of analysis (eg. 86400 if the analysis runs in seconds) ...
Definition: mps.h:214
void setTempDryingShrinkageStrain(double src)
Definition: mps.h:177
double muS
fluidity parameter used in viscosity evolution equation
Definition: mps.h:228
double giveT()
Returns temperature.
Definition: mps.h:145
void setEmodulusFlag(bool src)
Definition: mps.h:171
This class implements the extended B3 model for concrete creep and shrinkage based on the microprestr...
Definition: mps.h:204
void setT(double src)
Stores temperature.
Definition: mps.h:147
double stiffnessFactor
scaling factor 1. for Pa, 1.e6 for MPa - only for empirical formulas - q1-q4 and ft and gf ...
Definition: mps.h:251
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
double equivalentTime
Hidden variable - equivalent time: necessary to compute solidified volume.
Definition: mps.h:107
double alphaS
Definition: mps.h:240
virtual ~MPSMaterialStatus()
Definition: mps.h:127
double autogenousShrinkageStrain
Definition: mps.h:118
double giveFlowTermViscosityTemp()
Definition: mps.h:166
double flowTermViscosityTemp
Definition: mps.h:110
double giveTempAutogenousShrinkageStrain(void)
Definition: mps.h:182
void setFlowTermViscosityTemp(double src)
Definition: mps.h:167
bool storedEmodulusFlag
flag for Emodulus - true if modulus has been already computed in the current time step ...
Definition: mps.h:112
double tempDryingShrinkageStrain
Definition: mps.h:117
double kTc
parameter reducing creep effects of thermal cycling (replaces kTm in such case)
Definition: mps.h:232
double giveTempDryingShrinkageStrain(void)
Definition: mps.h:178
virtual const char * giveClassName() const
Definition: mps.h:190
void setHum(double src)
Stores relative humidity.
Definition: mps.h:138
double t0
age when temperature or humidity starts to change
Definition: mps.h:210
double kSh
additional parameters for sorption isotherm (used to compute relative humidity from water content) ...
Definition: mps.h:226
double sh_n
Definition: mps.h:244
double QStoR
Definition: mps.h:238
double b4_tau_au
Definition: mps.h:248
Abstract base class representing a material status information.
Definition: matstatus.h:84
double hum_increment
Definition: mps.h:102
Class representing vector of real numbers.
Definition: floatarray.h:82
double ct
parameter reducing creep effects of thermal cycling
Definition: mps.h:234
#define _IFT_MPSMaterial_Name
Definition: mps.h:46
double giveHum()
Returns relative humidity.
Definition: mps.h:136
double giveFlowTermViscosity()
Returns viscosity of the flow term (associated with q4 and microprestress evolution) ...
Definition: mps.h:165
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
This class implements associated Material Status to MPSMaterial, which corresponds to a model for hum...
Definition: mps.h:97
double p
exponent in the microprestress/viscosity governing equation
Definition: mps.h:242
Class representing the general Input Record.
Definition: inputrecord.h:101
This class implements associated Material Status to KelvinChainSolidMaterial, which corresponds to a ...
Definition: kelvinChSolM.h:45
FloatArray * giveShrinkageStrainVector()
Definition: rheoChM.h:104
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: mps.C:81
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
double equivalentTimeTemp
Definition: mps.h:108
double hum
Values of humidity and temperature in a particular GP and their increment.
Definition: mps.h:101
double EspringVal
Definition: mps.h:219
the oofem namespace is to define a context or scope in which all oofem names are defined.
double eps_cas0
parameter for autogenous shrinkage according to fib MC 2010
Definition: mps.h:246
double flowTermViscosity
Definition: mps.h:109
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: mps.C:114
virtual ~MPSMaterial()
Definition: mps.h:259
virtual const char * giveInputRecordName() const
Definition: mps.h:261
double roomTemperature
reference room temperature for MPS algorithm [K]
Definition: mps.h:236
Class representing integration point in finite element program.
Definition: gausspoint.h:93
double dryingShrinkageStrain
Definition: mps.h:116
Class representing solution step.
Definition: timestep.h:80
double giveTIncrement()
Returns temperature increment.
Definition: mps.h:150
void storeEmodulus(double src)
Returns Emodulus if computed previously in the same tStep.
Definition: mps.h:170
void setHumIncrement(double src)
Stores relative humidity increment.
Definition: mps.h:142
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Definition: mps.C:140

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:30 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011