vmecpp.geometry module

Output-independent VMEC geometry for C++, NumPy, and JAX clients.

class vmecpp.geometry.Geometry(toroidal_flux, poloidal_flux, r_cc, r_ss, r_sc, r_cs, z_sc, z_cs, z_cc, z_ss, lambda_sc, lambda_cs, lambda_cc, lambda_ss, nfp)

Bases: object

The minimal VMEC equilibrium geometry in the internal product basis.

Parameters:
  • toroidal_flux (Array)

  • poloidal_flux (Array)

  • r_cc (Array)

  • r_ss (Array)

  • r_sc (Array)

  • r_cs (Array)

  • z_sc (Array)

  • z_cs (Array)

  • z_cc (Array)

  • z_ss (Array)

  • lambda_sc (Array)

  • lambda_cs (Array)

  • lambda_cc (Array)

  • lambda_ss (Array)

  • nfp (int)

toroidal_flux: Array
poloidal_flux: Array
r_cc: Array
r_ss: Array
r_sc: Array
r_cs: Array
z_sc: Array
z_cs: Array
z_cc: Array
z_ss: Array
lambda_sc: Array
lambda_cs: Array
lambda_cc: Array
lambda_ss: Array
nfp: int
tree_flatten()
classmethod tree_unflatten(nfp, children)
vmecpp.geometry.from_cpp(geometry)

Copy a C++ geometry snapshot into a JAX pytree.

Return type:

Geometry

vmecpp.geometry.make(output)

Construct geometry from the result of the low-level C++ run call.

Return type:

Geometry

vmecpp.geometry.evaluate(geometry, coordinates)

Return shape (5, 10): values and first/second derivatives.

Rows are R, Z, lambda, toroidal flux, and poloidal flux. The columns follow vmecpp.GeometryJet; all formulas are explicit so spatial derivatives do not invoke nested automatic differentiation.

Parameters:
  • geometry (Geometry)

  • coordinates (Array)

Return type:

Array