|
Mallard 0.8.0
Unstructured, GPU accelerated, high-order finite volume CFD solver
Mallard website |
TENO-E table setup in 3D, per cell on the device. More...
#include "teno_setup.h"#include "curved.h"#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <limits>#include <stdexcept>#include <vector>#include "launch_bounds.h"Classes | |
| class | teno_setup::Setup3D |
| The setup of one mesh. More... | |
Namespaces | |
| namespace | teno_setup |
Functions | |
| bool | teno_setup::batch_interleaved () |
| Whether batches interleave their cells (GPUs). | |
| TableBatch | teno_setup::device_copy (const TableBatchT< Kokkos::HostSpace > &h) |
| The device copy of a host batch. | |
| teno::SmoothnessTerms | teno_setup::smoothness_terms (uint8_t degree) |
| The terms of every smoothness-matrix entry of the given degree, in the order the setup sums them. | |
| uint16_t | teno_setup::n_moments (uint8_t degree) |
| Central moments per cell for the given degree. | |
| std::array< double, 9 > | teno_setup::ranking_metric (const Mesh &mesh, const Kokkos::View< int32_t * >::host_mirror_type &face_bc, const Kokkos::View< BoundaryCondition * >::host_mirror_type &bcs, uint32_t i) |
| Metric (3 x 3, row-major) in which the stencil candidates of cell i are ranked by distance: the identity unless the spacing of its vertex neighbors (completed across its boundary faces by mirror images) is markedly anisotropic. | |
TENO-E table setup in 3D, per cell on the device.
Every cell's search, least-squares fits, Lebesgue constants and smoothness indicators run in one thread, on the device or on the host, with the same code. This file is compiled without contracting multiplies and adds into FMAs (src/CMakeLists.txt), and uses only correctly rounded operations (+, -, *, /, sqrt) on the device, so both give bitwise identical tables. The cube roots and the ranking metrics (log, exp) are computed on the host.
| size_t A = 0 |
| Lane<rtype> basis_mean |
| uint8_t beta[teno::MAX_NK][3] |
| double binom[12][12] = {} |
| R<double *[6]> boxes |
| size_t bytes = 0 |
| CellSetup<ExecSpace> c |
| size_t cand_cell = 0 |
| size_t cand_lattice = 0 |
| size_t cand_off = 0 |
| size_t cand_slot = 0 |
| uint32_t candidates = 0 |
| Caps caps |
| R<double *> cell_h |
| Kokkos::View<uint32_t *, Space> cells |
| V<uint32_t *> cells_of_cell |
| V<uint8_t *> cells_of_cell_shift |
| V<int32_t *[2]> cells_of_face |
| size_t coef = 0 |
| size_t cone = 0 |
| double derivative[teno::MAX_NK][teno::MAX_NK] |
| uint32_t entries = 4096 |
| size_t entry_key = 0 |
| size_t entry_order = 0 |
| size_t entry_ref = 0 |
| uint8_t expo[teno::MAX_NK][3] = {} |
| V<rtype *> face_area |
| V<uint8_t *> face_shift |
| V<uint32_t *> faces_of_cell |
| size_t frame = 0 |
| Geometry<Space> g |
| R<uint8_t *> has_mirror_face |
| Lane<uint64_t> hash = 4096 |
| size_t hash_key = 0 |
| size_t hash_pos = 0 |
| size_t inside = 0 |
| Lane<int32_t> large_cells |
| Lane<int32_t> large_faces |
| Lane<rtype> large_pinv |
| TeamLayout layout |
| uint8_t level_count[teno::MAX_DEGREE+1] = {} |
| uint8_t level_member[teno::MAX_DEGREE+1][(teno::MAX_DEGREE+1) *(teno::MAX_DEGREE+2)/2] = {} |
| Kokkos::View<int *, Space> locks |
| int8_t low_slot[(teno::MAX_DEGREE+1) *(teno::MAX_DEGREE+1) *(teno::MAX_DEGREE+1)] = {} |
| size_t means = 0 |
| R<double *[9]> metric |
| R<uint8_t *> mirror_face |
| R<double **> moments |
| int n_beta = 0 |
| uint32_t n_complete = 0 |
| int n_low = 0 |
| int n_moments = 0 |
| uint32_t n_translations = 0 |
| uint8_t nk = 0 |
| int nm = 0 |
| V<uint32_t *> nodes_of_cell |
| V<uint32_t *> nodes_of_face |
| uint16_t ns = 0 |
| uint16_t ns_max = 0 |
| uint16_t nss = 0 |
| uint16_t nss_max = 0 |
| V<uint32_t *> offsets_cells_of_cell |
| V<uint32_t *> offsets_faces_of_cell |
| V<uint32_t *> offsets_nodes_of_cell |
| V<uint32_t *> offsets_nodes_of_face |
| TableBatchT<Space> out |
| size_t plane_face = 0 |
| size_t plane_face_lattice = 0 |
| size_t plane_face_plane = 0 |
| uint32_t plane_faces = 512 |
| size_t plane_first = 0 |
| size_t plane_sorted = 0 |
| size_t plane_start = 0 |
| size_t plane_x = 0 |
| size_t planes = 16 |
| Kokkos::View<char *, Space> pool |
| size_t psi = 0 |
| V<rtype ***> quad_points |
| V<rtype **> quad_weights |
| uint8_t r = 0 |
| size_t reach = 0 |
| Lane<double> reflection |
| uint32_t rows = 0 |
| Lane<rtype> scale |
| Scratch<Space> scratch |
| size_t sector = 0 |
| size_t shared_bytes = 0 |
| size_t shared_head = 0 |
| R<int8_t *[3]> shift_lattice |
| uint32_t slots = 0 |
| Lane<int32_t> small_cells |
| Lane<int32_t> small_faces |
| Lane<rtype> small_pinv |
| R<double *[4]> tet_rule |
| std::conditional_t<ON_HOST, Kokkos::Experimental::UniqueToken<ExecSpace, Kokkos::Experimental::UniqueTokenScope::Global>, int> token |
| R<double *[3]> translations |
| size_t tried_lebesgue = 0 |
| size_t tried_n = 0 |
| size_t visit_cell = 0 |
| size_t visit_lattice = 0 |
| uint32_t visits = 2048 |
| R<uint8_t *> wall_cell |
| uint8_t wall_nk = 0 |
| uint16_t wall_ns = 0 |
| size_t X = 0 |