jaxvacua.flux_bounding#
Flux-bounding algorithm for finite-region vacuum enumeration.
Purpose#
Implement the flux-bounding strategy of arXiv:2501.03984 for systematic enumeration of Type IIB flux candidates in bounded regions of moduli space.
Main public API#
Module-level JIT kernels for processing NSNS-flux batches and ISD-completed flux candidates without recompiling per
bounded_fluxesinstance.bounded_fluxes: computes local/global eigenvalue bounds, enumerates or samples admissible fluxes, applies tadpole and dilaton constraints, and refines candidates with the vacuum solver.Cluster/export helpers for splitting large enumeration jobs and merging results.
Design notes#
The implementation is performance-oriented. Expensive kernels are kept at module scope with static shape arguments so models with matching dimensions can share compiled XLA code.
Pipeline overview#
Systematic flux enumeration is the heaviest pipeline in the package.
Given an upstream jaxvacua.flux_eft.FluxEFT instance and a
flux radius \(N_{\max}\), bounded_fluxes enumerates every
integer flux
inside a bounding box subject to physical constraints — the s-bound \(s_{\max}\), the D3-tadpole budget \(N_{\text{flux}} \leq Q_{\text{O3}}\), and modular reduction along the \(\mathrm{SL}(2,\mathbb{Z})\) orbit. Phases 1–4 are filters and lattice operations; phase 5 produces the actual vacua via per-batch ISD completion and multi-start Newton refinement.
In the diagram, the inherited jaxvacua.flux_eft.FluxEFT instance is shown
light grey, the user-supplied \(N_{\max}\) and the moduli
samples for the eigenvalue bounds are shown dashed (external), and
the deduplicated output catalogue is highlighted in orange.
provides $W$, $K$, $\Pi$, ISD matrix
$\| h \|, \| f \| \leq N_{\max}$
monitor convergence of $\lambda_{\max},\; \widetilde{\lambda}_{\min},\; \widetilde{\lambda}_{\max}$
bounded_fluxes.compute_evs · compute_evs_vmap
$\Longrightarrow$ box of integer $h$-vectors
bounded_fluxes.compute_bounding_box · get_h_box
tight bounding box
bound_h2_local
looser bounding box
bound_h1_global
to prevent JIT recompilation across chunk shapes
bounded_fluxes.get_h_candidates
keep the minimal-$\| h \|^2$ representative; $\sim 1\%$ reduction
per-batch JIT (
_process_h_at_modulus_jit, _process_h_all_moduli_jit)bounded_fluxes.sample_bounded_fluxes() · newton_refine_batch
Cluster-scale execution#
Large flux-bounding runs can be split into independent chunk files and
processed on a cluster. export_cluster_job prepares the search once,
serialises the pipeline state to pipeline.npz and config.json, writes
pre-filtered h-flux chunks under chunks/, and creates a worker script.
With generate_slurm=True it also writes a SLURM array submission script.
Each worker calls process_chunk_from_disk for one chunk. The worker
reconstructs the saved pipeline, ISD-completes and filters that chunk, and
writes a compressed result file under results/. Since chunks are
independent, failed or slow array tasks can be rerun without repeating the
export step.
After the array finishes, merge_cluster_results reads the result files,
reports missing chunk IDs, deduplicates flux vectors, and optionally maps
solutions to the fundamental domain before comparison. If a model is supplied
it can Newton-refine the merged candidates; if a database handle is supplied
it can write the merged batch through the database integration hooks.
pipeline.npz · config.json · worker.py · chunks/*.npy
process_chunk_from_disk(0)ISD-complete and filter chunk 0
process_chunk_from_disk(1)same saved pipeline, different file
failed chunks are isolated
Bounded fluxes class#
|
Implements the flux-bounding algorithm of arXiv:2501.03984 for systematic enumeration of Type IIB flux vacua in finite regions of moduli space. Integrates with a model class ( |
Bounding box computation#
|
Computes global eigenvalue bounds over a sample of moduli points and returns the bounding box dimensions for the NSNS-flux vector \(h = (h_1, h_2)\). |
Returns the cached bounding box dimensions |
|
|
Computes the eigenvalue quantities at a single moduli point. |
|
Batched version of |
Updates the global eigenvalue extrema from the current local values. Should be called after |
|
|
Computes eigenvalues at moduli, sets the local eigenvalue attributes, and updates the global extrema via |
|
Updates the full local state — eigenvalues, axio-dilaton components, and flux norms — for a given point |
Flux enumeration#
|
Main flux enumeration algorithm (Algorithm 1 of arXiv:2501.03984). |
Stochastic flux search guided by the eigenvalue bounds of arXiv:2501.03984. |
|
|
Enumerates all integer NSNS-flux vectors \(h = (h_1, h_2)\) inside the bounding box computed by |
Cluster execution API#
|
Export the flux search pipeline to disk for cluster-parallel execution. |
Process a single h-chunk from disk using a reconstructed pipeline. Designed to be called from a cluster worker script. |
|
|
Merge results from all cluster workers, deduplicate, optionally Newton-refine, and optionally write to the vacua database. |
Batch flux checking#
|
JIT-compiled, vmapped bound checking for a batch of flux candidates. Replaces the per-candidate Python loop over |
|
Batched tadpole computation via |
|
JIT-compiled, vmapped Newton refinement for a batch of flux candidates. Solves \(D_I W = 0\) simultaneously for all |
|
Vmapped patch-membership check. |
Flux bounds#
Checks the local bound on \(\|h_1\|^2\): |
|
Checks the global bound on \(\|h_1\|^2\): |
|
Checks the local bound on \(\|h_2\|^2\): |
|
Checks the global bound on \(\|h_2\|^2\): |
|
Checks the four local bounds on the \(f_1\) sector derived from the ISD condition (arXiv:2501.03984). Uses \(\tilde f_1 = f_1 - c_0 h_1\) and \(\tilde\mu_{\min/\max}\) — the extreme eigenvalues of \(\operatorname{Im}(\mathcal{N}^{-1})\). |
|
Checks the two global bounds on the \(f_1\) sector using the global eigenvalue extrema \(\tilde\mu_{\min/\max}^{\rm gl}\). |
|
Checks the four local bounds on the \(f_2\) sector derived from the ISD condition (arXiv:2501.03984). Uses \(\tilde f_2 = f_2 - c_0 h_2\) and \(\mu_{\min/\max}\) — the extreme eigenvalues of \(-\operatorname{Im}(\mathcal{N})\). |
|
Checks the two global bounds on the \(f_2\) sector using the global eigenvalue extrema \(\mu_{\min/\max}^{\rm gl}\). |
|
Checks the local bounds on \(s = \operatorname{Im}(\tau)\): |
|
Checks the global bounds on \(s\). |
|
Checks the local bound on \(\|h\|^2\): |
|
Checks the global bound on \(\|h\|^2\): |
|
Checks the local bounds on \(\|f\|^2\): |
|
Checks the global bounds on \(\|f\|^2\). |
Flux utilities#
|
Computes the D3-tadpole charge \(N_{\rm flux}\) for a flux vector. |
|
Splits the full flux vector into its RR- and NSNS-flux components. |
|
Splits a half-flux vector |
Splits the full flux vector into all four sub-components \((h_1, h_2, f_1, f_2)\). |
|
Computes the squared Euclidean norm \(\|v\|^2 = v \cdot v\). |
|
|
Checks all eigenvalue bounds for a given flux configuration. |
Evaluates all |