Skip to content

Read Boozer .bc directly via a bc_field_t (no NEO-2/SuiteSparse dependency) #98

Description

@krystophny

Motivation

rabe-vs-NEO-2 benchmarks currently compare two different Boozer transforms of the same equilibrium. NEO-2 reads .bc files generated through booz_xform; rabe converts the VMEC wout internally with the libneo converter (adopted in #44). The measured difference between the two transforms sits at the QI offset signal level and orders of magnitude above the QA signal (see the converter-fidelity gate results in #92), so the converter confounds every benchmark. Reading the same .bc file NEO-2 uses removes that confound.

The earlier neo_field_t served this purpose but pulled in NEO-2 and SuiteSparse, so #74 moved it to the internal test submodule for the public release.

Proposed design

A bc_field_t extending field_t that reads a .bc file directly, with no NEO-2 or SuiteSparse code:

  • |B| by direct Fourier sum from bmnc (and bmns for non-symmetric files).
  • Jacobian from the current columns: sqrt(g) proportional to (G + iota*I)/B^2 in Boozer coordinates.
  • Covariant components B_phi, B_theta from the Jpol/nper and Itor columns.
  • Radial spline of the Fourier coefficients across surfaces.
  • nabla_s mode switch: default uses the correct stream-function sign (phi_cyl = phi_B - v); an opt-in neo2_bc mode reproduces the legacy opposite-sign convention of existing .bc data, for benchmarking against historical NEO-2 results (see the 36 use simples vmec to boozer converter #44 commit message for the mechanism).

The evaluation core could live in libneo (itpplasma/libneo#305) with bc_field_t as a thin adapter here.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions