Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Numerical reproduction for the Dirichlet half-space SAS

This repository contains the maintained modern Fortran numerical core, its 25-test regression suite, and generators for the data underlying Figures 1--2 and Tables 2, S1, S2, and 3. The checks use only files in this repository.

Reproduce the deterministic results

System prerequisites are GNU Fortran, GNU Make, Python, pdflatex, pdftops, pdfinfo, and pdffonts. Install the pinned Python dependency in an isolated environment, then run all deterministic checks:

python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
make PYTHON=.venv/bin/python check

The core test can be run separately:

make check-core

The aggregate reproducer creates a temporary results/ tree, regenerates every deterministic artifact, compares it with the reference outputs, and removes the temporary tree when it finishes:

python3 reproduce/check_all.py

Individual generators require an explicit output location. Each location must not already exist:

python3 reproduce/generate_figures.py --check --output-dir results/figures
python3 reproduce/generate_table2.py --phase check --output-root results/table2
python3 reproduce/generate_table_s1.py --check --output-dir results/table_s1
python3 reproduce/generate_table_s2.py --check --output-dir results/table_s2
python3 reproduce/generate_table3.py --check --output-dir results/table3

PDF and EPS files are generated locally from the TeX and regenerated CSV data rather than stored in the repository, because their metadata can vary across toolchains. Cross-platform comparisons use the deterministic CSV and TeX sources.

Timing is a separate experiment

Table 2 accuracy is deterministic and is part of check_all.py. Wall-clock or CPU timing is sensitive to compiler, CPU, power state, and system load, so the nine-run timing phase is not launched by make check or check_all.py. The included Table 2 timing CSVs record a controlled run. The aggregate checker verifies all nine numerical outputs and independently recomputes the reported per-point medians and paired speed-ups without rerunning the benchmark.

The timing command is currently macOS-specific because its automatic power-state checks use /usr/bin/pmset, /usr/bin/osascript, and /usr/sbin/system_profiler. Run it deliberately on a controlled macOS host with a new output root:

python3 reproduce/generate_table2.py --phase timing \
  --output-root results/table2-timing \
  --power-attestation "AC power confirmed; performance state recorded"

Timing results should be interpreted with their recorded environment. Timing files are not expected to match by hash after rerunning on a different machine.

Verify the files

claims/paper_claims.json maps each deterministic claim family to its generator and reference artifacts. SHA256SUMS covers every intended public file except the checksum file itself. Verify it with:

shasum -a 256 -c SHA256SUMS

License

All contents of this repository, including the source code, numerical reference data, and plotting sources, are released under the MIT License. See LICENSE.

About

Modern Fortran code and numerical reproduction materials for a Dirichlet half-space semi-analytical heat-transfer solution.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages