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

Curved (high-order) boundary geometry: face maps, face quadrature and cell integration rules (docs/design/curved_boundaries.md). More...

#include <array>
#include <cstdint>
#include <map>
#include <string>
#include <utility>
#include <vector>
#include <toml.hpp>
#include "common_typedef.h"

Go to the source code of this file.

Classes

struct  curved::Shape
 An analytic surface onto which the faces of a boundary zone are projected: a circle (2D) or a sphere or circular cylinder (3D). More...
 
struct  curved::SurfaceFace
 A curved boundary face of the whole mesh: its corners (global node ids, in the element's order) and either an analytic shape or the nodes of a high-order Gmsh element (corners first, Gmsh order). More...
 
struct  curved::Surfaces
 The curved boundary of a mesh, identical on every rank: the analytic shapes and every curved boundary face, sorted by their sorted corners. More...
 
class  curved::Geometry
 Curved geometry of one rank's mesh. Faces are curved where they lie on a curved surface, and in 3D where they share an edge with one (blended from their edges). Reference coordinates of a face, in its node order: 2D s in [-1, 1] from node 0 to node 1; triangles (u, v) with x = v0 + u (v1 - v0) + v (v2 - v0) when flat; quadrilaterals (s, t) in [-1, 1]^2, nodes 0..3 at (-1, -1), (1, -1), (1, 1), (-1, 1). More...
 

Namespaces

namespace  curved
 

Typedefs

using curved::Vec3 = std::array< double, 3 >
 

Functions

std::vector< Shape > curved::read_shapes (const toml::value &input)
 Analytic shapes of the [[mesh.curved]] entries (none if [mesh] curved = false).
 
bool curved::enabled (const toml::value &input)
 [mesh] curved: whether curved geometry is used at all (default true).
 
uint32_t curved::element_order (uint32_t n_corners, uint32_t n_nodes)
 Order of a Gmsh boundary element with n_corners corners and n_nodes nodes (1 linear, 2 or 3; triangle9 and quadrangle8 are the incomplete cubic and quadratic ones), or 0 if unsupported.
 
Surfaces curved::surfaces_of_mesh (const Mesh &mesh, const toml::value &input)
 The curved surfaces of a whole mesh held by this rank: the high-order faces it was read with (Mesh::high_order_faces) and the faces of the zones of the analytic shapes.
 
Surfaces curved::surfaces_of_block (const MeshBlock &block, const toml::value &input)
 The curved surfaces of a mesh spread over the ranks as blocks (collective): every rank gets the faces of every block.
 

Detailed Description

Curved (high-order) boundary geometry: face maps, face quadrature and cell integration rules (docs/design/curved_boundaries.md).

Author
Matthew Bonanni (mbona.nosp@m.nni0.nosp@m.01@gm.nosp@m.ail..nosp@m.com)
Version
0.1
Date
2026-10-09