|
Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website |
#include <face_reconstruction.h>
Public Member Functions | |
| FaceReconstruction () | |
| Construct a new Face Reconstruction object. | |
| virtual | ~FaceReconstruction () |
| Destroy the Face Reconstruction object. | |
| virtual void | init (const toml::value &input)=0 |
| Initialize the face reconstruction. | |
| virtual logging::Items | summary () const |
| Display lines for the run log. | |
| void | set_mesh (std::shared_ptr< Mesh > mesh) |
| Set the mesh. | |
| void | set_boundaries (const BoundaryData &boundaries) |
| Set the boundary data used for ghost states. | |
| FaceReconstructionType | get_type () const |
| Get the face reconstruction type. | |
| virtual uint8_t | n_face_quadrature_points () const =0 |
| Get the number of quadrature points per face. | |
| virtual void | calc_face_values (Kokkos::View< rtype *[N_CONSERVATIVE]> solution, Kokkos::View< rtype **[2][N_CONSERVATIVE]> face_solution)=0 |
| Reconstruct the face values. | |
| virtual std::vector< uint32_t > | cells_independent_of_halo (uint32_t n_owned) const |
| Cells below n_owned whose reconstruction reads no cell at or above n_owned, so that calc_cell_face_values can reconstruct them before the halo is filled. Empty if this reconstruction cannot be split by cells. | |
| virtual void | calc_cell_face_values (const Kokkos::DefaultExecutionSpace &exec, Kokkos::View< rtype *[N_CONSERVATIVE]> solution, Kokkos::View< rtype **[2][N_CONSERVATIVE]> face_solution, Kokkos::View< uint32_t * > cells) |
| Reconstruct the listed cells' sides of their faces, on the given execution space instance, as far as each cell can on its own (see cells_independent_of_halo()). Once every reconstructed cell went through this and those instances are fenced, finish_cell_face_values() completes the face values. | |
| virtual void | finish_cell_face_values (Kokkos::View< rtype *[N_CONSERVATIVE]> solution, Kokkos::View< rtype **[2][N_CONSERVATIVE]> face_solution) |
| Complete the face values after calc_cell_face_values(). | |
| virtual bool | cell_gradients (Kokkos::View< rtype *[N_CONSERVATIVE]>, Kokkos::View< rtype *[N_CONSERVATIVE][N_DIM]>, uint32_t) |
| Gradients of W = [rho, u, p] at the centroids of the first n_cells cells from the reconstruction polynomials, if the scheme has higher-order ones than least squares on face neighbors. | |
| virtual void | axisymmetric_source (Kokkos::View< rtype *[N_CONSERVATIVE]>, Kokkos::View< rtype *, Kokkos::LayoutStride >, Kokkos::View< rtype * >, uint32_t) |
| Axisymmetric runs: for each of the first n_cells cells whose reconstruction has a smooth polynomial, replace source(c) by int (p - tau_thetatheta) dA over the planar cell, with p and the velocity of the polynomial at cell quadrature points and the cell viscosity mu(c) (inviscid if mu is empty). Other cells keep their source, which the caller set from cell values. | |
| void | init_face_quadrature_3d (uint8_t degree) |
| Set up per-face quadrature (3D): Dunavant rules on triangles and Gauss rules mapped bilinearly onto quadrilaterals, exact for polynomials of the given degree on planar faces (degree <= 1 uses the face centroid). Also maps each quadrature point of a transmissive boundary face to the matching point of its image face (BoundaryData::face_image_quad). | |
| void | init_face_quadrature_2d_curved () |
| Curved meshes in 2D: per-face quadrature points, weights and normals for quadrature_face's Gauss rule on every face, the curved faces' mapped onto their curves (nothing otherwise). | |
Public Attributes | |
| Quadrature | quadrature_face |
| Kokkos::View< rtype *** > | face_quad_points |
| Kokkos::View< rtype ** > | face_quad_weights |
| Kokkos::View< rtype *** > | face_quad_normals |
Protected Attributes | |
| FaceReconstructionType | type |
| std::shared_ptr< Mesh > | mesh |
| BoundaryData | boundaries |
| FaceReconstruction::FaceReconstruction | ( | ) |
Construct a new Face Reconstruction object.
|
virtual |
Destroy the Face Reconstruction object.
|
inlinevirtual |
Axisymmetric runs: for each of the first n_cells cells whose reconstruction has a smooth polynomial, replace source(c) by int (p - tau_thetatheta) dA over the planar cell, with p and the velocity of the polynomial at cell quadrature points and the cell viscosity mu(c) (inviscid if mu is empty). Other cells keep their source, which the caller set from cell values.
Reimplemented in TENO.
|
virtual |
Reconstruct the listed cells' sides of their faces, on the given execution space instance, as far as each cell can on its own (see cells_independent_of_halo()). Once every reconstructed cell went through this and those instances are fenced, finish_cell_face_values() completes the face values.
| exec | Execution space instance to launch on. |
| solution | Cell states W = [rho, u_x, u_y, p]. |
| face_solution | Face states W, as in calc_face_values. |
| cells | Local cells to reconstruct (not empty). |
|
pure virtual |
Reconstruct the face values.
| solution | Cell states W = [rho, u_x, u_y, p]. |
| face_solution | Face states W, indexed (face, quadrature point, side, variable). Side 1 of boundary faces is left untouched. |
Implemented in FirstOrder, MUSCL, and TENO.
|
inlinevirtual |
Gradients of W = [rho, u, p] at the centroids of the first n_cells cells from the reconstruction polynomials, if the scheme has higher-order ones than least squares on face neighbors.
Reimplemented in TENO.
|
virtual |
Complete the face values after calc_cell_face_values().
|
inline |
Get the face reconstruction type.
Initialize the face reconstruction.
Implemented in FirstOrder, MUSCL, and TENO.
| void FaceReconstruction::init_face_quadrature_2d_curved | ( | ) |
Curved meshes in 2D: per-face quadrature points, weights and normals for quadrature_face's Gauss rule on every face, the curved faces' mapped onto their curves (nothing otherwise).
Set up per-face quadrature (3D): Dunavant rules on triangles and Gauss rules mapped bilinearly onto quadrilaterals, exact for polynomials of the given degree on planar faces (degree <= 1 uses the face centroid). Also maps each quadrature point of a transmissive boundary face to the matching point of its image face (BoundaryData::face_image_quad).
| degree | Polynomial degree to integrate exactly. |
Get the number of quadrature points per face.
Implemented in FirstOrder, MUSCL, and TENO.
| void FaceReconstruction::set_boundaries | ( | const BoundaryData & | boundaries | ) |
Set the boundary data used for ghost states.
| boundaries | Boundary data. |
Set the mesh.
| mesh | Pointer to the mesh. |
|
virtual |
|
protected |
| Kokkos::View<rtype ***> FaceReconstruction::face_quad_normals |
| Kokkos::View<rtype ***> FaceReconstruction::face_quad_points |
| Kokkos::View<rtype **> FaceReconstruction::face_quad_weights |
|
protected |
| Quadrature FaceReconstruction::quadrature_face |
|
protected |