Loading...
Searching...
No Matches
terra::fv::hex::operators::FCTCorrectionKernel< ScalarT > Struct Template Reference

Kokkos kernel that applies the Zalesak-limited antidiffusive correction to \(T^L\). More...

#include <fct_advection_diffusion.hpp>

Public Types

using GH = fct_detail::GeometryHelper< ScalarT >
 

Public Member Functions

void operator() (const int id, const int x, const int y, const int r) const
 

Public Attributes

grid::Grid4DDataScalar< ScalarT > T_L_
 \(T^L\): low-order predictor.
 
grid::Grid5DDataScalar< ScalarT > antidiff_
 \(\tilde{f}_{ij}\): pre-scaled antidiff fluxes.
 
grid::Grid4DDataScalar< ScalarT > R_plus_
 \(R^+\) correction factor (ghost layers filled).
 
grid::Grid4DDataScalar< ScalarT > R_minus_
 \(R^-\) correction factor (ghost layers filled).
 
grid::Grid4DDataScalar< ScalarT > T_new_
 Output: \(T^{n+1}\).
 

Static Public Attributes

static constexpr int num_neighbors = GH::num_neighbors
 

Detailed Description

template<typename ScalarT>
struct terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >

Kokkos kernel that applies the Zalesak-limited antidiffusive correction to \(T^L\).

For each cell \(i\) and face \(j\), the symmetric limited flux factor is

\[ \alpha_{ij} = \begin{cases} \min(R_i^+,\; R_j^-) & \tilde{f}_{ij} > 0 \quad (\text{flux increases } T_i), \\ \min(R_i^-,\; R_j^+) & \tilde{f}_{ij} < 0 \quad (\text{flux decreases } T_i). \end{cases} \]

Note that \(\alpha_{ji} = \alpha_{ij}\) by construction (symmetry), which ensures conservation: what is added to cell \(i\) from face \(j\) is subtracted from cell \(j\) on the same face.

The corrected solution is

\[ T_i^{n+1} = T_i^L + \sum_j \alpha_{ij}\,\tilde{f}_{ij}. \]

Note
Ghost layers of \(R^+\) and \(R^-\) must be filled (done by fct_limiter).
Template Parameters
ScalarTFloating-point scalar type.

Member Typedef Documentation

◆ GH

template<typename ScalarT >
using terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::GH = fct_detail::GeometryHelper< ScalarT >

Member Function Documentation

◆ operator()()

template<typename ScalarT >
void terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::operator() ( const int  id,
const int  x,
const int  y,
const int  r 
) const
inline

Member Data Documentation

◆ antidiff_

template<typename ScalarT >
grid::Grid5DDataScalar< ScalarT > terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::antidiff_

\(\tilde{f}_{ij}\): pre-scaled antidiff fluxes.

◆ num_neighbors

template<typename ScalarT >
constexpr int terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::num_neighbors = GH::num_neighbors
staticconstexpr

◆ R_minus_

template<typename ScalarT >
grid::Grid4DDataScalar< ScalarT > terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::R_minus_

\(R^-\) correction factor (ghost layers filled).

◆ R_plus_

template<typename ScalarT >
grid::Grid4DDataScalar< ScalarT > terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::R_plus_

\(R^+\) correction factor (ghost layers filled).

◆ T_L_

template<typename ScalarT >
grid::Grid4DDataScalar< ScalarT > terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::T_L_

\(T^L\): low-order predictor.

◆ T_new_

template<typename ScalarT >
grid::Grid4DDataScalar< ScalarT > terra::fv::hex::operators::FCTCorrectionKernel< ScalarT >::T_new_

Output: \(T^{n+1}\).


The documentation for this struct was generated from the following file: