← Octo-TIGER / All test problemsCoupled radiation hydrodynamics

Supercritical radiative shock

A faster shock produces a stronger radiative precursor. Gas ahead of the shock approaches the downstream equilibrium temperature.

The experiment

Physical setup

The supercritical case couples hydrodynamics, absorption, emission, and radiation momentum exchange. In a developed supercritical shock the gas immediately upstream is heated approximately to the downstream equilibrium temperature, while a narrow gas temperature spike remains at the front.

Ensman's original shell, density, opacity, initial temperature gradient, and ideal-gas parameters match the subcritical calculation. The piston speed is increased to 2 × 106 cm/s. The local Cartesian adaptation uses the same box, temperature gradient, density-dependent absorption, reflecting left wall, right inflow, and transverse boundaries as the local subcritical case, with vx = −2 × 106 cm/s and default duration 7500 s. A planar wall and M1 moment closure replace the original moving spherical piston and transfer treatment.

These cases enable gas dynamics and radiation coupling on a Cartesian grid; gravity is disabled. Uniform runs are the default; adaptive runs are identified in their recorded setup. Each completed run records its actual configuration, time, units, and executable hash below. The configured finest equivalent cells per side are N = INX × 2level.

The comparison

Comparison and interpretation

No exact analytic solution is supplied. Ensman (1994), Figure 13 at t = 7.5 × 103 s, provides a numerical comparison target. Figure 10 also shows evolution at 860, 4000, 7500, and 13000 s. Differences of geometry, equation of state, opacity, or boundaries change those profiles.

Approximate analytic shock scales

For γ = 5/3, μ = 0.5, and imposed wall-frame speed U, a strong, gas-pressure-dominated adiabatic baseline gives ρ2/ρ1 = 4, shock-relative upstream speed u1 = 4U/3, wall-frame shock speed s = U/3, and T2 ≈ U²/(3R), where R = kB/(μmH) = 1.65022 × 108 erg/(g K).

For U = 20 km/s the baseline is s ≈ 6.67 km/s and T2 ≈ 8080 K. 8080 K is not the predicted plateau of the cooled radiative shock. Radiative losses can increase compression above four and change both speed and plateau temperature; Ensman's radiating calculation has a plateau near 4000 K in Figure 15, versus about 8000 K for its adiabatic comparison.

In the approximate steady supercritical, gas-pressure-dominated diffusion picture, T− ≈ T2 and T+ ≈ (3 − γ)T2 = 4T2/3. T− and T+ are the gas temperatures immediately ahead of and at the spike; these relations use the cooled downstream plateau, not the adiabatic estimate. They are qualitative checks, not exact M1 reference curves or pass/fail tolerances.

What this test measures

Look for precursor heating to the downstream equilibrium temperature, the narrow gas spike, and the asymmetric radiation flux. Ensman's developed solution includes negative radiation flux behind the shock. Refine space and time to distinguish a resolved precursor and spike from numerical smearing; a short smoke run cannot demonstrate these late-time features.

Measured results

All resolutions

LevelGridBatch status
232³Ready

These are numerical solutions without a supplied analytic reference. No error norms or convergence orders are inferred from the profiles. Short runs used for implementation checks do not establish the published late-time shock or blast structure.

32³ cells · actual final time 7.500000e+03 s

Central cell layer at z=dx/2; ray at y=z=dx/2.

Numerical Cartesian adaptation. No independent reference profile or quantitative agreement with the original spherical benchmark is established.

M1 RK1 (Euler). Physical-light-speed radiation equations (alpha = 1); c = 29979245800 cm/s.

