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

Pieces of the transverse terms of the incoming acoustic wave at every characteristic face (Yoo & Im 2007; Lodato, Domingo & Vervisch 2008): [u_t . grad p, rho div_tangential u_t, rho u_t . grad u_n], combined by BoundaryData::characteristic_W with the face's sound speed c into T- = u_t . grad p + c^2 rho div_tangential u_t - c rho u_t . grad u_n. More...

#include <characteristic.h>

Public Member Functions

KOKKOS_INLINE_FUNCTION void face_state (const uint32_t f, rtype *W) const
 State of the cell of boundary face f.
 
KOKKOS_INLINE_FUNCTION void operator() (const uint32_t k) const
 

Public Attributes

BoundaryData boundaries
 
Kokkos::View< rtype *[N_DIM]> face_coords
 
Kokkos::View< rtype *[N_DIM]> face_normals
 
Kokkos::View< rtype * > face_area
 
Kokkos::View< int32_t *[2]> cells_of_face
 
Kokkos::View< rtype *[N_CONSERVATIVE]> W_cells
 

Detailed Description

Pieces of the transverse terms of the incoming acoustic wave at every characteristic face (Yoo & Im 2007; Lodato, Domingo & Vervisch 2008): [u_t . grad p, rho div_tangential u_t, rho u_t . grad u_n], combined by BoundaryData::characteristic_W with the face's sound speed c into T- = u_t . grad p + c^2 rho div_tangential u_t - c rho u_t . grad u_n.

The tangential derivatives are a least-squares fit, in the plane of the face, of the states of the cells of the neighboring characteristic faces (char_neighbors), as finite-difference NSCBC differentiates along the boundary. Cell gradients would pick up the normal variation of waves crossing the boundary, and on triangles the grid-scale odd-even pattern of the velocity, as a transverse divergence, which reflects acoustic waves; reconstructed face states (TENO) make the correction unstable.

Faces at an edge of the boundary (sharing a node with a wall or another non-characteristic boundary, char_edge) get no transverse terms. Their fit is one-sided, and its transverse divergence has the wrong sign for a disturbance confined to the edge row: the incoming wave then grows it, against only the weak relaxation K, until the run diverges (docs/design/nscbc.md).

Member Function Documentation

◆ face_state()

KOKKOS_INLINE_FUNCTION void CharacteristicTransverseFunctor::face_state ( const uint32_t  f,
rtype *  W 
) const
inline

State of the cell of boundary face f.

◆ operator()()

KOKKOS_INLINE_FUNCTION void CharacteristicTransverseFunctor::operator() ( const uint32_t  k) const
inline

Member Data Documentation

◆ boundaries

BoundaryData CharacteristicTransverseFunctor::boundaries

◆ cells_of_face

Kokkos::View<int32_t *[2]> CharacteristicTransverseFunctor::cells_of_face

◆ face_area

Kokkos::View<rtype *> CharacteristicTransverseFunctor::face_area

◆ face_coords

Kokkos::View<rtype *[N_DIM]> CharacteristicTransverseFunctor::face_coords

◆ face_normals

Kokkos::View<rtype *[N_DIM]> CharacteristicTransverseFunctor::face_normals

◆ W_cells

Kokkos::View<rtype *[N_CONSERVATIVE]> CharacteristicTransverseFunctor::W_cells

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