Skip to content

ADC-461 Spec 3 board-DSL demonstration case (spec3_board) - #51

Open
wolf75222 wants to merge 1 commit into
masterfrom
adc-461-spec3-board-demo
Open

ADC-461 Spec 3 board-DSL demonstration case (spec3_board)#51
wolf75222 wants to merge 1 commit into
masterfrom
adc-461-spec3-board-demo

Conversation

@wolf75222

Copy link
Copy Markdown
Owner

Fixes ADC-461 (part of the Spec 3 epic, adc_cpp ADC-450).

Spec 3 in adc_cpp adds a blackboard facade (adc.physics.Model + adc.math) that lowers to the operator-first kernel (adc.model.Module + adc.time.Program). adc_cases is the consumer of the adc DSL. Existing cases use adc.System / adc.dsl / adc.AmrSystem and are unaffected (the facade is purely additive; adc.dsl is unchanged). This adds a demonstration of the new facade from the application side.

What

spec3_board/ (run.py + README.md, registered in cases_manifest.toml, category=tutoriel, ci=true, needs=[]):

  • authors an Euler-Poisson-Lorentz model at the blackboard;
  • asserts it lowers to a typed adc.model.Module (StateSpace U(rho,mx,my), FieldSpace, explicit_rate = local_rate (U,Fields)->Rate(U), implicit_operator = local_linear_operator Fields->LocalLinearOperator(U,U));
  • asserts a board time step produces IR identical to the explicit operator-first step (the anti-duplication guarantee).

CI-light: builds IR only (no compile). adc_cases CI builds adc_cpp master, which now exposes the board API (adc.physics/math/lib, merged in adc_cpp #280/#281).

Validation (local)

  • python3 check_cases.py -> OK (19 cases, all documented, manifest coherent, 0 em-dash).
  • PYTHONPATH=<adc_cpp master build>/python python3 spec3_board/run.py -> exit 0 (board IR == operator-first IR).
  • ruff clean.

A compile+run board case (Python describes, C++ executes end to end) is a follow-up (needs=["cxx"] + Kokkos).

Spec 3 (adc_cpp) adds a blackboard facade (adc.physics.Model + adc.math)
that lowers to the operator-first kernel (adc.model.Module +
adc.time.Program). adc_cases is the consumer of the adc DSL; existing
cases use adc.System / adc.dsl / adc.AmrSystem and are unaffected (the
facade is additive). This case demonstrates the new facade from the
application side.

spec3_board/ (tutoriel, ci=true, needs=[]) authors an
Euler-Poisson-Lorentz model at the blackboard, checks it lowers to a
typed Module (StateSpace U, FieldSpace, explicit_rate local_rate,
implicit_operator local_linear_operator), and asserts a board time step
produces IR identical to the explicit operator-first step -- the Spec 3
anti-duplication guarantee. It builds IR only (no compile); adc_cases CI
builds adc_cpp master, which exposes the board API. A compile+run board
case is a follow-up (needs cxx + Kokkos).

Fixes ADC-461.
@wolf75222
wolf75222 force-pushed the adc-461-spec3-board-demo branch from 50043c6 to 96e69a4 Compare June 24, 2026 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant