|
| template<typename ScalarT > |
| ScalarT | terra::fv::hex::operators::compute_dt_stable (const grid::shell::DistributedDomain &domain, const linalg::VectorQ1Vec< ScalarT, 3 > &vel, const grid::Grid4DDataVec< ScalarT, 3 > &cell_centers, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const ScalarT diffusivity=ScalarT(0)) |
| | Compute the largest explicit time step that keeps the FCT low-order predictor stable.
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::fct_predictor (const grid::shell::DistributedDomain &domain, const linalg::VectorFVScalar< ScalarT > &T_old, const linalg::VectorQ1Vec< ScalarT, 3 > &vel, const grid::Grid4DDataVec< ScalarT, 3 > &cell_centers, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const ScalarT dt, FVFCTBuffers< ScalarT > &bufs, const ScalarT diffusivity=ScalarT(0), const grid::Grid4DDataScalar< ScalarT > &source={}, const bool subtract_divergence=true) |
| | Stage 1: low-order predictor + antidiffusive flux computation.
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::fct_limiter (const grid::shell::DistributedDomain &domain, FVFCTBuffers< ScalarT > &bufs) |
| | Stage 2: compute Zalesak \(R^+\)/ \(R^-\) correction factors.
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::fct_correction (const grid::shell::DistributedDomain &domain, linalg::VectorFVScalar< ScalarT > &T_new, FVFCTBuffers< ScalarT > &bufs) |
| | Stage 3: apply the Zalesak-limited antidiffusive correction.
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::fct_explicit_step (const grid::shell::DistributedDomain &domain, linalg::VectorFVScalar< ScalarT > &T, const linalg::VectorQ1Vec< ScalarT, 3 > &vel, const grid::Grid4DDataVec< ScalarT, 3 > &cell_centers, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const ScalarT dt, FVFCTBuffers< ScalarT > &bufs, const ScalarT diffusivity=ScalarT(0), const grid::Grid4DDataScalar< ScalarT > &source={}, const bool subtract_divergence=true, const grid::Grid4DDataScalar< grid::shell::ShellBoundaryFlag > &boundary_mask={}, const DirichletBCs< ScalarT > &bcs={}) |
| | One complete explicit FCT advection–diffusion timestep.
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::upwind_explicit_step (const grid::shell::DistributedDomain &domain, linalg::VectorFVScalar< ScalarT > &T, const linalg::VectorQ1Vec< ScalarT, 3 > &vel, const grid::Grid4DDataVec< ScalarT, 3 > &cell_centers, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const ScalarT dt, FVFCTBuffers< ScalarT > &bufs, const ScalarT diffusivity=ScalarT(0), const grid::Grid4DDataScalar< ScalarT > &source={}, const bool subtract_divergence=true) |
| | One explicit first-order upwind advection–diffusion timestep (no FCT correction).
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::fct_antidiff (const grid::shell::DistributedDomain &domain, const linalg::VectorFVScalar< ScalarT > &T_old, const linalg::VectorQ1Vec< ScalarT, 3 > &vel, const grid::Grid4DDataVec< ScalarT, 3 > &cell_centers, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const ScalarT dt, FVFCTBuffers< ScalarT > &bufs) |
| | Computes pre-scaled antidiffusive fluxes \(\tilde{f}_{ij}\) from \(T^n\) (semi-implicit FCT stage 1).
|
| |
| template<typename ScalarT > |
| void | terra::fv::hex::operators::fct_semiimplicit_step (const grid::shell::DistributedDomain &domain, linalg::VectorFVScalar< ScalarT > &T, const linalg::VectorFVScalar< ScalarT > &T_L, const linalg::VectorQ1Vec< ScalarT, 3 > &vel, const grid::Grid4DDataVec< ScalarT, 3 > &cell_centers, const grid::Grid3DDataVec< ScalarT, 3 > &grid, const grid::Grid2DDataScalar< ScalarT > &radii, const ScalarT dt, FVFCTBuffers< ScalarT > &bufs) |
| | One semi-implicit FCT advection–diffusion timestep.
|
| |