OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
structuralinterfaceelement.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 structuralinterfaceelement_h
36 #define structuralinterfaceelement_h
37 
38 #include "../sm/CrossSections/structuralinterfacecrosssection.h"
39 #include "element.h"
40 #include "floatmatrix.h"
41 #include "function.h"
42 #include "matresponsemode.h"
43 #include "valuemodetype.h"
44 #include "integrationdomain.h"
45 #include "dofmantransftype.h"
46 
47 namespace oofem {
48 class TimeStep;
49 class Node;
50 class StructuralInterfaceMaterial;
51 class GaussPoint;
52 class FloatArray;
53 class IntArray;
54 class FEInterpolation;
55 
56 
65 {
66 protected:
72 
73 public:
82 
83  virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords);
84 
85  virtual void giveCharacteristicMatrix(FloatMatrix &answer, CharType, TimeStep *tStep);
86  virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep);
87 
88  virtual FEInterpolation *giveInterpolation() const { return interpolation; }
106  virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep);
107 
122  virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord = 0);
123  virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, const FloatArray &jump, TimeStep *tStep);
124  virtual void computeSpatialJump(FloatArray &answer, GaussPoint *gp, TimeStep *tStep);
125  virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep);
126 
127  virtual Interface *giveInterface(InterfaceType) { return NULL; }
128 
130 
131  // Overloaded methods.
132  virtual void updateInternalState(TimeStep *tStep);
133  virtual void updateYourself(TimeStep *tStep);
134  virtual int checkConsistency();
136  virtual void giveInputRecord(DynamicInputRecord &input);
137  virtual const char *giveClassName() const { return "StructuralInterfaceElement"; }
138 
140  virtual double computeAreaAround(GaussPoint *gp) = 0;
141 
142  virtual Element_Geometry_Type giveGeometryType() const { return EGT_unknown; }
143 
144  //virtual methods that should be overloaded by the elements
145  virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep);
146  virtual void giveFirstPKTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
147  {
148  OOFEM_ERROR("not implemented for the current element");
149  }
150 
151  virtual void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep);
153  {
154  OOFEM_ERROR("not implemented for the current element");
155  }
156 protected:
157 
164  virtual void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer) = 0;
165 
166  // transformation matrix from local to global
167  virtual void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer) = 0;
168 
175  virtual int giveNumberOfIPForMassMtrxIntegration() { return 0; }
176 
177  virtual int testCrossSectionExtension(CrossSectExtension ext) { return ( ( ext == CS_StructuralInterfaceCapability ) ? 1 : 0 ); }
178  virtual int testElementExtension(ElementExtension ext) { return 0; }
179 };
180 } // end namespace oofem
181 #endif // structuralinterfaceelement_h
virtual void updateInternalState(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
virtual int testCrossSectionExtension(CrossSectExtension ext)
Structural interface capability.
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void computeTransformationMatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
Class and object Domain.
Definition: domain.h:115
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
virtual void giveFirstPKTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, const FloatMatrix &F, TimeStep *tStep)
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
virtual void computeTraction(FloatArray &traction, IntegrationPoint *ip, const FloatArray &jump, TimeStep *tStep)
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
Definition: valuemodetype.h:78
Abstract base class for all finite elements.
Definition: element.h:145
StructuralInterfaceElement(int n, Domain *d)
Constructor.
virtual double computeAreaAround(GaussPoint *gp)=0
MatResponseMode
Describes the character of characteristic material matrix.
virtual void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord=0)
Returns equivalent nodal forces vectors.
FloatArray initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted...
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
CrossSectExtension
Type representing cross section extension for run time testing.
virtual FEInterpolation * giveInterpolation() const
Class representing a general abstraction for finite element interpolation class.
Definition: feinterpol.h:132
virtual void computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
Computes modified interpolation matrix (N) for the element which multiplied with the unknowns vector ...
#define OOFEM_ERROR(...)
Definition: error.h:61
virtual Element_Geometry_Type giveGeometryType() const
Returns the element geometry type.
ElementExtension
Type representing element extension.
virtual void updateYourself(TimeStep *tStep)
Updates element state after equilibrium in time step has been reached.
Base class for all structural interface cross section models.
virtual int checkConsistency()
Performs consistency check.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes the stiffness/tangent matrix of receiver.
virtual void giveStiffnessMatrix_dTdj(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
virtual void giveStiffnessMatrix_Eng(FloatMatrix &answer, MatResponseMode rMode, IntegrationPoint *ip, TimeStep *tStep)
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 giveCharacteristicMatrix(FloatMatrix &answer, CharType, TimeStep *tStep)
Computes characteristic matrix of receiver of requested type in given time step.
virtual int giveNumberOfIPForMassMtrxIntegration()
Return desired number of integration points for consistent mass matrix computation, if required.
CharType
Definition: chartype.h:87
Class representing the general Input Record.
Definition: inputrecord.h:101
Class Interface.
Definition: interface.h:82
virtual void giveEngTraction(FloatArray &answer, GaussPoint *gp, const FloatArray &jump, TimeStep *tStep)
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
Class representing the a dynamic Input Record.
virtual void computeSpatialJump(FloatArray &answer, GaussPoint *gp, TimeStep *tStep)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
InterfaceType
Enumerative type, used to identify interface type.
Definition: interfacetype.h:43
Abstract base class for all structural interface elements.
virtual int testElementExtension(ElementExtension ext)
Tests if the element implements required extension.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
int nlGeometry
Flag indicating if geometrical nonlinearities apply.
Class representing integration point in finite element program.
Definition: gausspoint.h:93
Class representing solution step.
Definition: timestep.h:80
virtual const char * giveClassName() const
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
StructuralInterfaceCrossSection * giveInterfaceCrossSection()

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