Skip to content

[kim-fp-07] Integrate the verified Fokker-Planck periodic solver #191

Description

@krystophny

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

Metadata

Metadata

Assignees

Labels

P2Normal: scheduled workenhancementNew feature or request

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions