OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
mpsdammat.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 - 2013 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 Damage extension of MPS model for creep and shrinakge of concrete ***
37 // ***********************************************************************************
38 
39 #ifndef mpsdammat_h
40 #define mpsdammat_h
41 
42 #include "mps.h"
43 
44 #define supplementary_info
45 
47 
48 #define _IFT_MPSDamMaterial_Name "mpsdammat"
49 //prediction of tensile strength and fracture energy accroding to fib MC2010
50 #define _IFT_MPSDamMaterial_timedepfracturing "timedepfracturing"
51 #define _IFT_MPSDamMaterial_fib_s "fib_s"
52 
53 #define _IFT_MPSDamMaterial_isotropic "isotropic"
54 
55 #define _IFT_MPSDamMaterial_maxOmega "maxomega"
56 
57 #define _IFT_MPSDamMaterial_damageLaw "damlaw"
58 #define _IFT_MPSDamMaterial_checkSnapBack "checksnapback"
59 #define _IFT_MPSDamMaterial_ft "ft"
60 #define _IFT_MPSDamMaterial_gf "gf"
61 
62 #define _IFT_MPSDamMaterial_ft28 "ft28"
63 #define _IFT_MPSDamMaterial_gf28 "gf28"
64 
66 
67 namespace oofem {
68 #define MPSDAMMAT_ITERATION_LIMIT 1.e-9
69 
73 {
74 protected:
80  double kappa;
82  double tempKappa;
84  double damage;
86  double tempDamage;
87 
89  double charLength;
92 
94  double var_e0;
96  double var_gf;
97 
98 #ifdef supplementary_info
99  double crackWidth;
101 #endif
102 
103 public:
104  MPSDamMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits);
105  virtual ~MPSDamMaterialStatus() { }
106 
109  void letTempViscoelasticStressVectorBe(FloatArray v) { tempEffectiveStressVector = std :: move(v); }
111 
113  double giveKappa() { return kappa; }
115  double giveTempKappa() { return tempKappa; }
117  void setTempKappa(double newKappa) { tempKappa = newKappa; }
119  double giveDamage() { return damage; }
121  double giveTempDamage() { return tempDamage; }
123  void setTempDamage(double newDamage) { tempDamage = newDamage; }
124 
126  double giveCharLength() { return charLength; }
128  void setCharLength(double length) { charLength = length; }
130  void giveCrackVector(FloatArray &answer);
132  void setCrackVector(FloatArray cv) { crackVector = cv; }
133 
134  void sete0(double e0) { var_e0 = e0; }
135  void setgf(double gf) { var_gf = gf; }
136  double givee0() { return var_e0; }
137  double givegf() { return var_gf; }
138 
139  virtual void printOutputAt(FILE *file, TimeStep *tStep);
140  virtual void initTempStatus();
141  virtual void updateYourself(TimeStep *tStep);
142 
143 #ifdef supplementary_info
144  void setCrackWidth(double src) { crackWidth = src; }
145  double giveCrackWidth(void) { return crackWidth; }
146  void setResidualTensileStrength(double src) { residTensileStrength = src; }
148 #endif
149 
150 
151  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
152  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
153 
154  // definition
155  virtual const char *giveClassName() const { return "MPSDamMaterialStatus"; }
156 
157 protected:
164  virtual void initDamaged(double kappa, FloatArray &totalStrainVector, GaussPoint *gp) { }
165 };
166 
167 
183 {
184 protected:
185 
187  double fib_s;
188  double fib_fcm28;
189  bool isotropic;
190 
192  double E;
193 
195  double maxOmega;
196 
198  //double const_e0;
199 
201  double ft;
202 
209  double const_gf;
210 
214  enum SofteningType { ST_Exponential_Cohesive_Crack, ST_Linear_Cohesive_Crack, ST_Disable_Damage };
215 
218 
221 
224 
226  double ft28;
228  double gf28;
229 
230 public:
231  MPSDamMaterial(int n, Domain *d);
232  virtual ~MPSDamMaterial() { }
233 
234  virtual int hasNonLinearBehaviour() { return 1; }
235 
236  virtual int hasMaterialModeCapability(MaterialMode mode);
237 
238  virtual const char *giveInputRecordName() const { return _IFT_MPSDamMaterial_Name; }
239  virtual const char *giveClassName() const { return "MPSDamMaterial"; }
240 
242 
243  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
244 
245  virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep);
246 
247  double givee0(GaussPoint *gp);
248  double givegf(GaussPoint *gp);
249 
256  void initDamaged(double kappa, FloatArray &totalStrainVector, GaussPoint *gp, TimeStep *tStep);
257 
258  void initDamagedFib(GaussPoint *gp, TimeStep *tStep);
259 
260  //void computeEquivalentStrain(double &kappa, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep);
261 
269  void computeDamage(double &omega, double kappa, GaussPoint *gp);
270 
280  void computeDamageForCohesiveCrack(double &omega, double kappa, GaussPoint *gp);
281 
282  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const;
283 
284 
285  virtual double computeTensileStrength(double equivalentTime);
286  virtual double computeFractureEnergy(double equivalentTime);
287 
288  virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer,
289  MatResponseMode mode,
290  GaussPoint *gp,
291  TimeStep *tStep);
292 
293  virtual void givePlaneStressStiffMtrx(FloatMatrix &answer,
294  MatResponseMode mode,
295  GaussPoint *gp,
296  TimeStep *tStep);
297 
298  virtual void givePlaneStrainStiffMtrx(FloatMatrix &answer,
299  MatResponseMode mode,
300  GaussPoint *gp,
301  TimeStep *tStep);
302 
303  virtual void give1dStressStiffMtrx(FloatMatrix &answer,
304  MatResponseMode mode,
305  GaussPoint *gp,
306  TimeStep *tStep);
307 
308 
309 protected:
310 
311  //virtual double giveEModulus(GaussPoint *gp, TimeStep *tStep);
312 };
313 } // end namespace oofem
314 #endif // mpsdammat_h
double giveDamage()
Returns the last equilibrated damage level.
Definition: mpsdammat.h:119
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
void letTempViscoelasticStressVectorBe(FloatArray v)
Assigns tempStressVector to given vector v.
Definition: mpsdammat.h:109
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Definition: mpsdammat.C:93
void setCharLength(double length)
Sets characteristic length to given value.
Definition: mpsdammat.h:128
double ft
Equivalent strain at stress peak (or a similar parameter).
Definition: mpsdammat.h:201
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
MPSDamMaterialStatus(int n, Domain *d, GaussPoint *g, int nunits)
Definition: mpsdammat.C:54
ElementCharSizeMethod ecsMethod
Method used for evaluation of characteristic element size.
Definition: mpsdammat.h:223
double giveKappa()
Returns the last equilibrated scalar measure of the largest strain level.
Definition: mpsdammat.h:113
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
Definition: mpsdammat.h:117
virtual const char * giveClassName() const
Definition: mpsdammat.h:239
#define _IFT_MPSDamMaterial_Name
Definition: mpsdammat.h:48
virtual const char * giveClassName() const
Definition: mpsdammat.h:155
double giveTempDamage()
Returns the temp. damage level.
Definition: mpsdammat.h:121
void setResidualTensileStrength(double src)
Definition: mpsdammat.h:146
double kappa
Scalar measure of the largest strain level ever reached in material.
Definition: mpsdammat.h:80
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
Definition: mpsdammat.C:116
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
MatResponseMode
Describes the character of characteristic material matrix.
double giveCrackWidth(void)
Definition: mpsdammat.h:145
double E
dummy Young's modulus
Definition: mpsdammat.h:192
double ft28
28-day value of tensile strength. Used only with "timedepfracturing"
Definition: mpsdammat.h:226
void setCrackWidth(double src)
Definition: mpsdammat.h:144
FloatArray effectiveStressVector
Equilibrated stress vector in reduced form.
Definition: mpsdammat.h:76
void giveCrackVector(FloatArray &answer)
Returns crack vector stored in receiver. This is useful for plotting cracks as a vector field (paravi...
Definition: mpsdammat.C:108
void setCrackVector(FloatArray cv)
Sets crack vector to given value. This is useful for plotting cracks as a vector field (paraview etc...
Definition: mpsdammat.h:132
double const_gf
Determines the softening -> corresponds to the initial fracture energy.
Definition: mpsdammat.h:209
virtual const char * giveInputRecordName() const
Definition: mpsdammat.h:238
int checkSnapBack
Check possible snap back flag.
Definition: mpsdammat.h:217
This class implements the extended B3 model for concrete creep and shrinkage based on the microprestr...
Definition: mps.h:204
virtual const FloatArray & giveViscoelasticStressVector() const
Definition: mpsdammat.h:107
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
Definition: mpsdammat.h:123
SofteningType
Type characterizing the formula for the damage law.
Definition: mpsdammat.h:214
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Definition: mpsdammat.C:132
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Definition: mpsdammat.C:175
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
double var_gf
hydration-degree dependent fracture energy
Definition: mpsdammat.h:96
double tempDamage
Non-equilibrated damage level of material.
Definition: mpsdammat.h:86
double equivalentTime
Hidden variable - equivalent time: necessary to compute solidified volume.
Definition: mps.h:107
double gf28
28-day value of fracture energy. Used only with "timedepfracturing"
Definition: mpsdammat.h:228
virtual const FloatArray & giveTempViscoelasticStressVector() const
Definition: mpsdammat.h:110
FloatArray crackVector
Crack orientation normalized to damage magnitude. This is useful for plotting cracks as a vector fiel...
Definition: mpsdammat.h:91
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
Definition: mpsdammat.h:195
double giveResidualTensileStrength(void)
Definition: mpsdammat.h:147
Abstract base class representing a material status information.
Definition: matstatus.h:84
double giveCharLength()
Returns characteristic length stored in receiver.
Definition: mpsdammat.h:126
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
double damage
Damage level of material.
Definition: mpsdammat.h:84
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 giveTempKappa()
Returns the temp. scalar measure of the largest strain level.
Definition: mpsdammat.h:115
This class extends the material model based on MPS theory (microprestress-solidification) for concret...
Definition: mpsdammat.h:182
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual void initDamaged(double kappa, FloatArray &totalStrainVector, GaussPoint *gp)
Abstract service allowing to perform some initialization, when damage first appear.
Definition: mpsdammat.h:164
FloatArray tempEffectiveStressVector
Temporary stress vector in reduced form (increments are used mainly in nonlinear analysis) ...
Definition: mpsdammat.h:78
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
double tempKappa
Non-equilibrated scalar measure of the largest strain level.
Definition: mpsdammat.h:82
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Definition: mpsdammat.C:78
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
Definition: mpsdammat.h:234
virtual ~MPSDamMaterial()
Definition: mpsdammat.h:232
double charLength
Characteristic length.
Definition: mpsdammat.h:89
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
void sete0(double e0)
Definition: mpsdammat.h:134
double var_e0
hydration-degree dependent equivalent strain at stress peak
Definition: mpsdammat.h:94
void setgf(double gf)
Definition: mpsdammat.h:135
SofteningType softType
Parameter specifying the type of softening (damage law).
Definition: mpsdammat.h:220

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