OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
isointerfacedamage02.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 isointerfacedamage02_h
36 #define isointerfacedamage02_h
37 
38 #include "../structuralinterfacematerial.h"
39 #include "../structuralinterfacematerialstatus.h"
40 
41 #include <fstream>
42 
44 
45 #define _IFT_IsoInterfaceDamageMaterial_2_Name "isointrfdm02"
46 #define _IFT_IsoInterfaceDamageMaterial_2_tablename "tablename"
47 #define _IFT_IsoInterfaceDamageMaterial_2_kn "kn"
48 #define _IFT_IsoInterfaceDamageMaterial_2_ks "ks"
49 #define _IFT_IsoInterfaceDamageMaterial_2_ft "ft"
50 #define _IFT_IsoInterfaceDamageMaterial_2_maxOmega "maxomega"
51 
52 
53 namespace oofem {
54 
60 {
61 protected:
63  double kappa;
65  double tempKappa;
67  double damage;
69  double tempDamage;
70 
71 public:
76 
77  virtual void printOutputAt(FILE *file, TimeStep *tStep);
78 
80  double giveKappa() { return kappa; }
82  double giveTempKappa() { return tempKappa; }
84  void setTempKappa(double newKappa) { tempKappa = newKappa; }
86  double giveDamage() { return damage; }
88  double giveTempDamage() { return tempDamage; }
90  void setTempDamage(double newDamage) { tempDamage = newDamage; }
91 
92  // definition
93  virtual const char *giveClassName() const { return "IsoInterfaceDamageMaterialStatus"; }
94 
95  virtual void initTempStatus();
96  virtual void updateYourself(TimeStep *tStep);
97 
98  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
99  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
100 };
101 
102 
126 {
127 protected:
129  double kn;
131  double ks;
133  double ft;
135  double e0;
137  double maxOmega;
139  std :: string tablename;
144 
145 public:
149  virtual ~IsoInterfaceDamageMaterial_2();
150 
151  virtual int hasNonLinearBehaviour() { return 1; }
152  virtual bool hasAnalyticalTangentStiffness() const { return true; }
153 
154  virtual const char *giveInputRecordName() const { return _IFT_IsoInterfaceDamageMaterial_2_Name; }
155  virtual const char *giveClassName() const { return "IsoInterfaceDamageMaterial"; }
156 
157  virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep);
158  virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep);
159 
160  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
161 
169  virtual void computeEquivalentStrain(double &kappa, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep);
170 
178  virtual void computeDamageParam(double &omega, double kappa, const FloatArray &strain, GaussPoint *gp);
179 
181  virtual void giveInputRecord(DynamicInputRecord &input);
182 
184 };
185 } // end namespace oofem
186 #endif // isointerfacedamage01_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
double kappa
Scalar measure of the largest equivalent displacement ever reached in material.
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
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
double kn
Elastic properties (normal moduli).
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: femcmpnn.C:77
MatResponseMode
Describes the character of characteristic material matrix.
virtual const char * giveClassName() const
virtual const char * giveClassName() const
double damage
Damage level of material.
std::string tablename
Name of table file.
double giveTempDamage()
Returns the temp. damage level.
This class implements associated Material Status to IsoInterfaceDamageMaterial_2. ...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
virtual const char * giveInputRecordName() const
void setTempDamage(double newDamage)
Sets the temp damage level to given value.
This class implements a structural interface material status information.
double giveDamage()
Returns the last equilibrated damage level.
double giveTempKappa()
Returns the temp. scalar measure of the largest strain level.
Simple isotropic damage based model for 2d and 3d interface elements.
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
IsoInterfaceDamageMaterialStatus_2(int n, Domain *d, GaussPoint *g)
Constructor.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
FloatArray jump
Equilibrated jump (discontinuity)
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double giveKappa()
Returns the last equilibrated scalar measure of the largest strain level.
Abstract base class representing a material status information.
Definition: matstatus.h:84
FloatArray damages
Damages read from the second column in the table file.
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
#define _IFT_IsoInterfaceDamageMaterial_2_Name
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
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
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver&#39;s output to given stream.
virtual bool hasAnalyticalTangentStiffness() const
Tells if the model has implemented analytical tangent stiffness.
double tempDamage
Non-equilibrated damage level of material.
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 e0
Limit elastic deformation.
double tempKappa
Non-equilibrated scalar measure of the largest equivalent displacement.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
FloatArray strains
Strains read from the first column in the table file.

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