13#include <Kokkos_Core.hpp>
27namespace FiniteElements {
31template <GeoSupport T>
45 Kokkos::abort(
"not implemented in the field transfer");
108 const auto x = 0.5 * (
xi -
eta);
109 const auto y = 0.5 * (
xi +
eta);
111 const auto s = 1.0 -
z;
130template <
typename ExecSpace>
133 static constexpr unsigned int numberOfShapeFunctions = 0
U;
134 static constexpr unsigned int dimensionality = 0;
137 Kokkos::View<fp_t *, ExecSpace>
sfv) {
142 Kokkos::View<fp_t *, ExecSpace>
sfv) {
148 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
156template <
typename ExecSpace>
159 static constexpr unsigned int numberOfShapeFunctions = 1U;
160 static constexpr unsigned int dimensionality = 0;
163 Kokkos::View<fp_t *, ExecSpace>
sfv) {
169 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
175 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
183template <
typename ExecSpace>
186 static constexpr unsigned int numberOfShapeFunctions = 2U;
187 static constexpr unsigned int dimensionality = 1U;
190 Kokkos::View<fp_t *, ExecSpace>
sfv) {
197 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
205 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
213template <
typename ExecSpace>
216 static constexpr unsigned int numberOfShapeFunctions = 3U;
217 static constexpr unsigned int dimensionality = 1U;
220 Kokkos::View<fp_t *, ExecSpace>
sfv) {
224 sfv(2) =
xi * (4.0 - 4.0 *
xi);
229 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
233 sfdv(0, 2) = 4.0 - 8.0 *
xi;
239 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
261template <
typename ExecSpace>
264 static constexpr unsigned int numberOfShapeFunctions = 3U;
265 static constexpr unsigned int dimensionality = 2U;
268 Kokkos::View<fp_t *, ExecSpace>
sfv) {
276 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
288 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
296template <
typename ExecSpace>
299 static constexpr unsigned int numberOfShapeFunctions = 6U;
300 static constexpr unsigned int dimensionality = 2U;
303 Kokkos::View<fp_t *, ExecSpace>
sfv) {
318 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
339 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
381template <
typename ExecSpace>
384 static constexpr unsigned int numberOfShapeFunctions = 4U;
385 static constexpr unsigned int dimensionality = 2U;
388 Kokkos::View<fp_t *, ExecSpace>
sfv) {
399 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
415 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
445template <
typename ExecSpace>
448 static constexpr unsigned int numberOfShapeFunctions = 8U;
449 static constexpr unsigned int dimensionality = 2U;
452 Kokkos::View<fp_t *, ExecSpace>
sfv) {
459 const fp_t x6 = 1.0 - (
x2 - 1.0) * (
x2 - 1.0);
464 sfv(4) = 0.5 *
x5 * (2.0 -
x2);
467 sfv(7) = 0.5 *
x6 * (2.0 -
x3);
472 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
511 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
589template <
typename ExecSpace>
592 static constexpr unsigned int numberOfShapeFunctions = 4U;
593 static constexpr unsigned int dimensionality = 3U;
596 Kokkos::View<fp_t *, ExecSpace>
sfv) {
605 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
623 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
631template <
typename ExecSpace>
634 static constexpr unsigned int numberOfShapeFunctions = 10U;
635 static constexpr unsigned int dimensionality = 3U;
638 Kokkos::View<fp_t *, ExecSpace>
sfv) {
660 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
705 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
778template <
typename ExecSpace>
781 static constexpr unsigned int numberOfShapeFunctions = 8U;
782 static constexpr unsigned int dimensionality = 3U;
785 Kokkos::View<fp_t *, ExecSpace>
sfv) {
805 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
850 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
950template <
typename ExecSpace>
953 static constexpr unsigned int numberOfShapeFunctions = 20U;
954 static constexpr unsigned int dimensionality = 3U;
957 Kokkos::View<fp_t *, ExecSpace>
sfv) {
1009 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
1138 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
1528template <
typename ExecSpace>
1531 static constexpr unsigned int numberOfShapeFunctions = 6U;
1532 static constexpr unsigned int dimensionality = 3U;
1535 Kokkos::View<fp_t *, ExecSpace>
sfv) {
1548 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
1576 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
1620template <
typename ExecSpace>
1623 static constexpr unsigned int numberOfShapeFunctions = 15U;
1624 static constexpr unsigned int dimensionality = 3U;
1627 Kokkos::View<fp_t *, ExecSpace>
sfv) {
1630 const fp_t x2 = 1 - Kokkos::pow(
x1 - 1, 2);
1666 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
1676 const fp_t x9 = Kokkos::pow(
x4 - 1, 2);
1755 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
1935template <
typename ExecSpace>
1938 static constexpr unsigned int numberOfShapeFunctions = 5U;
1939 static constexpr unsigned int dimensionality = 3U;
1942 Kokkos::View<fp_t *, ExecSpace>
sfv) {
1946 if (Kokkos::abs(1 -
z) < 1
e-6) {
1968 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
1972 if (Kokkos::abs(1 -
phi) < 1
e-6) {
2021 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
2022 if (Kokkos::abs(1.0 -
phi) < 1
e-6) {
2092template <
typename ExecSpace>
2095 static constexpr unsigned int numberOfShapeFunctions = 13U;
2096 static constexpr unsigned int dimensionality = 3U;
2099 Kokkos::View<fp_t *, ExecSpace>
sfv) {
2100 if (Kokkos::abs(1 -
phi) < 1
e-6) {
2151 Kokkos::View<fp_t **, ExecSpace>
sfdv) {
2152 if (Kokkos::abs(1 -
phi) < 1
e-6) {
2293 Kokkos::View<fp_t **, ExecSpace>
sfddv) {
2373 const fp_t x8 = Kokkos::pow(
x0, -2);
2433 const fp_t x9 = Kokkos::pow(
x2, -2);
2459 const fp_t x7 = Kokkos::pow(
x0, -2);
2484 const fp_t x7 = Kokkos::pow(
x0, -2);
2506 const fp_t x7 = Kokkos::pow(
x0, -2);
2533 const fp_t x6 = Kokkos::pow(
x0, -2);
2557 const fp_t x5 = Kokkos::pow(
x0, -2);
2576 const fp_t x3 = Kokkos::pow(
x0, -2);
2594 const fp_t x3 = Kokkos::pow(
x0, -2);
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::HEXAHEDRON >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::TETRA >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::POINT >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo(const fp_t xi, const fp_t eta, const fp_t phi)
Generic predicate to test if local coordinates lie inside a reference geometry.
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::QUAD >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::TRIANGLE >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::LINE >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::PYRAMID >(const fp_t xi, const fp_t eta, const fp_t phi)
KOKKOS_INLINE_FUNCTION bool IsBaryCoordInsideGeo< GeoSupport::WEDGE >(const fp_t xi, const fp_t eta, const fp_t phi)
@ VTK_QUADRATIC_HEXAHEDRON
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerDerValues(const int_t i, const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfddv)
static KOKKOS_INLINE_FUNCTION bool isInside(const fp_t xi, const fp_t eta, const fp_t phi)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t *, ExecSpace > sfv)
static KOKKOS_INLINE_FUNCTION void UpdateShapeFunctionsDerValues(const fp_t xi, const fp_t eta, const fp_t phi, Kokkos::View< fp_t **, ExecSpace > sfdv)
Compile-time FE geometry interface for one cell type.