52 Kokkos::View<fp_t *, ExecSpace>
weights,
62 Kokkos::Array<fp_t, Dim>
f_arr;
63 Kokkos::View<fp_t *, ExecSpace>
f(
f_arr.data(),
Dim);
66 Kokkos::Array<fp_t, FEspace::dimensionality * FEspace::numberOfShapeFunctions>
68 Kokkos::View<fp_t **, ExecSpace>
dN(
dN_arr.data(), FEspace::dimensionality,
69 FEspace::numberOfShapeFunctions);
71 Kokkos::Array<fp_t, FEspace::dimensionality * Dim>
dNXcoor_arr;
73 FEspace::dimensionality,
Dim);
75 Kokkos::Array<fp_t, FEspace::dimensionality>
dfNum_arr;
77 FEspace::dimensionality);
79 Kokkos::Array<fp_t, FEspace::dimensionality * FEspace::dimensionality>
h_arr;
80 Kokkos::View<fp_t **, ExecSpace>
h(
h_arr.data(), FEspace::dimensionality,
81 FEspace::dimensionality);
103 SerialGemm<Trans::NoTranspose, Trans::NoTranspose,
110 SerialGemm<Trans::NoTranspose, Trans::Transpose,
115 Kokkos::Array<fp_t, FEspace::dimensionality * FEspace::dimensionality>
117 Kokkos::View<fp_t **, ExecSpace>
ddNi(
118 ddNi_arr.data(), FEspace::dimensionality, FEspace::dimensionality);
120 for (
int_t i = 0;
i < FEspace::numberOfShapeFunctions;
i++) {
122 k < FEspace::dimensionality * FEspace::dimensionality; k++) {
125 FEspace::UpdateShapeFunctionsDerDerValues(
133 SerialTrsv<Uplo::Lower, Trans::NoTranspose, Diag::Unit,
135 SerialTrsv<Uplo::Upper, Trans::NoTranspose, Diag::NonUnit,
138 for (
int_t j = 0;
j < FEspace::dimensionality;
j++) {
KOKKOS_FUNCTION bool ApplyNewtonOnElement(const cell_t type, const Kokkos::View< coordinates_t **, ExecSpace > Xcoor, const Kokkos::View< coordinates_t[Dim], ExecSpace > targetPoint, Kokkos::View< fp_t *, ExecSpace > weights, const bool forceEvaluation=false)
Dispatch Newton-based FE inversion to the correct element type.
KOKKOS_FUNCTION bool ApplyNewton(const Kokkos::View< coordinates_t **, ExecSpace > Xcoor, const Kokkos::View< coordinates_t[Dim], ExecSpace > targetPoint, Kokkos::View< fp_t *, ExecSpace > weights, const bool forceEvaluation=false)
Solve FE inverse mapping with Newton iterations and compute interpolation weights.