Skip to content

Track vmecpp tokamak split and environment cleanup #4

@krystophny

Description

@krystophny

Goal

Bring the tokamak-support work back under control, keep a clean path from upstream/main, and split the current large branch into reviewable PRs with clear verification at each step.

Current situation

Checklist

Environment first

  • Create a fresh branch from upstream/main for a Nix flake.
  • Mirror the supported CI environment as closely as possible, starting from the Ubuntu 22.04 + Python 3.10 test job and the conda environment.
  • Record which compiler, Python, CMake, NetCDF, HDF5, LAPACK, OpenMP, and MPI versions the flake provides.
  • Verify that upstream/main builds and tests in that flake without the Python 3.14 version bump.
  • File a small PR for the Nix flake only.

Python 3.14 support

  • Keep the Python 3.14 branch scoped to packaging and compatibility only.
  • Re-run install and focused tests once simsopt support is available upstream.
  • Remove temporary fork references once upstream dependencies support 3.14.

Tokamak support split

  • Rebuild the tokamak work from the clean base branch instead of continuing to pile changes onto the old exploratory line.
  • Split out asymmetric input and INDATA fixes.
  • Split out asymmetric inverse DFT support.
  • Split out magnetic-axis recovery fixes.
  • Split out force-symmetry / force-DFT fixes.
  • Split out the multithreaded asymmetric DFT indexing fix.
  • Split out any output / wout handling changes only if they are independently justified.

Verification and comparisons

  • Keep circular_tokamak as the symmetric control case.
  • Keep up_down_asymmetric_tokamak as the primary target case.
  • Compare against educational_VMEC and VMEC2000 at every physics-sensitive step.
  • Use jVMEC as an independent cross-check, especially for coefficient conventions and convergence behavior, but not as the sole scalar reference.
  • Add or keep focused regression tests for every accepted fix.
  • Keep benchmark reports and analysis notes, but tighten them so they document signal instead of churn.

Notes

Use this issue as the anchor for branch descriptions, PR descriptions, and follow-up commits while the split is in progress.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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