OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
compodamagemat.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 compodamagemat_h
36 #define compodamagemat_h
37 
38 #include "material.h"
40 #include "../sm/Materials/structuralmaterial.h"
41 #include "../sm/Materials/structuralms.h"
42 #include "intarray.h"
43 #include "floatarray.h"
44 #include "cltypes.h"
45 
47 
48 #define _IFT_CompoDamageMat_Name "compdammat"
49 #define _IFT_CompoDamageMat_exx "exx"
50 #define _IFT_CompoDamageMat_eyyezz "eyyezz"
51 #define _IFT_CompoDamageMat_nuxynuxz "nuxynuxz"
52 #define _IFT_CompoDamageMat_nuyz "nuyz"
53 #define _IFT_CompoDamageMat_Gxy "gxygxz"
54 #define _IFT_CompoDamageMat_tension_f0_gf "tension_f0_gf"
55 #define _IFT_CompoDamageMat_compres_f0_gf "compres_f0_gf"
56 #define _IFT_CompoDamageMat_afteriter "afteriter"
57 #define _IFT_CompoDamageMat_allowSnapBack "allowsnapback"
58 
59 
60 namespace oofem {
68 {
69 public:
71  CompoDamageMatStatus(int n, Domain * d, GaussPoint * g);
73  virtual ~CompoDamageMatStatus();
74 
75  virtual void printOutputAt(FILE *file, TimeStep *tStep);
76 
77  virtual void initTempStatus();
78 
79  virtual void updateYourself(TimeStep *tStep);
80 
81  //tempVal are values used during iteration, Val are equilibrated values, updated after last iteration in previous time step
82 
85 
88 
91 
94 
97 
99  int Iteration;
100 
107 
110 
113 
114  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj);
115  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj);
116 
117  virtual const char *giveClassName() const { return "CompoDamageMatStatus"; }
118 };
119 
120 
121 
140 {
141 public:
143  CompoDamageMat(int n, Domain * d);
145  virtual ~CompoDamageMat();
146 
147  virtual const char *giveClassName() const { return "CompositeDamageMaterial"; }
148  virtual const char *giveInputRecordName() const { return _IFT_CompoDamageMat_Name; }
149 
151  virtual void giveInputRecord(DynamicInputRecord &input);
152 
153  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const { return new CompoDamageMatStatus(1, domain, gp); }
154 
155  virtual void give3dMaterialStiffnessMatrix(FloatMatrix &answer,
156  MatResponseMode mmode,
157  GaussPoint *gp,
158  TimeStep *tStep);
159 
160  virtual void giveRealStressVector(FloatArray &answer, GaussPoint *gp,
161  const FloatArray &, TimeStep *tStep);
162 
163  virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
164  { this->giveRealStressVector(answer, gp, reducedE, tStep); }
165  virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
166  { this->giveRealStressVector(answer, gp, reducedE, tStep); }
167 
168  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
169 
176 
177 protected:
185  void giveUnrotated3dMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp);
193  int giveMatStiffRotationMatrix(FloatMatrix &answer, GaussPoint *gp);
194 
199 
202 
210  void giveCharLength(CompoDamageMatStatus *status, GaussPoint *gp, FloatMatrix &elementCs);
216  void giveCharLengthForModes(FloatArray &charLenModes, GaussPoint *gp);
222  void checkSnapBack(GaussPoint *gp, MaterialMode mMode);
223 };
224 } // end namespace oofem
225 #endif // compodamagemat_h
FloatArray inputTension
Six stress components of tension components read from the input file.
IntArray hasSnapBack
Checks whether snapback occurred at IP.
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
FloatArray maxStrainAtZeroStress
Maximum strain when stress becomes zero due to complete damage (omega = 1) at IP. Determined from fra...
CompoDamageMatStatus(int n, Domain *d, GaussPoint *g)
Constructor.
FloatArray omega
Highest damage ever reached in all previous equilibrated steps at IP [6 for tension and compression]...
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
FloatArray tempKappa
Highest strain ever reached at IP. Can be unequilibrated from last iterations [6 tension, 6 compression].
This class implements a structural material status information.
Definition: structuralms.h:65
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
MaterialMode
Type representing material mode of integration point.
Definition: materialmode.h:89
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: femcmpnn.C:77
Class implementing an array of integers.
Definition: intarray.h:61
MatResponseMode
Describes the character of characteristic material matrix.
#define _IFT_CompoDamageMat_Name
IntArray allowSnapBack
Stress components which are allowed for snap back [6 tension, 6 compression].
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj)
Stores receiver state to output stream.
Class for maintaining Gauss point values for CompoDamageMat model.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
int afterIter
Optional parameter determining after how many iterations within the time step the damage is calculate...
FloatArray strainAtMaxStress
Strain when damage is initiated at IP. In literature denoted eps_0 [6 tension, 6 compression].
FloatArray elemCharLength
Characteristic element length at IP in three perpendicular planes aligned with material orientation...
FloatArray initDamageStress
Stress at which damage starts. For uniaxial loading is equal to given maximum stress in the input...
virtual ~CompoDamageMatStatus()
Destructor.
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual const char * giveInputRecordName() const
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
FloatArray kappa
Highest strain ever reached in all previous equilibrated steps [6 tension, 6 compression].
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
FloatArray tempStressMLCS
Only for printing purposes in CompoDamageMatStatus.
Class representing the general Input Record.
Definition: inputrecord.h:101
Material damage model for transversely orthotropic material.
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
Class representing the a dynamic Input Record.
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.
FloatArray tempOmega
Highest damage ever reached at IP. Can be unequilibrated from last iterations [6 for tension and comp...
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj)
Restores the receiver state previously written in stream.
the oofem namespace is to define a context or scope in which all oofem names are defined.
FloatArray inputCompression
Six stress components of compression components read from the input file.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
int Iteration
Iteration in the time step.
virtual const char * giveClassName() const
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual const char * giveClassName() const

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