OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
structuralinterfacecrosssection.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 structuralinterfacecrosssection_h
36 #define structuralinterfacecrosssection_h
37 
38 #include "../sm/Materials/InterfaceMaterials/structuralinterfacematerial.h"
39 #include "crosssection.h"
40 #include "classfactory.h"
41 
43 
44 #define _IFT_StructuralInterfaceCrossSection_Name "interfacecs"
45 #define _IFT_StructuralInterfaceCrossSection_Material "material"
46 #define _IFT_StructuralInterfaceCrossSection_thickness "thickness"
47 
48 
49 namespace oofem {
50 class GaussPoint;
51 class Element;
52 class FloatArray;
53 class FloatMatrix;
54 typedef GaussPoint IntegrationPoint;
55 
62 {
63 public:
70  {
71  materialNum = 0;
73  }
76 
78 
80 
96  // Pass all calls to the material
97  void giveFirstPKTraction_1d( FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep )
98  { this->giveInterfaceMaterial()->giveFirstPKTraction_1d(answer, gp, jump, F, tStep); }
99  void giveFirstPKTraction_2d( FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep )
100  { this->giveInterfaceMaterial()->giveFirstPKTraction_2d(answer, gp, jump, F, tStep); }
101  void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
102  { this->giveInterfaceMaterial()->giveFirstPKTraction_3d(answer, gp, jump, F, tStep); }
103 
104 
105  void giveEngTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
106  {
107  this->giveInterfaceMaterial()->giveEngTraction_1d(answer, gp, jump, tStep);
108  }
109  void giveEngTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
110  {
111  this->giveInterfaceMaterial()->giveEngTraction_2d(answer, gp, jump, tStep);
112  }
113  void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
114  {
115  this->giveInterfaceMaterial()->giveEngTraction_3d(answer, gp, jump, tStep);
116  }
117 
118  void give1dStiffnessMatrix_dTdj( FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep );
119  void give2dStiffnessMatrix_dTdj( FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep );
120  void give3dStiffnessMatrix_dTdj( FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep );
121 
122 
123  void give1dStiffnessMatrix_Eng( FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep );
124  void give2dStiffnessMatrix_Eng( FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep );
125  void give3dStiffnessMatrix_Eng( FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep );
127 
129  const FloatArray &giveTraction(IntegrationPoint *ip);
130 
131  virtual int checkConsistency();
132 
133  virtual int giveIPValue(FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep);
134 
135  virtual Material *giveMaterial(IntegrationPoint *ip);
136  int giveMaterialNumber() const { return this->materialNum; }
137  void setMaterialNumber(int matNum) { this->materialNum = matNum; }
138 
139  virtual int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *gp);
140  virtual int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *gp);
141  virtual int estimatePackSize(DataStream &buff, GaussPoint *gp);
142 
143  // identification and auxiliary functions
144  virtual const char *giveClassName() const { return "StructuralInterfaceCrossSection"; }
145  virtual const char *giveInputRecordName() const { return _IFT_StructuralInterfaceCrossSection_Name; }
146 
148 private:
150 };
151 } // end namespace oofem
152 #endif // structuralcrosssection_h
virtual void giveEngTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
virtual void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
Structural interface capability.
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
StructuralInterfaceMaterial * giveInterfaceMaterial()
void give3dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Class and object Domain.
Definition: domain.h:115
void give2dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
virtual void giveEngTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
void give1dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Definition: datastream.h:54
void giveFirstPKTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
Computes the real stress vector for given strain and integration point.
virtual int checkConsistency()
Allows programmer to test some internal data, before computation begins.
MatResponseMode
Describes the character of characteristic material matrix.
GaussPoint IntegrationPoint
Definition: gausspoint.h:300
virtual void giveFirstPKTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &reducedF, TimeStep *tStep)
Base abstract class representing cross section in finite element mesh.
Definition: crosssection.h:107
CrossSectExtension
Type representing cross section extension for run time testing.
virtual void giveFirstPKTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &reducedF, TimeStep *tStep)
Computes the first Piola-Kirchoff traction vector for given total jump/gap and integration point...
virtual void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
virtual int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *gp)
Unpack and updates all necessary data of given integration point (according to element parallel_mode)...
void giveEngTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
virtual Material * giveMaterial(IntegrationPoint *ip)
Returns the material associated with the GP.
const FloatArray & giveTraction(IntegrationPoint *ip)
virtual int testCrossSectionExtension(CrossSectExtension ext)
Returns nonzero, if receiver implements required extension.
#define _IFT_StructuralInterfaceCrossSection_Name
Base class for all structural interface cross section models.
Abstract base class for all material models.
Definition: material.h:95
virtual int estimatePackSize(DataStream &buff, GaussPoint *gp)
Estimates the necessary pack size to hold all packed data of receiver.
void give1dStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Class representing vector of real numbers.
Definition: floatarray.h:82
void give3dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
virtual int giveIPValue(FloatArray &answer, GaussPoint *ip, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in Reduced form.
IRResultType
Type defining the return values of InputRecord reading operations.
Definition: irresulttype.h:47
StructuralInterfaceCrossSection(int n, Domain *d)
Constructor.
void give2dStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Class representing the general Input Record.
Definition: inputrecord.h:101
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void giveFirstPKTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
void giveEngTraction_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
void giveEngTraction_2d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
void giveFirstPKTraction_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
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 int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *gp)
Pack all necessary data of integration point (according to element parallel_mode) into given communic...
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