Skip to content

xubonan/code_for_CoDeS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoDeS paper reproducibility code

This folder is a compact release tree for the code and case setups used in the CoDeS paper: A Compression-Directional Entropic Stress Method for Shock-Regularized Compressible Flow

https://arxiv.org/abs/2605.21444

The solver code is based on FIGR. The included figr/ directory contains the source and build toolchain needed to build the solver variant used for the paper examples. Large generated data files are intentionally not included.

Cite us:

@misc{xu2026compressiondirectionalentropicstressmethod,
      title={A Compression-Directional Entropic Stress Method for Shock-Regularized Compressible Flow}, 
      author={Bonan Xu and Chihyung Wen},
      year={2026},
      eprint={2605.21444},
      archivePrefix={arXiv},
      primaryClass={physics.flu-dyn},
      url={https://arxiv.org/abs/2605.21444}, 
}

Standing on the shoulders of giants

The code is modified from: https://github.com/sbryngelson/figr

This method is developed based on the following works, if you have interest on our work, you should also cite the following works:

R. Cao and F. Schäfer, "Information geometric regularization of the barotropic Euler equation," SIAM Journal on Scientific Computing, 2026. 
R. Cao and F. Schäfer, "Information geometric regularization of unidimensional pressureless Euler equations yields global strong solutions," 
B. Wilfong, A. Radhakrishnan, H. Le Berre, D. J. Vickers, T. Prathi, N. Tselepidis, B. Dorschner, R. Budiardja, B. Cornille, S. Abbott, F. Schäfer, and S. H. Bryngelson, "Simulating many-engine spacecraft: Exceeding 1 quadrillion degrees of freedom via information geometric regularization," Proceedings of SC '25: The International Conference for High Performance Computing, Networking, Storage and Analysis, 14–24, 2025. 

Contents

figr/                 FIGR-based solver source and build toolchain
cases/1d/             Standalone 1D finite-volume prototype and 1D plotting
cases/2d/riemann/     2D Riemann comparison case setups and plotting
cases/2d/viscous_shock_tube/
cases/2d/triple_point/
cases/2d/slot_jet/
cases/2d/isentropic_vortex/
cases/2d/chapelier_tgv/

Only source code, case configuration files, post-processing scripts, and plotting scripts are copied here. Restart files, Silo/HDF5 files, CSV outputs, NPZ diagnostics, generated figures, logs, and build products are excluded.

Paper cases included

  • 1D smooth isentropic simple-wave expansion.
  • 1D double rarefaction.
  • 1D Sod shock tube.
  • 2D Riemann problem: CoDeS, scalar IGR, and MFC WENO/LF reference setups.
  • 2D viscous shock tube.
  • 2D triple-point problem.
  • 2D slot-jet / Mach-disk problem using the corrected symmetric-fallback run.
  • 2D isentropic-vortex quantitative comparison.
  • Compressible Taylor-Green-vortex / Chapelier comparison histories.

Some filenames and internal options still contain the legacy name CES. Manuscript-facing text and figure labels use CoDeS.

Build FIGR

From the release root:

cd figr
./figr.sh build -j 8

For GPU builds, use the normal FIGR build options for your machine. See figr/README.md for the upstream build interface.

Run a 2D case

Run a FIGR case by passing the case file path to the included solver driver. For example, from the release root:

./figr/figr.sh run cases/2d/triple_point/setups/01_CoDeS_triple_point_smooth015_igr7_flux7/case.py -n 4 -t pre_process
./figr/figr.sh run cases/2d/triple_point/setups/01_CoDeS_triple_point_smooth015_igr7_flux7/case.py -n 4 -t simulation

The required MPI rank count depends on the case and grid. Use the values in the paper as the reference for production reproduction runs.

The MFC reference case.py files are included for transparency. Re-running those baselines requires a separate MFC installation; MFC itself is not vendored in this compact release.

Run 1D examples

The 1D examples are standalone Python scripts:

cd cases/1d
python3 ces_igr_smooth_simple_wave_accuracy.py --ns 40,80,160,320 --order 7 --c-alpha 2 --time-integrator rk4 --dt-power 2
python3 ces_igr_double_rarefaction_test.py --n 200 --order 7 --c-alpha 2 --smooth-cells 1
python3 ces_igr_1d_fvm_highorder.py --problem sod --model ces --n 400 --order 7 --c-alpha 2 --smooth-cells 2

The plotting script plot_1d_paper_results.py expects the corresponding CSV outputs to exist in the same relative output directories used by the scripts.

Plotting

Each 2D case folder contains the plotting or post-processing script used for the paper figures, for example:

python3 cases/2d/riemann/make_jcp_riemann_figures.py
python3 cases/2d/slot_jet/make_jcp_slot_jet_figures.py
python3 cases/2d/chapelier_tgv/plot_chapelier_our_six_cases.py

These scripts require the solver output data produced by the corresponding case runs. Because the raw data are too large for GitHub, the scripts are included for reproducibility but the generated arrays/restarts are not.

Python dependencies

Install the plotting and post-processing dependencies with:

python3 -m pip install -r requirements.txt

The FIGR toolchain has additional compiler/MPI/CMake requirements described in figr/README.md.

License

This paper-code release is distributed under the MIT License. The included FIGR-based solver code also reports MIT licensing in figr/README.md.

About

The official code for "A Compression-Directional Entropic Stress Method for Shock-Regularized Compressible Flow" https://arxiv.org/abs/2605.21444

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors