OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
latticedamage2d.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 #ifndef latticedamage2d_h
36 #define latticedamage2d_h
37 
38 #include "material.h"
40 #include "latticematstatus.h"
41 #include "cltypes.h"
42 #include "../sm/Materials/structuralmaterial.h"
43 #include "randommaterialext.h"
44 #include "strainvector.h"
45 #include "stressvector.h"
46 
48 
49 #define _IFT_LatticeDamage2d_Name "latticedamage2d"
50 #define _IFT_LatticeDamage2d_eNormal "e"
51 #define _IFT_LatticeDamage2d_alphaOne "a1"
52 #define _IFT_LatticeDamage2d_alphaTwo "a2"
53 #define _IFT_LatticeDamage2d_softeningType "stype"
54 #define _IFT_LatticeDamage2d_wf "wf"
55 #define _IFT_LatticeDamage2d_wfOne "wf1"
56 #define _IFT_LatticeDamage2d_localrandomtype "randomtype"
57 #define _IFT_LatticeDamage2d_coefficientOfVariation "cov"
58 #define _IFT_LatticeDamage2d_e0Mean "e0"
59 #define _IFT_LatticeDamage2d_e0OneMean "e01"
60 #define _IFT_LatticeDamage2d_coh "coh"
61 #define _IFT_LatticeDamage2d_ec "ec"
62 #define _IFT_LatticeDamage2d_calpha "calpha"
63 #define _IFT_LatticeDamage2d_bio "bio"
64 #define _IFT_LatticeDamage2d_btype "btype"
65 
66 
67 namespace oofem {
72 {
73 protected:
75  double kappa;
77  double tempKappa;
78 
80  double equivStrain;
83 
85  double damage;
87  double tempDamage;
88 
90  double dissipation;
93 
98 
100  double le;
101 
103  double e0;
104 
106  double biot;
107 
115 
118 
120  double crackWidth;
121 
124 
127 
129  double normalStress;
130 
133 
136 
139 
142 
144 
145 public:
146 
148  LatticeDamage2dStatus(int n, Domain * d, GaussPoint * g);
151 
152 
154  double giveKappa() { return kappa; }
156  double giveTempKappa() { return tempKappa; }
158  void setTempKappa(double newKappa) { tempKappa = newKappa; }
159 
161  double giveEquivalentStrain() { return equivStrain; }
165  void setTempEquivalentStrain(double newEquivStrain) { tempEquivStrain = newEquivStrain; }
166 
168  double giveDissipation() { return dissipation; }
172  void setTempDissipation(double newDiss) { tempDissipation = newDiss; }
173 
179  void setTempDeltaDissipation(double newDiss) { tempDeltaDissipation = newDiss; }
180 
181 
183  double giveDamage() { return damage; }
185  double giveTempDamage() { return tempDamage; }
187  void setTempDamage(double newDamage) { tempDamage = newDamage; }
188 
192  const FloatArray &giveReducedStrain() const { return reducedStrain; }
193 
198  void letTempReducedStrainBe(FloatArray v) { tempReducedStrain = std :: move(v); }
199 
201  void printOutputAt(FILE *file, TimeStep *tStep);
202 
204  double giveLe() { return le; }
205 
207  void setLe(double ls) { le = ls; }
208 
210  void setTempCrackFlag(int val);
211 
213  int giveCrackFlag();
214 
216  void setE0(double val) { e0 = val; }
217 
219  void setTempCrackWidth(double val);
220 
222  double giveCrackWidth() { return this->crackWidth; }
223 
224 
225  virtual double giveNormalStress() { return this->normalStress; }
226 
227  virtual double giveOldNormalStress() { return this->oldNormalStress; }
228 
229  virtual int hasBeenUpdated() { return this->updateFlag; }
230 
231 
233  void setTempNormalStress(double val);
234 
236  void setOldNormalStress(double val);
237 
238  // definition
239  virtual const char *giveClassName() const { return "LatticeDamage2dStatus"; }
240 
241  virtual void initTempStatus();
242 
243  virtual void updateYourself(TimeStep *);
244 
246 
247  virtual void setVariableInStatus(double variable);
248 
249  void setBiotCoefficientInStatus(double variable);
250 
251  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
252 
253  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
254 };
255 
256 
261 {
262 protected:
263 
265  double eNormal;
267  double eShear;
269  double eTorsion;
271  double alphaOne;
273  double alphaTwo;
274 
276  double e0Mean;
277 
279  double e0OneMean;
280 
282  double cAlpha;
283 
291 
293  double wf, wfOne;
294 
296  double ec;
297 
299  double coh;
300 
303 
305  int biotType;
306 
309 
312 
313 public:
314 
316  LatticeDamage2d(int n, Domain * d);
318  virtual ~LatticeDamage2d();
319 
320  virtual const char *giveInputRecordName() const { return _IFT_LatticeDamage2d_Name; }
321  virtual const char *giveClassName() const { return "LatticeDamage2d"; }
322 
324 
325  virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode) { return false; }
326 
327  virtual void giveStiffnessMatrix(FloatMatrix &answer,
328  MatResponseMode mode,
329  GaussPoint *gp,
330  TimeStep *tStep);
331 
332  virtual void computeStressIndependentStrainVector(FloatArray &answer,
333  GaussPoint *gp,
334  TimeStep *tStep,
335  ValueModeType mode);
336 
337  virtual void giveSecantStiffnessMatrix(FloatMatrix &answer,
338  GaussPoint *gp,
339  TimeStep *tStep);
340 
341 
342  virtual void giveElasticStiffnessMatrix(FloatMatrix &answer,
343  GaussPoint *gp,
344  TimeStep *tStep);
345 
346  virtual int hasMaterialModeCapability(MaterialMode mode);
347 
348  virtual void computeEquivalentStrain(double &kappa, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep);
349 
350  virtual void computeDamageParam(double &omega, double kappa, const FloatArray &strain, GaussPoint *gp);
351 
352  virtual double computeBiot(double omega, double kappa, double le);
353 
355 
356 
357  virtual void giveRealStressVector(FloatArray &answer, GaussPoint *,
358  const FloatArray &, TimeStep *);
359 
360  virtual void giveRandomParameters(FloatArray &param);
361 
362 
364  double computeDeltaDissipation(double omega, FloatArray &reducedStrain, GaussPoint *gp, TimeStep *tStep);
365 
366  virtual void giveThermalDilatationVector(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
367 
368  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const;
369 
370  virtual MaterialStatus *giveStatus(GaussPoint *gp) const;
371 
372  virtual double give(int aProperty, GaussPoint *gp);
373 
374 
375 protected:
376 
377  virtual int giveIPValue(FloatArray &answer,
378  GaussPoint *gp,
379  InternalStateType type,
380  TimeStep *tStep);
381 };
382 } // end namespace oofem
383 #endif
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
double giveTempKappa()
Returns the temp. scalar measure of the largest strain level.
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
double tempNormalStress
nonequilibrated normal stress
double coefficientOfVariation
Coefficient variation of the Gaussian distribution.
virtual int hasBeenUpdated()
Gives the last equilibrated normal stress.
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
virtual double giveNormalStress()
Gives the last equilibrated normal stress.
double tempKappa
Non-equilibrated scalar measure of the largest strain level.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
double giveKappa()
Returns the last equilibrated scalar measure of the largest strain level.
int temp_crack_flag
Non-equilibrated temp flag.
virtual double giveOldNormalStress()
Gives the last equilibrated normal stress.
double tempDeltaDissipation
Non-equilibrated increment of dissipation.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
double giveTempEquivalentStrain()
Returns the temp. scalar measure of the largest strain level.
LatticeDamage2dStatus(int n, Domain *d, GaussPoint *g)
Constructor.
double e0
Random material parameter stored in status, since each gp has a different value.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
This class implements associated Material Status to LatticeDamage2d.
double normalStress
equilibrated normal stress
#define _IFT_LatticeDamage2d_Name
double deltaDissipation
Increment of dissipation.
double giveTempDissipation()
Returns the temp. dissipation.
virtual bool isCharacteristicMtrxSymmetric(MatResponseMode rMode)
Returns true if stiffness matrix of receiver is symmetric Default implementation returns true...
This class implements a local random isotropic damage model for concrete in tension for 2D lattice el...
double coh
Parameter setting ratio of shear and tensile strength.
void setBiotCoefficientInStatus(double variable)
This class implements a base lattice material status.
void setTempEquivalentStrain(double newEquivStrain)
Sets the temp scalar measure of the largest strain level to given value.
double giveDeltaDissipation()
Returns the last equilibrated increment of dissipation.
double giveTempDeltaDissipation()
Returns the temp. increment dissipation.
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
const FloatArray & giveTempReducedStrain() const
Gives the temp value of plastic strain.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void setVariableInStatus(double variable)
double giveTempDamage()
Returns the temp. damage level.
virtual const char * giveInputRecordName() const
double tempDissipation
Non-equilibrated dissipation..
FloatArray reducedStrain
Reduced strain.
void letTempReducedStrainBe(FloatArray v)
Assign the temp value of plastic strain.
void setTempNormalStress(double val)
Sets the temp normalStress.
void setE0(double val)
Set random e0.
double tempDamage
Non-equilibrated damage level of material.
double tempEquivStrain
Non-equilibrated scalar measure of the strain.
double crackWidth
Crack width.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void setTempDissipation(double newDiss)
Sets the temp dissipation.
void printOutputAt(FILE *file, TimeStep *tStep)
Prints the receiver state to given stream.
double ec
Parameter for the elliptic equivalent strain function.
double le
Characteristic length.
void setTempCrackWidth(double val)
Sets the temp crack width.
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
double e0OneMean
Mean effective strain at sigma1.
Abstract base class for all random materials.
FloatArray tempReducedStrain
Non-equilibrated reduced strain.
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Abstract base class for all random constitutive model statuses.
void setOldNormalStress(double val)
Sets the old normalStress.
void setTempCrackFlag(int val)
Sets the temp_crack_flag.
double equivStrain
Scalar measure of the strain.
double giveDissipation()
Returns the last equilibrated dissipation.
virtual void updateYourself(TimeStep *)
Update equilibrium history variables according to temp-variables.
int crack_flag
The crack_flag indicates if the gp is cracked: crack_flag = 0 gp is uncracked crack_flag = 1 gp is cr...
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
double damage
Damage level of material.
int biotType
Parameter specifying how the biot coefficient changes with the crack opening.
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
double oldNormalStress
old normal stress
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
virtual const char * giveClassName() const
double kappa
Scalar measure of the largest strain level ever reached in material.
double alphaOne
Ratio of shear and normal modulus.
Class representing the general Input Record.
Definition: inputrecord.h:101
double eNormal
Normal modulus.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
Class Interface.
Definition: interface.h:82
double eShear
Shear modulus.
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Definition: contextmode.h:43
Abstract base class for all "structural" constitutive models.
double localRandomType
Flag which chooses between no distribution (0) and Gaussian distribution (1)
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
int softeningType
Parameter which determines the typ of the softeningFunction 1 = linear softening 2 = bilinear softeni...
double oldCrackWidth
Old crack width.
double tempCrackWidth
Non-equilibrated crack width.
double biot
Set biot coefficient.
double biotCoefficient
Parameter controlling the amount of fluid pressure added to the mechanical stress (Biot's coefficient...
virtual ~LatticeDamage2dStatus()
Destructor.
double giveEquivalentStrain()
Returns the last equilibrated scalar measure of the largest strain level.
double cAlpha
coefficient used for modelling eigendisplacements
the oofem namespace is to define a context or scope in which all oofem names are defined.
double e0Mean
Mean effective strain at peak.
double dissipation
Dissipation.
double giveLe()
Returns characteristic length stored in receiver.
virtual const char * giveClassName() const
double eTorsion
Torsion modulus.
void setLe(double ls)
Sets characteristic length to given value.
double giveDamage()
Returns the last equilibrated damage level.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
double alphaTwo
Ratio of torsion and normal modulus.
void setTempDeltaDissipation(double newDiss)
Sets the temp. increment dissipation.
Class representing solution step.
Definition: timestep.h:80
const FloatArray & giveReducedStrain() const
Gives the old equilibrated value of plastic strain.
int giveCrackFlag()
Returns the crack_flag.
double giveCrackWidth()
Gives the last equilibrated crack width.

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:29 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011