flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
Loading...
Searching...
No Matches
peclet::flow Namespace Reference

Namespaces

namespace  bcdetail
 
namespace  ccdetail
 
namespace  scg
 
namespace  sco
 
namespace  skr
 The device slots of the resident pass, and the stop codes (exact in double).
 
namespace  smg
 
namespace  varrho
 
namespace  vof
 

Classes

class  AndersonAccelerator
 
struct  B3
 
struct  BcVelFace
 
struct  BcVelFaces
 
struct  BottomDirect
 
struct  BottomFactorKernel
 
struct  BottomKernel
 
struct  BottomLabelKernel
 
struct  BottomLevel
 
struct  BottomPlanes
 
struct  C3
 
struct  CcNbrs
 
struct  ChebCoeffs
 The Chebyshev coefficient recurrence (Golub-Varga; the form multigrid Chebyshev smoothers use). More...
 
struct  Closure
 
struct  Colocated
 
class  CutcellMG
 
struct  Ext3
 
struct  FieldFaceProps
 
class  FlowReference
 
struct  GpOverlayT
 Per-overlay-row SoA. More...
 
struct  I3
 
struct  IbmOverlayT
 
class  MgPoisson
 
struct  Off3
 
struct  ScalarCutState
 The per-cut-cell-scalar state (ScalarField::cut). More...
 
struct  ScalarField
 
struct  ScalarKrylovOps
 The injected pieces as callables (host-side calls that launch kernels; the overhead of the indirection is nothing next to a block-wide kernel). More...
 
struct  ScalarKrylovResult
 Outcome of one scalarBiCGStab call. More...
 
class  ScalarMG
 
struct  ScalarVec
 A Krylov vector (§5.1): the fluid field and, for a conjugate scalar, the solid field (WO-7). More...
 
struct  ScalarWallSpec
 Wall condition per body (§1.1, §8.1 set_scalar_wall), in the caller's PHYSICAL units; the conversion to internal units is done at advance time (§1.2). More...
 
class  Solver
 
struct  Staggered
 
struct  StarOverlay
 One entry per eliminated solid-centered cell: packed INNER flat index + the apertures of its (up to 6) faces to FLUID-CENTERED axis neighbours (order: +x,-x,+y,-y,+z,-z; 0 where the neighbour is solid-centered or the face is closed). More...
 
struct  SumMax
 {sum, max|.|} reduction value. More...
 
struct  T3
 
struct  UniformFaceProps
 
struct  VarFaceProps
 
class  VelocityMG
 

Typedefs

using IMem = Kokkos::DefaultExecutionSpace::memory_space
 
template<class Real >
using IbmOverlayReal = IbmOverlayT< IMem, Real >
 
using IbmSolver = Solver< Staggered >
 
template<class Real >
using GpOverlayReal = GpOverlayT< CCMem, Real >
 
using GpOverlay = GpOverlayReal< float >
 
using MConst = Kokkos::View< const float *, CCMem >
 
using BExec = Kokkos::DefaultExecutionSpace
 
using BMem = BExec::memory_space
 
using BField = Kokkos::View< double *, BMem >
 
using CCExec = Kokkos::DefaultExecutionSpace
 
using CCMem = CCExec::memory_space
 
using CCField = Kokkos::View< double *, CCMem >
 
using CCConst = Kokkos::View< const double *, CCMem >
 
using MReal = float
 
using FPV = Kokkos::View< MReal *, CCMem >
 
using FPC = Kokkos::View< const MReal *, CCMem >
 
using mreal = MReal
 
using IbmOverlay = IbmOverlayT< IMem, mreal >
 
using GpOverlayMReal = GpOverlayReal< mreal >
 
using Exec = Kokkos::DefaultExecutionSpace
 
using Mem = Exec::memory_space
 
using DField = Kokkos::View< double *, Mem >
 
using DConst = Kokkos::View< const double *, Mem >
 
using SExec = Kokkos::DefaultExecutionSpace
 
using SMem = SExec::memory_space
 
using SField = Kokkos::View< double *, SMem >
 
using SConst = Kokkos::View< const double *, SMem >
 
using TExec = Kokkos::DefaultExecutionSpace
 
using TMem = TExec::memory_space
 
using TField = Kokkos::View< double *, TMem >
 
using TConst = Kokkos::View< const double *, TMem >
 
template<class Exec >
using MDRange2 = Kokkos::MDRangePolicy< Exec, Kokkos::Rank< 2, Kokkos::Iterate::Left, Kokkos::Iterate::Left > >
 2-D range, first index fastest (both the tile order and the order within a tile).
 
template<class Exec >
using MDRange3 = Kokkos::MDRangePolicy< Exec, Kokkos::Rank< 3, Kokkos::Iterate::Left, Kokkos::Iterate::Left > >
 3-D range, x (the first index) fastest (both the tile order and the order within a tile).
 

Enumerations

enum  : int { kCaMomentum = 1 , kCaMg = 2 , kCaBoth = kCaMomentum | kCaMg }
 
enum class  ClosureKind { LinearMix , BoussinesqForce , ArrheniusMu , Table1D }
 
enum class  ScalarBc { Periodic = 0 , Neumann = 1 , Dirichlet = 2 }
 

Functions

void buildFaceAccelVar (CCField af, CCConst P, CCConst rho, CCConst fb, bool haveFb, bool haveRho, double rhoC, double fc, bool incr, double scale, long s, C3 e, int g, double wa=1.0)
 
void addFaceAccelCsf (CCField af, CCConst cv, CCConst kp, CCConst kb, CCConst rho, bool haveRho, double rhoC, double sigma, double hGrad, double scale, long s, C3 e, int g)
 
void centerToFaceMassWeighted (CCField uf, CCField vf, CCField wf, CCConst U, CCConst V, CCConst W, CCConst rho, C3 e, int g)
 
void correctCellFaceAverageVar (CCField u, CCConst phi, CCConst rho, CCConst o, bool haveRho, double rho0, long s, C3 e, int g, double wa=1.0)
 
template<class Real >
Real poly_D (Real xi)
 
template<class Real >
Real poly_N_nb (Real xi)
 
template<class Real >
Real poly_Nc (Real xi)
 
template<class Real >
Real poly_Nbc (Real)
 
template<class Real >
Real poly_D_avg (Real xi)
 
template<class Real >
Real poly_Nnb_avg (Real xi)
 
template<class Real >
Real poly_Nc_avg (Real xi)
 
template<class Real >
Real poly_Nbc_avg (Real)
 
template<class Real >
Real poly_D_slip (Real xi, Real lam)
 
template<class Real >
Real poly_N_nb_slip (Real xi, Real lam)
 
template<class Real >
Real poly_Nc_slip (Real xi, Real lam)
 
