Skip to content

Compressible Couette flow ​

IDGroupMilestoneBackendsFigureRegression
VV-3Dissipative terms (M4)M4 (#65)CPU, FNLyescouette

Case and scope ​

A channel between a fixed isothermal wall at y=0 and an adiabatic no-slip wall moving at U along x at y=H. The exact steady solution has uniform p, the linear velocity u=Uy/H and the viscous-heating parabola T=Tw+μU2/(kH)(y−y2/(2H)). It is an exact steady solution of the compressible Navier–Stokes equations with constant μ and k, so the run starts from it and the departure at the final time is the error of the scheme, with no relaxation transient.

What the case catches: the first test of the no-slip walls with the viscous fluxes, and of a nonlinear energy flux (the viscous heating uτ): a wrong wall ghost, a wrong wall velocity or temperature, or a wrong viscous work term shows as a departure from the exact profile.

Models and numerics ​

ItemChoiceCode
Equationscompressible Navier–Stokes, γ=1.4, R=1, μ=0.01, Pr=0.75 (k=μcp/Pr)models; load_from_file, adam_flume_dissipation_object.F90
Dissipative fluxesdissipative_order = 4add_dissipative_fluxes_o4, adam_flume_cpu_dissipation_kernels.F90; numerics
Inviscid fluxesWENO5 flux splitting, characteristic variablescompute_residuals_weno, adam_flume_cpu_object.F90
Timerunge-kutta-ssp-54, CFL 0.2adam_rk_object.F90
Wall ghostsvelocity mirrored about the wall's (exact for the linear u); the moving adiabatic wall mirrors T symmetrically (exact for the symmetric T); the isothermal wall sets the geometric mirror Tg=Tw2/T and ρg=p/(RTg) (second order)wall_noslip_ghost, adam_flume_bc_object.F90; set_boundary_conditions, adam_flume_cpu_object.F90; boundary conditions
FNL backendthe same fluxes and wall ghosts on the deviceadam_flume_fnl_object.F90

Initial and boundary conditions ​

ItemValue
Domain[0,1]×[0,H], H=1, z null
Gridquadtree, 4×4 blocks of 6×N/4 cells: x active and thin (a null x would freeze ρu), N = 32 / 64 / 128 cells across the channel
Ranks2
Initial conditioncouette: the exact profile, p=1, U=1, Tw=1
bc_x_min, bc_x_maxperiodic
bc_y_min (y=0)wall-isothermal, wall_temperature = 1 (at rest)
bc_y_max (y=1)wall-noslip, wall_u = 1 (adiabatic, moving)
bc_z_min, bc_z_maxextrapolation
Final timet=0.2

Input files ​

FileRole
src/tests/flume/verification/viscous/profiles.pymake --case couette writes each input; oracle measures the RMS of u/U and T/Tw against the exact profile
src/tests/flume/verification/viscous/check.sh --legs vv3runs the ladder (--np N; FLUME_EXE selects the backend)
src/tests/flume/regression/couette/input.inithe frozen case, t=0.05
make_doc_figures.py (fig_couette, fig_viscous)the figures, from the CPU work directories of viscous/check.sh
bash
cd src/tests/flume/verification/viscous && ./check.sh --legs vv3             # CPU
FLUME_EXE=$PWD/../../../../../exe/adam_flume_fnl ./check.sh --legs vv3       # FNL

Results ​

VV-3: the Couette channel, its fields, the profiles against the exact ones and where the error lives

Top: u/U and T/Tw at 64 cells and t=0.2, and the 32-cell profiles on the exact ones; bottom: the pointwise errors of u and T at 64 cells, and the temperature error averaged along x at every resolution.

VV-1 to VV-5: convergence, and Becker's shock against the exact profile

The Couette temperature ladder is the "VV-3 Couette (T)" curve of the left panel.

Oracle: order ≥1.9 on u/U and T/Tw (finest pair).

QuantityNRMS error (CPU)OrderFNL
u/U32 / 64 / 1281.71⋅10−7 / 3.84⋅10−8 / 8.72⋅10−9+2.15, +2.14the same; the last digit at 128 cells differs
T/Tw32 / 64 / 1283.01⋅10−6 / 6.62⋅10−7 / 1.49⋅10−7+2.19, +2.15the same

Both backends ran on 2 ranks.

Related cases: the wall-free viscous waves are VV-1 and VV-2; the other exact steady profile is Becker's shock.

Findings ​

  • The run is second order overall: the moving-wall mirror is exact for the linear u and the symmetric T, the isothermal geometric mirror Tw2/T is second order.
  • The fields show where that second order comes from. Velocity and temperature are uniform along the periodic x, and the profiles lie on the exact ones (the linear u, the viscous-heating parabola of T). The error enters at the isothermal wall and diffuses into the channel: at t=0.2 its front has reached about y=0.5, and beyond it the solution is exact to round-off at 128 cells. The moving adiabatic wall adds nothing.
  • With the linear isothermal mirror of P1 (2Tw−T) the errors were 18% lower, at the same orders. The geometric mirror was adopted because the linear one made negative ghost densities beside hot gas; the two differ by O(Δx2).