OpenFOAM 14 — Guida 20: Progetto CFD conclusivo: reattore a canale con inserto poroso
OpenFOAM 14 — Guide 20: CFD capstone: channel reactor with a porous insert
========================================================================

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 (da questa cartella): python3 exercises/prepare_campaign.py --out run01, poi PRIMA del calcolo
  python3 extra/add_monitors.py run01/U*
(pressioni sui piani a 35 e 85 mm, portate, profili, residui scritti dal solutore), poi per ogni caso
  bash extra/run_case_checked.sh "$(pwd)/run01/<caso>"   (oppure exercises/run_case.sh).
Misure: extra/extract_measurements.py, poi exercises/analyze_measurements.py, extra/campaign_fit.py.
Valori attesi: extra/case_estimates.py, extra/fully_developed.py. Mesh: extra/prepare_mesh_series.py, extra/gci.py.
Reazione risolta in OpenFOAM (facoltativo, su casi mai avviati): extra/add_reaction_tracer.py.

Recommended order (from this folder): python3 exercises/prepare_campaign.py --out run01, then BEFORE the run
  python3 extra/add_monitors.py run01/U*
(pressures on the 35 and 85 mm planes, flow rates, profiles, residuals written by the solver), then for every case
  bash extra/run_case_checked.sh "$(pwd)/run01/<case>"   (or exercises/run_case.sh).
Measurements: extra/extract_measurements.py, then exercises/analyze_measurements.py, extra/campaign_fit.py.
Expected values: extra/case_estimates.py, extra/fully_developed.py. Mesh: extra/prepare_mesh_series.py, extra/gci.py.
Reaction solved in OpenFOAM (optional, on never-run cases): extra/add_reaction_tracer.py.

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
------------------------------------------------------------------------
exercises/README_IT_EN.md
    package README (IT/EN)
exercises/REPORT_TEMPLATE_EN.md
    report template (English)
exercises/REPORT_TEMPLATE_IT.md
    report template (Italian)
exercises/analyze_measurements.py
    Convert actual ParaView observations to traceable hydraulic and kinetic estimates.
exercises/measurements_template.csv
    empty template for the ParaView measurements of the six cases (package file)
exercises/prepare_campaign.py
    Create independent reactor cases without changing the template or older runs.
exercises/run_case.sh
    Execute one fresh case; refuse already-started cases without deleting files.
exercises/snapshot_inputs.py
    Record SHA-256 hashes of the relevant case inputs without modifying them.
exercises/template/0/U
    template case file (copied by prepare_campaign.py)
exercises/template/0/p
    template case file (copied by prepare_campaign.py)
exercises/template/constant/coordinateSystems
    template case file (copied by prepare_campaign.py)
exercises/template/constant/fvModels
    template case file (copied by prepare_campaign.py)
exercises/template/constant/momentumTransport
    template case file (copied by prepare_campaign.py)
exercises/template/constant/physicalProperties
    template case file (copied by prepare_campaign.py)
exercises/template/system/blockMeshDict
    template case file (copied by prepare_campaign.py)
exercises/template/system/controlDict
    template case file (copied by prepare_campaign.py)
exercises/template/system/createZonesDict
    template case file (copied by prepare_campaign.py)
exercises/template/system/fvSchemes
    template case file (copied by prepare_campaign.py)
exercises/template/system/fvSolution
    template case file (copied by prepare_campaign.py)
extra/add_monitors.py
    Install the Guide 20 measurement monitors in NEW, never-run reactor cases.
extra/add_reaction_tracer.py
    Couple a first-order reaction to the Guide 20 CFD: reacting passive scalar in reactorBed.
extra/bed_equivalence.py
    What physical bed could a Darcy coefficient d represent? Ergun equivalence and reactor regimes.
extra/campaign_fit.py
    Exercise B: dP(U) fits, insert contribution and apparent permeability from the measured campaign.
extra/case_estimates.py
    A-priori numbers of a Guide 20 reactor case, read from its dictionaries.
extra/extract_measurements.py
    Fill the Guide 20 measurements CSV from the monitors written by add_monitors.py.
extra/fully_developed.py
    Fully developed laminar flow in the Guide 20 cross-section, empty duct and porous bed.
extra/functions_guide20
    system/functions written by add_monitors.py: patch flow rates, inlet pressure, p and phi on the planes x = 35, 60, 85 mm, centreline and transverse profiles, residuals
extra/gci.py
    Grid Convergence Index of one observable on three meshes (Celik et al. 2008, ASME JFE procedure).
extra/make_synthetic_monitors.py
    test helper: SYNTHETIC postProcessing files and log in the OpenFOAM 14 layout, to try the scripts before a real run (NOT OpenFOAM output)
