Architecture
Ownership boundary
AIMORA.jl
├── core, models, studies, I/O public engineering interfaces
└── numerical backend boundary separately distributed capability
BPAEMTPReference.jl public historical reference
AIMORACases.jl public canonical cases
AIMORACatalogs.jl public model dataPublic APIs define typed inputs, state ownership, study orchestration, and physical results without exposing distribution internals.
Numerical backends
CPU execution is the portable baseline. Existing CUDA batching is an optional, validated path rather than the architecture boundary. Additional GPU families should use backend-neutral Julia kernels where measurement supports them, with explicit capability detection and CPU fallback. “Any GPU” is not claimed until AMD, Intel, Apple, and other selected backends have individual tests.
Package layers
- Deck and project intake validates physical data and units.
- Typed domain models own assets and study-specific facets.
- Study orchestration selects validated numerical owners.
- Solvers mutate explicit state and produce physical results.
- Reporters export quantities with units, bases, and assumptions.
The GUI must consume these APIs rather than creating a second model schema.