OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
isointerfacedamage01.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 isointerfacedamage01_h
36 #define isointerfacedamage01_h
37 
38 #include "../structuralinterfacematerial.h"
39 #include "../structuralinterfacematerialstatus.h"
40 
42 
43 #define _IFT_IsoInterfaceDamageMaterial_Name "isointrfdm01"
44 #define _IFT_IsoInterfaceDamageMaterial_kn "kn"
45 #define _IFT_IsoInterfaceDamageMaterial_ks "ks"
46 #define _IFT_IsoInterfaceDamageMaterial_ft "ft"
47 #define _IFT_IsoInterfaceDamageMaterial_gf "gf"
48 #define _IFT_IsoInterfaceDamageMaterial_maxOmega "maxomega"
49 #define _IFT_IsoInterfaceDamageMaterial_beta "beta"
50 
51 
52 namespace oofem {
53 
58 {
59 protected:
61  double kappa;
63  double tempKappa;
65  double damage;
67  double tempDamage;
68 
69 public:
74 
75  virtual void printOutputAt(FILE *file, TimeStep *tStep);
76 
78  double giveKappa() { return kappa; }
80  double giveTempKappa() { return tempKappa; }
82  void setTempKappa(double newKappa) { tempKappa = newKappa; }
84  double giveDamage() { return damage; }
86  double giveTempDamage() { return tempDamage; }
88  void setTempDamage(double newDamage) { tempDamage = newDamage; }
89 
90  // definition
91  virtual const char *giveClassName() const { return "IsoInterfaceDamageMaterialStatus"; }
92 
93  virtual void initTempStatus();
94  virtual void updateYourself(TimeStep *tStep);
95 
96  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
97  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
98 };
99 
100 
114 {
115 protected:
119  double kn;
121  double ks;
123  double ft;
125  double gf;
127  double e0;
129  double maxOmega;
131  double beta;
132 
133 public:
137  virtual ~IsoInterfaceDamageMaterial();
138 
139  virtual int hasNonLinearBehaviour() { return 1; }
140  virtual bool hasAnalyticalTangentStiffness() const { return true; }
141 
142  virtual const char *giveInputRecordName() const { return _IFT_IsoInterfaceDamageMaterial_Name; }
143  virtual const char *giveClassName() const { return "IsoInterfaceDamageMaterial"; }
144 
145  virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep);
146  virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep);
147 
148  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
149 
150  void computeEquivalentStrain(double &kappa, const FloatArray &jump, GaussPoint *gp, TimeStep *tStep);
151 
159  virtual void computeDamageParam(double &omega, double kappa, const FloatArray &strain, GaussPoint *gp);
160 
162  virtual void giveInputRecord(DynamicInputRecord &input);
163 
165 };
166 } // end namespace oofem
167 #endif // isointerfacedamage01_h
virtual const char * giveInputRecordName() const
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
double tempDamage
Non-equilibrated damage level of material.
double giveDamage()
Returns the last equilibrated damage level.
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
#define _IFT_IsoInterfaceDamageMaterial_Name
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
double kn
Elastic properties (normal moduli).
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
This class implements associated Material Status to IsoInterfaceDamageMaterial.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
virtual const char * giveClassName() const
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
virtual const char * giveClassName() const
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual bool hasAnalyticalTangentStiffness() const
Tells if the model has implemented analytical tangent stiffness.
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 beta
Weight factor for the influence of shear component of displacement jump on equivalent strain...
IsoInterfaceDamageMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor.
double maxOmega
Maximum limit on omega. The purpose is elimination of a too compliant material which may cause conver...
double damage
Damage level of material.
double tempKappa
Non-equilibrated scalar measure of the largest equivalent displacement.
double giveTempDamage()
Returns the temp. damage level.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
Simple isotropic damage based model for 2d interface elements.
double e0
Limit elastic deformation.
void setTempKappa(double newKappa)
Sets the temp scalar measure of the largest strain level to given value.
This class implements a structural interface material status information.
double giveKappa()
Returns the last equilibrated scalar measure of the largest strain level.
FloatArray jump
Equilibrated jump (discontinuity)
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
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
Class representing the general Input Record.
Definition: inputrecord.h:101
double tempDillatCoeff
Coefficient of thermal dilatation.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
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 giveTempKappa()
Returns the temp. scalar measure of the largest strain level.
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.
virtual ~IsoInterfaceDamageMaterialStatus()
Destructor.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
void setTempDamage(double newDamage)
Sets the temp damage level to given value.

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