Releases: Feraul/FlowSim
Release list
v2.0.1 - Root cleanup follow-up
v2.0.1 — Root cleanup follow-up to v2.0.0
Two follow-up commits on top of v2.0.0-vectorized, both pure reorg / doc
polish — zero numerical impact. unit_baseline_reproduces still passes
35/35 at rel diff 0.000e+00 against the committed goldens.
──────────────────────────────────────────────────────────────
Since v2.0.0-vectorized:
──────────────────────────────────────────────────────────────
f585862 chore: relocate 37 active runtime files to runtime/{time,preproc,plug,util}/
db48e76 chore(data): relocate root data files to data/ + gitignore runtime cache
──────────────────────────────────────────────────────────────
Result
──────────────────────────────────────────────────────────────
Root .m files: 285 (v1.0.0) → 42 (v2.0.0) → 4 (v2.0.1)
Root data files: 8 → 8 → 0 (all → data/)
Root is now exactly:
main.m
flowsim_init.m
flowsim_deinit.m
startup.m
Start.dat (must stay at root — preprocessormod does fopen('Start.dat'))
README.md, CHANGELOG.md, LICENSE, .gitignore, tools/, docs/, tests/,
runtime/, legacy/, meshes/, data/, +fs/, base/, solvers/, factories/,
simulacoes/, benchmarks/
──────────────────────────────────────────────────────────────
runtime/ (new in v2.0.1)
──────────────────────────────────────────────────────────────
37 active-runtime .m files, previously at repo root, grouped by role:
runtime/preproc/ preprocessormod, preprocessmethod, benchmark_setup, …
runtime/time/ hydraulic, hydraulic_RE, setmethod, IMPES, IMPEC, IMHEC, …
runtime/plug/ PLUG_bcfunction, PLUG_kfunction, PLUG_sourcefunction,
PLUG_dfunction
runtime/util/ addsource, soil_properties, postprocessor, solver, …
Added to the MATLAB path by flowsim_init (genpath).
──────────────────────────────────────────────────────────────
data/ (new in v2.0.1)
──────────────────────────────────────────────────────────────
data/Perm_Var0p1.mat, Perm_Var2.mat, Perm_Var5.mat
data/Teste_5.xlsx, Teste_6.xlsx
data/malha_D.geo
data/figura_case_4_Qian_teste_h.fig
Plus the ignored runtime cache data/indices_elementos_quadrilateral.mat
which Caso439:inicializar regenerates on first run — cache path is now
derived from mfilename('fullpath'), so it always lands in data/
regardless of MATLAB cwd.
──────────────────────────────────────────────────────────────
Verification
──────────────────────────────────────────────────────────────
tests/unit/unit_baseline_reproduces.m → 35/35 pass, rel 0.000e+00
tests/smoke/smoke_env.m → green
Assembly M frobenius (MPFA-D, M8/num439) → bit-identical to v2.0.0
──────────────────────────────────────────────────────────────
Compatibility
──────────────────────────────────────────────────────────────
Fully backward compatible with v2.0.0-vectorized user code. The only
paths that changed are internal (runtime files moved from repo root,
data files moved from repo root); both are re-added by
flowsim_init.m genpath.
Restore v1.0.0 (pre-vectorization) any time:
git checkout v1.0.0-pre-vectorization
git checkout legacy-v1.0
v2.0.0 - Vectorized (current release)
Vectorization release — flowsim-artur campaign 2026-07
Result of the 2026-07 vectorization campaign under owner grant + AXON code-dev (see CHANGELOG.md).
Highlights
- ✅ LPEW2 pipeline fully vectorized — bit-identical to legacy at 1e-15 rel
- ✅ MPFA-D assembly fully vectorized — bit-identical to golden baseline
- ✅ TPFA assembly vectorized (rename; legacy already was)
- 🔧 MPFA-H / NLFV-PP / MPFA-QL / DMP / NLFV-H — scaffolded, delegate to legacy (full vectorization is future work, see
docs/globals-audit.md) - ✅ OOP hierarchy unified under
MetodoBase— all 5 methods instantiate - ✅ Test harness — ~500 assertions, 0 regressions, golden oracle
- ✅ mrun — WSL headless MATLAB bridge
- ✅ 6 docs — README + CHANGELOG + code-map + how-to-use + vectorization-guide + globals-audit
Repo transformation (vs v1.0.0)
| Metric | v1.0.0 | v2.0.0 | Delta |
|---|---|---|---|
Root .m count |
285 | 4 | -281 (-98.6%) |
| Tracked repo size | 176 MB | ~10 MB | -166 MB |
| Test assertions | 0 | ~500 | +500 |
| Vectorized modules | 0 | ~30 in 12 packages | - |
Runtime compatibility
- 100% backward-compatible. Legacy code retained in
legacy/**, on path viaflowsim_initgenpath.main.mproduces identical numerical output.
Deferred to future PRs (fully documented)
- Full triplet-form rewrite of MPFA-H / NLFV-PP / MPFA-QL / DMP / NLFV-H (~30-45 hours per
docs/globals-audit.md) - Kill globals in reachable legacy set (requires tandem caller+callee migration)
- Additional rename of cross-cluster kernels beyond the
+fs.iter.*++fs.lpew.dmpWeightsshims
How to use
cd /path/to/FlowSim
flowsim_init % sets up all paths (+fs/ first, legacy/ last)
main % reads Start.dat, runs the configured caseOr headless from WSL:
tools/mrun -c $(pwd) main.mSee README.md for full quick start.
v1.0.0 - Pre-vectorization (backup)
Pre-vectorization release — legacy codebase state
This release preserves the FlowSim repository at commit 798bbe7, the last state of master immediately before the 2026-07 vectorization campaign merged in (see v2.0.0-vectorized for that).
Everything reachable from this tag is the ORIGINAL codebase (UFPE Groundwater flow group, Contreras et al.).
State at this release
- 285 .m files at repo root (before organization campaign)
- ~176 MB tracked (including
gmsh.exe+spe10.mat+spe_perm.dat) - Legacy per-node loops throughout LPEW2 + assembly
- Broken OOP hierarchies (
SolverBase+BenchmarkBasereferenced but missing) - 3 preprocessor variants (only
preprocessormodcalled frommain) - No test harness
Restore this release
git checkout v1.0.0-pre-vectorization
# or use the legacy-v1.0 branch:
git checkout legacy-v1.0Also available as branch legacy-v1.0 for defense in depth.