flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
Loading...
Searching...
No Matches
mac_pressure.hpp File Reference

flow — portable (Kokkos) cut-cell pressure operator + Chorin projection. More...

#include <Kokkos_Core.hpp>
#include <type_traits>
#include "mac_cutcell.hpp"
#include "policy.hpp"

Go to the source code of this file.

Namespaces

namespace  peclet
 
namespace  peclet::flow
 

Functions

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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
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)
 
template<class OpV >
void peclet::flow::applyCutcellOpFace (CCField y, CCConst x, OpV AC, OpV AFX, OpV AFY, OpV AFZ, C3 e, int g)
 
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)
 
void peclet::flow::divergOpen (CCConst u, CCConst v, CCConst w, CCConst ox, CCConst oy, CCConst oz, CCField d, C3 e, int g)
 
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)
 
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)
 
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)
 
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)
 
void peclet::flow::applyCutcellOpExact (CCField y, CCConst x, CCConst ox, CCConst oy, CCConst oz, C3 e, int g, double gfx, double gfy, double gfz)
 
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)
 
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)
 
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)
 
void peclet::flow::buildRhoCoeff (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst rho, double rho0, C3 e, int g)
 
void peclet::flow::buildRhoCoeffHarm (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst rho, double rho0, C3 e, int g)
 
void peclet::flow::buildRhoCoeffOutflowFace (CCField ca, CCConst oa, CCConst rho, double rho0, C3 e, int g, int a, bool harmonic)
 
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)
 
void peclet::flow::divergOpenEps (CCConst u, CCConst v, CCConst w, CCConst ox, CCConst oy, CCConst oz, CCConst eps, CCField d, C3 e, int g)
 
void peclet::flow::buildPorousCoeff (CCField cx, CCField cy, CCField cz, CCConst ox, CCConst oy, CCConst oz, CCConst eps, C3 e, int g)
 
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)
 
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)
 
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)
 
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)
 

Detailed Description

flow — portable (Kokkos) cut-cell pressure operator + Chorin projection.

Kokkos port of the variable-coefficient pressure machinery (mg_build_op_k / mg_smooth_var_k from mac_multigrid.cuh, diverg_open_k / correct_k from distributed_ns.cuh): the open-face-weighted Poisson operator A = -div(open grad) built from the staggered face openness, its red-black Gauss-Seidel smoother (solid cells AC~0 decoupled), the open-weighted flux divergence, and the staggered gradient correction. gf = 1/h^2 per axis (1 in grid units). Runs on any Kokkos backend.

Definition in file mac_pressure.hpp.