OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
intmatisodamage.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 intmatisodamage_h
36 #define intmatisodamage_h
37 
40 
41 
43 
44 #define _IFT_IntMatIsoDamage_Name "intmatisodamage"
45 #define _IFT_IntMatIsoDamage_kn "kn"
46 #define _IFT_IntMatIsoDamage_ks "ks"
47 #define _IFT_IntMatIsoDamage_ft "ft"
48 #define _IFT_IntMatIsoDamage_gf "gf"
49 #define _IFT_IntMatIsoDamage_maxOmega "maxomega"
50 
52 
53 namespace oofem {
54 class GaussPoint;
55 
60 {
61 protected:
63  double kappa;
65  double tempKappa;
67  double damage;
69  double tempDamage;
70 public:
74  virtual ~IntMatIsoDamageStatus();
75 
76  virtual void printOutputAt(FILE *file, TimeStep *tStep);
77 
79  double giveKappa() { return kappa; }
81  double giveTempKappa() { return tempKappa; }
83  void setTempKappa(double newKappa) { tempKappa = newKappa; }
85  double giveDamage() { return damage; }
87  double giveTempDamage() { return tempDamage; }
89  void setTempDamage(double newDamage) { tempDamage = newDamage; }
90 
91  // definition
92  virtual const char *giveClassName() const { return "IntMatIsoDamageStatus"; }
93 
94  virtual void initTempStatus();
95  virtual void updateYourself(TimeStep *tStep);
96 
97  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
98  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
99 };
100 
101 
114 {
115 protected:
117  double kn;
119  double ks;
121  double ft;
123  double gf;
125  double e0;
127  double maxOmega;
128 
129  bool semiExplicit; // If semi-explicit time integration should be used
130 
131 public:
133  IntMatIsoDamage(int n, Domain *d);
135  virtual ~IntMatIsoDamage();
136 
137  virtual const char *giveInputRecordName() const { return _IFT_IntMatIsoDamage_Name; }
138  virtual bool hasAnalyticalTangentStiffness() const { return true; }
139 
140  virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp,
141  const FloatArray &jump, TimeStep *tStep);
142 
143  virtual void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump,
144  const FloatMatrix &F, TimeStep *tStep);
145 
146  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
147 
148 
156  virtual void computeEquivalentJump(double &kappa, const FloatArray &jump);
157 
165  virtual void computeDamageParam(double &omega, double kappa);
166 
168  virtual void giveInputRecord(DynamicInputRecord &input);
169 
170  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const { return new IntMatIsoDamageStatus(1, domain, gp); }
171 
172 protected:
173  virtual void give2dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode,
174  GaussPoint *gp, TimeStep *tStep);
175  virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode,
176  GaussPoint *gp, TimeStep *tStep);
177 };
178 } // end namespace oofem
179 #endif // isointerfacedamage01_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
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
virtual bool hasAnalyticalTangentStiffness() const
Tells if the model has implemented analytical tangent stiffness.
double giveKappa()
Returns the last equilibrated scalar measure of the largest jump level.
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
double gf
Fracture energy.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
virtual ~IntMatIsoDamageStatus()
Destructor.
double kn
Elastic properties (normal moduli).
double tempKappa
Non-equilibrated scalar measure of the largest equivalent displacement.
double giveDamage()
Returns the last equilibrated damage level.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: femcmpnn.C:77
MatResponseMode
Describes the character of characteristic material matrix.
double tempDamage
Non-equilibrated damage level of material.
double giveTempDamage()
Returns the temp. damage level.
double e0
Limit elastic deformation.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
FloatMatrix F
Equilibrated deformation gradient in reduced form.
double ks
Shear moduli.
IntMatIsoDamageStatus(int n, Domain *d, GaussPoint *g)
Constructor.
double kappa
Scalar measure of the largest equivalent displacement ever reached in material.
This class implements a structural interface material status information.
Simple isotropic damage based model for interface elements.
FloatArray jump
Equilibrated jump (discontinuity)
#define _IFT_IntMatIsoDamage_Name
Abstract base class representing a material status information.
Definition: matstatus.h:84
Class representing vector of real numbers.
Definition: floatarray.h:82
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
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual const char * giveClassName() const
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
double ft
Tension strength.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double giveTempKappa()
Returns the temp. scalar measure of the largest jump level.
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
Abstract base class for all "structural" interface models.
the oofem namespace is to define a context or scope in which all oofem names are defined.
double damage
Damage level of material.
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
Class representing integration point in finite element program.
Definition: gausspoint.h:93
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Class representing solution step.
Definition: timestep.h:80
virtual const char * giveInputRecordName() const
This class implements the InterfaceMaterialStatus associated with IntMatIsoDamage.

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