template<class Real >
Real poly_D_sandwich (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_N_c_sandwich (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_Nbc_pp_sw (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_Nbc_mp_sw (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_D_sandwich_avg (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_N_c_sandwich_avg (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_Nbc_pp_sw_avg (Real xi_m, Real xi_p)
 
template<class Real >
Real poly_Nbc_mp_sw_avg (Real xi_m, Real xi_p)
 
template<int SCHEME, class OV >
void ibmFillEntry (const OV &o, int list_idx, int c_idx, typename OV::value_type sdf_c, const typename OV::value_type sdf_n[6], int bc_type, const typename OV::value_type *thEx, const typename OV::value_type *lamAxis=nullptr, int *sandwichSkipped=nullptr)
 
template<int SCHEME, class OV >
void ibmFillEntry (const OV &o, int list_idx, int c_idx, typename OV::value_type sdf_c, const typename OV::value_type sdf_n[6], int bc_type)
 
template<class MV >
void ibmBuildDiffusion (MV AC, MV AW, MV AE, MV AS, MV AN, MV AB, MV AT, int ex, int ey, int ez, double bx, double by, double bz, double idiag)
 
template<class MV >
void ibmBuildDiffusion (MV AC, MV AW, MV AE, MV AS, MV AN, MV AB, MV AT, int ex, int ey, int ez, double beta, double idiag)
 
template<class FaceProps , class MV >
void ibmBuildDiffusionVar (MV AC, MV AW, MV AE, MV AS, MV AN, MV AB, MV AT, int ex, int ey, int ez, int g, FaceProps fp, double wx=1.0, double wy=1.0, double wz=1.0)
 
template<class MV , class OV >
void ibmModifyStencil (MV AC, MV AW, MV AE, MV AS, MV AN, MV AB, MV AT, Kokkos::View< double *, IMem > a_inhom, Kokkos::View< double *, IMem > rhs_scale, const OV &ibm, int numActive, typename OV::value_type u_bc_val, Kokkos::View< const double *, IMem > u_bc=Kokkos::View< const double *, IMem >())
 
void gpCenterGrad (CCField out, CCConst p, CCConst sdf, int axis, C3 e, int g, double wa=1.0)
 Directional cell-center gradient (collocated ghost path) of a cell field p whose solid-centered rows are DECOUPLED (hold 0): central difference where both axis neighbours are fluid-centered; 2nd-order one-sided toward the fluid where a neighbour center is solid ((-3p_i + 4p_{i+1} - p_{i+2})/2, falling back to the 2-point one-sided when the +/-2 cell is solid too); 0 when sandwiched.
 
template<class Real = float>
GpOverlayReal< Real > gpMakeOverlay (long n)
 
int gpWrap (int v, int n)
 
template<class Real >
int buildGpOverlay (CCConst sdf, C3 ext, int g, C3 nn, const GpOverlayReal< Real > &ov, Kokkos::View< int *, CCMem > idMap, Kokkos::View< int, CCMem > counter, int matrixOrder=2, int rhsOrder=2, CCConst tx=CCConst(), CCConst ty=CCConst(), CCConst tz=CCConst(), bool useGhost=false)
 Build the overlay over the inner grid nn from the cell-centered sdf on the extended block (ext, ghost width g).
 
void gpBinaryOpenness (CCField ox, CCField oy, CCField oz, CCConst sdf, C3 ext)
 Binary openness for the symmetric MG surrogate, on the extended-block layout of buildOpenness: o(face) = 1 iff the face point is fluid AND both adjacent cell centers are fluid, else 0.
 
template<class Real >
void gpApplyDelta (CCField y, CCConst x, const GpOverlayReal< Real > &ov, int nOv, C3 nn, C3 extY, int gbY, C3 extX, int gbX, bool useGhost=false)
 Overlay matvec correction: y(r) = rho_r * (y(r) + closure-face phi terms), where y currently holds the binary-openness (COUPLED-part) matvec.
 
template<class Real >
void gpDivergDelta (CCField d, CCConst u, CCConst v, CCConst w, const GpOverlayReal< Real > &ov, int nOv, C3 nn, C3 extb, int gb, bool useGhost=false)
 Overlay divergence correction: d(r) = rho_r * (d(r) + closure/BC/explicit face values), where d currently holds the binary-openness divergence (divergOpen on the binary fields: COUPLED faces only).
 
int gpDebugLevel ()
 0 = off (default). Read once per call; cheap enough, and keeps the flag hot-swappable in tests.
 
template<class Real >
void gpDebugReport (const GpOverlayReal< Real > &ov, int nRows, C3 nn, Kokkos::View< int *, CCMem > idMap, int rank=0)
 Census + optional per-row dump of the built overlay.
 
void centerToFace (CCField uf, CCField vf, CCField wf, CCConst U, CCConst V, CCConst W, C3 e, int g)
 
int wallAwareFaceStencil (CCConst sdf, long i, long sa, int cFace, int eAxis, double xcen, long idx[3], double w[3])
 
double wallAwareFaceValue (CCConst U, CCConst sdf, long i, long sa, int cFace, int eAxis, double xcen)
 
void buildFaceCentroidDist (CCField xcx, CCField xcy, CCField xcz, CCConst sdf, C3 e)
 
void centerToFaceWallAware (CCField uf, CCField vf, CCField wf, CCConst U, CCConst V, CCConst W, CCConst sdf, CCConst xcx, CCConst xcy, CCConst xcz, bool useCen, C3 e, int g)
 
void transposeGradWallAware (CCField out, CCConst p, CCConst sdf, CCConst o, CCConst xc, bool useCen, int axis, C3 e, int g, double wa=1.0)
 
void buildCellFraction (CCField cs, CCConst sdf, C3 e, int g)
 
double eQuad (double xx, double a1, double a2, double a3)
 
double embedDirichletGradient (CCConst U, CCConst sdf, C3 e, int x, int y, int z, double nx, double ny, double nz, double px, double py, double pz)
 
void embedViscousApply (CCField Lu, CCConst U, CCConst sdf, CCConst cs, CCConst ox, CCConst oy, CCConst oz, double mu, double idt, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0, double hpx=1.0, double hpy=1.0, double hpz=1.0)
 
template<class MC >
void stencilMatvec (CCField y, CCConst u, MC AC, MC AW, MC AE, MC AS, MC AN, MC AB, MC AT, C3 e, int g)
 
void subtractField (CCField u, CCConst d, C3 e, int g)
 
void centerGradOpen (CCField out, CCConst p, CCConst o, int axis, C3 e, int g, double wa=1.0)
 
void projectCorrectCenterOpen (CCField u, CCField v, CCField w, CCConst phi, CCConst ox, CCConst oy, CCConst oz, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void projectCorrectCenter (CCField u, CCField v, CCField w, CCConst phi, CCConst ox, CCConst oy, CCConst oz, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void bcVelocityComp (BField f, B3 ext, int g, int a, int s, int comp, double wall, int fold, BField prof=BField(), int prof_nc=0)
 
void bcVelocityFaces (const BcVelFaces &J, B3 ext, int g, int a, int fold)
 
void bcSlipComp (BField f, B3 ext, int g, int a, int s, int comp, int fold)
 
void bcMirrorGhost (BField f, B3 ext, int g, int a, int s)
 
void bcVelocityColocated (BField f, B3 ext, int g, int a, int s, double wall, int comp=0, BField prof=BField(), int prof_nc=0)
 
template<class FV >
void bcNeumannGhostCell (const FV &f, long base, long sa, int bic, int lo, int hi)
 
template<class FV >
void bcZeroPressureGhostCell (const FV &phi, long base, long sa, int lo, int hi)
 
void bcNeumannGhost (BField f, B3 ext, int g, int a, int s)
 
void bcOutflowComp (BField f, B3 ext, int g, int a, int s, int comp, int fold)
 
void bcDiffusionFold (BField dcorr, BField brhs, B3 ext, int g, int a, int s, double dval, double bval)
 
void bcZeroPressureGhost (BField phi, B3 ext, int g, int a, int s)
 
void bcCorrectOutflow (BField f, BField phi, B3 ext, int g, int a, double wa=1.0)
 
void bcCorrectOutflowVar (BField f, BField phi, BField rho, double rho0, B3 ext, int g, int a, bool harmonic, double wa=1.0)
 
void bcSaveHighFacePlaneInner (BField dst, BField src, B3 ext, int g, int a)
 
void bcRestoreHighFacePlaneInner (BField dst, BField src, B3 ext, int g, int a)
 
void bcSetOpenness (BField oa, B3 ext, int g, int a, int s, double val)
 
void bcZeroOpenness (BField oa, B3 ext, int g, int a, int s)
 
template<class MC >
void ibmStencilJacobiBounds (MC AC, MC AW, MC AE, MC AS, MC AN, MC AB, MC AT, CCConst solidmask, C3 e, int g, double &lo, double &hi)
 Gershgorin bounds [lo, hi] on the spectrum of the Jacobi-preconditioned cut-cell Helmholtz diag(AC)^-1 A, over the UNPINNED rows of the inner block.
 
void ibmChebUpdate (CCField x, CCField d, CCConst r, FPC AC, CCConst solidmask, C3 e, int g, double alpha, double beta)
 One Chebyshev update on the Jacobi-preconditioned system: d <- beta*d + alpha*r/AC ; x += d.
 
double ccFractionCore (double sd, double sxp, double sxm, double syp, double sym, double szp, double szm, int type, double dx, double dy, double dz)
 
double ccSampleExt (CCConst sdf, C3 ext, double x, double y, double z)
 
double ccFaceOpen (CCConst sdf, C3 ext, double fx, double fy, double fz, int type, double dx, double dy, double dz)
 
double ccTriFrac (double a, double b, double c)
 
double ccFaceOpenMS (CCConst sdf, C3 ext, double fx, double fy, double fz, int type)
 
void buildOpenness (CCField ox, CCField oy, CCField oz, CCConst sdf, C3 ext, double dx, double dy, double dz, int order=1)
 
void buildOpennessHighFace (CCField oa, CCConst sdf, C3 ext, int g, int a, double dx, double dy, double dz, int order=1)
 
bool hostRunSerial (long cells)
 
template<class F >
void ccFor3 (const char *name, C3 lo, C3 hi, F f)
 
template<class F >
void ccForRows3 (const char *name, C3 lo, C3 hi, F f)
 
template<class F , class... R>
void ccReduce3 (const char *name, C3 lo, C3 hi, F f, R &&... reducers)
 
template<class CV , class FV >
void coarsenOpenAvgCell (const CV &oxc, const CV &oyc, const CV &ozc, const FV &oxf, const FV &oyf, const FV &ozf, C3 cext, C3 fext, int gc, int gf, C3 ratio, int icx, int icy, int icz)
 
void coarsenOpenAvg (CCField oxc, CCField oyc, CCField ozc, CCConst oxf, CCConst oyf, CCConst ozf, C3 cext, C3 fext, int gc, int gf, C3 cinner, C3 ratio)
 
void mgSaveFacePlane (CCField dst, CCConst src, C3 e, int g, int a, int s)
 
void mgRestoreFacePlane (CCField dst, CCConst src, C3 e, int g, int a, int s)
 
void mgCoarsenFacePlane (CCField oc, CCConst of, C3 cext, C3 fext, int gc, int gf, C3 cinner, C3 ratio, int a, int s)
 
template<class RV , class XV , class BV , class OpV >
void cutcellResidualCell (const RV &r, const XV &x, const BV &b, const OpV &AC, const OpV &AW, const OpV &AE, const OpV &AS, const OpV &AN, const OpV &AB, const OpV &AT, long i, long xp, long xm, long yp, long ym, long zp, long zm)
 
void residualCutcell (CCField r, CCConst x, CCConst b, FPC AC, FPC AW, FPC AE, FPC AS, FPC AN, FPC AB, FPC AT, C3 e, int g)
 
void residualCutcellBox (CCField r, CCConst x, CCConst b, FPC AC, FPC AW, FPC AE, FPC AS, FPC AN, FPC AB, FPC AT, C3 e, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
void residualCutcellFace (CCField r, CCConst x, CCConst b, FPC AC, FPC AFX, FPC AFY, FPC AFZ, C3 e, int g)
 
void residualCutcellBoxFace (CCField r, CCConst x, CCConst b, FPC AC, FPC AFX, FPC AFY, FPC AFZ, C3 e, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
CcNbrs ccWrapNbrs (int lx, int ly, int lz, C3 n, int g, long i, long sy, long sz)
 
void cutcellSmoothColorFaceWrap (CCField phi, CCConst b, FPC AC, FPC AFX, FPC AFY, FPC AFZ, C3 e, C3 n, C3 og, int g, int color)
 
void residualCutcellFaceWrap (CCField r, CCConst x, CCConst b, FPC AC, FPC AFX, FPC AFY, FPC AFZ, C3 e, C3 n, int g)
 
void applyCutcellOpFaceWrap (CCField y, CCConst x, FPC AC, FPC AFX, FPC AFY, FPC AFZ, C3 e, C3 n, int g)
 
void applyCutcellOpExactWrap (CCField y, CCConst x, CCConst ox, CCConst oy, CCConst oz, C3 e, C3 n, int g, double gfx, double gfy, double gfz)
 
template<class CV , class FV >
void restrictAvgCell (const CV &coarse, const FV &fine, C3 cext, C3 fext, int gc, int gf, C3 ratio, int icx, int icy, int icz)
 
template<class FV , class CV >
void prolongAddCell (const FV &fine, const CV &coarse, C3 fext, C3 cext, int gf, int gc, C3 ratio, int ifx, int ify, int ifz)
 
template<class FV , class AV >
void meanSubtractCell (const FV &f, const AV &ac, long i, double mean)
 
void restrictAvg (CCField coarse, CCConst fine, C3 cext, C3 fext, int gc, int gf, C3 cinner, C3 ratio)
 
void restrictAvgZeroX (CCField coarse, CCField coarseX, CCConst fine, C3 cext, C3 fext, int gc, int gf, C3 cinner, C3 ratio)
 
void prolongAdd (CCField fine, CCConst coarse, C3 fext, C3 cext, int gf, int gc, C3 finner, C3 ratio)
 
int mgDebugLevel ()
 
int mgDebugSolves ()
 
template<class Real >
bool ibmIsCut (Real sc, const Real sn[6])
 
template<int SCHEME>
int buildIbmOverlay (CCConst sdf, C3 ext, int g, Off3 off, int bc_type, const IbmOverlay &ov, Kokkos::View< int *, CCMem > idMap, Kokkos::View< int, CCMem > counter, CCConst tx=CCConst(), CCConst ty=CCConst(), CCConst tz=CCConst(), C3 nn=C3{0, 0, 0}, mreal slipLambda=mreal(0), int comp=-1, Kokkos::View< int, CCMem > sandwichSkipped=Kokkos::View< int, CCMem >(), mreal hpx=mreal(1), mreal hpy=mreal(1), mreal hpz=mreal(1))
 slipLambda (WO-V6b, in CELLS, 0 = the validated no-slip closure) + comp (which velocity component this overlay carries: 0/1/2, -1 = none) turn the tangential wall Dirichlet datum into a NAVIER condition u_t(wall) = lambda du_t/dn.
 
void ibmVolfrac (CCField theta, CCConst sdf, C3 ext, Off3 off, bool aniso=false, double hpx=1.0, double hpy=1.0, double hpz=1.0, double wx=1.0, double wy=1.0, double wz=1.0)
 
void ibmSolidMask (CCField mask, CCConst sdf, C3 ext, Off3 off)
 
void ibmCleanFluidMask (CCField m, CCConst sdf, C3 ext, Off3 off)
 
template<class MC >
void ibmRbgsStencilColor (CCField x, CCConst b, MC AC, MC AW, MC AE, MC AS, MC AN, MC AB, MC AT, CCConst solidmask, C3 ext, C3 og, int g, int color)
 
template<class MC >
double ibmRbgsStencilColorDu (CCField x, CCConst b, MC AC, MC AW, MC AE, MC AS, MC AN, MC AB, MC AT, CCConst solidmask, C3 ext, C3 og, int g, int color)
 
template<class MC >
void ibmRbgsStencilColorBox (CCField x, CCConst b, MC AC, MC AW, MC AE, MC AS, MC AN, MC AB, MC AT, CCConst solidmask, C3 ext, C3 og, int color, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
template<class MC >
double ibmRbgsStencilColorDuBox (CCField x, CCConst b, MC AC, MC AW, MC AE, MC AS, MC AN, MC AB, MC AT, CCConst solidmask, C3 ext, C3 og, int color, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
void ibmRbgsSweep (CCField x, CCConst b, MConst AC, MConst AW, MConst AE, MConst AS, MConst AN, MConst AB, MConst AT, CCConst solidmask, C3 ext, C3 og, int g)
 
void mgPeriodicFill (SField f, I3 e, int N, int g)
 
template<class OpV , class OV >
void cutcellBuildOpCell (const OpV &AC, const OpV &AW, const OpV &AE, const OpV &AS, const OpV &AN, const OpV &AB, const OpV &AT, const OV &ox, const OV &oy, const OV &oz, long i, long sx, long sy, long sz, double gfx, double gfy, double gfz)
 
template<class PV , class BV , class OpV >
void cutcellSmoothCell (const PV &phi, const BV &b, const OpV &AC, const OpV &AW, const OpV &AE, const OpV &AS, const OpV &AN, const OpV &AB, const OpV &AT, long i, long xp, long xm, long yp, long ym, long zp, long zm)
 
template<class XV , class OpV >
double cutcellApplyCell (const XV &x, const OpV &AC, const OpV &AW, const OpV &AE, const OpV &AS, const OpV &AN, const OpV &AB, const OpV &AT, long i, long xp, long xm, long yp, long ym, long zp, long zm)
 
template<class XV , class OV >
double cutcellApplyExactCell (const XV &x, const OV &ox, const OV &oy, const OV &oz, long i, long sx, long sy, long sz, long xp, long xm, long yp, long ym, long zp, long zm, double gfx, double gfy, double gfz)
 
template<class OpV >
void buildCutcellOp (OpV AC, OpV AW, OpV AE, OpV AS, OpV AN, OpV AB, OpV AT, CCConst ox, CCConst oy, CCConst oz, C3 e, int g, double gfx, double gfy, double gfz)
 
template<class OpV , class OV >
void cutcellBuildFaceOpCell (const OpV &AC, const OpV &AFX, const OpV &AFY, const OpV &AFZ, const OV &ox, const OV &oy, const OV &oz, long i, long sx, long sy, long sz, double gfx, double gfy, double gfz, bool diag)
 
template<class PV , class BV , class OpV >
void cutcellSmoothFaceCell (const PV &phi, const BV &b, const OpV &AC, const OpV &AFX, const OpV &AFY, const OpV &AFZ, long i, long sx, long sy, long sz, long xp, long xm, long yp, long ym, long zp, long zm)
 
template<class XV , class OpV >
double cutcellApplyFaceCell (const XV &x, const OpV &AC, const OpV &AFX, const OpV &AFY, const OpV &AFZ, long i, long sx, long sy, long sz, long xp, long xm, long yp, long ym, long zp, long zm)
 
template<class RV , class XV , class BV , class OpV >
void cutcellResidualFaceCell (const RV &r, const XV &x, const BV &b, const OpV &AC, const OpV &AFX, const OpV &AFY, const OpV &AFZ, long i, long sx, long sy, long sz, long xp, long xm, long yp, long ym, long zp, long zm)
 
template<class OpV >
void buildCutcellOpFace (OpV AC, OpV AFX, OpV AFY, OpV AFZ, CCConst ox, CCConst oy, CCConst oz, C3 e, int gb, double gfx, double gfy, double gfz)
 
template<class OpV >
void cutcellSmoothColorFace (CCField phi, CCConst b, OpV AC, OpV AFX, OpV AFY, OpV AFZ, C3 e, C3 og, int g, int color)
 
template<class OpV >
void cutcellSmoothColorBoxFace (CCField phi, CCConst b, OpV AC, OpV AFX, OpV AFY, OpV AFZ, C3 e, C3 og, int color, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
template<class OpV >
void applyCutcellOpFace (CCField y, CCConst x, OpV AC, OpV AFX, OpV AFY, OpV AFZ, C3 e, int g)
 
template<class OpV >
void applyCutcellOpBoxFace (CCField y, CCConst x, OpV AC, OpV AFX, OpV AFY, OpV AFZ, C3 e, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
void divergOpen (CCConst u, CCConst v, CCConst w, CCConst ox, CCConst oy, CCConst oz, CCField d, C3 e, int g)
 
template<class OpV >
void cutcellSmoothColor (CCField phi, CCConst b, OpV AC, OpV AW, OpV AE, OpV AS, OpV AN, OpV AB, OpV AT, C3 e, C3 og, int g, int color)
 
template<class OpV >
void cutcellSmoothColorBox (CCField phi, CCConst b, OpV AC, OpV AW, OpV AE, OpV AS, OpV AN, OpV AB, OpV AT, C3 e, C3 og, int color, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
template<class OpV >
void applyCutcellOp (CCField y, CCConst x, OpV AC, OpV AW, OpV AE, OpV AS, OpV AN, OpV AB, OpV AT, C3 e, int g)
 
template<class OpV >
void applyCutcellOpBox (CCField y, CCConst x, OpV AC, OpV AW, OpV AE, OpV AS, OpV AN, OpV AB, OpV AT, C3 e, C3 rlo, C3 rhi, C3 slo, C3 shi)
 
void applyCutcellOpExact (CCField y, CCConst x, CCConst ox, CCConst oy, CCConst oz, C3 e, int g, double gfx, double gfy, double gfz)
 
void applyCutcellOpExactBox (CCField y, CCConst x, CCConst ox, CCConst oy, CCConst oz, C3 e, C3 rlo, C3 rhi, C3 slo, C3 shi, double gfx, double gfy, double gfz)
 
void projectCorrect (CCField u, CCField v, CCField w, CCConst phi, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void projectCorrectVar (CCField u, CCField v, CCField w, CCConst phi, CCConst rho, double rho0, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void buildRhoCoeff (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst rho, double rho0, C3 e, int g)
 
void buildRhoCoeffHarm (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst rho, double rho0, C3 e, int g)
 
void buildRhoCoeffOutflowFace (CCField ca, CCConst oa, CCConst rho, double rho0, C3 e, int g, int a, bool harmonic)
 
void projectCorrectVarHarm (CCField u, CCField v, CCField w, CCConst phi, CCConst rho, double rho0, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void divergOpenEps (CCConst u, CCConst v, CCConst w, CCConst ox, CCConst oy, CCConst oz, CCConst eps, CCField d, C3 e, int g)
 
void buildPorousCoeff (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst eps, C3 e, int g)
 
void buildPorousCoeffDrag (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst eps, CCConst beta, double idt, C3 e, int g)
 
void buildPorousCoeffCons (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst eps, CCConst beta, bool useBeta, double rhoidt, C3 e, int g)
 
void projectCorrectPorousCons (CCField u, CCField v, CCField w, CCConst phi, CCConst eps, CCConst beta, bool useBeta, double rhoidt, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void projectCorrectPorousDrag (CCField u, CCField v, CCField w, CCConst phi, CCConst beta, double idt, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
std::size_t innerToExt (long c, Ext3 ext, int ghost, Ext3 inner)
 
SumMax localSumMax (DConst f, Ext3 ext, int ghost, Ext3 inner)
 Local sum and max|.| over the inner cells.
 
double localDot (DConst a, DConst b, Ext3 ext, int ghost, Ext3 inner)
 Local inner product <a,b> over the inner cells.
 
void subtractAll (DField f, double m)
 Subtract a constant from EVERY cell of the extended block (the mean-removal scatter).
 
long L3 (int x, int y, int z, I3 e)
 
template<bool Aniso>
void diffSmoothColorT (SField c, SConst b, I3 e, I3 og, int g, double bx, double by, double bz, double Ac, int color, SConst dcorr)
 
void diffSmoothColor (SField c, SConst b, I3 e, I3 og, int g, double bx, double by, double bz, double Ac, int color, SConst dcorr, bool aniso)
 
void diffSmoothColor (SField c, SConst b, I3 e, I3 og, int g, double beta, double Ac, int color, SConst dcorr)
 
template<bool Aniso>
void diffResidualT (SField r, SConst c, SConst b, I3 e, int g, double bx, double by, double bz, double Ac, SConst dcorr)
 
void diffResidual (SField r, SConst c, SConst b, I3 e, int g, double bx, double by, double bz, double Ac, SConst dcorr, bool aniso)
 
void diffResidual (SField r, SConst c, SConst b, I3 e, int g, double beta, double Ac, SConst dcorr)
 
template<bool Aniso>
double diffSmoothColorDuT (SField c, SConst b, I3 e, I3 og, int g, double bx, double by, double bz, double Ac, int color, SConst dcorr)
 
double diffSmoothColorDu (SField c, SConst b, I3 e, I3 og, int g, double bx, double by, double bz, double Ac, int color, SConst dcorr, bool aniso)
 
double diffSmoothColorDu (SField c, SConst b, I3 e, I3 og, int g, double beta, double Ac, int color, SConst dcorr)
 
void poisSmoothColor (SField phi, SConst d, I3 e, I3 og, int g, int color)
 
void divergence (SConst u, SConst v, SConst w, SField d, I3 e, int g)
 
void poisSweep (SField phi, SConst d, I3 e, I3 og, int g)
 
void restrict_ (TField coarse, TConst fine, T3 cext, T3 fext, int g, T3 cinner, T3 ratio)
 
double trilerp (TConst c, double x, double y, double z, T3 cext)
 
void prolong (TField fine, TConst coarse, T3 fext, T3 cext, int g, T3 finner, T3 ratio)
 
void correct (TField u, TField v, TField w, TConst phi, T3 e, int g)
 
void residualVarPin (CCField r, CCConst x, CCConst b, FPC AC, FPC AW, FPC AE, FPC AS, FPC AN, FPC AB, FPC AT, CCConst pin, C3 e, int g)
 
void prolongMasked (CCField fine, CCConst coarse, CCConst mask, C3 fext, C3 cext, int g, C3 finner, C3 ratio, double eps)
 
void buildVelocityStaircase (FPV AC, FPV AW, FPV AE, FPV AS, FPV AN, FPV AB, FPV AT, CCConst theta, C3 e, int g, double bx, double by, double bz, double thresh, double idiag)
 
void pinSolidRows (FPV AC, FPV AW, FPV AE, FPV AS, FPV AN, FPV AB, FPV AT, CCConst theta, C3 e, int g, double thresh)
 
void buildAdvCoarse (FPV AC, FPV AW, FPV AE, FPV AS, FPV AN, FPV AB, FPV AT, CCConst U, CCConst V, CCConst W, int comp, C3 e, int g, double bx, double by, double bz, double fouw, double sx, double sy, double sz, double idiag)
 
void buildConstAniso (FPV AC, FPV AW, FPV AE, FPV AS, FPV AN, FPV AB, FPV AT, C3 e, double bx, double by, double bz, double idiag)
 
void boundaryFold (FPV AC, C3 e, int g, int a, int s, double beta)
 
void fillBcGhost (CCField x, C3 e, int g, int a, int s, int dirichlet)
 
void zeroPlane (CCField m, C3 e, int axis, int idx)
 
void thresholdMask (CCField m, CCConst theta, double thresh)
 
double maxAbsInner (CCConst a, C3 e, int g)
 
double maxAbsDiffInner (CCConst a, CCConst b, C3 e, int g)
 
void mulMask (CCField r, CCConst m)
 
double bottomShift (int attempt)
 
BottomPlanes bottomChoosePlanes (C3 inner, const int bc[6])
 
void applyClosure (const Closure &cl, C3 e, int g)
 
void applyClosureFaceGhost (const Closure &cl, C3 e, int g, int a, int side)
 
template<class State >
void residentKrylov (State &st, ScalarKrylovOps &ops)
 Arm ops for the resident pass with the persistent slots of st (ks, pk, allocated once).
 
template<class Ops >
ScalarKrylovResult scalarBiCGStab (Ops &ops, const ScalarVec &b, const ScalarVec &x, const ScalarVec &r, const ScalarVec &rh, const ScalarVec &p, const ScalarVec &v, const ScalarVec &t, const ScalarVec &z, const ScalarVec &z2, int maxit, double rtol, bool singular)
 BiCGStab on A x = b.
 
void scalarBuildDiffusionVarK (CCField AC, CCField AW, CCField AE, CCField AS, CCField AN, CCField AB, CCField AT, CCConst ox, CCConst oy, CCConst oz, CCConst kc, CCConst rcp, CCConst mask, double idt, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void scalarBuildRhsHeat (CCField b, CCConst cOld, CCConst rcp, double idt, C3 e, int g)
 
void scalarMaskStencil (CCField AC, CCField AW, CCField AE, CCField AS, CCField AN, CCField AB, CCField AT, CCConst mask, C3 e, int g)
 
void scalarMaskRhs (CCField b, CCField c, CCConst mask, CCConst val, C3 e, int g)
 
void scalarMaskGfm (CCField AC, CCField AW, CCField AE, CCField AS, CCField AN, CCField AB, CCField AT, CCField gfmB, CCConst ox, CCConst oy, CCConst oz, CCConst mask, CCConst tgam, CCConst gnx, CCConst gny, CCConst gnz, CCConst gphi, CCConst kc, double Dconst, bool useK, double thMin, double thMax, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0, vof::VofMetric gm=vof::VofMetric{})
 
void scalarMaskGfm2 (CCField AC, CCField AW, CCField AE, CCField AS, CCField AN, CCField AB, CCField AT, CCField gfmB, CCConst ox, CCConst oy, CCConst oz, CCConst mask, CCConst tgam, CCConst gnx, CCConst gny, CCConst gnz, CCConst gphi, CCConst kap, CCConst kc, double Dconst, bool useK, double thMin, double thMax, int order, bool useKappa, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0, vof::VofMetric gm=vof::VofMetric{})
 
void scalarAddGfmRhs (CCField b, CCConst gfmB, CCConst mask, C3 e, int g)
 
void scalarBuildDiffusionOpen (CCField AC, CCField AW, CCField AE, CCField AS, CCField AN, CCField AB, CCField AT, CCConst ox, CCConst oy, CCConst oz, double D, double idt, C3 e, int g, double wx=1.0, double wy=1.0, double wz=1.0)
 
void scalarBuildRhs (CCField b, CCConst cOld, CCConst U, CCConst V, CCConst W, CCConst ox, CCConst oy, CCConst oz, double idt, int scheme, C3 e, int g)
 
StarOverlay starMakeOverlay (long n)
 
double starAval (const StarOverlay &ov, long k, bool exact)
 One stored aperture, at the precision the gate selects.
 
int starWrap (int v, int n)
 
int buildStarOverlay (CCConst sdf, CCConst ox, CCConst oy, CCConst oz, C3 ext, int g, C3 nn, const StarOverlay &ov, Kokkos::View< int, CCMem > counter)
 Count + fill the star overlay from the cell-centered sdf and the ORIGINAL (unfiltered) apertures on the extended block (ext, ghost width g); nn = inner extents.
 
void starApplyDelta (CCField y, CCConst x, const StarOverlay &ov, int nOv, C3 nn, C3 extY, int gY, C3 extX, int gX, bool exact)
 y += S_star x over the inner cells of the (extY, gY) block, x read from the (extX, gX) block, both periodic via inner-grid wrap.
 
void starCorrectFaces (CCField uf, CCField vf, CCField wf, CCConst phi, const StarOverlay &ov, int nOv, C3 nn, C3 ext, int g, C3 extP, int gP, bool exact, double wx=1.0, double wy=1.0, double wz=1.0)
 Fix the face correction at fluid|solid faces: projectCorrect applied -(phi_hi - phi_lo) with the solid side's (decoupled) phi = 0; the mode-B correction wants the solid value phibar_s.
 

Variables

constexpr const char * kVofMomBlocksMsg
 enable_vof_momentum x enable_vof_blocks*: refused in EITHER call order.
 
constexpr long kHostSerialCellCutoff = 8192L
 
constexpr long kBottomMaxCells = 8192
 
constexpr double kBottomTau = 1e-5
 
constexpr int kBottomMaxComponents = 64
 
constexpr int kBottomCap = 100
 
constexpr int kBottomHostTeam = 8
 
constexpr int kBottomHostFactorTeam = 2
 
constexpr int kBottomMaxPlane = 192
 
constexpr int kBottomTile = 16
 
constexpr double kBottomPivotTol = 1e-6
 
constexpr int kBottomAttempts = 3
 

Typedef Documentation

◆ IMem

using peclet::flow::IMem = typedef Kokkos::DefaultExecutionSpace::memory_space

Definition at line 30 of file cut_cell_ibm.hpp.

◆ IbmOverlayReal

◆ IbmSolver

◆ GpOverlayReal

◆ GpOverlay

◆ MConst

typedef Kokkos::View< const float *, CCMem > peclet::flow::MConst

Definition at line 24 of file mac_approx_projection.hpp.

◆ BExec

using peclet::flow::BExec = typedef Kokkos::DefaultExecutionSpace

Definition at line 19 of file mac_bc.hpp.

◆ BMem

using peclet::flow::BMem = typedef BExec::memory_space

Definition at line 20 of file mac_bc.hpp.

◆ BField

Definition at line 21 of file mac_bc.hpp.

◆ CCExec

using peclet::flow::CCExec = typedef Kokkos::DefaultExecutionSpace

Definition at line 22 of file mac_cutcell.hpp.

◆ CCMem

using peclet::flow::CCMem = typedef CCExec::memory_space

Definition at line 23 of file mac_cutcell.hpp.

◆ CCField

Definition at line 24 of file mac_cutcell.hpp.

◆ CCConst

Definition at line 25 of file mac_cutcell.hpp.

◆ MReal

Definition at line 78 of file mac_cutcell_mg.hpp.

◆ FPV

Definition at line 80 of file mac_cutcell_mg.hpp.

◆ FPC

Definition at line 81 of file mac_cutcell_mg.hpp.

◆ mreal

Definition at line 24 of file mac_ibm.hpp.

◆ IbmOverlay

◆ GpOverlayMReal

◆ Exec

using peclet::flow::Exec = typedef Kokkos::DefaultExecutionSpace

Definition at line 18 of file mac_reductions.hpp.

◆ Mem

using peclet::flow::Mem = typedef Exec::memory_space

Definition at line 19 of file mac_reductions.hpp.

◆ DField

Definition at line 20 of file mac_reductions.hpp.

◆ DConst

Definition at line 21 of file mac_reductions.hpp.

◆ SExec

using peclet::flow::SExec = typedef Kokkos::DefaultExecutionSpace

Definition at line 21 of file mac_stencils.hpp.

◆ SMem

using peclet::flow::SMem = typedef SExec::memory_space

Definition at line 22 of file mac_stencils.hpp.

◆ SField

Definition at line 23 of file mac_stencils.hpp.

◆ SConst

Definition at line 24 of file mac_stencils.hpp.

◆ TExec

using peclet::flow::TExec = typedef Kokkos::DefaultExecutionSpace

Definition at line 18 of file mac_transfer.hpp.

◆ TMem

using peclet::flow::TMem = typedef TExec::memory_space

Definition at line 19 of file mac_transfer.hpp.

◆ TField

Definition at line 20 of file mac_transfer.hpp.

◆ TConst

Definition at line 21 of file mac_transfer.hpp.

◆ MDRange2

template<class Exec >
using peclet::flow::MDRange2 = typedef Kokkos::MDRangePolicy<Exec, Kokkos::Rank<2, Kokkos::Iterate::Left, Kokkos::Iterate::Left> >

2-D range, first index fastest (both the tile order and the order within a tile).

Definition at line 31 of file policy.hpp.

◆ MDRange3

template<class Exec >
using peclet::flow::MDRange3 = typedef Kokkos::MDRangePolicy<Exec, Kokkos::Rank<3, Kokkos::Iterate::Left, Kokkos::Iterate::Left> >

3-D range, x (the first index) fastest (both the tile order and the order within a tile).

Definition at line 36 of file policy.hpp.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum : int
Enumerator
kCaMomentum 
kCaMg 
kCaBoth 

Definition at line 874 of file mac_cutcell_mg.hpp.

◆ ClosureKind

Enumerator
LinearMix 
BoussinesqForce 
ArrheniusMu 
Table1D 

Definition at line 28 of file property_closures.hpp.

◆ ScalarBc

Enumerator
Periodic 
Neumann 
Dirichlet 

Definition at line 36 of file scalar_transport.hpp.

Function Documentation

◆ buildFaceAccelVar()

void peclet::flow::buildFaceAccelVar ( CCField  af,
CCConst  P,
CCConst  rho,
CCConst  fb,
bool  haveFb,
bool  haveRho,
double  rhoC,
double  fc,
bool  incr,
double  scale,
long  s,
C3  e,
int  g,
double  wa = 1.0 
)
inline

Definition at line 73 of file collocated_varrho.hpp.

Referenced by peclet::flow::Solver< Grid >::buildRhsColoVar().

◆ addFaceAccelCsf()

void peclet::flow::addFaceAccelCsf ( CCField  af,
CCConst  cv,
CCConst  kp,
CCConst  kb,
CCConst  rho,
bool  haveRho,
double  rhoC,
double  sigma,
double  hGrad,
double  scale,
long  s,
C3  e,
int  g 
)
inline

◆ centerToFaceMassWeighted()

void peclet::flow::centerToFaceMassWeighted ( CCField  uf,
CCField  vf,
CCField  wf,
CCConst  U,
CCConst  V,
CCConst  W,
CCConst  rho,
C3  e,
int  g 
)
inline

◆ correctCellFaceAverageVar()

void peclet::flow::correctCellFaceAverageVar ( CCField  u,
CCConst  phi,
CCConst  rho,
CCConst  o,
bool  haveRho,
double  rho0,
long  s,
C3  e,
int  g,
double  wa = 1.0 
)
inline

◆ poly_D()

template<class Real >
Real peclet::flow::poly_D ( Real  xi)

Definition at line 34 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry(), and poly_D_slip().

◆ poly_N_nb()

template<class Real >
Real peclet::flow::poly_N_nb ( Real  xi)

Definition at line 38 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry(), and poly_N_nb_slip().

◆ poly_Nc()

template<class Real >
Real peclet::flow::poly_Nc ( Real  xi)

Definition at line 42 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry(), and poly_Nc_slip().

◆ poly_Nbc()

template<class Real >
Real peclet::flow::poly_Nbc ( Real  )

Definition at line 46 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_D_avg()

template<class Real >
Real peclet::flow::poly_D_avg ( Real  xi)

Definition at line 50 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nnb_avg()

template<class Real >
Real peclet::flow::poly_Nnb_avg ( Real  xi)

Definition at line 54 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nc_avg()

template<class Real >
Real peclet::flow::poly_Nc_avg ( Real  xi)

Definition at line 58 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nbc_avg()

template<class Real >
Real peclet::flow::poly_Nbc_avg ( Real  )

Definition at line 62 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_D_slip()

template<class Real >
Real peclet::flow::poly_D_slip ( Real  xi,
Real  lam 
)

Definition at line 93 of file cut_cell_ibm.hpp.

References poly_D().

Referenced by ibmFillEntry().

◆ poly_N_nb_slip()

template<class Real >
Real peclet::flow::poly_N_nb_slip ( Real  xi,
Real  lam 
)

Definition at line 97 of file cut_cell_ibm.hpp.

References poly_N_nb().

Referenced by ibmFillEntry().

◆ poly_Nc_slip()

template<class Real >
Real peclet::flow::poly_Nc_slip ( Real  xi,
Real  lam 
)

Definition at line 101 of file cut_cell_ibm.hpp.

References poly_Nc().

Referenced by ibmFillEntry().

◆ poly_D_sandwich()

template<class Real >
Real peclet::flow::poly_D_sandwich ( Real  xi_m,
Real  xi_p 
)

Definition at line 106 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_N_c_sandwich()

template<class Real >
Real peclet::flow::poly_N_c_sandwich ( Real  xi_m,
Real  xi_p 
)

Definition at line 110 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nbc_pp_sw()

template<class Real >
Real peclet::flow::poly_Nbc_pp_sw ( Real  xi_m,
Real  xi_p 
)

Definition at line 114 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nbc_mp_sw()

template<class Real >
Real peclet::flow::poly_Nbc_mp_sw ( Real  xi_m,
Real  xi_p 
)

Definition at line 118 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_D_sandwich_avg()

template<class Real >
Real peclet::flow::poly_D_sandwich_avg ( Real  xi_m,
Real  xi_p 
)

Definition at line 122 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_N_c_sandwich_avg()

template<class Real >
Real peclet::flow::poly_N_c_sandwich_avg ( Real  xi_m,
Real  xi_p 
)

Definition at line 126 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nbc_pp_sw_avg()

template<class Real >
Real peclet::flow::poly_Nbc_pp_sw_avg ( Real  xi_m,
Real  xi_p 
)

Definition at line 130 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ poly_Nbc_mp_sw_avg()

template<class Real >
Real peclet::flow::poly_Nbc_mp_sw_avg ( Real  xi_m,
Real  xi_p 
)

Definition at line 134 of file cut_cell_ibm.hpp.

Referenced by ibmFillEntry().

◆ ibmFillEntry() [1/2]

template<int SCHEME, class OV >
void peclet::flow::ibmFillEntry ( const OV &  o,
int  list_idx,
int  c_idx,
typename OV::value_type  sdf_c,
const typename OV::value_type  sdf_n[6],
int  bc_type,
const typename OV::value_type *  thEx,
const typename OV::value_type *  lamAxis = nullptr,
int *  sandwichSkipped = nullptr 
)

◆ ibmFillEntry() [2/2]

template<int SCHEME, class OV >
void peclet::flow::ibmFillEntry ( const OV &  o,
int  list_idx,
int  c_idx,
typename OV::value_type  sdf_c,
const typename OV::value_type  sdf_n[6],
int  bc_type 
)

Definition at line 312 of file cut_cell_ibm.hpp.

◆ ibmBuildDiffusion() [1/2]

template<class MV >
void peclet::flow::ibmBuildDiffusion ( MV  AC,
MV  AW,
MV  AE,
MV  AS,
MV  AN,
MV  AB,
MV  AT,
int  ex,
int  ey,
int  ez,
double  bx,
double  by,
double  bz,
double  idiag 
)
inline

◆ ibmBuildDiffusion() [2/2]

template<class MV >
void peclet::flow::ibmBuildDiffusion ( MV  AC,
MV  AW,
MV  AE,
MV  AS,
MV  AN,
MV  AB,
MV  AT,
int  ex,
int  ey,
int  ez,
double  beta,
double  idiag 
)
inline

Definition at line 350 of file cut_cell_ibm.hpp.

References AC, and ibmBuildDiffusion().

◆ ibmBuildDiffusionVar()

template<class FaceProps , class MV >
void peclet::flow::ibmBuildDiffusionVar ( MV  AC,
MV  AW,
MV  AE,
MV  AS,
MV  AN,
MV  AB,
MV  AT,
int  ex,
int  ey,
int  ez,
int  g,
FaceProps  fp,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

◆ ibmModifyStencil()

template<class MV , class OV >
void peclet::flow::ibmModifyStencil ( MV  AC,
MV  AW,
MV  AE,
MV  AS,
MV  AN,
MV  AB,
MV  AT,
Kokkos::View< double *, IMem >  a_inhom,
Kokkos::View< double *, IMem >  rhs_scale,
const OV &  ibm,
int  numActive,
typename OV::value_type  u_bc_val,
Kokkos::View< const double *, IMem >  u_bc = Kokkos::View<const double*, IMem>() 
)
inline

◆ gpCenterGrad()

void peclet::flow::gpCenterGrad ( CCField  out,
CCConst  p,
CCConst  sdf,
int  axis,
C3  e,
int  g,
double  wa = 1.0 
)
inline

Directional cell-center gradient (collocated ghost path) of a cell field p whose solid-centered rows are DECOUPLED (hold 0): central difference where both axis neighbours are fluid-centered; 2nd-order one-sided toward the fluid where a neighbour center is solid ((-3p_i + 4p_{i+1} - p_{i+2})/2, falling back to the 2-point one-sided when the +/-2 cell is solid too); 0 when sandwiched.

Never reads a solid cell's value — reading the decoupled 0 is a GAUGE-DEPENDENT O(1) gradient error (measured in tests/study/ghost_collocated_apriori.py [C2]: the mode-0 central difference grows O(1/h) at cut cells, the openness-weighted kernels are O(1)/O(h); this operator is O(h^2) and exactly gauge-invariant). Serves both the incremental -grad(P^n) predictor and the projection's cell correction. The sdf must be the PROJECTION's view (the fragmentation-guarded sdfGp), so pocket cells whose phi rows are decoupled are not read either. PHASE 2 (doc/anisotropic_metric.md §3/§6.5): wa is the per-axis pressure weight w_axis = 1/h_axis'^2, applied to the OUTPUT. The directional closure itself classifies by the SIGN of the SDF and interpolates by theta, so no metric reaches inside it; the weight is the whole of it, and the SAME kernel supplies both the -grad(P^n) predictor and the projection's cell correction, so neither call site scales it again. 1.0 on the isotropic path (exact).

Definition at line 35 of file gauge_exact_gradient.hpp.

Referenced by peclet::flow::Solver< Grid >::buildRhs(), peclet::flow::Solver< Grid >::buildRhsForced(), and peclet::flow::Solver< Grid >::projectCorrectVelocities().

◆ gpMakeOverlay()

template<class Real = float>
GpOverlayReal< Real > peclet::flow::gpMakeOverlay ( long  n)
inline

Definition at line 115 of file ghost_projection.hpp.

◆ gpWrap()

int peclet::flow::gpWrap ( int  v,
int  n 
)

Definition at line 130 of file ghost_projection.hpp.

Referenced by buildGpOverlay(), gpApplyDelta(), and gpDivergDelta().

◆ buildGpOverlay()

template<class Real >
int peclet::flow::buildGpOverlay ( CCConst  sdf,
C3  ext,
int  g,
C3  nn,
const GpOverlayReal< Real > &  ov,
Kokkos::View< int *, CCMem >  idMap,
Kokkos::View< int, CCMem >  counter,
int  matrixOrder = 2,
int  rhsOrder = 2,
CCConst  tx = CCConst(),
CCConst  ty = CCConst(),
CCConst  tz = CCConst(),
bool  useGhost = false 
)
inline

Build the overlay over the inner grid nn from the cell-centered sdf on the extended block (ext, ghost width g).

Neighbor access: single-rank wraps periodically over the inner grid (so the +/-2 reach never depends on g); useGhost (distributed) reads straight offsets into the exchanged halo instead — requires g >= 2 and current sdf ghosts. The MDRange covers this rank's inner cells only, which IS the gp-row ownership under MPI. Overlay arrays must be sized for the worst case; returns the row count. idMap (size nn.x*nn.y*nn.z) gets slot or -1. (Exact crossings tx/ty/tz are inner-sized with wrap access — single-rank only, not lifted.)

Definition at line 143 of file ghost_projection.hpp.

References F, gpWrap(), peclet::flow::C3::x, and peclet::flow::C3::y.

Referenced by peclet::flow::Solver< Grid >::setSolidGhostProjectionOverlay().

◆ gpBinaryOpenness()

void peclet::flow::gpBinaryOpenness ( CCField  ox,
CCField  oy,
CCField  oz,
CCConst  sdf,
C3  ext 
)
inline

Binary openness for the symmetric MG surrogate, on the extended-block layout of buildOpenness: o(face) = 1 iff the face point is fluid AND both adjacent cell centers are fluid, else 0.

buildCutcellOp on this field gives exactly the COUPLED part of the ghost operator; the whole CutcellMG hierarchy (coarsening, smoothing, GraphAMG bottom) runs on it unchanged.

Definition at line 232 of file ghost_projection.hpp.

References peclet::flow::C3::x, peclet::flow::C3::y, and peclet::flow::C3::z.

Referenced by peclet::flow::Solver< Grid >::setSolidGhostProjectionOverlay().

◆ gpApplyDelta()

template<class Real >
void peclet::flow::gpApplyDelta ( CCField  y,
CCConst  x,
const GpOverlayReal< Real > &  ov,
int  nOv,
C3  nn,
C3  extY,
int  gbY,
C3  extX,
int  gbX,
bool  useGhost = false 
)
inline

Overlay matvec correction: y(r) = rho_r * (y(r) + closure-face phi terms), where y currently holds the binary-openness (COUPLED-part) matvec.

y lives on the (extY, gbY) block, x on the (extX, gbX) block — identical single-rank (both the g=1 MG block), but distributed the +/-2 couplings need a g=2 halo, so x is the caller's staged g=2 copy while y stays on the MG block. Neighbor access: single-rank wraps over the inner grid nn; useGhost reads straight offsets into x's exchanged halo (requires gbX >= 2). Face at relative index m couples cells (i+m-1, i+m); the div coefficient c = sgn*w contributes A x += -c*x(i+m) + c*x(i+m-1) => delta = sgn*w*(x_cm - x_cp). Distinct rows per thread: no atomics.

Definition at line 261 of file ghost_projection.hpp.

References gpWrap().

◆ gpDivergDelta()

template<class Real >
void peclet::flow::gpDivergDelta ( CCField  d,
CCConst  u,
CCConst  v,
CCConst  w,
const GpOverlayReal< Real > &  ov,
int  nOv,
C3  nn,
C3  extb,
int  gb,
bool  useGhost = false 
)
inline

Overlay divergence correction: d(r) = rho_r * (d(r) + closure/BC/explicit face values), where d currently holds the binary-openness divergence (divergOpen on the binary fields: COUPLED faces only).

u/v/w and d live on the solver block (extents extb, ghost width gb). u_bc = 0 (v1 stationary walls). Neighbor access: single-rank wraps over the inner grid nn; useGhost (distributed) reads straight offsets into the exchanged velocity halo (reach -1..+2, gb >= 2). Rows with no phi coupling are zeroed (decoupled). Used identically for the RHS div(u*) and the post-correction diagnostic — the diagnostic IS the residual.

Definition at line 308 of file ghost_projection.hpp.

References gpWrap(), and U.

Referenced by peclet::flow::Solver< Grid >::maxOpenDivergenceInternal(), and peclet::flow::Solver< Grid >::projectAssembleDivergence().

◆ gpDebugLevel()

int peclet::flow::gpDebugLevel ( )
inline

0 = off (default). Read once per call; cheap enough, and keeps the flag hot-swappable in tests.

Definition at line 51 of file ghost_projection_debug.hpp.

Referenced by gpDebugReport(), and peclet::flow::Solver< Grid >::setSolidGhostProjectionOverlay().

◆ gpDebugReport()

template<class Real >
void peclet::flow::gpDebugReport ( const GpOverlayReal< Real > &  ov,
int  nRows,
C3  nn,
Kokkos::View< int *, CCMem >  idMap,
int  rank = 0 
)
inline

Census + optional per-row dump of the built overlay.

nn is the inner grid, nRows the row count returned by buildGpOverlay, idMap the inner-cell -> row map (-1 = no row). rank only labels the output. Host-side; copies the overlay out of device memory once.

Definition at line 60 of file ghost_projection_debug.hpp.

References gpDebugLevel(), and rhoAt().

Referenced by peclet::flow::Solver< Grid >::setSolidGhostProjectionOverlay().

◆ centerToFace()

void peclet::flow::centerToFace ( CCField  uf,
CCField  vf,
CCField  wf,
CCConst  U,
CCConst  V,
CCConst  W,
C3  e,
int  g 
)
inline

◆ wallAwareFaceStencil()

int peclet::flow::wallAwareFaceStencil ( CCConst  sdf,
long  i,
long  sa,
int  cFace,
int  eAxis,
double  xcen,
long  idx[3],
double  w[3] 
)

Definition at line 69 of file mac_approx_projection.hpp.

Referenced by transposeGradWallAware(), and wallAwareFaceValue().

◆ wallAwareFaceValue()

double peclet::flow::wallAwareFaceValue ( CCConst  U,
CCConst  sdf,
long  i,
long  sa,
int  cFace,
int  eAxis,
double  xcen 
)

Definition at line 127 of file mac_approx_projection.hpp.

References U, and wallAwareFaceStencil().

Referenced by centerToFaceWallAware().

◆ buildFaceCentroidDist()

void peclet::flow::buildFaceCentroidDist ( CCField  xcx,
CCField  xcy,
CCField  xcz,
CCConst  sdf,
C3  e 
)
inline

◆ centerToFaceWallAware()

void peclet::flow::centerToFaceWallAware ( CCField  uf,
CCField  vf,
CCField  wf,
CCConst  U,
CCConst  V,
CCConst  W,
CCConst  sdf,
CCConst  xcx,
CCConst  xcy,
CCConst  xcz,
bool  useCen,
C3  e,
int  g 
)
inline

◆ transposeGradWallAware()

void peclet::flow::transposeGradWallAware ( CCField  out,
CCConst  p,
CCConst  sdf,
CCConst  o,
CCConst  xc,
bool  useCen,
int  axis,
C3  e,
int  g,
double  wa = 1.0 
)
inline

◆ buildCellFraction()

void peclet::flow::buildCellFraction ( CCField  cs,
CCConst  sdf,
C3  e,
int  g 
)
inline

◆ eQuad()

double peclet::flow::eQuad ( double  xx,
double  a1,
double  a2,
double  a3 
)

Definition at line 307 of file mac_approx_projection.hpp.

Referenced by embedDirichletGradient().

◆ embedDirichletGradient()

double peclet::flow::embedDirichletGradient ( CCConst  U,
CCConst  sdf,
C3  e,
int  x,
int  y,
int  z,
double  nx,
double  ny,
double  nz,
double  px,
double  py,
double  pz 
)

Definition at line 330 of file mac_approx_projection.hpp.

References eQuad(), and U.

Referenced by embedViscousApply().

◆ embedViscousApply()

void peclet::flow::embedViscousApply ( CCField  Lu,
CCConst  U,
CCConst  sdf,
CCConst  cs,
CCConst  ox,
CCConst  oy,
CCConst  oz,
double  mu,
double  idt,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0,
double  hpx = 1.0,
double  hpy = 1.0,
double  hpz = 1.0 
)
inline

Definition at line 433 of file mac_approx_projection.hpp.

References embedDirichletGradient(), and U.

Referenced by peclet::flow::Solver< Grid >::buildRhs().

◆ stencilMatvec()

template<class MC >
void peclet::flow::stencilMatvec ( CCField  y,
CCConst  u,
MC  AC,
MC  AW,
MC  AE,
MC  AS,
MC  AN,
MC  AB,
MC  AT,
C3  e,
int  g 
)
inline

Definition at line 482 of file mac_approx_projection.hpp.

References AC.

Referenced by peclet::flow::Solver< Grid >::buildRhs().

◆ subtractField()

void peclet::flow::subtractField ( CCField  u,
CCConst  d,
C3  e,
int  g 
)
inline

◆ centerGradOpen()

void peclet::flow::centerGradOpen ( CCField  out,
CCConst  p,
CCConst  o,
int  axis,
C3  e,
int  g,
double  wa = 1.0 
)
inline

Definition at line 518 of file mac_approx_projection.hpp.

Referenced by peclet::flow::Solver< Grid >::buildRhs().

◆ projectCorrectCenterOpen()

void peclet::flow::projectCorrectCenterOpen ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

◆ projectCorrectCenter()

void peclet::flow::projectCorrectCenter ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

◆ bcVelocityComp()

void peclet::flow::bcVelocityComp ( BField  f,
B3  ext,
int  g,
int  a,
int  s,
int  comp,
double  wall,
int  fold,
BField  prof = BField(),
int  prof_nc = 0 
)
inline

◆ bcVelocityFaces()

void peclet::flow::bcVelocityFaces ( const BcVelFaces &  J,
B3  ext,
int  g,
int  a,
int  fold 
)
inline

◆ bcSlipComp()

void peclet::flow::bcSlipComp ( BField  f,
B3  ext,
int  g,
int  a,
int  s,
int  comp,
int  fold 
)
inline

◆ bcMirrorGhost()

void peclet::flow::bcMirrorGhost ( BField  f,
B3  ext,
int  g,
int  a,
int  s 
)
inline

◆ bcVelocityColocated()

void peclet::flow::bcVelocityColocated ( BField  f,
B3  ext,
int  g,
int  a,
int  s,
double  wall,
int  comp = 0,
BField  prof = BField(),
int  prof_nc = 0 
)
inline

◆ bcNeumannGhostCell()

template<class FV >
void peclet::flow::bcNeumannGhostCell ( const FV &  f,
long  base,
long  sa,
int  bic,
int  lo,
int  hi 
)

Definition at line 229 of file mac_bc.hpp.

Referenced by bcNeumannGhost().

◆ bcZeroPressureGhostCell()

template<class FV >
void peclet::flow::bcZeroPressureGhostCell ( const FV &  phi,
long  base,
long  sa,
int  lo,
int  hi 
)

Definition at line 236 of file mac_bc.hpp.

Referenced by bcZeroPressureGhost().

◆ bcNeumannGhost()

◆ bcOutflowComp()

void peclet::flow::bcOutflowComp ( BField  f,
B3  ext,
int  g,
int  a,
int  s,
int  comp,
int  fold 
)
inline

◆ bcDiffusionFold()

void peclet::flow::bcDiffusionFold ( BField  dcorr,
BField  brhs,
B3  ext,
int  g,
int  a,
int  s,
double  dval,
double  bval 
)
inline

◆ bcZeroPressureGhost()

void peclet::flow::bcZeroPressureGhost ( BField  phi,
B3  ext,
int  g,
int  a,
int  s 
)
inline

◆ bcCorrectOutflow()

void peclet::flow::bcCorrectOutflow ( BField  f,
BField  phi,
B3  ext,
int  g,
int  a,
double  wa = 1.0 
)
inline

◆ bcCorrectOutflowVar()

void peclet::flow::bcCorrectOutflowVar ( BField  f,
BField  phi,
BField  rho,
double  rho0,
B3  ext,
int  g,
int  a,
bool  harmonic,
double  wa = 1.0 
)
inline

◆ bcSaveHighFacePlaneInner()

void peclet::flow::bcSaveHighFacePlaneInner ( BField  dst,
BField  src,
B3  ext,
int  g,
int  a 
)
inline

◆ bcRestoreHighFacePlaneInner()

void peclet::flow::bcRestoreHighFacePlaneInner ( BField  dst,
BField  src,
B3  ext,
int  g,
int  a 
)
inline

◆ bcSetOpenness()

void peclet::flow::bcSetOpenness ( BField  oa,
B3  ext,
int  g,
int  a,
int  s,
double  val 
)
inline

◆ bcZeroOpenness()

void peclet::flow::bcZeroOpenness ( BField  oa,
B3  ext,
int  g,
int  a,
int  s 
)
inline

Definition at line 454 of file mac_bc.hpp.

References bcSetOpenness().

Referenced by main(), and peclet::flow::Solver< Grid >::setSolidBuildOpenness().

◆ ibmStencilJacobiBounds()

template<class MC >
void peclet::flow::ibmStencilJacobiBounds ( MC  AC,
MC  AW,
MC  AE,
MC  AS,
MC  AN,
MC  AB,
MC  AT,
CCConst  solidmask,
C3  e,
int  g,
double &  lo,
double &  hi 
)
inline

Gershgorin bounds [lo, hi] on the spectrum of the Jacobi-preconditioned cut-cell Helmholtz diag(AC)^-1 A, over the UNPINNED rows of the inner block.

Both are rigorous: lo <= lambda_min and hi >= lambda_max, so Chebyshev on [lo, hi] is unconditionally convergent. A loose lo only slows it down; a hi below lambda_max would diverge, which is why this is arithmetic and not an estimate. Rows with a vanishing diagonal (never solved) are skipped.

Definition at line 41 of file mac_cheb_momentum.hpp.

References AC.

Referenced by peclet::flow::Solver< Grid >::chebSolveComp(), and peclet::flow::VelocityMG::solve().

◆ ibmChebUpdate()

void peclet::flow::ibmChebUpdate ( CCField  x,
CCField  d,
CCConst  r,
FPC  AC,
CCConst  solidmask,
C3  e,
int  g,
double  alpha,
double  beta 
)
inline

One Chebyshev update on the Jacobi-preconditioned system: d <- beta*d + alpha*r/AC ; x += d.

Pinned (solid) rows are held at zero exactly as the red-black smoother holds them, so the two solvers share a fixed point. r is expected to be the pin-aware residual (residualVarPin), which is already zero there.

Definition at line 88 of file mac_cheb_momentum.hpp.

References AC.

Referenced by peclet::flow::VelocityMG::chebSmooth(), and peclet::flow::Solver< Grid >::chebSolveComp().

◆ ccFractionCore()

double peclet::flow::ccFractionCore ( double  sd,
double  sxp,
double  sxm,
double  syp,
double  sym,
double  szp,
double  szm,
int  type,
double  dx,
double  dy,
double  dz 
)

Definition at line 58 of file mac_cutcell.hpp.

Referenced by ccFaceOpen(), and main().

◆ ccSampleExt()

◆ ccFaceOpen()

double peclet::flow::ccFaceOpen ( CCConst  sdf,
C3  ext,
double  fx,
double  fy,
double  fz,
int  type,
double  dx,
double  dy,
double  dz 
)

Definition at line 103 of file mac_cutcell.hpp.

References ccFractionCore(), and ccSampleExt().

Referenced by buildOpenness(), and buildOpennessHighFace().

◆ ccTriFrac()

double peclet::flow::ccTriFrac ( double  a,
double  b,
double  c 
)

Definition at line 119 of file mac_cutcell.hpp.

Referenced by ccFaceOpenMS().

◆ ccFaceOpenMS()

double peclet::flow::ccFaceOpenMS ( CCConst  sdf,
C3  ext,
double  fx,
double  fy,
double  fz,
int  type 
)

Definition at line 174 of file mac_cutcell.hpp.

References ccSampleExt(), and ccTriFrac().

Referenced by buildOpenness(), and buildOpennessHighFace().

◆ buildOpenness()

void peclet::flow::buildOpenness ( CCField  ox,
CCField  oy,
CCField  oz,
CCConst  sdf,
C3  ext,
double  dx,
double  dy,
double  dz,
int  order = 1 
)
inline

◆ buildOpennessHighFace()

void peclet::flow::buildOpennessHighFace ( CCField  oa,
CCConst  sdf,
C3  ext,
int  g,
int  a,
double  dx,
double  dy,
double  dz,
int  order = 1 
)
inline

◆ hostRunSerial()

◆ ccFor3()

template<class F >
void peclet::flow::ccFor3 ( const char *  name,
C3  lo,
C3  hi,
F  f 
)
inline

Definition at line 348 of file mac_cutcell.hpp.

Referenced by peclet::flow::sco::addOnUnknown(), peclet::flow::sco::advectionBands(), peclet::flow::sco::advectionResidual(), applyCutcellOp(), applyCutcellOpBox(), applyCutcellOpBoxFace(), applyCutcellOpExact(), applyCutcellOpExactBox(), applyCutcellOpExactWrap(), applyCutcellOpFace(), applyCutcellOpFaceWrap(), peclet::flow::ScalarMG::applySurrogate(), peclet::flow::ScalarMG::applySurrogateTwo(), peclet::flow::ScalarMG::assembleBands(), peclet::flow::ScalarMG::assembleCoarse(), peclet::flow::skr::axpy(), peclet::flow::skr::aypx(), peclet::flow::sco::buildBands(), peclet::flow::ScalarMG::buildCoarse(), peclet::flow::ScalarMG::buildCoarseSolid(), buildCutcellOp(), buildCutcellOpFace(), peclet::flow::ScalarMG::buildLevel0Faces(), peclet::flow::ScalarMG::buildLevel0SolidFaces(), buildPorousCoeff(), buildPorousCoeffCons(), buildPorousCoeffDrag(), buildRhoCoeff(), buildRhoCoeffHarm(), peclet::flow::sco::buildRhs(), peclet::flow::Solver< Grid >::buildRhs(), peclet::flow::Solver< Grid >::buildRhsVar(), peclet::flow::sco::buildSolidMaterial(), peclet::flow::sco::clampNonNegative(), peclet::flow::ScalarMG::coarsenAdvection(), coarsenOpenAvg(), peclet::flow::ScalarMG::contraction(), peclet::flow::Solver< Grid >::copyBlockShifted(), peclet::flow::Solver< Grid >::copyInner(), peclet::flow::FlowReference::copyInner(), divergOpen(), divergOpenEps(), peclet::flow::sco::explicitAdvectionRhs(), peclet::flow::sco::explicitFaceFluxes(), peclet::flow::sco::faceFluxes(), peclet::flow::vof::VofBlockExchange::gatherLocalLaunch(), ibmBuildDiffusionVar(), peclet::flow::sco::meanGradientAdvectionRhs(), peclet::flow::sco::meanGradientFaceRhs(), projectCorrect(), projectCorrectPorousCons(), projectCorrectPorousDrag(), projectCorrectVar(), projectCorrectVarHarm(), prolongAdd(), peclet::flow::ScalarMG::removeMean(), peclet::flow::CutcellMG::removeMean(), peclet::flow::ScalarMG::removeMeanTwo(), peclet::flow::skr::residentP(), peclet::flow::skr::residentS(), peclet::flow::skr::residentXHalf(), peclet::flow::skr::residentXR(), peclet::flow::smg::residualBand(), residualCutcell(), residualCutcellBox(), residualCutcellBoxFace(), residualCutcellFace(), residualCutcellFaceWrap(), peclet::flow::smg::residualFace(), peclet::flow::sco::residualFluxForm(), peclet::flow::skr::residualFrom(), peclet::flow::smg::residualTwo(), residualVarPin(), restrictAvg(), restrictAvgZeroX(), peclet::flow::smg::restrictMax(), peclet::flow::sco::smallCells(), peclet::flow::sco::solidBands(), peclet::flow::sco::solidFaceProducts(), peclet::flow::sco::solidMass(), peclet::flow::sco::solidMeanGradientFaceRhs(), peclet::flow::sco::solidResidualFluxForm(), peclet::flow::sco::solidRhs(), peclet::flow::sco::zeroNonUnknown(), and peclet::flow::smg::zeroPinned().

◆ ccForRows3()

template<class F >
void peclet::flow::ccForRows3 ( const char *  name,
C3  lo,
C3  hi,
F  f 
)
inline

Definition at line 353 of file mac_cutcell.hpp.

◆ ccReduce3()

◆ coarsenOpenAvgCell()

template<class CV , class FV >
void peclet::flow::coarsenOpenAvgCell ( const CV &  oxc,
const CV &  oyc,
const CV &  ozc,
const FV &  oxf,
const FV &  oyf,
const FV &  ozf,
C3  cext,
C3  fext,
int  gc,
int  gf,
C3  ratio,
int  icx,
int  icy,
int  icz 
)

◆ coarsenOpenAvg()

void peclet::flow::coarsenOpenAvg ( CCField  oxc,
CCField  oyc,
CCField  ozc,
CCConst  oxf,
CCConst  oyf,
CCConst  ozf,
C3  cext,
C3  fext,
int  gc,
int  gf,
C3  cinner,
C3  ratio 
)
inline

Definition at line 113 of file mac_cutcell_mg.hpp.

References ccFor3(), and coarsenOpenAvgCell().

Referenced by peclet::flow::CutcellMG::setOpenness().

◆ mgSaveFacePlane()

void peclet::flow::mgSaveFacePlane ( CCField  dst,
CCConst  src,
C3  e,
int  g,
int  a,
int  s 
)
inline

Definition at line 139 of file mac_cutcell_mg.hpp.

Referenced by peclet::flow::CutcellMG::saveOutflowPlanes().

◆ mgRestoreFacePlane()

void peclet::flow::mgRestoreFacePlane ( CCField  dst,
CCConst  src,
C3  e,
int  g,
int  a,
int  s 
)
inline

◆ mgCoarsenFacePlane()

void peclet::flow::mgCoarsenFacePlane ( CCField  oc,
CCConst  of,
C3  cext,
C3  fext,
int  gc,
int  gf,
C3  cinner,
C3  ratio,
int  a,
int  s 
)
inline

◆ cutcellResidualCell()

template<class RV , class XV , class BV , class OpV >
void peclet::flow::cutcellResidualCell ( const RV &  r,
const XV &  x,
const BV &  b,
const OpV &  AC,
const OpV &  AW,
const OpV &  AE,
const OpV &  AS,
const OpV &  AN,
const OpV &  AB,
const OpV &  AT,
long  i,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm 
)

Definition at line 211 of file mac_cutcell_mg.hpp.

References AC.

Referenced by residualCutcell(), and residualCutcellBox().

◆ residualCutcell()

void peclet::flow::residualCutcell ( CCField  r,
CCConst  x,
CCConst  b,
FPC  AC,
FPC  AW,
FPC  AE,
FPC  AS,
FPC  AN,
FPC  AB,
FPC  AT,
C3  e,
int  g 
)
inline

Definition at line 221 of file mac_cutcell_mg.hpp.

References AC, ccFor3(), and cutcellResidualCell().

Referenced by DistMG::vcycle().

◆ residualCutcellBox()

void peclet::flow::residualCutcellBox ( CCField  r,
CCConst  x,
CCConst  b,
FPC  AC,
FPC  AW,
FPC  AE,
FPC  AS,
FPC  AN,
FPC  AB,
FPC  AT,
C3  e,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 235 of file mac_cutcell_mg.hpp.

References AC, ccFor3(), and cutcellResidualCell().

◆ residualCutcellFace()

void peclet::flow::residualCutcellFace ( CCField  r,
CCConst  x,
CCConst  b,
FPC  AC,
FPC  AFX,
FPC  AFY,
FPC  AFZ,
C3  e,
int  g 
)
inline

◆ residualCutcellBoxFace()

void peclet::flow::residualCutcellBoxFace ( CCField  r,
CCConst  x,
CCConst  b,
FPC  AC,
FPC  AFX,
FPC  AFY,
FPC  AFZ,
C3  e,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 262 of file mac_cutcell_mg.hpp.

References AC, ccFor3(), and cutcellResidualFaceCell().

Referenced by peclet::flow::CutcellMG::vcycleImpl().

◆ ccWrapNbrs()

CcNbrs peclet::flow::ccWrapNbrs ( int  lx,
int  ly,
int  lz,
C3  n,
int  g,
long  i,
long  sy,
long  sz 
)

◆ cutcellSmoothColorFaceWrap()

void peclet::flow::cutcellSmoothColorFaceWrap ( CCField  phi,
CCConst  b,
FPC  AC,
FPC  AFX,
FPC  AFY,
FPC  AFZ,
C3  e,
C3  n,
C3  og,
int  g,
int  color 
)
inline

◆ residualCutcellFaceWrap()

void peclet::flow::residualCutcellFaceWrap ( CCField  r,
CCConst  x,
CCConst  b,
FPC  AC,
FPC  AFX,
FPC  AFY,
FPC  AFZ,
C3  e,
C3  n,
int  g 
)
inline

Definition at line 347 of file mac_cutcell_mg.hpp.

References AC, ccFor3(), ccWrapNbrs(), and cutcellResidualFaceCell().

Referenced by peclet::flow::CutcellMG::vcycleImpl().

◆ applyCutcellOpFaceWrap()

void peclet::flow::applyCutcellOpFaceWrap ( CCField  y,
CCConst  x,
FPC  AC,
FPC  AFX,
FPC  AFY,
FPC  AFZ,
C3  e,
C3  n,
int  g 
)
inline

Definition at line 360 of file mac_cutcell_mg.hpp.

References AC, ccFor3(), ccWrapNbrs(), and cutcellApplyFaceCell().

Referenced by peclet::flow::CutcellMG::matvecOverlap().

◆ applyCutcellOpExactWrap()

void peclet::flow::applyCutcellOpExactWrap ( CCField  y,
CCConst  x,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
C3  n,
int  g,
double  gfx,
double  gfy,
double  gfz 
)
inline

◆ restrictAvgCell()

template<class CV , class FV >
void peclet::flow::restrictAvgCell ( const CV &  coarse,
const FV &  fine,
C3  cext,
C3  fext,
int  gc,
int  gf,
C3  ratio,
int  icx,
int  icy,
int  icz 
)

◆ prolongAddCell()

template<class FV , class CV >
void peclet::flow::prolongAddCell ( const FV &  fine,
const CV &  coarse,
C3  fext,
C3  cext,
int  gf,
int  gc,
C3  ratio,
int  ifx,
int  ify,
int  ifz 
)

Definition at line 406 of file mac_cutcell_mg.hpp.

Referenced by prolongAdd().

◆ meanSubtractCell()

template<class FV , class AV >
void peclet::flow::meanSubtractCell ( const FV &  f,
const AV &  ac,
long  i,
double  mean 
)

Definition at line 435 of file mac_cutcell_mg.hpp.

References mean().

Referenced by peclet::flow::CutcellMG::removeMean().

◆ restrictAvg()

◆ restrictAvgZeroX()

void peclet::flow::restrictAvgZeroX ( CCField  coarse,
CCField  coarseX,
CCConst  fine,
C3  cext,
C3  fext,
int  gc,
int  gf,
C3  cinner,
C3  ratio 
)
inline

◆ prolongAdd()

void peclet::flow::prolongAdd ( CCField  fine,
CCConst  coarse,
C3  fext,
C3  cext,
int  gf,
int  gc,
C3  finner,
C3  ratio 
)
inline

◆ mgDebugLevel()

◆ mgDebugSolves()

int peclet::flow::mgDebugSolves ( )
inline

◆ ibmIsCut()

template<class Real >
bool peclet::flow::ibmIsCut ( Real  sc,
const Real  sn[6] 
)

Definition at line 46 of file mac_ibm.hpp.

Referenced by ibmCleanFluidMask().

◆ buildIbmOverlay()

template<int SCHEME>
int peclet::flow::buildIbmOverlay ( CCConst  sdf,
C3  ext,
int  g,
Off3  off,
int  bc_type,
const IbmOverlay &  ov,
Kokkos::View< int *, CCMem >  idMap,
Kokkos::View< int, CCMem >  counter,
CCConst  tx = CCConst(),
CCConst  ty = CCConst(),
CCConst  tz = CCConst(),
C3  nn = C3{0, 0, 0},
mreal  slipLambda = mreal(0),
int  comp = -1,
Kokkos::View< int, CCMem >  sandwichSkipped = Kokkos::View<int, CCMem>(),
mreal  hpx = mreal(1),
mreal  hpy = mreal(1),
mreal  hpz = mreal(1) 
)
inline

slipLambda (WO-V6b, in CELLS, 0 = the validated no-slip closure) + comp (which velocity component this overlay carries: 0/1/2, -1 = none) turn the tangential wall Dirichlet datum into a NAVIER condition u_t(wall) = lambda du_t/dn.

Per cut cell the unit normal comes from the central difference of the SAME seven SDF samples the closure uses (grad sdf points into the fluid); the component's TANGENTIAL weight is s = 1 - n_comp^2 (0 for the component parallel to the wall normal – that one stays a pure impermeability Dirichlet – 1 for a purely tangential one), and the slip length measured along axis a is s*lambda/|n_a|, because the wall distance along that axis is the normal distance divided by |n_a|. The closure then depends only on lam_a/theta_a = s*lambda/d, the physically meaningful ratio, so the |n_a| division is self-consistent rather than a fudge.

APPROXIMATION, stated because it is not visible from the call: the projector is taken DIAGONAL, u_t,comp ~ (1 - n_comp^2) u_comp; the cross terms -n_comp n_j u_j (j != comp) are dropped. They are EXACTLY zero for an axis-aligned wall (every gate scene), and O(n_c n_j) elsewhere; carrying them would couple the three segregated component solves. sandwichSkipped (optional) counts the axes where a one-cell fluid gap made the slip closure inapplicable and the no-slip one was kept.

PHASE 2 (anisotropic cells, doc/anisotropic_metric.md §6.4). NOTHING in ibmFillEntry reads a distance — theta, D, K, M, X, Nbc, R and D_rescale are all functions of the crossing fractions along an axis, which are invariant under any positive scaling of the SDF. The metric enters in exactly ONE place, the Navier slip length: the Robin condition along axis a reduces with d/dn = (1/(h_a |n_a|)) d/dxi_a, so the slip length measured in CELLS along that axis is the physical one divided by the physical cell size ‘h_a’AND by |n_a| of the PHYSICAL normal. The normal itself is the seven-sample gradient rescaled per axis and renormalised,n_a = (g_a/h_a')/|g/h'|(§6.1), ands = 1 - n_c^2uses that same n.hpenters in FLOAT and 1.0f` is exact (trap 9), so the isotropic path is bit-identical.

Definition at line 88 of file mac_ibm.hpp.

◆ ibmVolfrac()

void peclet::flow::ibmVolfrac ( CCField  theta,
CCConst  sdf,
C3  ext,
Off3  off,
bool  aniso = false,
double  hpx = 1.0,
double  hpy = 1.0,
double  hpz = 1.0,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

◆ ibmSolidMask()

void peclet::flow::ibmSolidMask ( CCField  mask,
CCConst  sdf,
C3  ext,
Off3  off 
)
inline

◆ ibmCleanFluidMask()

void peclet::flow::ibmCleanFluidMask ( CCField  m,
CCConst  sdf,
C3  ext,
Off3  off 
)
inline

◆ ibmRbgsStencilColor()

template<class MC >
void peclet::flow::ibmRbgsStencilColor ( CCField  x,
CCConst  b,
MC  AC,
MC  AW,
MC  AE,
MC  AS,
MC  AN,
MC  AB,
MC  AT,
CCConst  solidmask,
C3  ext,
C3  og,
int  g,
int  color 
)
inline

◆ ibmRbgsStencilColorDu()

template<class MC >
double peclet::flow::ibmRbgsStencilColorDu ( CCField  x,
CCConst  b,
MC  AC,
MC  AW,
MC  AE,
MC  AS,
MC  AN,
MC  AB,
MC  AT,
CCConst  solidmask,
C3  ext,
C3  og,
int  g,
int  color 
)
inline

◆ ibmRbgsStencilColorBox()

template<class MC >
void peclet::flow::ibmRbgsStencilColorBox ( CCField  x,
CCConst  b,
MC  AC,
MC  AW,
MC  AE,
MC  AS,
MC  AN,
MC  AB,
MC  AT,
CCConst  solidmask,
C3  ext,
C3  og,
int  color,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

◆ ibmRbgsStencilColorDuBox()

template<class MC >
double peclet::flow::ibmRbgsStencilColorDuBox ( CCField  x,
CCConst  b,
MC  AC,
MC  AW,
MC  AE,
MC  AS,
MC  AN,
MC  AB,
MC  AT,
CCConst  solidmask,
C3  ext,
C3  og,
int  color,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 446 of file mac_ibm.hpp.

References AC, peclet::flow::C3::x, and peclet::flow::C3::y.

Referenced by peclet::flow::Solver< Grid >::smoothComp().

◆ ibmRbgsSweep()

void peclet::flow::ibmRbgsSweep ( CCField  x,
CCConst  b,
MConst  AC,
MConst  AW,
MConst  AE,
MConst  AS,
MConst  AN,
MConst  AB,
MConst  AT,
CCConst  solidmask,
C3  ext,
C3  og,
int  g 
)
inline

Definition at line 484 of file mac_ibm.hpp.

References AC, and ibmRbgsStencilColor().

Referenced by main().

◆ mgPeriodicFill()

void peclet::flow::mgPeriodicFill ( SField  f,
I3  e,
int  N,
int  g 
)
inline

◆ cutcellBuildOpCell()

template<class OpV , class OV >
void peclet::flow::cutcellBuildOpCell ( const OpV &  AC,
const OpV &  AW,
const OpV &  AE,
const OpV &  AS,
const OpV &  AN,
const OpV &  AB,
const OpV &  AT,
const OV &  ox,
const OV &  oy,
const OV &  oz,
long  i,
long  sx,
long  sy,
long  sz,
double  gfx,
double  gfy,
double  gfz 
)

Definition at line 33 of file mac_pressure.hpp.

References AC.

Referenced by buildCutcellOp().

◆ cutcellSmoothCell()

template<class PV , class BV , class OpV >
void peclet::flow::cutcellSmoothCell ( const PV &  phi,
const BV &  b,
const OpV &  AC,
const OpV &  AW,
const OpV &  AE,
const OpV &  AS,
const OpV &  AN,
const OpV &  AB,
const OpV &  AT,
long  i,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm 
)

Definition at line 52 of file mac_pressure.hpp.

References AC.

Referenced by cutcellSmoothColor(), and cutcellSmoothColorBox().

◆ cutcellApplyCell()

template<class XV , class OpV >
double peclet::flow::cutcellApplyCell ( const XV &  x,
const OpV &  AC,
const OpV &  AW,
const OpV &  AE,
const OpV &  AS,
const OpV &  AN,
const OpV &  AB,
const OpV &  AT,
long  i,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm 
)

Definition at line 66 of file mac_pressure.hpp.

References AC.

Referenced by applyCutcellOp(), and applyCutcellOpBox().

◆ cutcellApplyExactCell()

template<class XV , class OV >
double peclet::flow::cutcellApplyExactCell ( const XV &  x,
const OV &  ox,
const OV &  oy,
const OV &  oz,
long  i,
long  sx,
long  sy,
long  sz,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm,
double  gfx,
double  gfy,
double  gfz 
)

◆ buildCutcellOp()

template<class OpV >
void peclet::flow::buildCutcellOp ( OpV  AC,
OpV  AW,
OpV  AE,
OpV  AS,
OpV  AN,
OpV  AB,
OpV  AT,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
int  g,
double  gfx,
double  gfy,
double  gfz 
)
inline

Definition at line 86 of file mac_pressure.hpp.

References AC, ccFor3(), and cutcellBuildOpCell().

Referenced by DistMG::init(), and main().

◆ cutcellBuildFaceOpCell()

template<class OpV , class OV >
void peclet::flow::cutcellBuildFaceOpCell ( const OpV &  AC,
const OpV &  AFX,
const OpV &  AFY,
const OpV &  AFZ,
const OV &  ox,
const OV &  oy,
const OV &  oz,
long  i,
long  sx,
long  sy,
long  sz,
double  gfx,
double  gfy,
double  gfz,
bool  diag 
)

Definition at line 119 of file mac_pressure.hpp.

References AC.

Referenced by buildCutcellOpFace().

◆ cutcellSmoothFaceCell()

template<class PV , class BV , class OpV >
void peclet::flow::cutcellSmoothFaceCell ( const PV &  phi,
const BV &  b,
const OpV &  AC,
const OpV &  AFX,
const OpV &  AFY,
const OpV &  AFZ,
long  i,
long  sx,
long  sy,
long  sz,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm 
)

◆ cutcellApplyFaceCell()

template<class XV , class OpV >
double peclet::flow::cutcellApplyFaceCell ( const XV &  x,
const OpV &  AC,
const OpV &  AFX,
const OpV &  AFY,
const OpV &  AFZ,
long  i,
long  sx,
long  sy,
long  sz,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm 
)

◆ cutcellResidualFaceCell()

template<class RV , class XV , class BV , class OpV >
void peclet::flow::cutcellResidualFaceCell ( const RV &  r,
const XV &  x,
const BV &  b,
const OpV &  AC,
const OpV &  AFX,
const OpV &  AFY,
const OpV &  AFZ,
long  i,
long  sx,
long  sy,
long  sz,
long  xp,
long  xm,
long  yp,
long  ym,
long  zp,
long  zm 
)

◆ buildCutcellOpFace()

template<class OpV >
void peclet::flow::buildCutcellOpFace ( OpV  AC,
OpV  AFX,
OpV  AFY,
OpV  AFZ,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
int  gb,
double  gfx,
double  gfy,
double  gfz 
)
inline

Definition at line 171 of file mac_pressure.hpp.

References AC, ccFor3(), and cutcellBuildFaceOpCell().

Referenced by peclet::flow::CutcellMG::setOpenness().

◆ cutcellSmoothColorFace()

template<class OpV >
void peclet::flow::cutcellSmoothColorFace ( CCField  phi,
CCConst  b,
OpV  AC,
OpV  AFX,
OpV  AFY,
OpV  AFZ,
C3  e,
C3  og,
int  g,
int  color 
)
inline

◆ cutcellSmoothColorBoxFace()

template<class OpV >
void peclet::flow::cutcellSmoothColorBoxFace ( CCField  phi,
CCConst  b,
OpV  AC,
OpV  AFX,
OpV  AFY,
OpV  AFZ,
C3  e,
C3  og,
int  color,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 224 of file mac_pressure.hpp.

References AC, cutcellSmoothFaceCell(), and hostRunSerial().

Referenced by peclet::flow::CutcellMG::smooth().

◆ applyCutcellOpFace()

template<class OpV >
void peclet::flow::applyCutcellOpFace ( CCField  y,
CCConst  x,
OpV  AC,
OpV  AFX,
OpV  AFY,
OpV  AFZ,
C3  e,
int  g 
)
inline

Definition at line 270 of file mac_pressure.hpp.

References AC, ccFor3(), and cutcellApplyFaceCell().

Referenced by peclet::flow::CutcellMG::matvecOverlap().

◆ applyCutcellOpBoxFace()

template<class OpV >
void peclet::flow::applyCutcellOpBoxFace ( CCField  y,
CCConst  x,
OpV  AC,
OpV  AFX,
OpV  AFY,
OpV  AFZ,
C3  e,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 282 of file mac_pressure.hpp.

References AC, ccFor3(), and cutcellApplyFaceCell().

Referenced by peclet::flow::CutcellMG::matvecOverlap().

◆ divergOpen()

◆ cutcellSmoothColor()

template<class OpV >
void peclet::flow::cutcellSmoothColor ( CCField  phi,
CCConst  b,
OpV  AC,
OpV  AW,
OpV  AE,
OpV  AS,
OpV  AN,
OpV  AB,
OpV  AT,
C3  e,
C3  og,
int  g,
int  color 
)
inline

◆ cutcellSmoothColorBox()

template<class OpV >
void peclet::flow::cutcellSmoothColorBox ( CCField  phi,
CCConst  b,
OpV  AC,
OpV  AW,
OpV  AE,
OpV  AS,
OpV  AN,
OpV  AB,
OpV  AT,
C3  e,
C3  og,
int  color,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 364 of file mac_pressure.hpp.

References AC, cutcellSmoothCell(), and hostRunSerial().

◆ applyCutcellOp()

template<class OpV >
void peclet::flow::applyCutcellOp ( CCField  y,
CCConst  x,
OpV  AC,
OpV  AW,
OpV  AE,
OpV  AS,
OpV  AN,
OpV  AB,
OpV  AT,
C3  e,
int  g 
)
inline

◆ applyCutcellOpBox()

template<class OpV >
void peclet::flow::applyCutcellOpBox ( CCField  y,
CCConst  x,
OpV  AC,
OpV  AW,
OpV  AE,
OpV  AS,
OpV  AN,
OpV  AB,
OpV  AT,
C3  e,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi 
)
inline

Definition at line 430 of file mac_pressure.hpp.

References AC, ccFor3(), and cutcellApplyCell().

◆ applyCutcellOpExact()

void peclet::flow::applyCutcellOpExact ( CCField  y,
CCConst  x,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
int  g,
double  gfx,
double  gfy,
double  gfz 
)
inline

Definition at line 469 of file mac_pressure.hpp.

References ccFor3(), and cutcellApplyExactCell().

Referenced by main(), and peclet::flow::CutcellMG::matvecOverlap().

◆ applyCutcellOpExactBox()

void peclet::flow::applyCutcellOpExactBox ( CCField  y,
CCConst  x,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  e,
C3  rlo,
C3  rhi,
C3  slo,
C3  shi,
double  gfx,
double  gfy,
double  gfz 
)
inline

Definition at line 485 of file mac_pressure.hpp.

References ccFor3(), and cutcellApplyExactCell().

Referenced by peclet::flow::CutcellMG::matvecOverlap().

◆ projectCorrect()

void peclet::flow::projectCorrect ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Definition at line 512 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectCorrectVelocities().

◆ projectCorrectVar()

void peclet::flow::projectCorrectVar ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
CCConst  rho,
double  rho0,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Definition at line 529 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectCorrectVelocities().

◆ buildRhoCoeff()

void peclet::flow::buildRhoCoeff ( CCField  cx,
CCField  cy,
CCField  cz,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  rho,
double  rho0,
C3  e,
int  g 
)
inline

Definition at line 548 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectBuildCoefficients().

◆ buildRhoCoeffHarm()

void peclet::flow::buildRhoCoeffHarm ( CCField  cx,
CCField  cy,
CCField  cz,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  rho,
double  rho0,
C3  e,
int  g 
)
inline

Definition at line 590 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectBuildCoefficients().

◆ buildRhoCoeffOutflowFace()

void peclet::flow::buildRhoCoeffOutflowFace ( CCField  ca,
CCConst  oa,
CCConst  rho,
double  rho0,
C3  e,
int  g,
int  a,
bool  harmonic 
)
inline

◆ projectCorrectVarHarm()

void peclet::flow::projectCorrectVarHarm ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
CCConst  rho,
double  rho0,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Definition at line 644 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectCorrectVelocities().

◆ divergOpenEps()

void peclet::flow::divergOpenEps ( CCConst  u,
CCConst  v,
CCConst  w,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  eps,
CCField  d,
C3  e,
int  g 
)
inline

◆ buildPorousCoeff()

void peclet::flow::buildPorousCoeff ( CCField  cx,
CCField  cy,
CCField  cz,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  eps,
C3  e,
int  g 
)
inline

Definition at line 693 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectBuildCoefficients().

◆ buildPorousCoeffDrag()

void peclet::flow::buildPorousCoeffDrag ( CCField  cx,
CCField  cy,
CCField  cz,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  eps,
CCConst  beta,
double  idt,
C3  e,
int  g 
)
inline

Definition at line 713 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectBuildCoefficients().

◆ buildPorousCoeffCons()

void peclet::flow::buildPorousCoeffCons ( CCField  cx,
CCField  cy,
CCField  cz,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  eps,
CCConst  beta,
bool  useBeta,
double  rhoidt,
C3  e,
int  g 
)
inline

Definition at line 735 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectBuildCoefficients().

◆ projectCorrectPorousCons()

void peclet::flow::projectCorrectPorousCons ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
CCConst  eps,
CCConst  beta,
bool  useBeta,
double  rhoidt,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Definition at line 754 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectCorrectVelocities().

◆ projectCorrectPorousDrag()

void peclet::flow::projectCorrectPorousDrag ( CCField  u,
CCField  v,
CCField  w,
CCConst  phi,
CCConst  beta,
double  idt,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Definition at line 775 of file mac_pressure.hpp.

References ccFor3().

Referenced by peclet::flow::Solver< Grid >::projectCorrectVelocities().

◆ innerToExt()

std::size_t peclet::flow::innerToExt ( long  c,
Ext3  ext,
int  ghost,
Ext3  inner 
)

Definition at line 39 of file mac_reductions.hpp.

References peclet::flow::Ext3::x, and peclet::flow::Ext3::y.

Referenced by localDot(), and localSumMax().

◆ localSumMax()

SumMax peclet::flow::localSumMax ( DConst  f,
Ext3  ext,
int  ghost,
Ext3  inner 
)
inline

Local sum and max|.| over the inner cells.

Definition at line 48 of file mac_reductions.hpp.

References innerToExt().

Referenced by main().

◆ localDot()

double peclet::flow::localDot ( DConst  a,
DConst  b,
Ext3  ext,
int  ghost,
Ext3  inner 
)
inline

Local inner product <a,b> over the inner cells.

Definition at line 67 of file mac_reductions.hpp.

References innerToExt().

Referenced by main().

◆ subtractAll()

void peclet::flow::subtractAll ( DField  f,
double  m 
)
inline

Subtract a constant from EVERY cell of the extended block (the mean-removal scatter).

Definition at line 83 of file mac_reductions.hpp.

Referenced by main().

◆ L3()

long peclet::flow::L3 ( int  x,
int  y,
int  z,
I3  e 
)

Definition at line 30 of file mac_stencils.hpp.

References L3().

Referenced by peclet::flow::vof::WyAdvector::applySweepCut(), peclet::flow::vof::WyAdvector::applySweepImpl(), peclet::flow::vof::VofMcArea::areaPass(), peclet::flow::vof::VofBlockSet::bubbleBox(), peclet::flow::vof::VofBlockSet::buildCsfForce(), peclet::flow::vof::buildOutsideMask(), peclet::flow::vof::MomentumConsistentAdvector::buildShiftedColour(), peclet::flow::vof::MomentumConsistentAdvector::buildShiftedColourCut(), peclet::flow::vof::WyAdvector::buildWettingNormals(), peclet::flow::vof::VofCurvature::census(), peclet::flow::vof::VofInterfaceArea::census(), peclet::flow::vof::VofDynamicWetting::census(), peclet::flow::vof::VofMcArea::census(), peclet::flow::vof::clampFill(), peclet::flow::vof::WyAdvector::classifyGeometry(), peclet::flow::vof::WyAdvector::clipCutCellsImpl(), peclet::flow::vof::VofCurvature::clipPass(), peclet::flow::vof::VofBlockSet::clipToSeed(), peclet::flow::vof::VofBlockExchange::combineBlockIntoPatch(), peclet::flow::vof::VofBlockExchange::combineBufIntoPatch(), peclet::flow::vof::VofCurvature::compact(), peclet::flow::vof::WyAdvector::computeFluxesCut(), peclet::flow::vof::WyAdvector::computeFluxesImpl(), peclet::flow::MgPoisson::computeResidual(), peclet::flow::vof::copyAdvectedVelocity(), peclet::flow::vof::copyFaceVelocity(), peclet::flow::vof::WyAdvector::cutDiagnostics(), peclet::flow::vof::VofBlockSet::debrisPassBatchImpl(), peclet::flow::vof::WyAdvector::diagnostics(), peclet::flow::vof::MomentumConsistentAdvector::diagnostics(), diffResidualT(), diffSmoothColorDuT(), diffSmoothColorT(), divergence(), peclet::flow::vof::VofEnergyAdvector::energyUpdate(), peclet::flow::vof::VofEnergyAdvector::extrema(), peclet::flow::vof::VofCurvature::fallbackPass(), peclet::flow::vof::VofInterfaceArea::fallbackPass(), peclet::flow::vof::VofBlockSet::fillBlockGhosts(), peclet::flow::vof::MomentumConsistentAdvector::freezeShiftedState(), peclet::flow::vof::VofBlockExchange::gatherLocalLaunch(), peclet::flow::Solver< Grid >::harvestVofBlockUnion(), peclet::flow::vof::VofCurvature::heightPass(), peclet::flow::vof::VofInterfaceArea::heightPass(), peclet::flow::vof::VofDynamicWetting::impose(), peclet::flow::vof::WyAdvector::index(), peclet::flow::vof::VofBlockSet::innerSum(), peclet::flow::vof::VofBlockSet::interfaceArea(), L3(), peclet::flow::MgPoisson::maxAbsInner(), peclet::flow::vof::WyAdvector::maxCourant(), peclet::flow::vof::WyAdvector::maxCourantInterface(), peclet::flow::vof::WyAdvector::maxCourantInterfaceCut(), peclet::flow::vof::WyAdvector::maxDiscreteDivergence(), peclet::flow::vof::VofDynamicWetting::measure(), peclet::flow::vof::VofBlockSet::measure(), peclet::flow::vof::MomentumConsistentAdvector::momentumFluxes(), peclet::flow::vof::MomentumConsistentAdvector::momentumFluxesCut(), peclet::flow::vof::MomentumConsistentAdvector::momentumUpdate(), peclet::flow::vof::MomentumConsistentAdvector::momentumUpdateCut(), peclet::flow::vof::VofBlockExchange::movePiece(), peclet::flow::vof::VofBlockSet::outOfBoxSum(), peclet::flow::vof::VofBlockExchange::packFromBlock(), peclet::flow::vof::VofBlockExchange::packFromPatch(), peclet::flow::vof::VofMcArea::planePass(), poisSmoothColor(), peclet::flow::vof::VofBlockSet::recentreTo(), peclet::flow::vof::WyAdvector::reconstructImpl(), peclet::flow::vof::VofCurvature::reconstructPlanes(), peclet::flow::vof::VofInterfaceArea::reconstructPlanes(), peclet::flow::MgPoisson::removeMean(), peclet::flow::vof::VofBlockExchange::scatterColourMaxHost(), peclet::flow::vof::VofBlockSet::seedSphere(), peclet::flow::MgPoisson::smoothColor(), peclet::flow::vof::WyAdvector::solidBandFillPass(), peclet::flow::vof::WyAdvector::solidBandFillPassWetting(), peclet::flow::vof::VofBlockExchange::unpackToBlock(), peclet::flow::Solver< Grid >::updateVofBlockOverlap(), peclet::flow::vof::vofBatchCfl(), peclet::flow::vof::vofBatchClampCell(), peclet::flow::vof::vofBatchFlux(), peclet::flow::vof::vofBatchGhostZero(), peclet::flow::vof::vofBatchPeriodic(), peclet::flow::vof::vofBatchStats(), peclet::flow::vof::vofBatchUpdate(), peclet::flow::vof::vofBatchWorklist(), peclet::flow::vof::vofCurvCell(), peclet::flow::vof::vofCurvRow(), peclet::flow::vof::WyAdvector::wettingCensusGhost(), and peclet::flow::vof::VofBlockExchange::zeroPatchInner().

◆ diffSmoothColorT()

template<bool Aniso>
void peclet::flow::diffSmoothColorT ( SField  c,
SConst  b,
I3  e,
I3  og,
int  g,
double  bx,
double  by,
double  bz,
double  Ac,
int  color,
SConst  dcorr 
)
inline

Definition at line 46 of file mac_stencils.hpp.

References L3().

◆ diffSmoothColor() [1/2]

void peclet::flow::diffSmoothColor ( SField  c,
SConst  b,
I3  e,
I3  og,
int  g,
double  bx,
double  by,
double  bz,
double  Ac,
int  color,
SConst  dcorr,
bool  aniso 
)
inline

◆ diffSmoothColor() [2/2]

void peclet::flow::diffSmoothColor ( SField  c,
SConst  b,
I3  e,
I3  og,
int  g,
double  beta,
double  Ac,
int  color,
SConst  dcorr 
)
inline

Definition at line 105 of file mac_stencils.hpp.

References diffSmoothColor().

◆ diffResidualT()

template<bool Aniso>
void peclet::flow::diffResidualT ( SField  r,
SConst  c,
SConst  b,
I3  e,
int  g,
double  bx,
double  by,
double  bz,
double  Ac,
SConst  dcorr 
)
inline

Definition at line 114 of file mac_stencils.hpp.

References L3().

◆ diffResidual() [1/2]

void peclet::flow::diffResidual ( SField  r,
SConst  c,
SConst  b,
I3  e,
int  g,
double  bx,
double  by,
double  bz,
double  Ac,
SConst  dcorr,
bool  aniso 
)
inline

Definition at line 136 of file mac_stencils.hpp.

Referenced by peclet::flow::Solver< Grid >::constCoeffResidual().

◆ diffResidual() [2/2]

void peclet::flow::diffResidual ( SField  r,
SConst  c,
SConst  b,
I3  e,
int  g,
double  beta,
double  Ac,
SConst  dcorr 
)
inline

Definition at line 145 of file mac_stencils.hpp.

◆ diffSmoothColorDuT()

template<bool Aniso>
double peclet::flow::diffSmoothColorDuT ( SField  c,
SConst  b,
I3  e,
I3  og,
int  g,
double  bx,
double  by,
double  bz,
double  Ac,
int  color,
SConst  dcorr 
)
inline

Definition at line 153 of file mac_stencils.hpp.

References L3().

◆ diffSmoothColorDu() [1/2]

double peclet::flow::diffSmoothColorDu ( SField  c,
SConst  b,
I3  e,
I3  og,
int  g,
double  bx,
double  by,
double  bz,
double  Ac,
int  color,
SConst  dcorr,
bool  aniso 
)
inline

Definition at line 215 of file mac_stencils.hpp.

Referenced by peclet::flow::Solver< Grid >::smoothComp().

◆ diffSmoothColorDu() [2/2]

double peclet::flow::diffSmoothColorDu ( SField  c,
SConst  b,
I3  e,
I3  og,
int  g,
double  beta,
double  Ac,
int  color,
SConst  dcorr 
)
inline

Definition at line 222 of file mac_stencils.hpp.

◆ poisSmoothColor()

void peclet::flow::poisSmoothColor ( SField  phi,
SConst  d,
I3  e,
I3  og,
int  g,
int  color 
)
inline

Definition at line 228 of file mac_stencils.hpp.

References L3().

Referenced by poisSweep().

◆ divergence()

void peclet::flow::divergence ( SConst  u,
SConst  v,
SConst  w,
SField  d,
I3  e,
int  g 
)
inline

Definition at line 244 of file mac_stencils.hpp.

References L3().

Referenced by main(), peclet::flow::FlowReference::maxDivU(), and peclet::flow::FlowReference::step().

◆ poisSweep()

void peclet::flow::poisSweep ( SField  phi,
SConst  d,
I3  e,
I3  og,
int  g 
)
inline

Definition at line 256 of file mac_stencils.hpp.

References poisSmoothColor().

Referenced by main(), and peclet::flow::FlowReference::step().

◆ restrict_()

void peclet::flow::restrict_ ( TField  coarse,
TConst  fine,
T3  cext,
T3  fext,
int  g,
T3  cinner,
T3  ratio 
)
inline

Definition at line 28 of file mac_transfer.hpp.

Referenced by main(), and peclet::flow::MgPoisson::vcycle().

◆ trilerp()

double peclet::flow::trilerp ( TConst  c,
double  x,
double  y,
double  z,
T3  cext 
)

Definition at line 50 of file mac_transfer.hpp.

References F.

Referenced by prolong().

◆ prolong()

void peclet::flow::prolong ( TField  fine,
TConst  coarse,
T3  fext,
T3  cext,
int  g,
T3  finner,
T3  ratio 
)
inline

Definition at line 69 of file mac_transfer.hpp.

References trilerp().

Referenced by main(), and peclet::flow::MgPoisson::vcycle().

◆ correct()

void peclet::flow::correct ( TField  u,
TField  v,
TField  w,
TConst  phi,
T3  e,
int  g 
)
inline

Definition at line 85 of file mac_transfer.hpp.

Referenced by main(), and peclet::flow::FlowReference::step().

◆ residualVarPin()

void peclet::flow::residualVarPin ( CCField  r,
CCConst  x,
CCConst  b,
FPC  AC,
FPC  AW,
FPC  AE,
FPC  AS,
FPC  AN,
FPC  AB,
FPC  AT,
CCConst  pin,
C3  e,
int  g 
)
inline

◆ prolongMasked()

void peclet::flow::prolongMasked ( CCField  fine,
CCConst  coarse,
CCConst  mask,
C3  fext,
C3  cext,
int  g,
C3  finner,
C3  ratio,
double  eps 
)
inline

Definition at line 59 of file mac_velocity_mg.hpp.

Referenced by peclet::flow::VelocityMG::vcycle().

◆ buildVelocityStaircase()

void peclet::flow::buildVelocityStaircase ( FPV  AC,
FPV  AW,
FPV  AE,
FPV  AS,
FPV  AN,
FPV  AB,
FPV  AT,
CCConst  theta,
C3  e,
int  g,
double  bx,
double  by,
double  bz,
double  thresh,
double  idiag 
)
inline

Definition at line 92 of file mac_velocity_mg.hpp.

References AC.

Referenced by peclet::flow::VelocityMG::setStaircase().

◆ pinSolidRows()

void peclet::flow::pinSolidRows ( FPV  AC,
FPV  AW,
FPV  AE,
FPV  AS,
FPV  AN,
FPV  AB,
FPV  AT,
CCConst  theta,
C3  e,
int  g,
double  thresh 
)
inline

Definition at line 119 of file mac_velocity_mg.hpp.

References AC.

Referenced by peclet::flow::VelocityMG::setStaircaseBc().

◆ buildAdvCoarse()

void peclet::flow::buildAdvCoarse ( FPV  AC,
FPV  AW,
FPV  AE,
FPV  AS,
FPV  AN,
FPV  AB,
FPV  AT,
CCConst  U,
CCConst  V,
CCConst  W,
int  comp,
C3  e,
int  g,
double  bx,
double  by,
double  bz,
double  fouw,
double  sx,
double  sy,
double  sz,
double  idiag 
)
inline

◆ buildConstAniso()

void peclet::flow::buildConstAniso ( FPV  AC,
FPV  AW,
FPV  AE,
FPV  AS,
FPV  AN,
FPV  AB,
FPV  AT,
C3  e,
double  bx,
double  by,
double  bz,
double  idiag 
)
inline

Definition at line 166 of file mac_velocity_mg.hpp.

References AC.

Referenced by main(), and peclet::flow::VelocityMG::setDomainBcOp().

◆ boundaryFold()

void peclet::flow::boundaryFold ( FPV  AC,
C3  e,
int  g,
int  a,
int  s,
double  beta 
)
inline

◆ fillBcGhost()

void peclet::flow::fillBcGhost ( CCField  x,
C3  e,
int  g,
int  a,
int  s,
int  dirichlet 
)
inline

◆ zeroPlane()

◆ thresholdMask()

void peclet::flow::thresholdMask ( CCField  m,
CCConst  theta,
double  thresh 
)
inline

Definition at line 243 of file mac_velocity_mg.hpp.

Referenced by peclet::flow::VelocityMG::setStaircase().

◆ maxAbsInner()

◆ maxAbsDiffInner()

double peclet::flow::maxAbsDiffInner ( CCConst  a,
CCConst  b,
C3  e,
int  g 
)
inline

◆ mulMask()

void peclet::flow::mulMask ( CCField  r,
CCConst  m 
)
inline

Definition at line 285 of file mac_velocity_mg.hpp.

Referenced by peclet::flow::VelocityMG::vcycle().

◆ bottomShift()

◆ bottomChoosePlanes()

BottomPlanes peclet::flow::bottomChoosePlanes ( C3  inner,
const int  bc[6] 
)
inline

Definition at line 87 of file mg_bottom_direct.hpp.

References kBottomMaxPlane.

Referenced by peclet::flow::CutcellMG::buildBottomStore().

◆ applyClosure()

void peclet::flow::applyClosure ( const Closure &  cl,
C3  e,
int  g 
)
inline

◆ applyClosureFaceGhost()

void peclet::flow::applyClosureFaceGhost ( const Closure &  cl,
C3  e,
int  g,
int  a,
int  side 
)
inline

◆ residentKrylov()

template<class State >
void peclet::flow::residentKrylov ( State &  st,
ScalarKrylovOps &  ops 
)
inline

Arm ops for the resident pass with the persistent slots of st (ks, pk, allocated once).

Definition at line 165 of file scalar_krylov.hpp.

References peclet::flow::skr::kNSlots.

Referenced by peclet::flow::Solver< Grid >::scalarCutAssembleSolve().

◆ scalarBiCGStab()

template<class Ops >
ScalarKrylovResult peclet::flow::scalarBiCGStab ( Ops &  ops,
const ScalarVec &  b,
const ScalarVec &  x,
const ScalarVec &  r,
const ScalarVec &  rh,
const ScalarVec &  p,
const ScalarVec &  v,
const ScalarVec &  t,
const ScalarVec &  z,
const ScalarVec &  z2,
int  maxit,
double  rtol,
bool  singular 
)

BiCGStab on A x = b.

ops provides void matvec(const ScalarVec& y, const ScalarVec& x) y = A x (exchanges x's ghosts itself) void precond(const ScalarVec& z, const ScalarVec& r) z = M^-1 r (a fixed linear operator) double dot(const ScalarVec& a, const ScalarVec& b) global inner-cell sum, both phases void dot2(a, b, c, double& ab, double& cc) fused (a.b, c.c), one reduction double maxabs(const ScalarVec& a) global inner-cell max |a| void removeMean(const ScalarVec& a) singular case only: the unknown-row mean C3 e; int g; the block Scratch: r, rh, p, v, t, z, z2. x holds the initial guess and the result.

Definition at line 331 of file scalar_krylov.hpp.

References peclet::flow::skr::axpy(), peclet::flow::skr::aypx(), peclet::flow::skr::copy(), peclet::flow::skr::kRhoNew, peclet::flow::skr::kRhv, peclet::flow::skr::kRn, peclet::flow::skr::kRnS, peclet::flow::skr::kStop, peclet::flow::skr::kTr, peclet::flow::skr::kTt, peclet::flow::skr::residentAlpha(), peclet::flow::skr::residentBeta(), peclet::flow::skr::residentInit(), peclet::flow::skr::residentOmega(), peclet::flow::skr::residentP(), peclet::flow::skr::residentS(), peclet::flow::skr::residentXHalf(), peclet::flow::skr::residentXR(), peclet::flow::skr::residualFrom(), peclet::flow::skr::slot(), and peclet::flow::skr::zero().

Referenced by peclet::flow::Solver< Grid >::scalarCutAssembleSolve().

◆ scalarBuildDiffusionVarK()

void peclet::flow::scalarBuildDiffusionVarK ( CCField  AC,
CCField  AW,
CCField  AE,
CCField  AS,
CCField  AN,
CCField  AB,
CCField  AT,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  kc,
CCConst  rcp,
CCConst  mask,
double  idt,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

◆ scalarBuildRhsHeat()

void peclet::flow::scalarBuildRhsHeat ( CCField  b,
CCConst  cOld,
CCConst  rcp,
double  idt,
C3  e,
int  g 
)
inline

Definition at line 133 of file scalar_transport.hpp.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarMaskStencil()

void peclet::flow::scalarMaskStencil ( CCField  AC,
CCField  AW,
CCField  AE,
CCField  AS,
CCField  AN,
CCField  AB,
CCField  AT,
CCConst  mask,
C3  e,
int  g 
)
inline

Definition at line 147 of file scalar_transport.hpp.

References AC.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarMaskRhs()

void peclet::flow::scalarMaskRhs ( CCField  b,
CCField  c,
CCConst  mask,
CCConst  val,
C3  e,
int  g 
)
inline

Definition at line 169 of file scalar_transport.hpp.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarMaskGfm()

void peclet::flow::scalarMaskGfm ( CCField  AC,
CCField  AW,
CCField  AE,
CCField  AS,
CCField  AN,
CCField  AB,
CCField  AT,
CCField  gfmB,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  mask,
CCConst  tgam,
CCConst  gnx,
CCConst  gny,
CCConst  gnz,
CCConst  gphi,
CCConst  kc,
double  Dconst,
bool  useK,
double  thMin,
double  thMax,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0,
vof::VofMetric  gm = vof::VofMetric{} 
)
inline

Definition at line 199 of file scalar_transport.hpp.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarMaskGfm2()

void peclet::flow::scalarMaskGfm2 ( CCField  AC,
CCField  AW,
CCField  AE,
CCField  AS,
CCField  AN,
CCField  AB,
CCField  AT,
CCField  gfmB,
CCConst  ox,
CCConst  oy,
CCConst  oz,
CCConst  mask,
CCConst  tgam,
CCConst  gnx,
CCConst  gny,
CCConst  gnz,
CCConst  gphi,
CCConst  kap,
CCConst  kc,
double  Dconst,
bool  useK,
double  thMin,
double  thMax,
int  order,
bool  useKappa,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0,
vof::VofMetric  gm = vof::VofMetric{} 
)
inline

Definition at line 265 of file scalar_transport.hpp.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarAddGfmRhs()

void peclet::flow::scalarAddGfmRhs ( CCField  b,
CCConst  gfmB,
CCConst  mask,
C3  e,
int  g 
)
inline

Definition at line 323 of file scalar_transport.hpp.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarBuildDiffusionOpen()

void peclet::flow::scalarBuildDiffusionOpen ( CCField  AC,
CCField  AW,
CCField  AE,
CCField  AS,
CCField  AN,
CCField  AB,
CCField  AT,
CCConst  ox,
CCConst  oy,
CCConst  oz,
double  D,
double  idt,
C3  e,
int  g,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Definition at line 343 of file scalar_transport.hpp.

References AC.

Referenced by peclet::flow::Solver< Grid >::advanceScalars().

◆ scalarBuildRhs()

void peclet::flow::scalarBuildRhs ( CCField  b,
CCConst  cOld,
CCConst  U,
CCConst  V,
CCConst  W,
CCConst  ox,
CCConst  oy,
CCConst  oz,
double  idt,
int  scheme,
C3  e,
int  g 
)
inline

◆ starMakeOverlay()

StarOverlay peclet::flow::starMakeOverlay ( long  n)
inline

◆ starAval()

double peclet::flow::starAval ( const StarOverlay &  ov,
long  k,
bool  exact 
)

One stored aperture, at the precision the gate selects.

Gate OFF returns the float-rounded value the overlay used to store, so the default path is bitwise unchanged by the widening; gate ON returns the exact double the openness actually carries.

Definition at line 55 of file star_elimination.hpp.

References peclet::flow::StarOverlay::a.

Referenced by starApplyDelta(), and starCorrectFaces().

◆ starWrap()

int peclet::flow::starWrap ( int  v,
int  n 
)

Definition at line 62 of file star_elimination.hpp.

Referenced by starApplyDelta(), and starCorrectFaces().

◆ buildStarOverlay()

int peclet::flow::buildStarOverlay ( CCConst  sdf,
CCConst  ox,
CCConst  oy,
CCConst  oz,
C3  ext,
int  g,
C3  nn,
const StarOverlay &  ov,
Kokkos::View< int, CCMem >  counter 
)
inline

Count + fill the star overlay from the cell-centered sdf and the ORIGINAL (unfiltered) apertures on the extended block (ext, ghost width g); nn = inner extents.

Single-rank periodic (neighbour access wraps over the inner grid). Pass ov with capacity >= the count of a prior sizing call (fill = ov.cell.extent(0) > 0). Returns the row count via the host copy of counter.

Definition at line 72 of file star_elimination.hpp.

References peclet::flow::StarOverlay::a, peclet::flow::StarOverlay::cell, peclet::flow::C3::x, and peclet::flow::C3::y.

Referenced by peclet::flow::Solver< Grid >::setSolidStarOverlay().

◆ starApplyDelta()

void peclet::flow::starApplyDelta ( CCField  y,
CCConst  x,
const StarOverlay &  ov,
int  nOv,
C3  nn,
C3  extY,
int  gY,
C3  extX,
int  gX,
bool  exact 
)
inline

y += S_star x over the inner cells of the (extY, gY) block, x read from the (extX, gX) block, both periodic via inner-grid wrap.

Sign convention of applyCutcellOp (positive-definite): row i gains a_si (x_i - phibar_s). Atomic adds (several stars can touch one row).

Definition at line 114 of file star_elimination.hpp.

References peclet::flow::StarOverlay::cell, starAval(), and starWrap().

Referenced by peclet::flow::CutcellMG::solvePCGResident().

◆ starCorrectFaces()

void peclet::flow::starCorrectFaces ( CCField  uf,
CCField  vf,
CCField  wf,
CCConst  phi,
const StarOverlay &  ov,
int  nOv,
C3  nn,
C3  ext,
int  g,
C3  extP,
int  gP,
bool  exact,
double  wx = 1.0,
double  wy = 1.0,
double  wz = 1.0 
)
inline

Fix the face correction at fluid|solid faces: projectCorrect applied -(phi_hi - phi_lo) with the solid side's (decoupled) phi = 0; the mode-B correction wants the solid value phibar_s.

Difference per face: +phibar_s when s is the LOW cell, -phibar_s when s is the HIGH cell. Each such face has exactly one solid side (both-solid faces carry no constraint), so no atomics. phi is read on the (extP, gP) block; the face fields live on the (ext, g) block with the o(i)-is-low-face convention (face k=+side of s == low face of the + neighbour).

PHASE 2 (anisotropic cells, doc/anisotropic_metric.md §3): this is a FIX-UP of what projectCorrect applied, and projectCorrect now applies -w_a (phi_hi - phi_lo) per axis – so the difference this kernel adds back carries the SAME per-axis weight w_a of the face's own axis, applied outside the existing expression. w = (1,1,1) isotropic (exact).

Definition at line 181 of file star_elimination.hpp.

References peclet::flow::StarOverlay::cell, starAval(), starWrap(), peclet::flow::C3::x, and peclet::flow::C3::y.

Referenced by peclet::flow::Solver< Grid >::projectCorrectVelocities().

Variable Documentation

◆ kVofMomBlocksMsg

constexpr const char* peclet::flow::kVofMomBlocksMsg
inlineconstexpr
Initial value:
=
"enable_vof_momentum and enable_vof_blocks* are not composable: momentum-consistent transport "
"advects rho*u with the geometric fluxes of the ONE structured colour field (at the head of "
"step()) and skips the colour stage that advects the block markers, so the markers would never "
"move and the momentum fluxes would not be theirs. Use the structured colour field with "
"enable_vof_momentum, or the block container without it."

enable_vof_momentum x enable_vof_blocks*: refused in EITHER call order.

Momentum consistency advects rho^c u with the fluxes of the ONE structured colour field (vofAdv_) at the head of step() and then skips advectVof() – which is the only slot that advects the block markers. The combination would leave every marker frozen while the momentum rode the fluxes of a union field that is not the markers' own.

Definition at line 19 of file flow_ibm_vof.hpp.

Referenced by peclet::flow::Solver< Grid >::enableVofMomentum(), and peclet::flow::Solver< Grid >::prepareVofBlocks().

◆ kHostSerialCellCutoff

constexpr long peclet::flow::kHostSerialCellCutoff = 8192L
inlineconstexpr

Definition at line 283 of file mac_cutcell.hpp.

Referenced by hostRunSerial().

◆ kBottomMaxCells

constexpr long peclet::flow::kBottomMaxCells = 8192
inlineconstexpr

◆ kBottomTau

constexpr double peclet::flow::kBottomTau = 1e-5
inlineconstexpr

◆ kBottomMaxComponents

constexpr int peclet::flow::kBottomMaxComponents = 64
inlineconstexpr

◆ kBottomCap

constexpr int peclet::flow::kBottomCap = 100
inlineconstexpr

◆ kBottomHostTeam

constexpr int peclet::flow::kBottomHostTeam = 8
inlineconstexpr

Definition at line 492 of file mac_cutcell_mg.hpp.

◆ kBottomHostFactorTeam

constexpr int peclet::flow::kBottomHostFactorTeam = 2
inlineconstexpr

Definition at line 498 of file mac_cutcell_mg.hpp.

Referenced by peclet::flow::CutcellMG::launchDirectFactor().

◆ kBottomMaxPlane

◆ kBottomTile

◆ kBottomPivotTol

◆ kBottomAttempts