Skip to content

Developer guide

Use the table to locate the component that owns a change. Read its architecture contract before editing.

Change Start here Continue with Verify with
Python declaration or validation packages/foamnordic/foamnordic/core/ packages/foamnordic/foamnordic/execution/ test_graph.py, test_plan.py
Closure or equation boundary src/foamnordic/openfoam/closureHook.H src/foamnordic/openfoam/models/ Python contract tests, OpenFOAM build, solver smoke test
Generic field transform src/foamnordic/openfoam/fjordExchange.C fieldBridge.C, operations/ test_graph.py, test_plan.py, tests/openfoam/
Observation src/foamnordic/backend/adapter/observation.hpp fieldProgramObservation.C tests/backend/adapter/, test_run.py
Exchange or data plane src/foamnordic/backend/communication/ src/foamnordic/backend/adapter/exchange.cpp tests/backend/communication/, tests/backend/adapter/
ModelHost execution src/foamnordic/backend/inference/ packages/bindnordic/ tests/backend/inference/, packages/bindnordic/tests/native/
FNOM or scaler semantics packages/bindnordic/src/bindnordic/ packages/foamnordic/foamnordic/export.py BindNordic native and Python artefact tests
Launch or placement packages/foamnordic/foamnordic/execution/ src/foamnordic/runtime/ test_launch.py, test_slurm.py, tests/runtime/

Change route

  1. Locate the owning component and read its local README and architecture contract.
  2. Change that component and add relevant behavioural coverage; avoid duplicating numerical or lifecycle logic.
  3. Follow the verification guide and update affected API or usage documentation.

Stable boundaries

Keep equations in OpenFOAM, model execution in ModelHost and BindNordic, exchange in Fjord and Harbor, and orchestration in Longship. Observations remain non-blocking. The architecture principles define these boundaries.

Guides

Guide Use it for
Field programmes and OpenFOAM Closures, transforms, native algebra, observations and external solver adapters
OpenFOAM source style Formatting and reviewing OpenFOAM-linked C++ without changing runtime design
Native runtime Rune, Fjord, Harbor, ModelHost, Smedja, BindNordic and connectors
Verification Selecting the smallest sufficient local, OpenFOAM, MPI and Roihu checks
Documentation site Building and publishing the Zensical site on GitHub Pages