Skip to content

Remove duplicate top-level build test#138

Open
krystophny wants to merge 18 commits into
mainfrom
fix/flux-pumping/single-build-test
Open

Remove duplicate top-level build test#138
krystophny wants to merge 18 commits into
mainfrom
fix/flux-pumping/single-build-test

Conversation

@krystophny

@krystophny krystophny commented Jul 11, 2026

Copy link
Copy Markdown
Member

Closes #137.

Parent stack head: fix/flux-pumping/arnoldi-global-route at 37d7076c13f26a08eb4147e0b95aab4f461a50f0 (PR #136). This PR targets main and remains unmerged with the rest of the feature stack.

Both solver subdirectories registered the same top-level build command. Retain one registration and mark it serial so it cannot rewrite the shared Ninja Fortran dyndep graph while compiled unit tests execute.

Invariant: test orchestration only. Compiled sources, numerical algorithms, discretization, convergence, memory layout, ABI, and generated solver code are unchanged.

Verification

Failing before:

Test_Build_Code ... Passed
Test_Build_Code ... Failed
ninja: ... RefreshDyndepDependents ... Assertion `edge && !edge->outputs_ready()` failed

Passing after:

$ ctest --test-dir build -N
Test #1: Test_Build_Code
Total Tests: 31

$ ctest --test-dir build -LE external-data -j$(nproc) --output-on-failure
Test #1: Test_Build_Code ... Passed
100% tests passed, 0 tests failed out of 15

The build test completed before the remaining 14 non-external tests started.

isw_qflux_NA=1 with in_file_pert='none' assembles an identically zero
non-axisymmetric source. That zero vector is the Arnoldi seed, so its
normalization divides by zero (0/0 -> NaN) and zhseqr then fails to
converge at every step, spinning without qflux output. Reject the
configuration in check() with a clear message instead.
Add an optional right-hand side to the non-axisymmetric solve: the
drive of a single-helicity perturbation given by a radial corrugation
field (delta B^s/B_0^phi)_mn and an electrostatic potential harmonic
Phi_mn. The vpar corrugation piece enters the A1/A2 force channels
with velocity weights a3m and x^2 (sigma-odd), the ExB piece with
weights x^-1 and a1m (sigma-even); the two new velocity moments are
computed in compute_sources. Input via new &ntv_input variables
(isw_hel_drive, m_theta_hel, hel_brad_re/im, hel_phim_re/im), default
off. Band profiles, moments and dimensional prefactors follow a
CAS-checked derivation (see issue #118).

Off by default: golden-record QL summary.h5 is reproduced to 1e-15
against a main build.
Review findings on the drive commit: fold the x^(3k-4) weight into a
single power so the x=0 quadrature node stays finite; skip the moment
quadrature on the precomputed-matrix-element path and reject
isw_hel_drive at run time when the moments are unavailable; reject the
unvalidated relativistic branch, reconstruction mode and unset species
data; deallocate asource_hel in collop_unload.
The zero-source guard added upstream rejects isw_qflux_NA=1 with
in_file_pert='none'. With the misalignment drive, that configuration is
valid: the drive supplies the non-axisymmetric source. Relax the guard
so it fires only when the drive is off or all its amplitudes are zero.
@krystophny krystophny force-pushed the fix/flux-pumping/single-build-test branch from 224120b to 12aebf2 Compare July 11, 2026 11:25
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.

Duplicate top-level build test corrupts Ninja dyndep state

1 participant