Skip to content

Releases: Feraul/FlowSim

v2.0.1 - Root cleanup follow-up

Choose a tag to compare

@arturcastiel arturcastiel released this 03 Jul 16:55

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)

Choose a tag to compare

@arturcastiel arturcastiel released this 03 Jul 16:37

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 via flowsim_init genpath. main.m produces 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.dmpWeights shims

How to use

cd /path/to/FlowSim
flowsim_init          % sets up all paths (+fs/ first, legacy/ last)
main                  % reads Start.dat, runs the configured case

Or headless from WSL:

tools/mrun -c $(pwd) main.m

See README.md for full quick start.

v1.0.0 - Pre-vectorization (backup)

Choose a tag to compare

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 + BenchmarkBase referenced but missing)
  • 3 preprocessor variants (only preprocessormod called from main)
  • No test harness

Restore this release

git checkout v1.0.0-pre-vectorization
# or use the legacy-v1.0 branch:
git checkout legacy-v1.0

Also available as branch legacy-v1.0 for defense in depth.