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

Kokkos kernel that computes only the pre-scaled antidiffusive fluxes from \(T^n\). More...

#include <fct_advection_diffusion.hpp>

Public Types

using ScalarType = ScalarT
 
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::Grid3DDataVec< ScalarT, 3 > grid_
 
grid::Grid2DDataScalar< ScalarT > radii_
 
grid::Grid4DDataVec< ScalarT, 3 > cell_centers_
 
grid::Grid4DDataVec< ScalarT, 3 > vel_grid_
 
grid::Grid4DDataScalar< ScalarT > T_old_
 \(T^n\) with ghost layers filled.
 
grid::Grid5DDataScalar< ScalarT > antidiff_
 Output: \(\tilde{f}_{ij}\), shape \([\ldots, 6]\).
 
ScalarT dt_
 Time step \(\Delta t\).
 

Static Public Attributes

static constexpr int num_neighbors = GH::num_neighbors
 

Detailed Description

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

Kokkos kernel that computes only the pre-scaled antidiffusive fluxes from \(T^n\).

In the semi-implicit FCT scheme the low-order predictor \(T^L\) is provided by an external implicit solve (see fct_semiimplicit_step). This kernel therefore skips the upwind update and only stores the antidiffusive fluxes needed by the Zalesak limiter:

\[ \tilde{f}_{ij} = \frac{\Delta t}{M_{ii}}\,\frac{|\beta_{ij}|}{2}\,(T_i^n - T_j^n). \]

The formula is identical to the antidiffusive part of FCTPredictorKernel.

Note
Ghost layers of \(T^n\) must be filled before launch.
Template Parameters
ScalarTFloating-point scalar type.

Member Typedef Documentation

◆ GH

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

◆ ScalarType

template<typename ScalarT >
using terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::ScalarType = ScalarT

Member Function Documentation

◆ operator()()

template<typename ScalarT >
void terra::fv::hex::operators::FCTAntidiffKernel< 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::FCTAntidiffKernel< ScalarT >::antidiff_

Output: \(\tilde{f}_{ij}\), shape \([\ldots, 6]\).

◆ cell_centers_

template<typename ScalarT >
grid::Grid4DDataVec< ScalarT, 3 > terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::cell_centers_

◆ dt_

template<typename ScalarT >
ScalarT terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::dt_

Time step \(\Delta t\).

◆ grid_

template<typename ScalarT >
grid::Grid3DDataVec< ScalarT, 3 > terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::grid_

◆ num_neighbors

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

◆ radii_

template<typename ScalarT >
grid::Grid2DDataScalar< ScalarT > terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::radii_

◆ T_old_

template<typename ScalarT >
grid::Grid4DDataScalar< ScalarT > terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::T_old_

\(T^n\) with ghost layers filled.

◆ vel_grid_

template<typename ScalarT >
grid::Grid4DDataVec< ScalarT, 3 > terra::fv::hex::operators::FCTAntidiffKernel< ScalarT >::vel_grid_

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