extra/prepare_mesh_series.py
    Exercise C: copies of one fresh reactor case on refined and coarsened meshes.
extra/run_case_checked.sh
    Guide 20: run one fresh reactor case like scripts/run_case.sh (same refusal of

SHA-256
------------------------------------------------------------------------
5625d8a9727a96a2cd33bc15d283cf0af4c833d04411a441a72be518a56f785a  exercises/README_IT_EN.md
e7c75b6d4ce8c2e057a26c6a01f3d148cbd2243190aa8d2c516adddcbbb61ee7  exercises/REPORT_TEMPLATE_EN.md
9e92ceba9bf3446a8f2494ea0b284e5c99767b3d07f5a2bbd239fdaa7d696f15  exercises/REPORT_TEMPLATE_IT.md
3981844c2d1b25ee685bc3ac44e3ebb90e63c8af28dc521969ac43b8e6583d69  exercises/analyze_measurements.py
732864b489307199693201d3b59d1979fb8fe899074c45845a4ef6d563857b8c  exercises/measurements_template.csv
12b3b0cd5fed1e40620c274225a002a0f22a843e1a358b8dc9288dcbe7b91f3b  exercises/prepare_campaign.py
c88736b210e66682aecb9a282d722bfe7ec683196554adc2e690ad60bdf61029  exercises/run_case.sh
0537fd6eadfedaa2a36f936f1fee3219195adda086efb472dfd2a0a28b0d9604  exercises/snapshot_inputs.py
881a0385df5edea2d8a048ed3cef48b502e8bee586129264d7031bfacc8bb1fd  exercises/template/0/U
26449e94cd29f4b86fd8ca25ab5eff211c5e1f58c894aaa23f0251aef57cf7ea  exercises/template/0/p
846fd135ac00886759e78d16e3d2679cde54c8ceefb12cae7cf5117eb2fe7e79  exercises/template/constant/coordinateSystems
d9eee9cb4d729d00ec7be8875ff4bf533bf63ff6e3b579f78e838643a8e33669  exercises/template/constant/fvModels
cf6a0b17b99292435b53da77fe388411c7c6e8e4c2155bbff7d756c8450e50fc  exercises/template/constant/momentumTransport
d197d5963193685cbc52da77290fe2bacd07f93d661a9ae1b069aaa683aadf1b  exercises/template/constant/physicalProperties
ba06ed575a1c8932262af06eb9b007812e83ed8784bfc8d9479e0c00b5e2e4a2  exercises/template/system/blockMeshDict
9d3e50f78ff03cc4c2286d93b50d18972d7753535a6e2fcb2f74e84e5ad4f909  exercises/template/system/controlDict
c6f2af12eb154f4512db843b289c40de177003e5217ed2a076848e7d968463e7  exercises/template/system/createZonesDict
62781a9ea76be2d8350c4883255a6eb9d21c645101bab86272829208b46a9e04  exercises/template/system/fvSchemes
5f85be4ed35e4fa901a838a63f7bf04d9decc5c27819790923d87549d67662cd  exercises/template/system/fvSolution
74d061dd4fb86ee771084a31b2420d15aa2e83d9d3200b7d2ee810511f54f18a  extra/add_monitors.py
556ab85e7921445ac3e2190d17e44cabcd26a7daa193f8b0a93207c7aa4ee03b  extra/add_reaction_tracer.py
fd93772f5f3ea8c554c7cff01e9302f9a62961716029e3e2867f21979cb785d3  extra/bed_equivalence.py
e33254f735be47dfa3eee45cd53fb340bb5269f73a1f4a990e6e6bc41221b9e4  extra/campaign_fit.py
951fad0bf427c3393a15a8de02823f13e7a870b6fbe52e99a90e7cf2b7ec8237  extra/case_estimates.py
f5d6286f54f09fbcdccd8e0dfbf169a530db85bd9908e66a84f6e05d103cd5e1  extra/extract_measurements.py
61e06256faf24ff54de037d5cda7e03af369e48898c0cdb3a27d49936560c534  extra/fully_developed.py
31ad364abcfb7858e4b60d5bc14e2f33dd746da70c0ae2526f0869401a5291ca  extra/functions_guide20
d602df6febc44194cf5434163258377ffc6b432033393ffa929edb8106272265  extra/gci.py
86a40d6d8f4ec2c80e77e43ad6edb26638725198de9d106ba6102b9a4c534899  extra/make_synthetic_monitors.py
0157f631d32a0f8ce8962a21c5024f728f9e10671c1272dec8d2ebbdce0bedcd  extra/prepare_mesh_series.py
353c2c8eed09fb95875623179b55a56c54b5dac65aea97d93d506eaa303d964e  extra/run_case_checked.sh
