Lab › The Geometry of Forbidden Directions › Part 4 of 8 · read the findings

Finding Magnetic Nulls with a Growth Vector

A magnetic null — where the field vanishes, and a candidate site for reconnection — announces itself as a jump in a sub-Riemannian invariant. This post (the fourth of eight) takes the growth-vector estimator to an analytic ABC-like test field (a solenoidal dynamo-style model, not data) and then to one real solar magnetogram, checks it against the standard eigenvalue finder as a tangent-cone consistency check, and is honest about exactly where it agrees and where it stops.

By Igor Moiseev · 14 August 2026
The Geometry of Forbidden Directions
  1. Forbidden Directions: Exact Magnetic Laws and Estimator Limits
  2. The Magnetic Contact Geometry: Larmor Motion Is Heisenberg
  3. Reading the Field Gradient from the Caustic
  4. Finding Magnetic Nulls with a Growth Vector ← you are here
  5. The Null Gallery: Grounding the Estimator in the Real Sun
  6. The Transition State: Reading a Null Collision from One Point
  7. The Litmus Tests: What Survived Our Own Review
  8. Jupiter's Buried Skeleton: The Polar Patch as a Combination of Separatrices
Appendices — theory background (5)
  1. D1. Connections, Holonomy, and Curvature
  2. D2. The Selection Rule: Why Anisotropic Transport Isn't Sub-Riemannian
  3. D3. The Law Q = d + k + 2, Derived
  4. D4. The Magnetic Geodesic Flow and Its Conjugate Locus
  5. D5. The Nilpotent-Deviation Gradient Formula
Where we are
Part 2 built the magnetic geometry and read the field's strength off the growth vector; Part 3 read its gradient off the caustic. This post goes to the places that matter most — the nulls, where the field vanishes — and asks whether the sub-Riemannian detector earns its keep against the tool plasma physicists already use.

Nulls as a jump in dimension

Recall the law, $Q = d + k + 2$: the homogeneous dimension sits at its floor $d+2$ wherever the field is healthy, and rises by the vanishing order $k$ where the field fails. In three dimensions that means

\[Q = 5 \ \text{almost everywhere},\qquad Q = 6 \ \text{at a generic (linear) null}.\]

A magnetic null is a candidate site for reconnection — where the field direction is undefined and field lines can most easily break and reconnect, releasing the energy behind solar flares and magnetospheric substorms. (A null does not by itself make reconnection happen: three-dimensional reconnection requires non-ideal evolution in a localized region, and can also occur with no null at all — see Pontin & Priest 2022.) Finding and classifying nulls is a standard task, done by locating the zeros of $\mathbf B$ and reading the eigenvalues of the Jacobian $\nabla\mathbf B$: three real eigenvalues make a radial null, a complex pair makes a spiral null, and the signs fix its orientation. The question here: does the growth vector — a quantity about how a small sub-Riemannian ball grows — find the same nulls?

An analytic test field, and two independent computations

The test field is the ABC-like trigonometric field $\mathbf B = (\cos y,\, \cos z,\, \cos x)$ — one of the two curl-partners whose sum is the classic Arnold–Beltrami–Childress field. The distinction matters, and Part 5’s theorem is why: the true ABC field is Beltrami ($\nabla\times\mathbf B = \mathbf B$, force-free) and therefore cannot host a spiral null at all; this field is divergence-free but genuinely non-force-free — its current at the nulls is $\lVert\nabla\times\mathbf B\rVert = \sqrt3 \neq 0$ — which is exactly what permits the spiral types below. It has eight isolated nulls in a periodic box, sitting at the vertices of a cube, their two spiral sub-types alternating like a checkerboard. We run two genuinely independent computations on it:

Two finders on the ABC-like field (experiment P2). The eight magnetic nulls, at the vertices of a cube in the periodic box. The standard finder colours each by the eigenvalue type it computes — spiral-A (blue) and spiral-B (orange), alternating like a checkerboard. The sub-Riemannian detector labels each with the homogeneous dimension it measures: Q=6 at every null (it confirms all eight), against Q=5 at the generic sample points (grey). The two methods agree on location and order; the growth vector does not distinguish blue from orange — that type is in the eigenvalues. Data: research/preferred-directions/artifacts/p2_nulls_results.json.

The verdict, read honestly

It agrees, exactly, on what it can see. The growth vector reads $Q=6$ at all eight nulls and $Q=5$ at every generic point. As an independent local confirmation (in the vocabulary fixed below: the statistic is evaluated at the locations the standard finder supplied, not searched blind) it reproduces the standard finder’s null set and their order — from a completely different computation, one that never solves $\mathbf B = 0$ but instead watches how a small ball’s directional reach collapses (the reach exponents of the article’s Prop. 2.7 — not a ball-volume exponent, which at the null itself remains unproved).

It does not refine what it cannot see. Every one of these nulls is linear ($k=1$), so every one gives $Q=6$; the growth vector cannot tell spiral-A from spiral-B. That distinction lives in the eigenvalues of $\nabla\mathbf B$ — and there the standard method simply has more information than a single number read from the ball’s directional reach can carry.

