OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
fei3dwedgequad.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 
36 #ifndef fei3dwedgequad_h
37 #define fei3dwedgequad_h
38 
39 #include "feinterpol3d.h"
40 
41 namespace oofem {
48 class OOFEM_EXPORT FEI3dWedgeQuad : public FEInterpolation3d
49 {
50 protected:
51 
52 public:
54 
55  virtual integrationDomain giveIntegrationDomain() const { return _Wedge; }
56  virtual Element_Geometry_Type giveGeometryType() const { return EGT_wedge_2; }
58  if (ib <= 2) return _Triangle;
59  else return _Square; }
60  virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) const { return this->giveBoundaryIntegrationDomain(isurf); }
61  virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const { return _Line; }
62 
63 
64  virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
65  virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
66  virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
67  virtual int global2local(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
68  virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo);
69 
70  // Edge
71  virtual void edgeEvalN(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
72  virtual void edgeEvaldNdx(FloatMatrix &answer, int iedge,
73  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
74  virtual void giveLocalNodeCoords(FloatMatrix &answer);
75  virtual void edgeLocal2global(FloatArray &answer, int iedge,
76  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
77  virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords,
78  const FEICellGeometry &cellgeo);
79  virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge);
80 
81  // Surface
82  virtual void surfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
83  virtual void surfaceLocal2global(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
84  virtual double surfaceEvalNormal(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
85  virtual double surfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords,
86  const FEICellGeometry &cellgeo);
87  virtual void computeLocalSurfaceMapping(IntArray &nodes, int iSurf);
88 
89  virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
90 
91  virtual IntegrationRule *giveIntegrationRule(int order);
92  virtual IntegrationRule *giveBoundaryIntegrationRule(int order, int boundary);
93  virtual IntegrationRule *giveSurfaceIntegrationRule(int order, int isurf)
94  { return giveBoundaryIntegrationRule(order, isurf); }
95 
96  virtual int giveNumberOfNodes() const { return 15; }
97 
98 protected:
99  double edgeComputeLength(IntArray &edgeNodes, const FEICellGeometry &cellgeo);
100  void giveLocalDerivative(FloatMatrix &dN, const FloatArray &lcoords);
101 };
102 } // end namespace oofem
103 #endif
virtual int giveNumberOfNodes() const
Returns the number of geometric nodes of the receiver.
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
virtual Element_Geometry_Type giveGeometryType() const
Returns the geometry type fo the interpolator.
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
virtual IntegrationRule * giveSurfaceIntegrationRule(int order, int isurf)
virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) const
Returns boundary integration domain.
Class representing implementation of quadratic wedge interpolation class.
Class representing a general abstraction for cell geometry.
Definition: feinterpol.h:62
virtual integrationDomain giveIntegrationDomain() const
Returns the integration domain of the interpolator.
Class implementing an array of integers.
Definition: intarray.h:61
Abstract base class representing integration rule.
virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const
Returns boundary integration domain.
virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const
Returns boundary integration domain.
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
the oofem namespace is to define a context or scope in which all oofem names are defined.

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