OpenFOAM 14 — Guida 19: Metodi numerici avanzati e prestazioni
OpenFOAM 14 — Guide 19: Advanced numerical methods and performance
========================================================================

IT  Questo archivio contiene tutti gli script e i file di dati riportati o citati
    nell'articolo di giux-lab.it, con lo stesso contenuto pubblicato nei riquadri.
    scripts/, examples/, ... : file del pacchetto originale della guida;
    extra/                   : script e file aggiuntivi presentati nei riquadri di approfondimento.
    I file indicati come SYNTHETIC sono dati illustrativi, non risultati CFD.
EN  This archive contains every script and data file reproduced or cited in the
    giux-lab.it article, with the same content published in the boxes.
    scripts/, examples/, ... : files of the original guide package;
    extra/                   : additional scripts and files presented in the deep-dive boxes.
    Files marked SYNTHETIC are illustrative data, not CFD results.

Ordine consigliato: scripts/prepare_campaign.py, poi PRIMA del calcolo python3 extra/add_observables.py <casi>
(portate, pressioni, sonde e sforzo a parete per il punto di riattacco), poi scripts/run_case.sh <caso> <processi>.
Analisi: scripts/analyze_campaign.py, extra/residual_history.py, extra/observables.py.
Tempi: il ClockTime di OpenFOAM 14 ha la risoluzione di un secondo; per mediana e speedup usare extra/benchmark_repeats.py su casi
preparati e mai avviati, poi extra/benchmark_stats.py sui timing.csv.

Recommended order: scripts/prepare_campaign.py, then BEFORE the run python3 extra/add_observables.py <cases>
(flow rates, pressures, probes and wall shear stress for the reattachment point), then scripts/run_case.sh <case> <processes>.
Analysis: scripts/analyze_campaign.py, extra/residual_history.py, extra/observables.py.
Timings: OpenFOAM 14 ClockTime is in whole seconds; for median and speedup use extra/benchmark_repeats.py on prepared,
never-run cases, then extra/benchmark_stats.py on the timing.csv files.

Requisiti / Requirements: OpenFOAM Foundation 14 on Linux; Python 3 (standard library) unless stated in the script.
Line endings: LF. Se si modificano gli script su Windows, salvarli con fine riga LF (Notepad++: Modifica > Conversione fine riga).
Licenza / Licence: script GNU GPL v3 or later (COPYING_GPLv3.txt). I tutorial OpenFOAM non sono inclusi:
gli script li copiano dall'installazione locale. / OpenFOAM tutorials are not bundled: the scripts copy them from the local installation.

Contenuto / Contents
------------------------------------------------------------------------
examples/measurements_template.csv
    empty template for the ParaView measurements of the six cases (package file)
extra/add_observables.py
    Add the Guide 19 physical observables to NEW, never-run pitzDailySteady copies.
extra/benchmark_repeats.py
    Repeated, timed runs of one prepared Guide 19 case (OpenFOAM 14).
extra/benchmark_stats.py
    Speedup statistics from the timing.csv files of benchmark_repeats.py.
extra/case_estimates.py
    A-priori numbers for the pitzDailySteady campaign (OpenFOAM 14).
extra/functions_guide19
    system/functions of pitzDailySteady after add_observables.py: tutorial streamlines + flow rates, pressures, probes, wall shear stress graph
extra/make_synthetic_campaign.py
    SYNTHETIC test data for the Guide 19 parsers - NOT OpenFOAM results.
extra/observables.py
    Physical observables of the Guide 19 campaign from the add_observables.py monitors.
extra/residual_history.py
    Residual and cost histories of the Guide 19 campaign from log.foamRun.
scripts/analyze_campaign.py
    Parse solver logs and optionally plot MPI speedup; no CFD execution performed.
scripts/prepare_campaign.py
    Prepare isolated OpenFOAM 14 numerical-method and MPI experiments.
scripts/run_case.sh
    Run an unexecuted prepared case. Never clean or replace earlier data.

SHA-256
------------------------------------------------------------------------
384f697179a8c7cd9497a31d2c8510aa0649b145035c72163123666bb7dcdc56  examples/measurements_template.csv
82e97a0718c1b3d4bd21ac78bf287c967d54455a623d87a3774f63a7604e6e47  extra/add_observables.py
2cd2f6f02151e03670c2b7e9ba25e53ddfcb8e43ca46501f45c1c6f213ac627d  extra/benchmark_repeats.py
26257bcff80df77a0d6720a4ac4830a9c7ea33d1d7881aa53fcbc08b9f2b5a48  extra/benchmark_stats.py
94f5965a41a1c61f50d4a480f707aca9516cd92423c2f1ce9724985150a3d63b  extra/case_estimates.py
7512a8f73eecc2e03333973e43ac164ab78f9c5d10f4da2f7ac1ce771294cfc4  extra/functions_guide19
ba5e05d0724c4d52fa1ad5993fda26743c6f04b8535f1e75e77565dc881ae26c  extra/make_synthetic_campaign.py
38ac7da313a940e68044d0ad1b12c6114a1228093b9958146309a3dd925b366c  extra/observables.py
9d4d30a70f4dd45a53d1d927ad179b5d38457e86d6328eedaba8d555cd81ee9a  extra/residual_history.py
d4298d0eeda8779962910410c1c36e6543af381f2fec2f07ffd77773591c6532  scripts/analyze_campaign.py
6ce647b5f88dc8d2b3edfd18400ebf4b65bdabcfb9372d70b0f380b7f50a0d52  scripts/prepare_campaign.py
8c02362efa0db6099d443e5d44f6276abfbb32d74e25162ff25e4d55396bf6ac  scripts/run_case.sh
