|
PICurv 0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
|
This page records phased architectural direction and is retained for explicit review and approval. It prevents design decisions from being lost between independently reviewed branches. A specification on this page is not a statement that its YAML or file format is currently accepted by PICurv.
| Specification | Status | Dependency |
|---|---|---|
| Field Identity and Layout Catalog | implemented on main | none |
| Field Statistics Pipeline Specification | Phase 1 implemented, awaiting review and merge; Phase 2 specified but not implemented | field catalog |
| Function Identity and Observability Specification | deferred, independently benchmarked | none |
The field-catalog phase established typed Eulerian and particle identities, layout metadata, and existing-vector views without changing vector ownership. That is the required correctness foundation for statistics on shifted, face-centered, and component-staggered fields.
Future architectural work must:
Strings remain correct at true ingress and presentation boundaries. Runtime systems resolve them once into the typed identity appropriate to that system; PICurv does not use one universal ID namespace for fields, functions, boundary handlers, and postprocessing operations.
The statistics work will add reusable completed-state scheduling and field-layout-aware reducers shared where useful by scientific statistics and rolling physical-solution monitoring. It will preserve existing logger formats and PETSc monitors, accumulate numerically stable centered primitive moments online, and derive Reynolds stresses, RMS, TKE, turbulent fluxes, and normalized outputs in postprocessing.
The current Phase 1 foundation keeps control as the single generated C-ingress artifact, moves convergence policy to monitor.yml -> solution_monitoring.convergence, and removes rather than wraps the legacy -averaging/su* system. It deliberately exposes no scientific window YAML before the accumulator, checkpoint, and postprocessor path is usable. The committed-checkpoint contract and its coordinator, validator, and restart discovery are implemented, which completes Phase 1.
The authoritative design, YAML placement, checkpoint naming, restart rules, and implementation phases are in Field Statistics Pipeline Specification.
Function logging/profiling identity is deliberately separate. It may replace repeated function-name scans with compile-time IDs or cached handles only after benchmarks show that the lookup overhead is material. It does not block the statistics pipeline. See Function Identity and Observability Specification.
Specification-only work uses a documentation branch. Implementation begins only after explicit plan approval, from current main, and each completed phase is merged before the next phase branch is created. A later phase must not rely on unreviewed changes in another long-lived branch.