RinglebMeshGenerator

Creates a mesh for the Ringleb problem.

Overview

This mesh can be applied to a Ringleb problem. This problem tests the spatial accuracy of high-order methods. The flow is transonic and smooth. The geometry is also smooth, and high-order curved boundary representation appears to be critical.

Governing Equations

The governing equations are the 2D Euler equations with γ=1.4\gamma = 1.4.

Geometry

Let kk be a streamline parameter, i.e., k=constantk = constant on each streamline. The two stream lines for the two wall boundaries are k=kmax=1.5k=k_{max}=1.5 for the inner wall, and k=kmin=0.7k=k_{min}=0.7 for the outer wall. Let qq be the velocity magnitude. For each fixed kk , kminkkmaxk_{min} \leq k \leq k_{max}, the variable qq varies between Q0=0.5Q_0=0.5 and kk . For each qq , define the speed of sound aa , density ρ\rho , pressure pp, and a quantity denoted by JJ by: a=1γ12q2;ρ=a2γ1;p=1γa2γγ1;J=1a+13a3+15a512log1+a1aa=\sqrt{1 - \frac{\gamma-1}{2}q^2};\quad \rho = a^{\frac{2}{\gamma-1}};\quad p = \frac{1}{\gamma}a^{\frac{2 \gamma}{\gamma-1}};\quad J = \frac{1}{a} + \frac{1}{3a^3} + \frac{1}{5a^5} - \frac{1}{2}\log \frac{1+a}{1-a}

For each pair (q,k)(q,k), set: x(q,k)=12ρ(2k21q2)J2andy(q,k)=±1kρq1q2k2x(q,k) = \frac{1}{2\rho}\left( \frac{2}{k^2}-\frac{1}{q^2} \right) - \frac{J}{2} \quad \mathrm{and} \quad y(q,k) = \pm \frac{1}{k \rho q} \sqrt{1-\frac{q^2}{k^2}}

Mesh Example

For example, let's consider the following input file:

[Mesh]
  [./ringleb]
    type = RinglebMeshGenerator
    kmin = 0.7
    num_k_pts = 9
    num_q_pts = 20
    kmax = 1.2
    n_extra_q_pts = 2
    gamma = 1.4
    triangles = true
  []
[]

The corresponding mesh looks like this:

Input Parameters

  • gammaGamma parameter

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Gamma parameter

  • kmaxValue of k on the inner wall.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Value of k on the inner wall.

  • kminValue of k on the outer wall.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Value of k on the outer wall.

  • n_extra_q_ptsHow many 'extra' points should be inserted in the final element *in addition to* the equispaced q points.

    C++ Type:int

    Unit:(no unit assumed)

    Controllable:No

    Description:How many 'extra' points should be inserted in the final element *in addition to* the equispaced q points.

  • num_k_ptsHow many points in the range k=(kmin, kmax).

    C++ Type:int

    Unit:(no unit assumed)

    Controllable:No

    Description:How many points in the range k=(kmin, kmax).

  • num_q_ptsHow many points to discretize the range q = (0.5, k) into.

    C++ Type:int

    Unit:(no unit assumed)

    Controllable:No

    Description:How many points to discretize the range q = (0.5, k) into.

Required Parameters

  • inflow_bid1The boundary id to use for the inflow

    Default:1

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:The boundary id to use for the inflow

  • inner_wall_bid2The boundary id to use for the inner wall

    Default:2

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:The boundary id to use for the inner wall

  • outer_wall_bid4The boundary id to use for the outer wall

    Default:4

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:The boundary id to use for the outer wall

  • outflow_bid3The boundary id to use for the outflow

    Default:3

    C++ Type:short

    Unit:(no unit assumed)

    Controllable:No

    Description:The boundary id to use for the outflow

  • trianglesFalseIf true, all the quadrilateral elements will be split into triangles

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:If true, all the quadrilateral elements will be split into triangles

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • save_with_nameKeep the mesh from this mesh generator in memory with the name specified

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Keep the mesh from this mesh generator in memory with the name specified

Advanced Parameters

  • nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)

  • outputFalseWhether or not to output the mesh file after generating the mesh

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to output the mesh file after generating the mesh

  • show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)

Debugging Parameters