Skip to content

feat: support real-Cartesian Boozer chartmaps#261

Merged
krystophny merged 1 commit intomainfrom
feature/boozer-chartmap
Mar 28, 2026
Merged

feat: support real-Cartesian Boozer chartmaps#261
krystophny merged 1 commit intomainfrom
feature/boozer-chartmap

Conversation

@krystophny
Copy link
Copy Markdown
Member

@krystophny krystophny commented Mar 28, 2026

Summary

Support real-Cartesian Boozer chartmaps in libneo by treating zeta_convention='boozer' as a genuine chart parameter instead of requiring atan2(y,x)=zeta.

This keeps the current fast cyl and vmec paths intact while enabling the generalized chartmap path needed for GVEC-style Boozer files where the toroidal parameter is not the cylindrical angle.

What changed

  • accept zeta_convention='boozer' in chartmap validation and metadata
  • keep the atan2(y,x)=zeta contract only for cyl and vmec
  • allow chartmap initialization for boozer
  • spline the stored Cartesian geometry periodically in both angular directions for the generalized path
  • route VMEC-to-chartmap mapping through from_cart(...) for boozer
  • add dedicated validator and coordinate roundtrip tests for a non-cylindrical Boozer chartmap

SIMPLE integration

This is the libneo dependency for the stacked SIMPLE series ending in PR 327:

  • SIMPLE PR 329: core SIMPLE Boozer chartmap path
  • SIMPLE PR 330: roundtrip and VMEC benchmark validation
  • SIMPLE PR 331: GVEC converter and figure-8 validation
  • SIMPLE PR 327: real-Cartesian Boozer chartmaps

Verification

cmake --build build -j$(nproc) --target test_chartmap_validator.x test_chartmap_boozer_coordinates.x test_chartmap_coordinates.x test_chartmap_vmec_mapping.x
ctest --test-dir build --output-on-failure -R 'test_chartmap_(validator|boozer_coordinates|coordinates|vmec_mapping)$'

Result:

  • 100% tests passed, 0 tests failed out of 4

Review

Primary libneo/chartmap review: @krystophny
GVEC-use-case review: @Rykath

@krystophny
Copy link
Copy Markdown
Member Author

@Rykath this is the libneo dependency for the stacked SIMPLE Boozer-chartmap series. The SIMPLE side is now split as PRs 329, 330, 331, and 327; this libneo PR is the generalized real-Cartesian Boozer chartmap piece underneath them.

@krystophny krystophny merged commit 1db022d into main Mar 28, 2026
8 checks passed
@krystophny krystophny deleted the feature/boozer-chartmap branch March 28, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant