Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website
Loading...
Searching...
No Matches
flux_functor.h File Reference

Convective flux functor. More...

#include <Kokkos_Core.hpp>
#include "common.h"
#include "boundary.h"
#include "riemann_solver.h"

Go to the source code of this file.

Classes

struct  UpwindSensorFunctor
 Upwind fraction of each cell for the hybrid convective flux: 1 where the Ducros sensor restricted to compressions (Ducros et al. 1999; Bhagatwala & Lele 2009), theta = (div u)^2 / ((div u)^2 + |omega|^2) for div u < 0, exceeds the threshold (shocks), else the floor. gradients(c, 1 + k, i) = d u_k / d x_i. More...
 
struct  ConvectiveFluxFunctor< T_riemann_solver >
 Integrates the convective flux over every face into face_flux, the rate of change it causes in cells_of_face(:, 0) (cells_of_face(:, 1) receives its negative). Boundary faces use the boundary ghost state as the right state. Characteristic boundaries take the low-Mach correction like interior faces: without it, the different dissipation of the boundary cell's two sides holds the outlet pressure of a steady shear flow away from its target. More...
 
struct  FaceFluxSumFunctor
 Sums the face fluxes of each cell into its RHS in faces_of_cell order, so that the result does not depend on thread scheduling. More...
 

Functions

KOKKOS_INLINE_FUNCTION void low_mach_correction (rtype *W_l, rtype *W_r, const rtype gamma, const rtype M_cut)
 Low-Mach correction of Thornber et al. (J. Comput. Phys. 227, 2008): scales the jump of the reconstructed velocity across a face by z = min(1, max(M_L, M_R, M_cut)), keeping its mean. Upwind fluxes otherwise damp velocity jumps at the sound speed, a dissipation that does not vanish as M -> 0; with the correction it scales with the flow speed. The cutoff M_cut keeps some acoustic damping in gas nearly at rest, like the cutoff Mach number of preconditioned all-speed schemes (Weiss & Smith, AIAA J. 33(11), 1995). Supersonic faces (z = 1) are untouched.
 
KOKKOS_INLINE_FUNCTION const rtype * quad_normal (const Kokkos::View< rtype *** > &quad_normals, const uint32_t f, const uint8_t q, const rtype *n_face, rtype *n_q)
 Unit normal at quadrature point q of face f: the point's own on curved meshes (quad_normals, (face, q, dim)), else the face's n_face.
 
KOKKOS_INLINE_FUNCTION rtype face_upwind_fraction (const Kokkos::View< rtype * > &upwind, const BoundaryData &boundaries, const int32_t c0, const int32_t c1, const uint32_t i_face)
 Upwind fraction of a face of the hybrid convective flux: the larger of its cells' (boundary faces other than walls and symmetry planes, whose mirror states make the central flux exact, take the Riemann flux).
 

Detailed Description

Convective flux functor.

Author
Matthew Bonanni (mbona.nosp@m.nni0.nosp@m.01@gm.nosp@m.ail..nosp@m.com)
Version
0.2
Date
2024-11-26

Function Documentation

◆ face_upwind_fraction()

KOKKOS_INLINE_FUNCTION rtype face_upwind_fraction ( const Kokkos::View< rtype * > &  upwind,
const BoundaryData &  boundaries,
const int32_t  c0,
const int32_t  c1,
const uint32_t  i_face 
)

Upwind fraction of a face of the hybrid convective flux: the larger of its cells' (boundary faces other than walls and symmetry planes, whose mirror states make the central flux exact, take the Riemann flux).

◆ low_mach_correction()

KOKKOS_INLINE_FUNCTION void low_mach_correction ( rtype *  W_l,
rtype *  W_r,
const rtype  gamma,
const rtype  M_cut 
)

Low-Mach correction of Thornber et al. (J. Comput. Phys. 227, 2008): scales the jump of the reconstructed velocity across a face by z = min(1, max(M_L, M_R, M_cut)), keeping its mean. Upwind fluxes otherwise damp velocity jumps at the sound speed, a dissipation that does not vanish as M -> 0; with the correction it scales with the flow speed. The cutoff M_cut keeps some acoustic damping in gas nearly at rest, like the cutoff Mach number of preconditioned all-speed schemes (Weiss & Smith, AIAA J. 33(11), 1995). Supersonic faces (z = 1) are untouched.

◆ quad_normal()

KOKKOS_INLINE_FUNCTION const rtype * quad_normal ( const Kokkos::View< rtype *** > &  quad_normals,
const uint32_t  f,
const uint8_t  q,
const rtype *  n_face,
rtype *  n_q 
)

Unit normal at quadrature point q of face f: the point's own on curved meshes (quad_normals, (face, q, dim)), else the face's n_face.