OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
fei2dlinehermite.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 fei2dlinehermite_h
36 #define fei2dlinehermite_h
37 
38 #include "feinterpol2d.h"
39 
40 namespace oofem {
47 class OOFEM_EXPORT FEI2dLineHermite : public FEInterpolation2d
48 {
49 public:
50  FEI2dLineHermite(int ind1, int ind2) : FEInterpolation2d(1, ind1, ind2) { }
51 
52  virtual integrationDomain giveIntegrationDomain() const { return _Line; }
53  virtual Element_Geometry_Type giveGeometryType() const { return EGT_line_1; }
54 
55  virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const { return _Point; }
58 
59 
60  virtual double giveArea(const FEICellGeometry &cellgeo) const { return 0.0; }
61  virtual double giveLength(const FEICellGeometry &cellgeo) const;
62 
63  virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
64  virtual int global2local(FloatArray &answer, const FloatArray &gcoords, const FEICellGeometry &cellgeo);
65 
66  // "Bulk"
67  virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
68  virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
69  virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo);
70  virtual double giveArea(const FEICellGeometry &cellgeo) { return 0.0; }
71 
72  // Edge (same as bulk for this type, so they are all ignored) (perhaps do it the other way around?).
73  virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge) { }
74  virtual void edgeEvalN(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo) { }
75  virtual double edgeEvalNormal(FloatArray &normal, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo);
76  virtual void edgeEvaldNds(FloatArray &answer, int iedge,
77  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
78  virtual void edgeEvald2Nds2(FloatArray &answer, int iedge,
79  const FloatArray &lcoords, const FEICellGeometry &cellgeo);
80 
81  virtual void edgeLocal2global(FloatArray &answer, int iedge,
82  const FloatArray &lcoords, const FEICellGeometry &cellgeo) { }
83 
84  virtual int giveNumberOfNodes() const { return 2; }
85 
86  virtual IntegrationRule *giveIntegrationRule(int order);
87 };
88 } // end namespace oofem
89 #endif // fei2dlinehermite_h
integrationDomain
Used by integrator class to supply integration points for proper domain to be integrated (Area...
virtual void edgeLocal2global(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates edge global coordinates from given local ones.
Element_Geometry_Type
Enumerative type used to classify element geometry Possible values are: EGT_point - point in space EG...
Class representing a 2d line with Hermitian interpolation.
Class representing a general abstraction for surface finite element interpolation class...
Definition: feinterpol2d.h:45
Class representing a general abstraction for cell geometry.
Definition: feinterpol.h:62
virtual double giveArea(const FEICellGeometry &cellgeo)
virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge)
Class implementing an array of integers.
Definition: intarray.h:61
Abstract base class representing integration rule.
virtual Element_Geometry_Type giveGeometryType() const
Returns the geometry type fo the interpolator.
virtual integrationDomain giveIntegrationDomain() const
Returns the integration domain of the interpolator.
FEI2dLineHermite(int ind1, int ind2)
virtual integrationDomain giveBoundarySurfaceIntegrationDomain(int isurf) 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
virtual void edgeEvalN(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the array of edge interpolation functions (shape functions) at given point.
virtual integrationDomain giveBoundaryIntegrationDomain(int ib) const
Returns boundary integration domain.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int giveNumberOfNodes() const
Returns the number of geometric nodes of the receiver.
virtual integrationDomain giveBoundaryEdgeIntegrationDomain(int iedge) const
Returns boundary integration domain.
virtual double giveArea(const FEICellGeometry &cellgeo) const
Computes the exact area.

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