Rigid Impingement
Files
| File | Description |
|---|---|
input-baseflow.sdf | Input file for the first pass (single-phase baseflow) |
cylinder.vtk | Triangulation for the rigid cylindrical body |
Introduction
This case studies liquid droplet impingement on a rigid body in high-speed flow: a blunt, rounded-nose cylindrical rod, 32.5 mm in diameter, sitting in a Mach 5.83 freestream. The rod is represented as a triangulated cylinder.vtk geometry and coupled to the Cartesian grid through the immersed boundary method (IBM), with a slip-wall boundary condition. A bow shock stands off the nose, and it's this shocked flowfield that liquid droplets carried in the freestream must cross before striking the body.
Getting there is a two-step process:
- Baseflow — run the single-phase gas dynamics to steady state, so the bow shock and surrounding flowfield are fully established. This is the pass covered below.
- Droplet impingement (not yet covered in this tutorial) — restart from the baseflow solution using the multiphase formulation, with droplets seeded into the initial condition and carried through the established shock toward the body.
Splitting the case this way avoids paying for the multiphase solve while the gas-phase flowfield is still transient, and lets the baseflow be reused as the starting point for different droplet conditions.
Case Summary
| Quantity | Value |
|---|---|
| Freestream Mach number | 5.83 |
| Freestream pressure () | 102 kPa |
| Freestream temperature () | 289 K |
| Body diameter | 32.5 mm |
| Target grid spacing () | 80 μm |
| Achieved grid spacing () | 77–79 μm |
| Initial grid size | 984,000 cells |
Running the First Simulation
The first pass, input-baseflow.sdf, runs the rod through the freestream as a single-phase (gas-only) simulation — no droplets are present yet. To run it, simply invoke:
champs+ input-baseflow.sdf
See the command line reference for the full set of available flags, including other device-selection options.
The case runs for max_steps = 10000 steps (Integration::max_steps) at CFL = 0.5 using explicit ssprk3 time integration, with shock-tracking AMR (Domain::Grid::Refinement::AMR::shock_refine) kicking in from step 2000 onward and refreshing every 500 steps. The grid grows from its initial 984,000 cells to roughly 40 million cells once the shock-adapted region fills in.
This writes output under sim-baseflow/ (set by IO::output_directory), including the restart/ checkpoint that the second-pass, multiphase restart will read from.
Results
Run the case to completion and compare your slice_z output against the figures below.
Symmetry-plane (z = 0) slice of the steady baseflow: a bow shock stands off the rounded nose, with the high-pressure shock layer (red/orange) wrapping around the body.
The same slice with grid blocks overlaid: spacing is finest on the body surface and along the bow shock, coarsening away from both, courtesy of the dx_surface/dx_shock Refinement::Spacing levels and the shock_refine AMR criterion tracking pressure.
You should see the same overall picture in your own run: a well-formed, steady bow shock standing off the nose, with no further changes in the shock shape or standoff distance from one output interval to the next. Once you've confirmed that, the restart/ checkpoint from this run is what the second-pass, multiphase droplet-impingement simulation will build on.