This is the program’s kill criterion met head-on and answered without spin. The sub-Riemannian detector is valid but not, on this leg, superior: it finds the right nulls to the right order, and stops where the standard tool keeps going.

On a real Sun

The ABC-like field is a genuine divergence-free dynamo-style field, but an analytic one. Does the detector survive contact with observation? We took a real SDO/HMI magnetogram — the 45-s line-of-sight product (sunpy’s sample file HMI20110607_063211_los_lowres.fits, T_OBS 2011.06.07 06:33:07 TAI), a solar active region imaged on 2011 June 7 — potential-field extrapolated it into a three-dimensional coronal field, and searched. The standard finder locates a coronal magnetic null some 40 grid pixels above the surface (one pixel of the resampled extrapolation grid is $\approx 3.23’’ \approx 2.4$ Mm in the plane of the sky, so $\approx 90$ Mm; Part 5 derives the scale from the FITS headers), a radial null by its $\nabla\mathbf B$ eigenvalues. The growth vector, read from that null’s local structure, returns $Q=6$ against $Q=5$ in the surrounding strong field — the same null jump, now computed from a real solar extrapolation. Said precisely: this is the law’s consistency on real data, not an independent detection — the paragraph below spells out what the raw grid does and does not give, and Part 5 races the honest version.

Two panels: A, a real SDO/HMI line-of-sight magnetogram of a solar active region, axes x and y in megametres (linear, 0 to about 235; plane-of-sky scale, one extrapolation-grid pixel is 2.38 megametres), colour field in gauss (linear red-blue scale), a dashed line and gold star marking the null's footpoint; B, a vertical slice of the extrapolated coronal field magnitude in gauss (log colour scale), x axis position 0 to about 235 megametres and y axis height above the surface 0 to about 133 megametres, showing it collapse to zero at the cyan-starred null, with white field-line streamlines fanning through it
A real solar magnetic null, end to end. Left (A): a line-of-sight SDO/HMI magnetogram of a solar active region (2011 June 7; red / blue = field out of / into the photosphere, up to $\sim\!10^3$ G; the opposite polarities anchor the null's field lines). The dashed line marks the vertical plane drawn at right; the gold star is the null's footpoint. Right (B): the potential-field–extrapolated coronal $\lvert\mathbf B\rvert$ on that plane (log scale, bright = strong), with in-plane field lines in white. The field collapses to zero at the null $h = 38$ grid px $\approx 90$ Mm up (cyan star; axes in Mm, linear, at $2.38$ Mm per extrapolation-grid pixel — a plane-of-sky scale with no foreshortening correction) and the streamlines fan through it in the characteristic X-type topology — a radial null by its $\nabla\mathbf B$ eigenvalues $(-0.76,\,-0.24,\,+1.00)$ (dimensionless: divided by the largest $\lvert\lambda_i\rvert$). There the sub-Riemannian growth vector returns $Q=6$ against $Q=5$ in the strong bipolar field: the null jump, on the real Sun. Pipeline: research/preferred-directions/scripts/run_p2_solar.py.

One honest wrinkle, and it is a real methodological point. Resolving $Q=6$ directly from the raw gridded extrapolation fails when probed at sub-pixel radii: there the interpolation has flattened the field, the $r\to0$ flux-scaling is gone, and the estimator returns $Q=5$. The detection above therefore reads the null’s measured Jacobian — its tangent-cone structure, which is exactly what the growth vector is defined to see. A follow-up (Part 5’s program) located the actual rule: probed in the right scale window — above the grid cell, below the surrounding structure — the raw real field returns the null flux weight $w_4\approx3$ directly (here $w_4$ is the scale-resolved reach exponent of the flux coordinate — the local log–log slope of holonomy reach versus probe radius, i.e. the fourth coordinate’s weight), no substitution needed. On gridded data the detector is not resolution-limited so much as scale-windowed, and real magnetic-field data demands you choose that window consciously.

That wrinkle earns a vocabulary the whole series now uses. Blind detection: a candidate location produced by the sub-Riemannian statistic alone, with no root-finder or Jacobian input — not what this post does. Independent local confirmation: the statistic evaluated on the full field at a location another method found — the scale-windowed $w_4 \approx 3$ reading above. Tangent-cone consistency check: the structure built from the measured Jacobian, whose answer the law then fixes — the $Q = 6$ values above. Every solar, magnetospheric and Jovian $Q$ in this series is of the second or third kind; none is blind detection.

Estimator parameters, for the record: reach measured from $n = 5000$ horizontal curves per radius (a quarter straight, the rest with log-uniform turning rates $w \in [0.4, 40]/r$; 300 integration steps), endpoint spread read at the 98th percentile after subtracting the exact gauge terms $A_0!\cdot!d + \tfrac12 d!\cdot!S\,d$; radii log-spaced, 7 per window. The scale-window rule on gridded data: lower edge $\ge 1.5$ grid cells, upper edge $\le$ half the distance to the nearest neighbouring structure — stated in advance, so the $Q = 5 \to 6$ change of verdict with window choice is a recorded parameter decision, not a post-hoc tunable.

Glossary

References