Recorded setup and run provenance
OriginOcto-TIGER application
DomainCube of side 7.000000e+10 cm; centered at the origin
Resolution32³ cells; finest Δx = 2.187500e+09 cm
Final comparison time7.500000e+03 s
Radiation modelM1
Radiation integrationM1 RK1 (first order in time)
Flux semanticsEvolved M1 flux moment
Radiation backendcpu
Physical light speed2.997925e+10 cm/s
Reduced-speed factor α1.000000e+00
Radiation transport speed2.997925e+10 cm/s
Periodic boundariesoff
Hydrodynamicson
Gravityoff
Implicit radiation sourceon
Uniform gridon
CFL0.4
Timestep cap12.5 s
Output interval62.5 s
{
  "background": 0.0,
  "benchmark_time": 7500.0,
  "c": 29979245800.0,
  "case": "supercritical_shock",
  "cells": 32,
  "command": [
    "/ddnB/work/dmarce1/octotiger-m1-fld-20261014/campaign/control/launch-solver",
    "/ddnB/work/dmarce1/octotiger-m1-fld-20261014/build/octotiger",
    "--config_file=/ddnB/work/dmarce1/octotiger-m1-fld-20261014/campaign/runs/l2-supercritical_shock-m1/supercritical_shock/l2/run.ini",
    "--hpx:threads=64"
  ],
  "comparison_signature": {
    "atomic_mass": "1",
    "atomic_number": "1",
    "cfl": "0.4",
    "code_to_cm": "1",
    "code_to_g": "1",
    "code_to_s": "1",
    "correct_am_hydro": "off",
    "disable_analytic": "on",
    "disable_diagnostics": "on",
    "eos": "IDEAL",
    "gravity": "off",
    "hard_dt": "12.5",
    "hydro": "on",
    "hydro_device_kernel_type": "OFF",
    "hydro_host_kernel_type": "LEGACY",
    "inflow_bc": "off",
    "monopole_device_kernel_type": "OFF",
    "multipole_device_kernel_type": "OFF",
    "n_species": "1",
    "omega": "0",
    "periodic": "off",
    "problem": "RADIATION_SUPERCRITICAL_SHOCK",
    "rad_implicit": "on",
    "radiation": "on",
    "radiation_algorithm_version": 1,
    "radiation_integrator": "euler",
    "radiation_model": "m1",
    "radiation_reduced_c_factor": "1",
    "reflect_bc": "off",
    "stop_time": "7500",
    "unigrid": "on",
    "xscale": "35000000000"
  },
  "config": {
    "atomic_mass": "1",
    "atomic_number": "1",
    "cfl": "0.4",
    "code_to_cm": "1",
    "code_to_g": "1",
    "code_to_s": "1",
    "correct_am_hydro": "off",
    "datadir": "/ddnB/work/dmarce1/octotiger-m1-fld-20261014/campaign/runs/l2-supercritical_shock-m1/supercritical_shock/l2/",
    "disable_analytic": "on",
    "disable_diagnostics": "on",
    "disable_output": "off",
    "eos": "IDEAL",
    "gravity": "off",
    "hard_dt": "12.5",
    "hydro": "on",
    "hydro_device_kernel_type": "OFF",
    "hydro_host_kernel_type": "LEGACY",
    "inflow_bc": "off",
    "max_level": "2",
    "min_level": "2",
    "monopole_device_kernel_type": "OFF",
    "multipole_device_kernel_type": "OFF",
    "n_species": "1",
    "odt": "62.5",
    "omega": "0",
    "periodic": "off",
    "problem": "RADIATION_SUPERCRITICAL_SHOCK",
    "rad_implicit": "on",
    "radiation": "on",
    "radiation_backend": "cpu",
    "radiation_integrator": "euler",
    "radiation_model": "m1",
    "radiation_reduced_c_factor": "1",
    "reflect_bc": "off",
    "stop_time": "7500",
    "unigrid": "on",
    "xscale": "35000000000"
  },
  "conservation": [
    {
      "boundary": 5.8288432116921275e+26,
      "boundary_fraction": 18.983368209737538,
      "field": "er",
      "final": 1.1172847707090453e+32,
      "final_fraction": 3638771.4383802614,
      "history_end_time": 7500.0,
      "history_scope": "full_run",
      "history_start_time": 0.0,
      "initial": 3.070500001523553e+25,
      "initial_fraction": 1.0,
      "integral_units": "erg",
      "max_abs_residual": 1.7203750576555295e+18,
      "max_normalized_error": 5.6029150197098055e-08,
      "normalization_basis": "abs(initial_energy)",
      "normalization_scale": 3.070500001523553e+25,
      "normalization_time": 0.0,
      "normalized_error": 2.581447757772057e-08,
      "normalized_residual": 2.581447757772057e-08,
      "raw_change": 1.1172844636590452e+32,
      "residual": 7.926335344172073e+17,
      "source": 1.117290292502249e+32,
      "source_fraction": 3638789.421748446,
      "zero_initial_flux_relative_tolerance": 1.4210854715202004e-14
    },
    {
      "boundary": -1.0598169498894122e+46,
      "boundary_fraction": -129435387074198.97,
      "field": "fx",
      "final": 3.094605780118399e+41,
      "final_fraction": 3779440374.429513,
      "history_end_time": 7500.0,
      "history_scope": "full_run",
      "history_start_time": 0.0,
      "initial": -8.188000004062807e+31,
      "initial_fraction": -1.0,
      "integral_units": "erg cm/s",
      "max_abs_residual": 1.2676506002282294e+30,
      "max_normalized_error": 0.015481809960909053,
      "normalization_basis": "abs(initial_component)",
      "normalization_scale": 8.188000004062807e+31,
      "normalization_time": 0.0,
      "normalized_error": 0.015481809960909053,
      "normalized_residual": -0.015481809960909053,
      "raw_change": 3.094605780937199e+41,
      "residual": -1.2676506002282294e+30,
      "source": -1.0597860038316027e+46,
      "source_fraction": -129431607633823.53,
      "zero_initial_flux_relative_tolerance": 1.4210854715202004e-14
    },
    {
      "boundary": -1.3390432255734667e+24,
      "boundary_fraction": -1.4546710364696358e-12,
      "field": "fy",
      "final": 0.0,
      "final_fraction": 0.0,
      "history_end_time": 7500.0,
      "history_scope": "full_run",
      "history_start_time": 0.0,
      "initial": 0.0,
      "initial_fraction": 0.0,
      "integral_units": "erg cm/s",
      "max_abs_residual": 2.8868172870780667e+24,
      "max_normalized_error": 3.136097039207876e-12,
      "normalization_basis": "c * abs(initial_energy)",
      "normalization_scale": 9.205127427457496e+35,
      "normalization_time": 0.0,
      "normalized_error": 1.4546710364696358e-12,
      "normalized_residual": -1.4546710364696358e-12,
      "raw_change": 0.0,
      "residual": -1.3390432255734667e+24,
      "source": 0.0,
      "source_fraction": 0.0,
      "zero_initial_flux_relative_tolerance": 1.4210854715202004e-14
    },
    {
      "boundary": 1.1959140790187454e+25,
      "boundary_fraction": 1.2991825354329322e-11,
      "field": "fz",
      "final": 0.0,
      "final_fraction": 0.0,
      "history_end_time": 7500.0,
      "history_scope": "full_run",
      "history_start_time": 0.0,
      "initial": 0.0,
      "initial_fraction": 0.0,
      "integral_units": "erg cm/s",
      "max_abs_residual": 1.366264226516231e+25,
      "max_normalized_error": 1.4842425998806626e-11,
      "normalization_basis": "c * abs(initial_energy)",
      "normalization_scale": 9.205127427457496e+35,
      "normalization_time": 0.0,
      "normalized_error": 1.2991825354329322e-11,
      "normalized_residual": 1.2991825354329322e-11,
      "raw_change": 0.0,
      "residual": 1.1959140790187454e+25,
      "source": 0.0,
      "source_fraction": 0.0,
      "zero_initial_flux_relative_tolerance": 1.4210854715202004e-14
    }
  ],
  "dx": 2187500000.0,
  "executable_sha256": "ca38f12e338eed0b7074dbb15c70c089a8d31d1c12aa87f5b044c42824721f0b",
  "inx": 8,
  "length": 70000000000.0,
  "level": 2,
  "movie_capture": {
    "hard_dt": 12.5,
    "odt": 62.5,
    "requested_snapshots": 121,
    "steps_per_output_check": 5
  },
  "origin": "Octo-TIGER application",
  "physical_c": 29979245800.0,
  "radiation_algorithm_version": 1,
  "radiation_backend": "cpu",
  "radiation_equations": "physical-c",
  "radiation_flux_semantics": "evolved_m1_flux",
  "radiation_integrator": "euler",
  "radiation_model": "m1",
  "radiation_reduced_c_factor": 1.0,
  "reference_kind": "numerical-only",
  "status": "complete",
  "time": 7500.0,
  "transport_c": 29979245800.0,
  "units": {
    "chi": "1/cm",
    "energy_density": "erg/cm^3",
    "flux": "erg/(cm^2 s)",
    "length": "cm",
    "luminosity": "erg/s",
    "mass": "g",
    "source": "erg/(cm^3 s)",
    "system": "CGS",
    "time": "s"
  },
  "validation_scope": "Numerical Cartesian adaptation. No independent reference profile or quantitative agreement with the original spherical benchmark is established."
}
Numerical gas temperature, radiation temperature, and density. Central cell layer at z=dx/2; ray at y=z=dx/2.
Numerical gas temperature, radiation temperature, and density. Central cell layer at z=dx/2; ray at y=z=dx/2. · PDF
Numerical profiles; no reference curves are supplied. Central cell layer at z=dx/2; ray at y=z=dx/2.
Numerical profiles; no reference curves are supplied. Central cell layer at z=dx/2; ray at y=z=dx/2. · PDF

