Kokkos kernel that computes the local maximum stable explicit dt for each FV cell.
More...
template<typename ScalarT>
struct terra::fv::hex::operators::ComputeDtStableKernel< ScalarT >
Kokkos kernel that computes the local maximum stable explicit dt for each FV cell.
The low-order predictor \(T^L_i\) is stable if and only if
\[
\frac{\Delta t}{M_{ii}}\,\lambda_i \leq 1, \qquad
\lambda_i = \sum_{j:\,\beta_{ij}<0} |\beta_{ij}|
+ \sum_j \kappa\,\frac{|\mathbf{S}_{f,j}|^2}
{(\mathbf{x}_j-\mathbf{x}_i)\cdot\mathbf{S}_{f,j}}
\]
(assumes subtract_divergence = true; the formula naturally coincides with the advective stability limit \(\sum_{j:\,\beta>0}\beta_{ij}\) for exactly divergence-free fields.)
For each cell the kernel outputs \(M_{ii}/\lambda_i\) (a time scale), so the global minimum is the largest dt that satisfies the stability criterion everywhere.
This accounts for:
- Lateral face fluxes on irregular/small cells near pentagon vertices of the icosahedral grid — these are missed by the simpler \(h_\text{min,radial}/u_\text{max}\) estimate.
- Non-orthogonal diffusion stencils, where \(|\mathbf{S}_f|^2/(\mathbf{dx}\cdot\mathbf{S}_f)\) can be much larger than \(1/h^2\).