Intrepid
Intrepid_HGRAD_POLY_C1_FEM.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ************************************************************************
3 //
4 // Intrepid Package
5 // Copyright (2007) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // This library is free software; you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as
12 // published by the Free Software Foundation; either version 2.1 of the
13 // License, or (at your option) any later version.
14 //
15 // This library is distributed in the hope that it will be useful, but
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 // Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public
21 // License along with this library; if not, write to the Free Software
22 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23 // USA
24 // Questions? Contact Pavel Bochev (pbboche@sandia.gov) or
25 // Denis Ridzal (dridzal@sandia.gov).
26 //
27 // ************************************************************************
28 // @HEADER
29 
35 #ifndef INTREPID_HGRAD_POLY_C1_FEM_HPP
36 #define INTREPID_HGRAD_POLY_C1_FEM_HPP
37 
38 #include "Intrepid_Basis.hpp"
39 #include "Shards_CellTopology.hpp"
40 
41 namespace Intrepid{
48  template<class Scalar, class ArrayScalar>
49  class Basis_HGRAD_POLY_C1_FEM : public Basis<Scalar, ArrayScalar> {
50  public:
55  Basis_HGRAD_POLY_C1_FEM(const shards::CellTopology& cellTopology);
56 
59  void getValues(ArrayScalar& outputValues,
60  const ArrayScalar& inputPoints,
61  const EOperator operatorType) const;
62 
70  void getValues(ArrayScalar& outputValues,
71  const ArrayScalar& inputPoints,
72  const ArrayScalar& cellVertices,
73  const EOperator operatorType = OPERATOR_VALUE) const;
74 
75  private:
76 
79  void initializeTags();
80 
81 
84  template<class Scalar1, class ArrayScalar1>
85  Scalar1 computeArea(const ArrayScalar1& p1,
86  const ArrayScalar1& p2,
87  const ArrayScalar1& p3) const;
88 
91  template<class Scalar1, class ArrayScalar1>
92  void evaluateWeightFunctions(ArrayScalar1& outputValues,
93  const ArrayScalar1& inputValues,
94  const ArrayScalar1& cellVertices) const;
95 
96 
97 
100  template<class Scalar1, class ArrayScalar1>
101  void shapeFunctions(ArrayScalar1& outputValues,
102  const ArrayScalar1& inputValues,
103  const ArrayScalar1& cellVertices)const;
104  }; // end class Basis_HGRAD_POLY_C1_FEM
105 
106 } // namespace Intrepid
107 
108 #include "Intrepid_HGRAD_POLY_C1_FEMDef.hpp"
109 #endif
void initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays.
void evaluateWeightFunctions(ArrayScalar1 &outputValues, const ArrayScalar1 &inputValues, const ArrayScalar1 &cellVertices) const
Evaluation of the Wachspress weight functions.
void shapeFunctions(ArrayScalar1 &outputValues, const ArrayScalar1 &inputValues, const ArrayScalar1 &cellVertices) const
Evaluation of Wachspress shape functions.
Header file for the abstract base class Intrepid::Basis.
Scalar1 computeArea(const ArrayScalar1 &p1, const ArrayScalar1 &p2, const ArrayScalar1 &p3) const
Helper function to compute area of triangle formed by 3 points.
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const
FEM reference basis evaluation: invocation of this method throws an exception.
An abstract base class that defines interface for concrete basis implementations for Finite Element (...
Basis_HGRAD_POLY_C1_FEM(const shards::CellTopology &cellTopology)
Constructor.