Saved-state movie

Supercritical Shock · L2 · M1 RK1

121 stored states; 121 shown. Physical time: 0–7500 s. Playback: 60 s.

Zero-order hold; no solution interpolation. Playback holds each saved numerical state over its time interval and includes endpoint holds.

All 121 snapshot times

Snapshot times: 0, 62.5, 125, 187.5, 250, 312.5, 375, 437.5, 500, 562.5, 625, 687.5, 750, 812.5, 875, 937.5, 1000, 1062.5, 1125, 1187.5, 1250, 1312.5, 1375, 1437.5, 1500, 1562.5, 1625, 1687.5, 1750, 1812.5, 1875, 1937.5, 2000, 2062.5, 2125, 2187.5, 2250, 2312.5, 2375, 2437.5, 2500, 2562.5, 2625, 2687.5, 2750, 2812.5, 2875, 2937.5, 3000, 3062.5, 3125, 3187.5, 3250, 3312.5, 3375, 3437.5, 3500, 3562.5, 3625, 3687.5, 3750, 3812.5, 3875, 3937.5, 4000, 4062.5, 4125, 4187.5, 4250, 4312.5, 4375, 4437.5, 4500, 4562.5, 4625, 4687.5, 4750, 4812.5, 4875, 4937.5, 5000, 5062.5, 5125, 5187.5, 5250, 5312.5, 5375, 5437.5, 5500, 5562.5, 5625, 5687.5, 5750, 5812.5, 5875, 5937.5, 6000, 6062.5, 6125, 6187.5, 6250, 6312.5, 6375, 6437.5, 6500, 6562.5, 6625, 6687.5, 6750, 6812.5, 6875, 6937.5, 7000, 7062.5, 7125, 7187.5, 7250, 7312.5, 7375, 7437.5, 7500 s.

