Structured mesh

The StructuredMesh is a structured, curvilinear, conforming mesh type available for one-, two-, and three-dimensional simulations. An application of the StructuredMesh using a user-defined mapping is provided by one of the tutorials.

Due to its curvilinear nature, (numerical) fluxes need to implement methods dispatching on the normal::AbstractVector. Rotationally invariant equations such as the compressible Euler equations can use FluxRotated to wrap numerical fluxes implemented only for Cartesian meshes. This simplifies the re-use of existing functionality for the TreeMesh but is usually less efficient, cf. PR #550.

Boundary conditions

For StructuredMeshes, boundary conditions are defined and stored in named tuples (see, for example, examples/structured_1d_dgsem/elixir_euler_source_terms_nonperiodic.jl). If you want to apply the same boundary condition to all faces of the mesh, you can use the boundary_condition_default(mesh, boundary_condition) function, as demonstrated in examples/structured_1d_dgsem/elixir_euler_source_terms_nonperiodic.jl, examples/structured_2d_dgsem/elixir_euler_rayleigh_taylor_instability.jl and examples/structured_3d_dgsem/elixir_euler_source_terms_nonperiodic_curved.jl.