PLUTO Test Problems  4.4-patch2
Functions
init.c File Reference

Double Mach reflection test problem. More...

Functions

void InitDomain (Data *d, Grid *grid)
 
void UserDefBoundary (const Data *d, RBox *box, int side, Grid *grid)
 

Detailed Description

Sets the initial condition for a planar shock front making an angle of $ \pi/3 $ with a reflecting wall:

\[ \left(\rho,v_x,v_y,p\right) = \left\{\begin{array}{ll} (1.4,0,0,1) & \qquad {\rm for} \quad x >x_s(0) \\ \noalign{\medskip} (8,8,25,-8.25,116.5) & \qquad {\rm otherwise} \end{array}\right. \]

where $x_s(t) = 10t/\sin\alpha + 1/6 + y/\tan\alpha$ is the shock position. The ideal equation of state with $ \Gamma = 1.4$ is used. The wedge is represented by a reflecting boundary starting at x=1/6 along the lower y-boundary. As the shock reflects off the lower wall, a complex flow structure develops with two curved reflected shocks propagating at directions almost orthogonal to each other and a tangential discontinuity separating them. At the wall, a pressure gradient sets up a denser fluid jet propagating along the wall. Kelvin-Helmholtz instability patterns may be identified with the rolls developing at the slip line. This feature is very sensitive to numerical diffusion and it becomes visible at high resolution and/or low dissipative schemes.

In the frames below we show configuration # 02 using a high-order finite difference scheme with 5-th order WENO-Z reconstruction and RK3 time stepping. The resolution is 960 x 240.

dmr_rho.gif
Density contours for the double Mach reflection test
dmr_prs.gif
Pressure contours for the double Mach reflection test
Author
A. Mignone (migno.nosp@m.ne@t.nosp@m.o.inf.nosp@m.n.it)
Date
Feb 25, 2019

References

Function Documentation

◆ InitDomain()

void InitDomain ( Data *  d,
Grid *  grid 
)

Assign initial condition by looping over the computational domain. Called after the usual Init() function to assign initial conditions on primitive variables. Value assigned here will overwrite those prescribed during Init().

◆ UserDefBoundary()

void UserDefBoundary ( const Data *  d,
RBox *  box,
int  side,
Grid *  grid 
)

Assign user-defined boundary conditions:

  • left side (x beg): constant shocked values
  • bottom side (y beg): constant shocked values for x < 1/6 and reflective boundary otherwise.
  • top side (y end): time-dependent boundary: for $ x < x_s(t) = 10 t/\sin\alpha + 1/6 + 1.0/\tan\alpha $ we use fixed (post-shock) values. Unperturbed values otherwise.