Arrows show the independently evolved M1 radiation flux. Arrows have equal length and show direction only.

Movies show saved numerical states; no applicable analytic reference is recorded.

Central z=0+ radiation energy slice with faint cell mesh and equal-length flux direction arrows. Arrows show the independently evolved M1 radiation flux. Gray density contours and a matching density/velocity panel. Synchronized gas and radiation temperature profiles along the central x line appear below the maps. Fixed color limits; actual stored Silo times held without solution interpolation. Movies show saved numerical states; no applicable analytic reference is recorded. The maps show the full simulation domain without cropping. The temperature profile also spans the full domain.

Download MP4 · Rendering and timing metadata · Full run report

All campaign movies

Data and reproducibility

Reading the numerical profiles

Gas and radiation temperatures are distinct diagnostics; the radiation temperature is defined by E = arTr4. The central ray lies at y = z = Δx/2 and is offset from the exact origin by half a cell in each transverse direction. The two-dimensional plane is z = Δx/2.

Check positivity, the recorded-frame radiation flux envelope, conservation with the appropriate boundary budget, thermal equilibration, shock speed and precursor structure, and sensitivity to resolution and timestep. A finite, positive short run is an implementation check, not evidence that a subcritical or supercritical state has developed. Comparisons to published figures also require matching geometry, opacities, boundaries, and physical time.

Sources & provenance

Where this problem comes from

Ensman (1994), ApJ 424, 275, §5.2, Figures 10–15; original paper PDF. The subcritical and supercritical labels describe physical regimes, rather than universal velocity thresholds independent of the surrounding medium.

Radiation method context

M1 RK1 evolves radiation energy and flux moments with the retained first-order radiation update. FLD uses backward-Euler radiation diffusion/material exchange with the Levermore–Pomraning limiter. Moving cases add first-order conservative gas transport and radiation force/work; their reconstructed lab-frame flux includes (E I+P) v as well as −D∇E. The scalar implicit transport solve uses composite-grid multigrid and an iterative linear solver. Both time integrators are first order.

The suite includes Gaussian scattering, Marshak heating, a Gaussian emitter, explicit thin positive-opacity wave/front comparisons, and moving-gas shock/blast problems on CPU at physical light speed. A configured case does not establish that a solve converged; only validated completed runs appear as results. Flux diagnostics in FLD have no separate M1 momentum conservation test. A difference between paired M1 and FLD solutions is a model comparison, not an analytic error. ADER2 has been removed from the current solver; historical result files retain their original provenance.

Skinner & Ostriker (2013) and Hanawa & Audit (2014) provide context for the M1 equations. The implementation and saved executable/source hashes identify the actual numerical methods used in this batch.

Reproducing this batch

Descriptions document the reviewed source implementation. Older or edited solver versions can use different profile constants or averaging rules; these are not all encoded in run.ini. Use the run metadata, executable hash, and saved batch source hashes to identify the implementation behind a result. A source path or descriptive formula alone is not proof of the executable's contents.