12#ifndef MFEM_GSLIB_KERNEL_HELPERS_HPP
13#define MFEM_GSLIB_KERNEL_HELPERS_HPP
49 double *z,
double *lagrangeCoeff)
51 double p_i = (1 << (p_Nq - 1));
52 for (
int j = 0; j < p_Nq; ++j)
54 const double d_j = x - z[j];
55 p_i *= j == i ? 1 : d_j;
57 p0[i] = lagrangeCoeff[i] * p_i;
62 int i,
const double *z,
66 double u0 = 1, u1 = 0;
67 for (
int j = 0; j < pN; ++j)
71 const double d_j = 2 * (x - z[j]);
76 p0[i] = lCoeff[i] * u0;
77 p0[pN + i] = 2.0 * lCoeff[i] * u1;
82 int i,
const double *z,
86 double u0 = 1, u1 = 0, u2 = 0;
87 for (
int j = 0; j < pN; ++j)
91 const double d_j = 2 * (x - z[j]);
97 p0[i] = lCoeff[i] * u0;
98 p0[pN + i] = 2.0 * lCoeff[i] * u1;
99 p0[2 * pN + i] = 8.0 * lCoeff[i] * u2;
107 const double idet = 1 / (A[0] * A[2] - A[1] * A[1]);
108 x[0] = idet * (A[2] * y[0] - A[1] * y[1]);
109 x[1] = idet * (A[0] * y[1] - A[1] * y[0]);
115 const double (&x)[
SDIM])
118 for (
int d = 0; d <
SDIM; ++d)
120 const double b_d = (x[d] -
b->x[d].min) * (
b->x[d].max - x[d]);
121 test = test < 0.0 ? test : b_d;
129 const double (&x)[
SDIM])
138 for (
int d = 0; d <
SDIM; ++d)
140 dxyz[d] = x[d] -
b->c0[d];
144 for (
int d = 0; d <
SDIM; ++d)
147 for (
int e = 0; e <
SDIM; ++e)
149 rst +=
b->A[d *
SDIM + e] * dxyz[e];
151 const double brst = (rst + 1.0) * (1.0 - rst);
152 test = test < 0.0 ? test : brst;
161 const double (&x)[
SDIM])
163 const int n =
p->hash_n;
165 for (
int d =
SDIM - 1; d >= 0; --d)
168 const int i = (int)floor((x[d] -
p->bnd[d].min) *
p->fac[d]);
169 sum += i < 0 ? 0 : (n - 1 < i ? n - 1 : i);
179 for (
int d = 0; d <
SDIM; ++d)
187MFEM_HOST_DEVICE
inline double l2norm2(
const double *x)
190 for (
int d = 0; d <
SDIM; ++d)
MFEM_HOST_DEVICE double bbox_test(const obbox_t< SDIM > *const b, const double(&x)[SDIM])
MFEM_HOST_DEVICE void lag_eval_first_der(double *p0, double x, int i, const double *z, const double *lCoeff, int pN)
MFEM_HOST_DEVICE void lagrange_eval(double *p0, double x, int i, int p_Nq, double *z, double *lagrangeCoeff)
MFEM_HOST_DEVICE void lin_solve_sym_2(double x[2], const double A[3], const double y[2])
MFEM_HOST_DEVICE double l2norm2(const double(&x)[SDIM])
MFEM_HOST_DEVICE int hash_index(const findptsLocalHashData_t< SDIM > *const p, const double(&x)[SDIM])
MFEM_HOST_DEVICE void lag_eval_second_der(double *p0, double x, int i, const double *z, const double *lCoeff, int pN)
MFEM_HOST_DEVICE double AABB_test(const obbox_t< SDIM > *const b, const double(&x)[SDIM])
real_t p(const Vector &x, real_t t)