Stage: KIM forced-periodicity integration
Source language: Fortran, CMake, and documentation
Manuals to read first: #175 and children #185-#190; PRs #177-#184; docs/plans/2026-07-10-kim-forced-periodicity-design.md; KIM/README.md
Depends on: #37, #185, #186, #187, #188, #189, #190
Goal
Rebase the verified feature/kim-forced-periodicity implementation onto current main, select reusable parts of PRs #177-#184 without mixing Krook and FP semantics, and open one reviewable FP integration PR with CI and user documentation.
Files to edit
KIM/src/CMakeLists.txt: register the final modules and tests once, without duplicate periodic implementations.
KIM/README.md: document the run type and supported physics. Add separate configuration, generated-field, limitation, and benchmark sections.
.github/workflows/: extend the existing KIM checks only where the accepted benchmark requires it.
Behavior to implement
Keep a single public periodic run type. Preserve the hat solver. Use explicit collision-model dispatch: Krook must call Krook kernels and FP must call the independently verified FP kernels. Resolve duplicate periodizers, drivers, Fourier grids, and solve modules by documented selection, not by retaining both hidden implementations. Preserve CGS units, Fourier phase, species composition, host-return status behavior, and existing golden records.
Branch and PR map
Scaffold
select case (trim(collision_model))
case ('Krook')
call assemble_periodic_krook(...)
case ('FokkerPlanck')
call assemble_periodic_fp_verified(...)
case default
return_status = KIM_UNSUPPORTED_COLLISION_MODEL
end select
Positive fixtures to add
Negative fixtures to add
- FP label routed to Krook kernel, duplicate run-type registration, or unsupported model: fail before solve.
Makefile target
Use the repository's full fo check plus CMake/CTest and the KIM golden dispatcher.
Success criteria
fo
cmake -S . -B build -G Ninja
cmake --build build -j$(nproc)
ctest --test-dir build --output-on-failure
GR_CONFIG=kim test/golden/bin/gr_dispatch.sh
Open a non-draft PR to main. Its body must state which PRs #177-#184 are superseded, retained, or still independent, and include real failing-before and passing-after verification output.
Non-goals
- Do not merge the current FP branch because its internal tests happen to exit zero.
- Do not add toroidal, electromagnetic, or full current-kernel extensions in this integration PR.
Verification
fo && ctest --test-dir build --output-on-failure && GR_CONFIG=kim test/golden/bin/gr_dispatch.sh
Stage: KIM forced-periodicity integration
Source language: Fortran, CMake, and documentation
Manuals to read first: #175 and children #185-#190; PRs #177-#184;
docs/plans/2026-07-10-kim-forced-periodicity-design.md;KIM/README.mdDepends on: #37, #185, #186, #187, #188, #189, #190
Goal
Rebase the verified
feature/kim-forced-periodicityimplementation onto currentmain, select reusable parts of PRs #177-#184 without mixing Krook and FP semantics, and open one reviewable FP integration PR with CI and user documentation.Files to edit
KIM/src/CMakeLists.txt: register the final modules and tests once, without duplicate periodic implementations.KIM/README.md: document the run type and supported physics. Add separate configuration, generated-field, limitation, and benchmark sections..github/workflows/: extend the existing KIM checks only where the accepted benchmark requires it.Behavior to implement
Keep a single public periodic run type. Preserve the hat solver. Use explicit collision-model dispatch: Krook must call Krook kernels and FP must call the independently verified FP kernels. Resolve duplicate periodizers, drivers, Fourier grids, and solve modules by documented selection, not by retaining both hidden implementations. Preserve CGS units, Fourier phase, species composition, host-return status behavior, and existing golden records.
Branch and PR map
feature/kim-forced-periodicityatd4ac12b0: FP implementation and the branch to continue.z0after primitive interpolation; keep as an independent hat-path correctness fix.37-add-parallel-flow-to-x2-in-kim-fpat152bf013: old unmerged implementation of Add parallel flow to x2 in KIM-FP #37; reimplement or rebase rather than blindly cherry-pick.Scaffold
Positive fixtures to add
Negative fixtures to add
Makefile target
Use the repository's full
focheck plus CMake/CTest and the KIM golden dispatcher.Success criteria
Open a non-draft PR to
main. Its body must state which PRs #177-#184 are superseded, retained, or still independent, and include real failing-before and passing-after verification output.Non-goals
Verification