OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
intmatbilinczjansson.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 intmatbilinearczmaterialJansson_h
36 #define intmatbilinearczmaterialJansson_h
37 
40 
42 
43 #define _IFT_IntMatBilinearCZJansson_Name "intmatbilinearczjansson"
44 #define _IFT_IntMatBilinearCZJansson_kn "kn"
45 #define _IFT_IntMatBilinearCZJansson_ks "ks"
46 #define _IFT_IntMatBilinearCZJansson_knc "knc"
47 #define _IFT_IntMatBilinearCZJansson_g1c "g1c"
48 #define _IFT_IntMatBilinearCZJansson_g2c "g2c"
49 #define _IFT_IntMatBilinearCZJansson_mu "mu"
50 #define _IFT_IntMatBilinearCZJansson_gamma "gamma"
51 #define _IFT_IntMatBilinearCZJansson_sigf "sigf"
52 #define _IFT_IntMatBilinearCZJansson_semiexplicit "semiexplicit"
53 
54 
55 namespace oofem {
60 {
61 protected:
62 
63  // material jump
65  // temporary material jump
67 
68  // damage variable
69  double damage;
70  // temporary damage value
71  double tempDamage;
72 
73  // Effective Mandel traction
75  // Temporary effective Mandel traction
77 
78  // Temporary inverse of deformation gradient
80 
81  // Temporary array for coordinate transformation
83 
84  // tempArrays for stiffness calculation
87 
88  // indicator for davae development of preceding time step
91 
92  // tangent stiffness from previous time step
95 
96 
97 
98 public:
103 
104  virtual void printOutputAt(FILE *file, TimeStep *tStep);
105 
106  // definition
107  virtual const char *giveClassName() const { return "IntMatBilinearCZJanssonStatus"; }
108 
109  double giveDamage() { return damage; }
110  double giveTempDamage() { return tempDamage; }
112 
115 
118 
121  const FloatMatrix &giveTempIep() { return Iep; }
122  const FloatArray &giveTempAlphav() { return alphav; }
123  const FloatMatrix &giveOlddTdJ() {return old_dTdJ; }
124 
125 
126  void letTempDamageBe(double v) { tempDamage = v; }
127  void letTempEffectiveMandelTractionBe(FloatArray v) { tempQEffective = std :: move(v); }
128  void letTempMaterialJumpBe(FloatArray v) { tempMaterialJump = std :: move(v); }
129  void letTempDamageDevBe(bool v) { tempDamageDev = v; }
130  void letOldDamageDevBe(bool v) { oldDamageDev = v; }
131 
132  void letTempdTdJBe(FloatMatrix &v) { temp_dTdJ = v; }
133 
134  void letTempInverseDefGradBe(FloatMatrix v) { tempFInv = std :: move(v); }
135  void letTempRotationMatrix(FloatMatrix v) { tempRot = std :: move(v); }
136  void letTempIepBe(FloatMatrix v) { Iep = std :: move(v); }
137  void letTempAlphavBe(FloatArray v) { alphav = std :: move(v); }
138 
139 
140 
141  virtual void initTempStatus();
142  virtual void updateYourself(TimeStep *tStep);
143 
144  //virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
145  //virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
146 };
147 
148 
162 {
163 protected:
165  double kn0; // initial normal stiffness
166  double ks0; // initial shear stiffness
167  double knc; // stiffness in compression
168  double GIc; // fracture energy, mode 1
169  double GIIc; // fracture energy, mode 1
170  double sigf; // max stress
171 
172  double mu; // loading function parameter
173  double gamma; // loading function parameter
174 
175  bool mSemiExplicit; // If semi-explicit time integration should be used
176 
177 
178  virtual int checkConsistency();
179  void give3dInterfaceMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode,
180  GaussPoint *gp, TimeStep *tStep);
181 
182 public:
184  IntMatBilinearCZJansson(int n, Domain * d);
186  virtual ~IntMatBilinearCZJansson();
187 
188  virtual int hasNonLinearBehaviour() { return 1; }
189 
190  virtual const char *giveClassName() const { return "IntMatBilinearCZJansson"; }
191  virtual const char *giveInputRecordName() const { return _IFT_IntMatBilinearCZJansson_Name; }
192 
193 
194  virtual void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump,
195  const FloatMatrix &F, TimeStep *tStep);
196  virtual void give3dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep);
197 
198  virtual bool hasAnalyticalTangentStiffness() const { return true; }
199 
200  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
202 
203  virtual FloatArray giveInterfaceStrength() { return {this->sigf*this->gamma,this->sigf*this->gamma,this->sigf}; }
204 
205  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const { return new IntMatBilinearCZJanssonStatus(1, domain, gp); } //@Martin: Why new?
206  void printYourself();
207 protected:
208 };
209 } // end namespace oofem
210 #endif // isointerfacedamage01_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
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
This class implements associated Material Status for IntMatBilinearCZJansson.
IntMatBilinearCZJanssonStatus(int n, Domain *d, GaussPoint *g)
Constructor.
virtual bool hasAnalyticalTangentStiffness() const
Tells if the model has implemented analytical tangent stiffness.
virtual ~IntMatBilinearCZJanssonStatus()
Destructor.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void printYourself()
Prints receiver state on stdout. Useful for debugging.
Definition: femcmpnn.h:173
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
virtual int checkConsistency()
Allows programmer to test some internal data, before computation begins.
Definition: femcmpnn.C:94
const FloatArray & giveTempEffectiveMandelTraction()
FloatMatrix F
Equilibrated deformation gradient in reduced form.
virtual const char * giveInputRecordName() const
This class implements a structural interface material status information.
FloatArray jump
Equilibrated jump (discontinuity)
double kn0
Material parameters.
Abstract base class representing a material status information.
Definition: matstatus.h:84
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual const char * giveClassName() 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
#define _IFT_IntMatBilinearCZJansson_Name
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual const char * giveClassName() const
virtual FloatArray giveInterfaceStrength()
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.
Simple isotropic damage based model for 2d interface elements.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
Class representing solution step.
Definition: timestep.h:80

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