9#ifndef PECLET_FLOW_GAUGE_EXACT_GRADIENT_HPP
10#define PECLET_FLOW_GAUGE_EXACT_GRADIENT_HPP
12#include <Kokkos_Core.hpp>
42 using MD = Kokkos::MDRangePolicy<CCExec, Kokkos::Rank<3>>;
44 "peclet::flow::gp_center_grad",
MD(
space, {g, g, g}, {e.x - g, e.y - g, e.z - g}),
46 const long sy = e.x,
sz = (
long)e.x * e.y;
48 const long sa = (axis == 0) ? 1 : (axis == 1) ?
sy :
sz;
53 const bool am = sdf(
i -
sa) >= 0.0, ap = sdf(
i +
sa) >= 0.0;
56 const int ca = (axis == 0) ? x : (axis == 1) ? y : z;
57 const int ea = (axis == 0) ? e.x : (axis == 1) ? e.y : e.z;
63 gr = (ca + 3 < ea && sdf(
i + 2 *
sa) >= 0.0 && sdf(
i + 3 *
sa) >= 0.0)
64 ? 0.5 * (-2.0 * p(
i) + p(
i +
sa) + 2.0 * p(
i + 2 *
sa) - p(
i + 3 *
sa))
67 gr = (sdf(
i + 2 *
sa) >= 0.0) ? 0.5 * (-3.0 * p(
i) + 4.0 * p(
i +
sa) - p(
i + 2 *
sa))
71 gr = (ca - 3 >= 0 && sdf(
i - 2 *
sa) >= 0.0 && sdf(
i - 3 *
sa) >= 0.0)
72 ? 0.5 * (2.0 * p(
i) - p(
i -
sa) - 2.0 * p(
i - 2 *
sa) + p(
i - 3 *
sa))
75 gr = (sdf(
i - 2 *
sa) >= 0.0) ? 0.5 * (3.0 * p(
i) - 4.0 * p(
i -
sa) + p(
i - 2 *
sa))
flow — portable (Kokkos) cut-cell pressure-operator face openness from an SDF.
void gpCenterGrad(CCField out, CCConst p, CCConst sdf, int axis, C3 e, int g, bool grad2a=false)
Directional cell-center gradient (collocated ghost path) of a cell field p whose solid-centered rows ...
void ibmFillEntry(const OV &o, int list_idx, int c_idx, float sdf_c, const float sdf_n[6], int bc_type, const float *thEx)
Kokkos::View< double *, CCMem > CCField
Kokkos::DefaultExecutionSpace CCExec
Kokkos::View< const double *, CCMem > CCConst