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
41namespace 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
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 initializeTags()
Initializes tagToOrdinal_ and ordinalToTag_ lookup arrays.
void getValues(ArrayScalar &outputValues, const ArrayScalar &inputPoints, const EOperator operatorType) const
FEM reference basis evaluation: invocation of this method throws an exception.
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.
An abstract base class that defines interface for concrete basis implementations for Finite Element (...