OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
fei3dtetlin.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 fei3dtetlin_h
36 #define fei3dtetlin_h
37 
38 #include "feinterpol3d.h"
39 
40 namespace oofem {
44 class OOFEM_EXPORT FEI3dTetLin : public FEInterpolation3d
45 {
46 public:
48 
50  virtual Element_Geometry_Type giveGeometryType() const { return EGT_tetra_1; }
51  virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const { return _Triangle; }
53  virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const { return _Line; }
54 
55  // Bulk
56  virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
57  virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
58  virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
59  virtual int global2local(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
60  virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo);
61  virtual int giveNumberOfNodes() const { return 4; }
62 
63  // Edge
64  virtual void edgeEvalN(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
65  virtual void edgeEvaldNdx(FloatMatrix &answer, int iedge,
66  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
67  virtual void edgeLocal2global(FloatArray &answer, int iedge,
68  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
69  virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords,
70  const FEICellGeometry &cellgeo);
71  virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge);
72 
73  // Surface
74  virtual void surfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
75  virtual void surfaceEvaldNdx(FloatMatrix &answer, int isurf,
76  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
77  virtual double surfaceEvalNormal(FloatArray &answer, int isurf,
78  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
79  virtual void surfaceLocal2global(FloatArray &answer, int isurf,
80  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
81  virtual double surfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords,
82  const FEICellGeometry &cellgeo);
83  virtual void computeLocalSurfaceMapping(IntArray &edgeNodes, int iedge);
84  virtual double evalNXIntegral(int iEdge, const FEICellGeometry &cellgeo);
85 
86  virtual IntegrationRule *giveIntegrationRule(int order);
87  virtual IntegrationRule *giveBoundaryIntegrationRule(int order, int boundary);
88 
89 protected:
90  double edgeComputeLength(IntArray &edgeNodes, const FEICellGeometry &cellgeo);
91 };
92 } // end namespace oofem
93 #endif // fei3dtetlin_h
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: fei3dtetlin.h:61
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
Class representing a general abstraction for cell geometry.
Definition: feinterpol.h:62
Class representing implementation of linear tetrahedra interpolation class.
Definition: fei3dtetlin.h:44
Class implementing an array of integers.
Definition: intarray.h:61
Abstract base class representing integration rule.
virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const
Returns boundary integration domain.
Definition: fei3dtetlin.h:51
virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const
Returns boundary integration domain.
Definition: fei3dtetlin.h:53
virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) const
Returns boundary integration domain.
Definition: fei3dtetlin.h:52
Class representing vector of real numbers.
Definition: floatarray.h:82
virtual Element_Geometry_Type giveGeometryType() const
Returns the geometry type fo the interpolator.
Definition: fei3dtetlin.h:50
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
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual integrationDomain giveIntegrationDomain() const
Returns the integration domain of the interpolator.
Definition: fei3dtetlin.h:49

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