OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
fei3dhexaquad.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 fei3dhexaquad_h
36 #define fei3dhexaquad_h
37 
38 #include "feinterpol3d.h"
39 
40 namespace oofem {
70 class OOFEM_EXPORT FEI3dHexaQuad : public FEInterpolation3d
71 {
72 public:
74 
75  virtual integrationDomain giveIntegrationDomain() const { return _Cube; }
76  virtual Element_Geometry_Type giveGeometryType() const { return EGT_hexa_2; }
77  virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const { return _Square; }
78  virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) const { return _Square; }
79  virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const { return _Line; }
80 
81 
82 
83  virtual double giveCharacteristicLength(const FEICellGeometry &cellgeo) const;
84 
85  // Bulk
86  virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
87  virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
88  virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
89  virtual int global2local(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
90  virtual int giveNumberOfNodes() const { return 20; }
91 
92  // Edge
93  virtual void edgeEvalN(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
94  virtual void edgeEvaldNdx(FloatMatrix &answer, int iedge,
95  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
96  virtual void edgeLocal2global(FloatArray &answer, int iedge,
97  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
98  virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords,
99  const FEICellGeometry &cellgeo);
100  virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge);
101 
102  // Surface
103  virtual void surfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
104  virtual double surfaceEvalNormal(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
105  virtual void surfaceEvaldNdx(FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
106  virtual void surfaceLocal2global(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
107  virtual double surfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
108  virtual void computeLocalSurfaceMapping(IntArray &nodes, int iSurf);
109  virtual double evalNXIntegral(int iEdge, const FEICellGeometry &cellgeo);
110 
111  virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
112 
113  virtual IntegrationRule *giveIntegrationRule(int order);
114  virtual IntegrationRule *giveBoundaryIntegrationRule(int order, int boundary);
115 
116 protected:
117  virtual void giveLocalDerivative(FloatMatrix &dN, const FloatArray &lcoords);
118 };
119 } // end namespace oofem
120 #endif
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
virtual int giveNumberOfNodes() const
Returns the number of geometric nodes of the receiver.
Definition: fei3dhexaquad.h:90
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
Class representing implementation of quadratic hexahedra interpolation class.
Definition: fei3dhexaquad.h:70
Class representing a general abstraction for cell geometry.
Definition: feinterpol.h:62
virtual integrationDomain giveIntegrationDomain() const
Returns the integration domain of the interpolator.
Definition: fei3dhexaquad.h:75
Class implementing an array of integers.
Definition: intarray.h:61
virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) const
Returns boundary integration domain.
Definition: fei3dhexaquad.h:78
Abstract base class representing integration rule.
virtual Element_Geometry_Type giveGeometryType() const
Returns the geometry type fo the interpolator.
Definition: fei3dhexaquad.h:76
Class representing vector of real numbers.
Definition: floatarray.h:82
Implementation of matrix containing floating point numbers.
Definition: floatmatrix.h:94
Class representing a general abstraction for surface finite element interpolation class...
Definition: feinterpol3d.h:44
virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const
Returns boundary integration domain.
Definition: fei3dhexaquad.h:79
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const
Returns boundary integration domain.
Definition: fei3dhexaquad.h:77

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:28 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011