OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
simpleinterfacemat.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 simpleinterfacemat_h
36 #define simpleinterfacemat_h
37 
38 #include "../structuralinterfacematerial.h"
39 #include "../structuralinterfacematerialstatus.h"
40 
42 
43 #define _IFT_SimpleInterfaceMaterial_Name "simpleintermat"
44 #define _IFT_SimpleInterfaceMaterial_kn "kn"
45 #define _IFT_SimpleInterfaceMaterial_ks "ks"
46 #define _IFT_SimpleInterfaceMaterial_frictCoeff "fc"
47 #define _IFT_SimpleInterfaceMaterial_stiffCoeff "stiffcoeff"
48 #define _IFT_SimpleInterfaceMaterial_normalClearance "normalclearance"
49 
50 
51 namespace oofem {
56 {
57 protected:
60 
61 
62 public:
67 
68  virtual void printOutputAt(FILE *file, TimeStep *tStep);
69 
70  // definition
71  virtual const char *giveClassName() const { return "SimpleInterfaceMaterialStatus"; }
72 
73  virtual void initTempStatus();
74  virtual void updateYourself(TimeStep *tStep);
75 
77  void setTempShearStressShift(FloatArray newShearStressShift) { tempShearStressShift = newShearStressShift; }
79  void setShearYieldingFlag(bool sY){ shearYieldingFlag = sY;}
80 
81  virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj = NULL);
82  virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj = NULL);
83 };
84 
85 
93 {
94 protected:
95  double kn, ks;
96  double stiffCoeff;
97  double frictCoeff;
100 
101 public:
103  SimpleInterfaceMaterial(int n, Domain * d);
105  virtual ~SimpleInterfaceMaterial();
106 
107  virtual int hasNonLinearBehaviour() { return 1; }
108  virtual bool hasAnalyticalTangentStiffness() const { return true; }
109 
110  virtual const char *giveInputRecordName() const { return _IFT_SimpleInterfaceMaterial_Name; }
111  virtual const char *giveClassName() const { return "SimpleInterfaceMaterial"; }
112 
113  virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep);
114  virtual void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep);
115 
116  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
117 
119  virtual void giveInputRecord(DynamicInputRecord &input);
120 
121  virtual MaterialStatus *CreateStatus(GaussPoint *gp) const { return new SimpleInterfaceMaterialStatus(1, domain, gp); }
122 };
123 } // end namespace oofem
124 #endif // simpleinterfacemat_h
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
This class implements associated Material Status to SimpleInterfaceMaterial.
SimpleInterfaceMaterialStatus(int n, Domain *d, GaussPoint *g)
Constructor.
GaussPoint * gp
Associated integration point.
Class and object Domain.
Definition: domain.h:115
virtual ~SimpleInterfaceMaterialStatus()
Destructor.
Domain * domain
Link to domain object, useful for communicating with other FEM components.
Definition: femcmpnn.h:82
#define _IFT_SimpleInterfaceMaterial_Name
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
virtual const char * giveClassName() const
virtual bool hasAnalyticalTangentStiffness() const
Tells if the model has implemented analytical tangent stiffness.
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 giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
Definition: femcmpnn.C:77
MatResponseMode
Describes the character of characteristic material matrix.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Base class representing general isotropic damage model.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Definition: matstatus.h:140
virtual MaterialStatus * CreateStatus(GaussPoint *gp) const
Creates new copy of associated status and inserts it into given integration point.
This class implements a structural interface material status information.
virtual int hasNonLinearBehaviour()
Returns nonzero if receiver is non linear.
void setTempShearStressShift(FloatArray newShearStressShift)
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
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 void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual const char * giveInputRecordName() 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 normalClearance
Normal distance which needs to be closed when interface element should act in compression (distance i...
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.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
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:31 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011