jaxvacua.flux_vacua_finder.FluxVacuaFinder#
- class FluxVacuaFinder(h12=None, model_ID=None, model_type='KS', limit='LCS', maximum_degree=0, mirror_cy=None, model_data=None, lcs_tree_input=None, model_file='', use_cytools=False, basis_change=None, ncf=None, conifold_curve=None, conifold_basis=True, grading_vector=None, period_input=None, Q=None, prepotential_input=None, gauge_choice=1 + 0j, prange=5, use_gvs=True, save_file=False, flux_bounds=(-10, 10), axion_bounds=(-0.5, 0.5), dilaton_bounds=(2.0, 10.0), moduli_bounds=(1.0, 5.0), seed=42, map_to_fd=False, **kwargs)#
Bases:
FluxEFTCanonical entry point for searching, sampling, and classifying flux vacua in Type IIB string theory on a Calabi–Yau threefold.
Class relationship.
FluxVacuaFinderis a subclass ofjaxvacua.flux_eft.FluxEFT— it is the EFT model, with vacuum-finding methods bolted on. There is no separate “model” attribute: every physics method (scalar_potential,V_x,DW,ddV_x,hessian,tadpole,ISD_matrix, …) is inherited and callable directly on the finder instance. Existing code that usesFluxEFTworks unchanged if you swap in aFluxVacuaFinder— Liskov-substitutable.Use
from_model()to construct a finder from an existingFluxEFTinstance without re-doing the geometry computation (useful when running multiple finders against the same model).Headline capabilities (post-merge, 2026-05-17):
Newton solver with B1+B2 guards (
newton_method_flux_vacua()). Handles SUSY (mode="SUSY") and general extrema (mode=None). Optional runaway escape viamoduli_max=kwarg + automatic singular-Hessian protection.SUSY workflow —
sample_SUSY_flux_vacua(),sample_SUSY_vacua_from_fluxes(),linearised_shifts_*(),deduplicate_vacua(). Solves \(D_I W = 0\).Non-SUSY workflow —
sample_critical_points(). Six solver backends:"newton"(default),"adam","lbfgs","adam_v","hybrid","scipy". Solves \(\partial_I V = 0\).Gaussian-M prior calibration —
_precompute_M_eigensystem()→_estimate_sigmas()→calibrate_priors()→save_calibration()/load_calibration(). Tunes the integer-flux sampling prior per ISD mode.Shared utilities —
classify_solution(),is_physical(),dedup_key(),to_fd(). Stateless helpers for post-hoc analysis of any converged candidate.Quickstart:
import jax.numpy as jnp import jaxvacua as jvc finder = jvc.FluxVacuaFinder(h12=2, model_ID=1) # 1. SUSY vacuum from a starting point: fluxes = jnp.array([4.,-3.,-2.,-2.,3.,2.,39.,-13.,-4.,0.,0.,0.]) mod, tau, res = finder.newton_method_flux_vacua( jnp.array([2.+3j, 1.5+2j]), -0.3+5j, fluxes, mode="SUSY", ) # 2. Non-SUSY scan (~100 critical points from a Gaussian-M prior): vacua = finder.sample_critical_points( Nmax=200, n_target=100, n_batch=2000, max_batches=5, solver="hybrid", isd_mode="ISD-", verbose=False, ) # 3. Post-hoc classification of any converged (x, flux): info = finder.classify_solution(x_sol, fluxes) # → {'V', '|DW|', 'eigenvalues', 'is_susy', 'is_minimum', 'Nflux'}
See
documentation/source/notebooks/02_vacuum_finding/for full tutorials.- __init__(h12=None, model_ID=None, model_type='KS', limit='LCS', maximum_degree=0, mirror_cy=None, model_data=None, lcs_tree_input=None, model_file='', use_cytools=False, basis_change=None, ncf=None, conifold_curve=None, conifold_basis=True, grading_vector=None, period_input=None, Q=None, prepotential_input=None, gauge_choice=1 + 0j, prange=5, use_gvs=True, save_file=False, flux_bounds=(-10, 10), axion_bounds=(-0.5, 0.5), dilaton_bounds=(2.0, 10.0), moduli_bounds=(1.0, 5.0), seed=42, map_to_fd=False, **kwargs)#
Initializes a flux EFT class representing the effective field theory of the flux sector in 4D Type IIB string theory compactified on Calabi-Yau threefolds with 3-form flux backgrounds.
This class provides tools for computing and analyzing flux vacua, including superpotentials, Kähler potentials, F-term conditions, and various properties of the moduli space.
- Parameters:
h12 (
int|None) – Number of complex structure moduli \(h^{1,2}\) for the compactified geometry.model_type (
str) – Type of Calabi-Yau manifold. Currently supports"KS"(Kreuzer-Skarke)"CICY" (and)
model_ID (
int|None) – Identifier for a specific model within the database.limit (
str) – Type of moduli space limit for the periods. Currently supports"LCS""LCS". ((Large Complex Structure limit). Defaults to)
model_data (
dict|None) – Dictionary containing topological data of the Calabi-Yau, such asnumbers (triple intersection)
class (second Chern)
etc.
instanton_data (list, optional) – List of Gopakumar-Vafa (GV) and Gromov-Witten (GW) invariants
corrections. (for instanton)
maximum_degree (
int) – Maximum degree cutoff for instanton sum expansions. Defaults to0.use_cytools (
bool) – Whether to use CYTools library to compute topological data of theFalse. (Defaults to)
mirror_cy (
Any|None) – Mirror Calabi-Yau threefold object (from CYTools).basis_change (
Array|None) – Basis transformation matrix to be applied to the topologicalCalabi-Yau. (data of the)
ncf (
int|None) – Conifold number for conifold-enhanced models.conifold_curve (
Any|None) – Specification of the conifold curve in the moduli space.grading_vector (
Array|None) – Grading vector used for computing Gopakumar-Vafa invariants.period_input (
Optional[Callable]) – Custom function for computing periods.Q (
int|None) – D3-brane tadpole bound constraint.prepotential_input (
Optional[Callable]) – Custom function for computing the prepotential.gauge_choice (
complex) – Gauge choice parameter for the periods. Defaults to1.0+0.0j.prange (
int) – Period range parameter for convergence. Defaults to500.use_gvs (
bool) – Whether to use Gopakumar-Vafa invariants for instanton corrections.False.
save_file (
bool) – Whether to save model data to disk for future use. Defaults toFalse.flux_bounds (
tuple) –(min, max)integer range for flux sampling. Defaults to(-10, 10).axion_bounds (
tuple) –(min, max)range for axion sampling. Defaults to(-0.5, 0.5).dilaton_bounds (
tuple) –(min, max)range for the axio-dilaton \(s = \mathrm{Im}(\tau)\). Defaults to(2., 10.).moduli_bounds (
tuple) –(min, max)range for the imaginary parts of the complex structure moduli. Defaults to(1., 5.).seed (
int) – Random seed for the sampler. Defaults to42.map_to_fd (
bool) – If True, all returned vacua are mapped to the fundamental domain viamap_to_fd(). Defaults toFalse.**kwargs – Additional keyword arguments passed to parent class
FluxEFT.
Methods
A(moduli, moduli_c)Returns the value of the mirror dual Calabi-Yau volume.
DDW(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns a matrix the second holomorphic Kähler derivatives \(D_I D_J W\) of the superpotential.
DDW_SUSY(moduli, moduli_c, tau, tau_c, fluxes)Returns a matrix containing the second holomorphic Kähler derivative of the superpotential assuming that the F-flatness conditions \(D_{i}W=D_{\tau}W=0\) are satisfied.
DDW_general(moduli, moduli_c, tau, tau_c, fluxes)Returns the second Kähler covariant derivatives \(D_I D_J W\) of the superpotential \(W\) with respect to the axio-dilaton \(\tau\) and the complex structure moduli \(z^{i}\).
DDW_matrix(moduli, moduli_c, tau, tau_c, fluxes)Returns the matrix of masses for chiral fermions.
DDW_matrix_SUSY(moduli, moduli_c, tau, ...)Returns the matrix of second Kähler derivatives of the superpotential assuming that the F-term conditions are satisfied for all fields.
DDW_matrix_general(moduli, moduli_c, tau, ...)Returns the matrix of second Kähler derivatives of the superpotential.
DDW_tau_ctau(moduli, moduli_c, tau, tau_c, ...)Returns the Kähler covariant derivative \(D_{\overline{\tau}}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
DDW_tau_cz(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{\overline{z}^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
DDW_tau_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{\tau}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the axio-dilaton \(\tau\).
DDW_tau_z(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{z^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex structure moduli \(z^i\).
DDW_z_ctau(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{\overline{\tau}}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
DDW_z_cz(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{\overline{z}^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
DDW_z_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{\tau}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the axio-dilaton \(\tau\).
DDW_z_z(moduli, moduli_c, tau, tau_c, fluxes)Returns the Kähler covariant derivative \(D_{z^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex structure moduli \(z^i\).
DW(moduli, moduli_c, tau, tau_c, fluxes[, conj])Returns the holomorphic Kähler covariant derivatives of the superpotential with respect to the complex structure moduli \(z^{i}\) and the axio-dilaton \(\tau\).
DW_tau(moduli, moduli_c, tau, tau_c, fluxes)Calculates the Kähler covariant derivative of the superpotential with respect to the axio-dilaton \(\tau\).
DW_x(x, fluxes)Calculates the real and imaginary parts of the \(F\)-term conditions.
DW_z(moduli, moduli_c, tau, tau_c, fluxes[, ...])Calculates the Kähler covariant derivative of the superpotential \(W\) with respect to the complex structure moduli \(z^{i}\).
DcDW(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns a matrix containing the mixed second Kähler derivatives \(D_{\overline{I}}D_{J}W\).
F(moduli[, conj])Computes the pre-potential for given values of the moduli.
F_LCS(moduli[, conj])Calculates the value of the LCS prepotential in terms of the complex structure moduli \(z^{i}\).
F_LCS_poly(moduli[, conj])Computes the polynomial contribution \(F_{\mathrm{poly}}\) to the LCS prepotential \(F_{\mathrm{LCS}}\) in terms of the complex structure moduli \(z^i\).
F_inst(moduli[, conj])Returns the instanton part \(F_{\mathrm{inst}}\) of the LCS prepotential \(F_{\mathrm{LCS}}\) in terms of the complex structure moduli \(z^i\).
H(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns the Hessian of the scalar potential.
ISD_condition(moduli, moduli_c, tau, tau_c, ...)Checks whether the fluxes satisfy the ISD condition \(\star G_3=\text{i}G_3\).
ISD_matrix(moduli, moduli_c)Computes the value of the ISD-matrix \(\mathcal{M}\).
K(moduli, moduli_c, tau, tau_c)Returns the value of the Kähler potential.
M(moduli, moduli_c)Computes the value of the ISD-matrix \(\mathcal{M}\).
N(moduli, moduli_c[, conj])Computes the value of the gauge kinetic matrix \(\mathcal{N}\).
V(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns the value of the \(F\)-term scalar potential.
V_tilde(moduli, moduli_c)Returns the value of the mirror dual Calabi-Yau volume.
V_x(x, fluxes[, noscale])Returns the value of the real part of the F-term scalar potential \(V\) for input of the real scalar fields.
W(moduli, tau, fluxes[, conj, normalise])Calculates the value of the superpotential for given flux, moduli and axio-dilaton.
W0(moduli, tau, fluxes[, conj, normalise])Calculates the value of the gauge invariant version of the flux superpotential.
__init__([h12, model_ID, model_type, limit, ...])Initializes a flux EFT class representing the effective field theory of the flux sector in 4D Type IIB string theory compactified on Calabi-Yau threefolds with 3-form flux backgrounds.
apply_monodromy(moduli, fluxes, n)Apply a monodromy shift \(z^a \to z^a + n^a\) to the moduli and transform the fluxes accordingly via the monodromy matrix \(M(n)\).
calibrate_priors([Nmax, modes, n_test, ...])Empirically refine the Gaussian-prior σ per ISD mode by binary-search.
canonical_fterms(moduli, moduli_c, tau, ...)Returns the canonically normalised \(F\)-term conditions \(F_I,\, F^I\).
christoffel_symbols(moduli, moduli_c, tau, tau_c)Returns the Christoffel symbols \(\Gamma^E_{AC}\) of the Levi-Civita connection on the Kähler moduli space.
classify_solution(x, flux[, noscale, min_tol])Classify a converged critical-point candidate
(x, flux): returns{V, |DW|, eigenvalues, is_susy, is_minimum, Nflux}.compute_residual(x[, axis])Computes residual.
compute_tau_vev(moduli, flux)Computes the value of the axio-dilaton \(\tau\) from the fluxes and complex structure moduli as a solution to the corresponding \(F\)-term condition \(D_{\tau}W=0\).
conifold_monodromy_matrix([conifold_curve, ...])Picard-Lefschetz monodromy matrix around a conifold singularity where a 3-cycle \(\gamma = \sum_a c_a A^a\) shrinks to zero.
dDW(moduli, moduli_c, tau, tau_c, fluxes[, conj])Returns the holomorphic derivative \(\partial_{I}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the complex structure moduli \(z^i\) and the axio-dilaton \(\tau\).
dDW_c(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\overline{I}}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\) and the axio-dilaton \(\overline{\tau}\).
dDW_ctau(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\overline{\tau}}D_{J}W\) of the \(F\)-term \(D_{J}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
dDW_cz(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\overline{z}^i}D_{J}W\) of the \(F\)-term \(D_{J}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
dDW_real(moduli, tau, fluxes)Returns the Jacobian \(\partial_{\phi^\alpha}(D_J W)\) of the \(F\)-terms with respect to the real scalar fields \(\phi^\alpha = (a^i, v^i, c_0, s)\).
dDW_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\tau}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the the axio-dilaton \(\tau\).
dDW_tau_ctau(moduli, moduli_c, tau, tau_c, ...)Returns the holomorphic derivative \(\partial_{\overline{\tau}}D_{\tau}W\) of the \(F\)-term \(D_{\overline{\tau}}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
dDW_tau_cz(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\overline{z}^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
dDW_tau_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\tau}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the axio-dilaton \(\tau\).
dDW_tau_z(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{z^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex structure moduli \(z^i\).
dDW_x(x, fluxes)Returns the first derivatives of the F-term conditions by differentiating with respect to the real fields.
dDW_z(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{z^i}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the complex structure moduli \(z^i\).
dDW_z_ctau(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\overline{\tau}}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
dDW_z_cz(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\overline{z}^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
dDW_z_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{\tau}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the axio-dilaton \(\tau\).
dDW_z_z(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic derivative \(\partial_{z^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex structure moduli \(z^i\).
dF(moduli[, conj])Computes the holomorphic derivative \(\partial_{z^i} F\) of the prepotential \(F\) for given values of the moduli.
dGamma(moduli, moduli_c, tau, tau_c)Returns the holomorphic derivative of the Christoffel symbols \(\partial_B \Gamma^E_{AC}\).
dIKM_c(moduli, moduli_c, tau, tau_c)Returns the anti-holomorphic derivative of the inverse Kähler metric \(\partial_{\bar{B}} K^{I\bar{J}}\).
dK(moduli, moduli_c, tau, tau_c)Returns the holomorphic derivative \(\partial_I K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^{i}\) and the axio-dilaton \(\tau\).
dK_c(moduli, moduli_c, tau, tau_c)Returns the holomorphic derivative \(\partial_{\overline{I}} K\) of the Kähler potential \(K\) with respect to the complex conjugate complex structure moduli \(\overline{z}^{i}\) and the axio-dilaton \(\overline{\tau}\).
dK_ctau(moduli, moduli_c, tau, tau_c)Returns the anti-holomorphic derivative \(\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the conjugate axio-dilaton \(\overline{\tau}\).
dK_cz(moduli, moduli_c, tau, tau_c)Returns the anti-holomorphic derivative \(\partial_{\overline{z}^i}K\) of the Kähler potential \(K\) with respect to the conjugate complex structure moduli \(\overline{z}^i\).
dK_tau(moduli, moduli_c, tau, tau_c)Returns the holomorphic derivative \(\partial_{\tau}K\) of the Kähler potential \(K\) with respect to the axio-dilaton \(\tau\).
dK_z(moduli, moduli_c, tau, tau_c)Returns the holomorphic derivative \(\partial_{z^i}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\).
dM(moduli, moduli_c)Returns the holomorphic derivative \(\partial_{z^i}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the complex structure moduli \(z^i\).
dM_X(moduli, moduli_c)Returns the holomorphic derivative \(\partial_{X^I}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the periods \(X^I\).
dM_c(moduli, moduli_c)Returns the anti-holomorphic derivative \(\partial_{\overline{z}^i}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
dM_cX(moduli, moduli_c)Returns the anti-holomorphic derivative \(\partial_{\overline{X}^I}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the complex conjugate periods \(\overline{X}^I\).
dN(moduli, moduli_c[, conj])Returns the holomorphic derivative \(\partial_{z^i}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the complex structure moduli \(z^i\).
dN_X(moduli, moduli_c[, conj])Returns the holomorphic derivative \(\partial_{X^I}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the periods \(X^I\).
dN_c(moduli, moduli_c[, conj])Returns the anti-holomorphic derivative \(\partial_{\overline{z}^i}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
dN_cX(moduli, moduli_c[, conj])Returns the anti-holomorphic derivative \(\partial_{\overline{X}^I}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the complex conjugate periods \(\overline{X}^I\).
dV(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns the first holomorphic derivative \(\partial_{I}V\) of the \(F\)-term scalar potential \(V\).
dV_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the first holomorphic derivative \(\partial_{\tau}V\) of the \(F\)-term scalar potential \(V\) with respect to the axio-dilaton \(\tau\).
dV_x(x, fluxes[, noscale])Returns the gradients of the F-term scalar potential \(V\) with respect to the real scalar fields for real inputs.
dV_z(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns the first holomorphic derivative \(\partial_{z^i}V\) of the \(F\)-term scalar potential \(V\) with respect to the complex structure moduli \(z^i\).
dW(moduli, tau, fluxes[, conj])Calculates the holomorphic derivative \(W_I\) of the superpotential \(W\) with respect to all moduli \((z^i, \tau)\).
dW_tau(moduli, tau, fluxes[, conj])Calculates the holomorphic derivative \(W_\tau=\partial_{\tau}W\) of the superpotential \(W\) with respect to the axio-dilaton \(\tau\).
dW_z(moduli, tau, fluxes[, conj])Calculates the holomorphic derivative \(W_i=\partial_{z^i}W\) of the superpotential \(W\) with respect to the complex structure moduli \(z^{i}\).
ddDW(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns the second derivative of the \(F\)-terms \(\partial_A(D_I W)\).
ddDW_x(x, fluxes)Returns the second derivatives of the F-term conditions by differentiating with respect to the real fields.
ddIKM(moduli, moduli_c, tau, tau_c)Returns the mixed second derivative of the inverse Kähler metric \(\partial_A\partial_{\bar{B}} K^{I\bar{J}}\).
ddK_ctau_ctau(moduli, moduli_c, tau, tau_c)Returns the second holomorphic derivatives of the Kähler potential with respect to the axio-dilaton \(\tau\).
ddK_cz_ctau(moduli, moduli_c, tau, tau_c)Returns the second derivatives \(K_{\bar{\imath}\overline{\tau}}=\partial_{\overline{z}^i}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\) and the axio-dilaton \(\overline{\tau}\).
ddK_cz_cz(moduli, moduli_c, tau, tau_c)Returns the second anti-holomorphic derivatives of the Kähler potential with respect to the complex structure moduli \(z^i\).
ddK_cz_tau(moduli, moduli_c, tau, tau_c)Returns the second derivatives \(K_{\tau\overline{j}}=\partial_{\tau}\partial_{\overline{z}^{j}}K\) of the Kähler potential \(K\) with respect to the conjugate complex structure moduli \(\overline{z}^i\) and the axio-dilaton \(\tau\).
ddK_cz_z(moduli, moduli_c, tau, tau_c)Returns the second derivatives \(K_{\bar{\jmath}i}=\partial_{\overline{z}^j}\partial_{z^i}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\) and their conjugate.
ddK_tau_ctau(moduli, moduli_c, tau, tau_c)Returns the second derivatives \(\partial_{\tau}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the axio-dilaton \(\tau\) and its conjugate.
ddK_tau_tau(moduli, moduli_c, tau, tau_c)Returns the second holomorphic derivatives of the Kähler potential with respect to the axio-dilaton \(\tau\).
ddK_z_ctau(moduli, moduli_c, tau, tau_c)Returns the second derivatives \(K_{i\overline{\tau}}=\partial_{z^i}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\) and the conjugate axio-dilaton \(\overline{\tau}\).
ddK_z_cz(moduli, moduli_c, tau, tau_c)Returns the second derivatives \(K_{i\bar{\jmath}}=\partial_{z^i}\partial_{\overline{z}^j}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\) and their conjugate.
ddK_z_tau(moduli, moduli_c, tau, tau_c)Returns the second holomorphic derivatives of the Kähler potential with respect to the complex structure moduli \(z^i\) and the axio-dilaton \(\tau\).
ddK_z_z(moduli, moduli_c, tau, tau_c)Returns the second holomorphic derivatives of the Kähler potential with respect to the complex structure moduli \(z^i\).
ddV(moduli, moduli_c, tau, tau_c, fluxes[, ...])Returns the second derivatives \((\partial_I\partial_J V,\,\partial_I\partial_{\bar J}V)\) of the \(F\)-term scalar potential.
ddV_ctau(moduli, moduli_c, tau, tau_c, fluxes)Returns the mixed second derivatives \(\partial_{I}\partial_{\bar\tau}V\) of the \(F\)-term scalar potential.
ddV_cz(moduli, moduli_c, tau, tau_c, fluxes)Returns the mixed second derivatives \(\partial_{I}\partial_{\bar{z}^j}V\) of the \(F\)-term scalar potential.
ddV_tau(moduli, moduli_c, tau, tau_c, fluxes)Returns the second derivatives \(\partial_{I}\partial_{\tau}V\) of the \(F\)-term scalar potential.
ddV_x(x, fluxes[, noscale])Returns the second derivatives of the F-term scalar potential \(V\) with respect to the real scalar fields for real inputs.
ddV_z(moduli, moduli_c, tau, tau_c, fluxes)Returns the holomorphic second derivatives \(\partial_{I}\partial_{z^j}V\) of the \(F\)-term scalar potential.
ddW(moduli, tau, fluxes[, conj])Calculates the full second holomorphic derivatives \(W_{IJ}=\partial_I\partial_J W\) of the superpotential.
ddW_tau_tau(moduli, tau, fluxes[, conj])Calculates \(W_{\tau\tau}=\partial_\tau^2 W\).
ddW_z_tau(moduli, tau, fluxes[, conj])Calculates the mixed second derivative \(W_{i\tau}=\partial_{z^i}\partial_{\tau}W\) of the superpotential.
ddW_z_z(moduli, tau, fluxes[, conj])Calculates the second holomorphic derivatives \(W_{ij}=\partial_{z^i}\partial_{z^j}W\) of the superpotential.
dddK(moduli, moduli_c, tau, tau_c)Returns the third holomorphic-mixed Kähler derivative \(\partial_{A} K_{C\bar{F}}\) with respect to the combined field-space index \(A = (z^i, \tau)\).
dddK_c(moduli, moduli_c, tau, tau_c)Returns the third anti-holomorphic-mixed Kähler derivative \(\partial_{\bar{B}} K_{C\bar{F}}\) with respect to the combined anti-holomorphic field-space index \(\bar{B} = (\bar{z}^i, \bar{\tau})\).
dedup_key(moduli, tau, fluxes[, n_digits])Hashable dedup key for a single
(moduli, tau, fluxes)triple. Suitable for incrementalset/dictmembership tests in a streaming sampling loop.deduplicate_vacua(moduli, tau, fluxes[, ...])Removes duplicate vacua from a batch of solutions.
flux_to_pfv(flux)Returns M- and K-vector specifying PFV from full flux vector.
from_model(model[, sampler, map_to_fd, ...])Construct a
FluxVacuaFinderfrom an existingFluxEFTinstance, reusing all of its geometry data (period vector, prepotential, conifold tree, …) — no recomputation. Composition-style alternative to the standardFluxVacuaFinder(h12=..., model_ID=...)constructor.fterm_solver(moduli, tau, fluxes[, ...])Solves F-term conditions for a given optimiser.
gauge_kinetic_matrix(moduli, moduli_c[, conj])Computes the value of the gauge kinetic matrix \(\mathcal{N}\).
hessian(moduli, moduli_c, tau, tau_c, fluxes)Returns the Hessian of the scalar potential.
inverse_kahler_metric(moduli, moduli_c, tau, ...)Returns the inverse Kähler metric \(K^{\overline{I}J}\).
inverse_kahler_metric_grad(moduli, moduli_c, ...)Returns the gradient of the inverse Kähler metric.
is_physical(x[, moduli_max, verbose])Decide whether the converged candidate
xlies in the physical region of moduli space. Runs a five-tier cascade: runaway bound → dilaton floor → Kähler-cone hyperplanes → Kähler-metric positivity → basicIm(z_i) > 0.kahler_metric(moduli, moduli_c, tau, tau_c)Computes the Kähler metric \(K_{\overline{I}J}\).
kahler_potential(moduli, moduli_c, tau, tau_c)Returns the value of the Kähler potential.
linearised_shifts(moduli, tau, fluxes[, Q, ...])Computes the linearised shifts for the complex structure moduli and the axio-dilaton.
linearised_shifts_F(moduli, tau, fluxes[, ...])Computes linearised shifts for the complex structure moduli and axio-dilaton based on given F-flux.
linearised_shifts_H(moduli, tau, fluxes[, ...])Computes linearised shifts for the complex structure moduli and axio-dilaton based on given H-flux.
linearised_shifts_ISD(moduli, tau, fluxes[, ...])Computes the linearised shifts for the complex structure moduli and the axio-dilaton based on \(ISD_+\)-sampling for fluxes.
load_calibration(path)Load calibrated prior parameters from a JSON file produced by
save_calibration().map_to_fd(moduli, tau, fluxes[, axion_fd, ...])Maps a vacuum solution
(moduli, tau, fluxes)to the fundamental domain by:map_to_fd_tau(tau, fluxes[, ...])Map of the axio-dilaton value and the flux vector to the fundamental domain (FD) of \(\text{SL}(2,\mathbb{Z})\).
mass_matrix(moduli, moduli_c, tau, tau_c, fluxes)Returns the mass matrix after canonical normalisation of the kinetic terms.
mirror_volume(moduli, moduli_c)Returns the value of the mirror dual Calabi-Yau volume.
moduli_to_periods(moduli[, conj])Transforms complex structure moduli to periods for the global choice of gauge.
Computes the monodromy matrix \(T(\vec{n})\) for a general integer shift \(z^a \to z^a + n^a\).
Computes the monodromy matrix \(T_b\) for the shift \(z^b \to z^b + 1\).
newton_method_flux_vacua(moduli, tau, fluxes)Solves the minimum conditions for flux vacua using Newton's method.
period_vector(moduli[, conj])Returns the period vector \(\Pi\) at a given point in moduli space.
periods_to_moduli(XPer)Transforms periods to complex structure moduli.
pfv_to_flux(M, K)Returns full flux vector from M- and K-vector specifying PFV.
pfv_to_moduli(M, K, tau)Returns values of the complex structure moduli at the level of the PFV.
prepot(moduli[, conj])Computes the pre-potential for given values of the moduli.
projection_fluxes(moduli, tau, fluxes[, mode])Computes the Hodge decomposition of the 3-form flux \(G_3 = F_3 - \tau H_3\) into its \((p,q)\)-components on the Calabi-Yau threefold.
riemann_tensor(moduli, moduli_c, tau, tau_c)Returns the Riemann curvature tensor \(R_{i\bar{\jmath}k\bar{l}}\) of the Kähler moduli space.
run_calibration([Nmax, n_sample, n_test, ...])Convenience wrapper that runs the full Gaussian-M-prior calibration pipeline in one call:
sample_SUSY_flux_vacua([N, sampler, ...])Samples SUSY flux vacua.
sample_SUSY_vacua_from_fluxes([fluxes_init, ...])Samples SUSY flux vacua for given input fluxes.
sample_critical_points([Nmax, n_target, ...])Sample critical points of the scalar potential \(V\) by drawing Gaussian-M-prior flux candidates, ISD-completing them, refining via the chosen solver, then filtering by physicality and deduplicating.
save_calibration(Nmax[, path, flux_prior])Save calibrated prior parameters to a JSON file for reuse.
scalar_potential(moduli, moduli_c, tau, ...)Returns the value of the \(F\)-term scalar potential.
superpotential(moduli, tau, fluxes[, conj, ...])Calculates the value of the superpotential for given flux, moduli and axio-dilaton.
superpotential_gauge_invariant(moduli, tau, ...)Calculates the value of the gauge invariant version of the flux superpotential.
tadpole(fluxes)Calculates the D3-charge for given fluxes.
to_fd(moduli, tau, fluxes)Optionally map
(moduli, tau, fluxes)to the fundamental domain viamap_to_fd(), with numpy/JAX marshalling at the boundary.verify_monodromy(b[, z, tol])Numerically verify the monodromy matrix by checking \(T_b \cdot \Pi(z) = \Pi(z + e_b)\).
Attributes
F_coniLCS_bulk** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
F_coniLCS_exp** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
F_coniLCS_series** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
W_bulk** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
W_log_coeff** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
compute_zcf** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
compute_zcf_x** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
conifold_fluxes** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
dF_coniLCS_exp** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
dK_cf_bulk** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
Description: The
lcs_treeobject containing the topological data (intersection numbers, second Chern class, GV invariants, etc.) for the underlying Calabi-Yau geometry.log_coeff_K_corr** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
log_prefactor** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
Description: Lazily-initialised
data_samplerfor this model.zcf_handling** Class-level descriptor: surfaces a method only when the instance's limit is in the coniLCS family. Otherwise raises AttributeError so hasattr() returns False.
- A(moduli, moduli_c)#
Returns the value of the mirror dual Calabi-Yau volume.
Details
Let \(X\) be a Calabi-Yau threefold and \(\Omega_3\) its holomorphic \((3,0)\)-form. Then this function returns the value of the following integral:
\[\mathcal{A}(z^i,\overline{z}^i)=-\text{i}\, \int_{X}\, \Omega_3\wedge \overline{\Omega}_3 = -\text{i}\, \Pi^\dagger(\overline{z}^i)\cdot \Sigma\cdot \Pi(z^i)\]This object appears as the argument inside the Kähler potential, see
kahler_potential(). Given that it is dual to the volume of the mirror Calabi-Yau threefold \(\widetilde{X}\), it is manifestly positive, provided the Kähler cone conditions of \(\widetilde{X}\) are satisfied.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.
- Returns:
complex – Mirror dual Calabi-Yau volume.
- Return type:
complex
- Aliases:
See also:
period_vector()See also:
kahler_potential()
- DDW(moduli, moduli_c, tau, tau_c, fluxes, conj=False, mode=None)#
Returns a matrix the second holomorphic Kähler derivatives \(D_I D_J W\) of the superpotential.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – The mode to \(DDW\). Currently implemented modes are: * None: general expression from explicit second derivatives. * “SUSY”: computes at a SUSY locus where DW=0 using standard SUGRA formulas.
- Returns:
Array – Value of \(D_I D_J W\).
- Return type:
Array
- DDW_SUSY(moduli, moduli_c, tau, tau_c, fluxes, conj=False, mode='block diagonal')#
Returns a matrix containing the second holomorphic Kähler derivative of the superpotential assuming that the F-flatness conditions \(D_{i}W=D_{\tau}W=0\) are satisfied.
Details
Returns a matrix containing the second holomorphic Kähler derivative of the superpotential assuming that the F-flatness conditions \(D_{i}W=D_{\tau}W=0\) are satisfied. More explicitly, we compute
\[D_I D_I W = \partial_I D_J W + K_I D_J W = \partial_I \partial_J W + (K_{IJ}-K_I K_J) W + K_I D_J W + K_J D_I W \, .\]At the SUSY minimum, this suggests
\[D_I D_I W\bigl |_{D_I W=0} = \partial_I \partial_J W + (K_{IJ}-K_I K_J) W\, .\]For the axio-dilaton, we have \(W_{\tau\tau}=0\) for the GVW superpotential and thus
\[D_\tau D_\tau W\bigl |_{D_\tau W=0} = (K_{\tau\tau} - K_\tau K_\tau) W\, .\]For the standard Kähler potential \(K\supset -\log(-\mathrm{i}(\tau-\bar{\tau}))\), this automatically implies
\[D_\tau D_\tau W\bigl |_{D_\tau W=0} = 0\; , \quad D_\tau D_i W\bigl |_{D_I W=0} = 0\, .\]Warning
We assume that there is a block-diagonal structure in the Kahler potential such that the mixed second derivatives vanish \(K_{i\tau}=K_{\tau i}=0\). This might not necessarily be true once further corrections to the Kahler potential are included.
Warning
Further, we use that \(W_{\tau\tau}=0\) because the flux superpotential
superpotential()is linear in \(\tau\). Again, this might not necessarily be true anymore once non-perturbative instanton effects are present in the superpotential!- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Whether to assume that the Kähler metric is block-diagonal. Defaults to"block diagonal".
- Returns:
Array – Value of \(D_I D_J W\) assuming \(D_IW=0\).
- Return type:
Array
- DDW_general(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the second Kähler covariant derivatives \(D_I D_J W\) of the superpotential \(W\) with respect to the axio-dilaton \(\tau\) and the complex structure moduli \(z^{i}\).
Details
We compute the Kähler covariant derivatives of the \(F\)-terms \(D_J W\)
\[D_I D_J W = \partial_I D_J W + (\partial_I K) D_J W\]using automatic differentiation. To do so, we combine the outputs of
DDW_z_z(),DDW_tau_tau(),DDW_z_tau()andDDW_tau_z().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Second Kähler covariant derivatives \(D_I D_J W\) of the superpotential \(W\) with respect to the axio-dilaton \(\tau\) and the moduli \(z^{i}\).
- Return type:
Array
- DDW_matrix(moduli, moduli_c, tau, tau_c, fluxes, mode='SUSY')#
Returns the matrix of masses for chiral fermions.
Details
The diagonal entries of this matrix (evaluated at a minimum) are proportional to the mass matrix of chiral fermions, see equation (2.5) in 1312.5659. By abuse of terminology, we call this matrix the ‘’fermionic mass matrix’’.
Note
To speed up the computation, it can be advantageous to compute this function using the
mode="SUSY"option provided that \(DW=0\) for all fields.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Whether or not the point at which the mass matrix is evaluated corresponds to a minimum with \(DW=0\) for all fields. Default ismode="SUSY".
- Returns:
(Array)
- Return type:
Array
- DDW_matrix_SUSY(moduli, moduli_c, tau, tau_c, fluxes)#
Returns the matrix of second Kähler derivatives of the superpotential assuming that the F-term conditions are satisfied for all fields.
Details
Explicitly, we compute
\[M=\left (\begin{array}{cc}\partial_{A}\partial_{B} W + \left ( K_{A B} - K_{A} K_{B} \right ) W & K_{A\overline{B}} W\ K_{A\overline{B}} \overline{W} & \partial_{\overline{A}}\partial_{\overline{B}} \overline{W} + \left ( K_{\overline{A} \overline{B}} - K_{\overline{A}} K_{\overline{B}} \right ) \overline{W} \end{array}\right )\]which is equivalent to the matrix of second derivatives of \(W\) (see
massive_directions_general()) provided that the F-flatness conditions\[D_{Z^{i}} W = D_{\tau} W = 0\]are satisfied. In this case, it turns out that
\[D_{A} D_{\overline{B}} W = K_{A\overline{B}} W\]as well as
\[D_{A} D_{B} W = \partial_{A}\partial_{B} W + \left ( K_{A B} - K_{A} K_{B} \right ) W\]as computed via
DDW_SUSY().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
- Returns:
See also –
massive_directions_general()See also –
DDW_SUSY()
- Return type:
Array
- DDW_matrix_general(moduli, moduli_c, tau, tau_c, fluxes)#
Returns the matrix of second Kähler derivatives of the superpotential.
Details
Explicitly, we compute
\[M=\left (\begin{array}{cc} D_{A}D_{B} W & D_{A}D_{\overline{B}} W \ D_{\overline{A}}D_{B} \overline{W} & D_{\overline{A}}D_{\overline{B}} \overline{W} \end{array}\right )\]which is encodes the mass terms for chiral fermions.
In this case, it turns out that
\[D_{A} D_{\overline{B}} W =K_{\overline{B}}W_{A}+\left ( K_{A\overline{B}}+K_{A}K_{\overline{B}}\right ) W\]This matrix encodes the mass terms for chiral fermions in the 4D effective theory (cf. Eq. (2.5) of 1312.5659).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
- Returns:
Array – Shape
(2n, 2n)matrix with blocks[[DDW, DcDW], [conj(DcDW), conj(DDW)]].- Return type:
Array
- DDW_tau_ctau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{\overline{\tau}}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{\overline{\tau}}D_{\tau}W\).
- Return type:
Array
- DDW_tau_cz(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{\overline{z}^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{\overline{z}^i}D_{\tau}W\).
- Return type:
Array
- DDW_tau_tau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{\tau}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{\tau}D_{\tau}W\).
- Return type:
Array
- DDW_tau_z(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{z^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{z^i}D_{\tau}W\).
- Return type:
Array
- DDW_z_ctau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{\overline{\tau}}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{\overline{\tau}}D_{z^j}W\).
- Return type:
Array
- DDW_z_cz(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{\overline{z}^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{\overline{z}^i}D_{z^j}W\).
- Return type:
Array
- DDW_z_tau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{\tau}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{\tau}D_{z^j}W\).
- Return type:
Array
- DDW_z_z(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the Kähler covariant derivative \(D_{z^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(D_{z^i}D_{z^j}W\).
- Return type:
Array
- DW(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic Kähler covariant derivatives of the superpotential with respect to the complex structure moduli \(z^{i}\) and the axio-dilaton \(\tau\).
Details
This function combines the outputs of the functions
DW_z()andDW_tau()\[D_I W = \bigl(D_{1} W,\ldots, D_{h^{1,2}} W,D_{\tau} W\bigl)\, .\]This output is later used in the \(F\)-term scalar potential
scalar_potential().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Values of the \(F\)-term conditions for the complex structure moduli \(z^{i}\) and the axio-dilaton \(\tau\).
- Return type:
Array
See also:
DW_z()See also:
DW_tau()
- DW_tau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Calculates the Kähler covariant derivative of the superpotential with respect to the axio-dilaton \(\tau\).
Details
The \(F\)-term conditions for the axio-dilaton \(\tau\) are given by
\[D_{\tau} W=\partial_{\tau}W+(\partial_{\tau}K)\, W = W_\tau+K_\tau\, W\]They appear prominently in the \(F\)-term scalar potential
scalar_potential().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Values of the \(F\)-term conditions for the axio-dilaton \(\tau\).
- Return type:
complex
See also:
superpotential()See also:
dW_tau()See also:
dK_tau()See also:
dK_ctau()
- DW_x(x, fluxes)#
Calculates the real and imaginary parts of the \(F\)-term conditions.
Details
This function is used for finding roots of the \(F\)-term conditions. It takes as input a real array of values for the complex structure moduli \(z^i\) and the axio-dilaton \(\tau\)
\[\bigl (\mathrm{Re}(z^1),\mathrm{Im}(z^1),\ldots,\mathrm{Re}(z^{h^{1,2}}), \mathrm{Im}(z^{h^{1,2}}),\mathrm{Re}(\tau),\mathrm{Im}(\tau)\bigl )\, .\]It then assembles the output of
DW()in a \((2h^{1,2}+2)\)-dimensional real vector\[\bigl (\text{Re}(D_1 W), \text{Im}(D_1 W),\ldots, \text{Re}(D_{h^{1,2}} W), \text{Im}(D_{h^{1,2}} W),\text{Re}(D_{\tau} W), \text{Im}(D_{\tau} W)\bigl )\, .\]- Parameters:
x (
Array) – Array of shape (\(2(h^{1,2}+1)\), ) containing real and imaginary parts of the complex structure moduli \(z^i\) and axio-dilaton \(\tau\).fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
- Returns:
Array – Vector of shape (\(2(h^{1,2}+1)\), ) containing real and imaginary parts of the \(F\)-term conditions in alternating order.
- Return type:
Array
See also:
DW()
- DW_z(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Calculates the Kähler covariant derivative of the superpotential \(W\) with respect to the complex structure moduli \(z^{i}\).
Details
The \(F\)-term conditions for the complex structure moduli \(z^{i}\) are given by
\[D_i W = \partial_{z^i}W+(\partial_{z^i}K)\, W = W_i +K_i\, W \, .\]They appear prominently in the \(F\)-term scalar potential
scalar_potential().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Values of the \(F\)-term conditions for the complex structure moduli \(z^{i}\).
- Return type:
Array
See also:
superpotential()See also:
dW_z()See also:
dK_z()See also:
dK_cz()
- DcDW(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns a matrix containing the mixed second Kähler derivatives \(D_{\overline{I}}D_{J}W\).
Details
More explicitly, we compute
\[D_A D_{\overline{B}} W=K_{\overline{B}}D_{A}W+K_{A\overline{B}}W\]Generically, this function is not symmetric, but it is in the SUSY case where \(D_AW=0\) since
\[D_A D_{\overline{B}} W\bigl |_{D_AW=0}=K_{A\overline{B}}W\, .\]In particular, this is symmetric.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Values of \(D_{\overline{I}}D_{J}W\).
- Return type:
Array
- F(moduli, conj=False)#
Computes the pre-potential for given values of the moduli.
Note
We return the value of the pre-potential in terms projective coordinates
\[z^{i}=\frac{X^i}{X^0}\, .\]Per default, we work in the gauge choice \(X^0=1\), but other gauge choices can be provided as inputs.
Note
We provide the option to compute the pre-potential and some additional functions in terms of the periods directly, see in particular
jaxvacua.periods.periods.F_LCS_per(),jaxvacua.periods.periods.prepot_per()andjaxvacua.periods.periods.period_vector_per().Warning
The moduli space limit around which the pre-potential is computed is set by the global parameter
self.periods.limit. Currently, onlyself.periods.limit="LCS"is supported.- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of the prepotential \(F(z^i)\).
- Return type:
complex
- Errors:
ValueError: If the moduli space limit is not identified.
- Aliases:
See also:
prepot_per()
- F_LCS(moduli, conj=False)#
Calculates the value of the LCS prepotential in terms of the complex structure moduli \(z^{i}\).
Details
At LCS, we can write the prepotential as
\[F_{\text{LCS}}(z^1,\ldots , z^{h^{1,2}})=F_{\text{poly}}(z^1,\ldots , z^{h^{1,2}}) + F_{\text{inst}}(z^1,\ldots , z^{h^{1,2}})\]see e.g. Eq. (2.13) in 1312.0014 for an equivalent formula. Here, the polynomial piece is given by
\[F_{\text{poly}}(z^1,\ldots , z^{h^{1,2}})=\dfrac{1}{6}\kappa_{ijk}\, z^i z^j z^k+\dfrac{1}{2} a_{ij}z^i z^j+b_i\, z^i+\dfrac{\text{i}}{2}\tilde{\xi}\, ,\]Here, \(\widetilde{\kappa}_{ijk}\) are the triple intersection numbers of the mirror dual Calabi-Yau threefold \(\widetilde{X}\). Further, we defined
\[\begin{split}a_{ij} = \dfrac{1}{2}\begin{cases} \widetilde{\kappa}_{iij} & i\geq j\\[0.3em] \widetilde{\kappa}_{ijj} & i<j \end{cases} \, , \quad b_i = \dfrac{1}{24} \int_{\tilde{D}^i}\, c_2(\widetilde{X})\, , \quad \tilde{\xi}=\frac{\zeta(3)\, \chi(\widetilde{X})}{(2\pi)^3}\, .\end{split}\]The instanton contributions read
\[F_{\mathrm{inst}}(z) = -\frac{1}{(2\pi\mathrm{i})^3}\, \sum_{q\in\mathcal{M}(\widetilde{X})}\, n_q^{0}\, \text{Li}_3\left (\text{e}^{2\pi \text{i} q_i z^i}\right )\; , \quad \text{Li}_3\left (x\right )=\sum_{m=1}^{\infty}\, \dfrac{x^{m}}{m^{3}}\, .\]in terms of genus-0 Gopakumar-Vafa (GV) invariants \(n_q^0\) and the 3rd polylogarithm \(\text{Li}_3(x)\). Alternatively, the instanton contributions can be expressed as
\[F_{\text{inst}}(z^1,\ldots , z^{h^{1,2}})=\sum_{q\in\mathcal{M}(\widetilde{X})}\, N_q\, \text{e}^{2\pi \text{i} q_i z^i}\]in terms of genus-0 Gromov-Witten (GW) invariants \(N_q\). Both pieces are computed in separate functions, see
F_LCS_poly()andF_inst()for details.- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of the LCS prepotential \(F_{\text{LCS}}\).
- Return type:
complex
See also:
F_LCS_poly(),F_inst()
- F_LCS_poly(moduli, conj=False)#
Computes the polynomial contribution \(F_{\mathrm{poly}}\) to the LCS prepotential \(F_{\mathrm{LCS}}\) in terms of the complex structure moduli \(z^i\).
Details
At Large Complex Structure (LCS), the polynomial part \(F_{\mathrm{poly}}\) of the prepotential \(F_{\mathrm{LCS}}\) is given by
\[F_{\text{poly}}(Z)=\dfrac{1}{6}\widetilde{\kappa}_{ijk}\, z^i z^j z^k +\dfrac{1}{2} a_{ij}z^i z^j+b_i\, z^i +\dfrac{\text{i}}{2}\tilde{\xi}\, .\]Here, \(\widetilde{\kappa}_{ijk}\) are the triple intersection numbers of the mirror dual Calabi-Yau threefold \(\widetilde{X}\). Further, we defined
\[\begin{split}a_{ij} = \dfrac{1}{2}\begin{cases} \widetilde{\kappa}_{iij} & i\geq j\\[0.3em] \widetilde{\kappa}_{ijj} & i<j \end{cases} \, , \quad b_i = \dfrac{1}{24} \int_{\tilde{D}^i}\, c_2(\widetilde{X})\, , \quad \tilde{\xi}=\frac{\zeta(3)\, \chi(\widetilde{X})}{(2\pi)^3}\, .\end{split}\]- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of the polynomial contribution \(F_{\mathrm{poly}}\) to the LCS prepotential \(F_{\mathrm{LCS}}\).
- Return type:
complex
See also:
F_LCS()
- F_inst(moduli, conj=False)#
Returns the instanton part \(F_{\mathrm{inst}}\) of the LCS prepotential \(F_{\mathrm{LCS}}\) in terms of the complex structure moduli \(z^i\).
Details
The sum over world-sheet instantons in the Type IIA language is given by
\[F_{\text{inst}}(z^1,\ldots , z^{h^{1,2}})=-\frac{1}{(2\pi\mathrm{i})^3}\, \sum_{q\in\mathcal{M}(\widetilde{X})}\, n_q^{0}\, \text{Li}_3\left (\text{e}^{2\pi \text{i} q_i z^i}\right )\; , \quad \text{Li}_3\left (\right )=\sum_{m=1}^{\infty}\, \dfrac{x^{m}}{m^{3}}\]where the sum is performed over all effective curve classes \(q\in\mathcal{M}(\widetilde{X})\) in the Mori cone \(\mathcal{M}(\widetilde{X})\) of the mirror dual manifold \(\widetilde{X}\). Here, the \(n_q^{0}\) are the genus-0 Gopakumar-Vafa (GV) invariants which can be computed systematically using methods described in hep-th/9308122.
The infinite sum appearing in the poly-logarithm \(\text{Li}_3\) can be rewritten to arrive at
\[\sum_{q\in\mathcal{M}(\widetilde{X})}\, n_q^{0}\, \text{Li}_3\left (\text{e}^{2\pi \text{i} q_i z^i}\right ) = \sum_{q\in\mathcal{M}(\widetilde{X})}\, N_q\, \text{e}^{2\pi \text{i} q_i z^i}\]in terms of genus-0 Gromov-Witten (GW) invariants \(N_q\). We typically work with the latter to simplify the calculation.
- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of the instanton part \(F_{\mathrm{inst}}\) of the LCS prepotential \(F_{\mathrm{LCS}}\).
- Return type:
complex
See also:
F_LCS()See also:
F_LCS_poly()
- H(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, mode=None)#
Returns the Hessian of the scalar potential.
Details
Explicitly, we compute the following second derivatives of the scalar potential,
\[V_{A\overline{B}}=\partial_{A}\partial_{\bar{B}} V \; ,\quad V_{AB}=\partial_{A}\partial_{B} V\, .\]We return the Hessian matrix
\[H = \left (\begin{array}{cc}V_{A\overline{B}} & V_{AC}\ V_{\overline{D}\overline{B}} & V_{\overline{D}C} \end{array}\right )\]This matrix is used to compute the mass spectrum from
mass_matrix().Note
We provide two computational modes which can be set via the optional argument
mode. If we compute the Hessian at generic points in moduli space, then we should usemode=Nonewhich is also the default. At SUSY minimum where \(D_I W=0\) for all fields, we can use a simplified version of the Hessian which is faster to evaluate. To do so, we have to usemode="SUSY"instead.Warning
When using
mode="SUSY", one should be cautious regarding numerical errors and noise.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.mode (
str) – The mode to compute the Hessian. Formode=None, returns the general Hessian from explicit second derivatives of the scalar potential. For"SUSY", computes Hessian at a SUSY locus assuming \(D_I W=0\) using standard SUGRA formulas for the Hessian. For"SUGRA", computes the Hessian from explicit SUGRA building blocks (\(D_I W\), \(K^{I\bar{J}}\), \(W\), \(\Gamma\), \(R\)) at generic points. See_hessian_SUGRA(). For"real", computes Hessian for the real and imaginary components of the complex scalar fields. Defaults toNone.
- Returns:
Array – Hessian matrix with entries \(\partial_{A}\partial_{\bar{B}} V\) and \(\partial_{A}\partial_{B} V\).
- Return type:
Array
- ISD_condition(moduli, moduli_c, tau, tau_c, fluxes, mode='complex')#
Checks whether the fluxes satisfy the ISD condition \(\star G_3=\text{i}G_3\).
Details
If the 3-form fluxes are ISD, then the RR-fluxes \(f=(f_1,f_2)\) and NSNS-fluxes \(h=(h_1,h_2)\) with \(f_i,h_i \in \mathbb{Z}^{h^{1,2}+1}\) satisfy
\[f_1-\tau h_1=\overline{\mathcal{N}}(z^i,\overline{z}^i)\, (f_2-\tau h_2)\, ,\]where the matrix \(\mathcal{N}\) corresponding to the gauge kinetic function is computed using
gauge_kinetic_matrix(). Alternatively, this condition can also be written as\[f=(s\, M(z^i,\overline{z}^i)\Sigma + c_0)\, h\; ,\quad \tau=c_0 + \text{i} s \, .\]where the matrix \(M(z^i,\overline{z}^i)\) (also called ISD-matrix) is computed via
ISD_matrix().This function computes the difference between left and right hand side of either of these equations depending on the input. If
mode="complex", then it returns\[f_1-\tau h_1 - \overline{\mathcal{N}}(z^i,\overline{z}^i)\, (f_2-\tau h_2)\, ,\]and for
mode="real"\[f-(s \, M(z^i,\overline{z}^i)\Sigma + c_0)\, h\, .\]- Parameters:
moduli (Array) – Complex structure moduli values.
moduli_c (Array) – Complex conjugate values for complex structure moduli.
tau (complex) – : Value of axio-dilaton.
tau_c (complex) – Value of complex conjugate axio-dilaton.
fluxes (Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
mode (str, optional) – String specifying which version of the ISD equation to use. Options are :c:var`”complex”` or :c:var`”real”. Defaults to :c:var`mode = “complex”.
- Returns:
Array – Difference between the left and right hand side of the ISD equation.
- ISD_matrix(moduli, moduli_c)#
Computes the value of the ISD-matrix \(\mathcal{M}\).
Note
This function descends from
jaxvacua.periods.periods.ISD_matrix()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.
- Returns:
Array – Value of the ISD-matrix \(\mathcal{M}\).
- Return type:
Array
- Aliases:
See also:
jaxvacua.periods.periods.ISD_matrix()
- K(moduli, moduli_c, tau, tau_c)#
Returns the value of the Kähler potential.
Details
Let \(X\) be a Calabi-Yau threefold and \(\Omega_3\) its holomorphic \((3,0)\)-form. Then this function returns the value of the following integral:
\[K(z^i,\overline{z}^i,\tau,\overline{\tau})=-\log\bigl [-\text{i}(\tau-\overline{\tau})\bigr ]-\log\bigl [\mathcal{A}(z^i,\overline{z}^i)\bigr ]\]where \(\mathcal{A}(z^i,\overline{z}^i)\) is the mirror dual CY volume defined as
\[\mathcal{A}(z^i,\overline{z}^i)=-\text{i}\, \int_{X}\, \Omega_3\wedge \overline{\Omega}_3 = -\text{i}\, \Pi^\dagger(\overline{z}^i)\cdot \Sigma\cdot \Pi(z^i)\, .\]The period vector can be computed via
period_vector()orjaxvacua.periods.periods.period_vector_per().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Value of the Kähler potential.
- Return type:
complex
- Aliases:
See also:
A()
- M(moduli, moduli_c)#
Computes the value of the ISD-matrix \(\mathcal{M}\).
Note
This function descends from
jaxvacua.periods.periods.ISD_matrix()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.
- Returns:
Array – Value of the ISD-matrix \(\mathcal{M}\).
- Return type:
Array
- Aliases:
See also:
jaxvacua.periods.periods.ISD_matrix()
- N(moduli, moduli_c, conj=False)#
Computes the value of the gauge kinetic matrix \(\mathcal{N}\).
Note
This function descends from
jaxvacua.periods.periods.gauge_kinetic_matrix()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the gauge kinetic matrix \(\mathcal{N}\).
- Return type:
Array
- Aliases:
- V(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, normalise=False)#
Returns the value of the \(F\)-term scalar potential.
Details
The \(F\)-term scalar potential in 4D \(\mathcal{N}=1\) supergravity is given by
\[V_F=\mathrm{e}^{K}\,\bigl (K^{I\bar{J}}\, D_IW\, D_{\bar{J}} \overline{W}-3|W|^2\bigl )\, .\]Here, the indices \(I = (1,\ldots,h^{1,2}+1)\) run only over the axio-dilaton and the complex structure moduli ignoring the Kähler moduli. Due to the no-scale structure of the classical Kähler potential, the term \(-3|W|^2\) is cancelled by the Kähler moduli sector giving rise to the no-scale flux scalar potential
\[V_F=\mathrm{e}^{K}\, K^{I\bar{J}}\, D_IW\, D_{\bar{J}} \overline{W}\, .\]In more detail, we have at the level of the classical \(\mathcal{N}=2\) Kähler potential for the axio-dilaton \(\tau\) and the complex structure moduli \(z^{i}\)
\[V_F=\mathrm{e}^{K}\, \bigl (K^{i\bar{\jmath}}\, D_iW\, D_{\bar{\jmath}} \overline{W} +K^{\tau\bar{\tau}}\, D_\tau W\, D_{\bar{\tau}} \overline{W}\bigl )\, .\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.normalise (
bool) – IfTrue, rescales superpotential by \(\sqrt{2/\pi}\). Defaults toFalse.
- Returns:
complex – Value of the \(F\)-term scalar potential induced by 3-form fluxes.
- Return type:
complex
- Aliases:
See also:
DW()See also:
inverse_kahler_metric()See also:
kahler_potential()
- V_tilde(moduli, moduli_c)#
Returns the value of the mirror dual Calabi-Yau volume.
Details
Let \(X\) be a Calabi-Yau threefold and \(\Omega_3\) its holomorphic \((3,0)\)-form. Then this function returns the value of the following integral:
\[\mathcal{A}(z^i,\overline{z}^i)=-\text{i}\, \int_{X}\, \Omega_3\wedge \overline{\Omega}_3 = -\text{i}\, \Pi^\dagger(\overline{z}^i)\cdot \Sigma\cdot \Pi(z^i)\]This object appears as the argument inside the Kähler potential, see
kahler_potential(). Given that it is dual to the volume of the mirror Calabi-Yau threefold \(\widetilde{X}\), it is manifestly positive, provided the Kähler cone conditions of \(\widetilde{X}\) are satisfied.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.
- Returns:
complex – Mirror dual Calabi-Yau volume.
- Return type:
complex
- Aliases:
See also:
period_vector()See also:
kahler_potential()
- V_x(x, fluxes, noscale=True)#
Returns the value of the real part of the F-term scalar potential \(V\) for input of the real scalar fields.
Note
This function is a wrapper which is used to find non-SUSY minima by looking at gradients of the scalar potential directly, see for example
_newton_method_flux_vacua_real().- Parameters:
x (
Array) – JAX array of shape (\(2(h^{1,2}+1)\),) containing the moduli and axio-dilaton as real and imaginary parts.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.
- Returns:
float – Value of \(V\).
- Return type:
float
See also:
scalar_potential()
- W(moduli, tau, fluxes, conj=False, normalise=False)#
Calculates the value of the superpotential for given flux, moduli and axio-dilaton.
Details
For a Calabi-Yau manifold \(X\), the Gukov-Vafa-Witten superpotential hep-th/9906070 is defined in terms of the complex 3-form flux \(G_3=F_3-\tau H_3\) and the holomorphic 3-form \(\Omega_3\) as
\[W(Z,\tau) = \int_{X} \, G_3\wedge \Omega_3 = (\vec{f}-\tau\vec{h})^T\cdot\Sigma\cdot\Pi(Z)\]following the conventions of eq. (4) in 1912.10047. The period vector \(\Pi\) and the symplectic pairing \(\Sigma\) are defined in the periods class
jaxvacua.periods.periods().- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Axio-dilaton value.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.normalise (
bool) – IfTrue, rescales superpotential by \(\sqrt{2/\pi}\). Defaults toFalse.
- Returns:
complex – Value of the superpotential.
- Return type:
complex
- W0(moduli, tau, fluxes, conj=False, normalise=True)#
Calculates the value of the gauge invariant version of the flux superpotential.
Details
Following the conventions of 1912.10047, we define the gauge invariant version of the superpotential as
\[\tilde{W} = \sqrt{\dfrac{2}{\pi}}\, \mathrm{e}^{K/2}\, W\]Its absolute value is proportional to the gravitino mass. The normalisation is taken from 1908.04788.
- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Axio-dilaton value.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.normalise (
bool) – IfTrue, rescales superpotential by \(\sqrt{2/\pi}\). Defaults toTrue.
- Returns:
complex – Value of the gauge invariant superpotential.
- Return type:
complex
See also:
superpotential()See also:
kahler_potential()
- apply_monodromy(moduli, fluxes, n)#
Apply a monodromy shift \(z^a \to z^a + n^a\) to the moduli and transform the fluxes accordingly via the monodromy matrix \(M(n)\).
The RR-fluxes \(f\) and NSNS-fluxes \(h\) both transform as \(f \to M(n) \cdot f\), \(h \to M(n) \cdot h\).
- Parameters:
moduli (
Array) – Complex structure moduli.fluxes (
Array) – Flux vector[f | h].n (array-like) – Integer shift vector of shape
(h12,).
- Returns:
Tuple[Array, Array] –
(moduli_shifted, fluxes_shifted)- Return type:
Tuple[Array,Array]
- calibrate_priors(Nmax=None, modes=None, n_test=200, target_acceptance=0.8, sampler=None, verbose=True)#
Empirically refine the Gaussian-prior σ per ISD mode by binary-search.
For each mode in
modes, scans σ in[0.1, 20.0]over 12 binary- search iterations to find the σ where the measured ISD-completion acceptance rate ≈target_acceptance. “Acceptance” = fraction of randomN(0, σ²I)inputs that, when ISD-completed via the sampler and tadpole-filtered againstNmax, give a valid flux.Result overrides the analytical defaults from
_estimate_sigmas()(C2). This is the empirical refinement step: ~1–5 s per mode, produces model-adaptive parameters that can be cached viasave_calibration().Note:
calibrate_priorsends with an optional “runaway diagnostic” that callssample_critical_pointson 50 candidates. That is omitted here — the σ-calibration math is byte-for-byte equivalent; only the diagnostic print is dropped. Users wanting runaway stats can runsample_critical_points()directly after calibration.- Parameters:
Nmax (
int) – tadpole bound (required; method-level here, per the C-cluster convention).modes (list[str], optional) – modes to calibrate. Default:
["F", "H", "ISD+", "ISD-"].n_test (
int) – number of candidates per σ trial. Default:200.target_acceptance (
float) – target acceptance rate. Default:0.8.sampler (data_sampler, optional) – sampler instance. If
None(default), usesself.sampler.verbose (
bool) – print per-mode results.
- Returns:
``dict[str, float]`` – copy of the calibrated σ values per mode.
- Return type:
dict
Side effects:
Writes
self._calibrated_sigmas[mode] = σfor each mode.Writes
self._calibration_isd_modes = tuple(modes)to record which modes are empirically calibrated.
- canonical_fterms(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the canonically normalised \(F\)-term conditions \(F_I,\, F^I\).
Details
The canonically normalised \(F\)-term conditions are defined as
\[F_I = \mathrm{e}^{K/2}\, D_IW\, ,\quad F^I = \mathrm{e}^{K/2}\, K^{I\bar{J}}\, D_{\bar{J}}\overline{W}\, .\]They parametrise the contribution to the flux scalar potential
scalar_potential()\[F^I F_I = \mathrm{e}^{K}\, K^{I\bar{J}}\, D_IW\, D_{\bar{J}} \overline{W} \, .\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Canonically normalised \(F\)-term conditions \(F_I\).
Array – Canonically normalised \(F\)-term conditions \(F^I\).
- Return type:
Tuple[Array,Array]
- christoffel_symbols(moduli, moduli_c, tau, tau_c)#
Returns the Christoffel symbols \(\Gamma^E_{AC}\) of the Levi-Civita connection on the Kähler moduli space.
Details
The Christoffel connection on a Kähler manifold is given by
\[\Gamma^E_{AC} = K^{E\bar{F}}\,\partial_A K_{C\bar{F}}\]where \(K_{C\bar{F}}\) is the Kähler metric and \(K^{E\bar{F}}\) its inverse. The indices \(A, C, E\) run over the combined field space \((z^1,\ldots,z^{h^{1,2}},\tau)\).
For a Kähler manifold the connection is torsion-free, \(\Gamma^E_{AC} = \Gamma^E_{CA}\), and the only non-vanishing components have purely holomorphic lower indices.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Christoffel symbols \(\Gamma^E_{AC}\) with shape
(n, n, n)and index ordering[E, A, C].- Return type:
Array
See also:
dddK(),inverse_kahler_metric(),riemann_tensor()
- classify_solution(x, flux, noscale=True, min_tol=1e-06)#
Classify a converged critical-point candidate
(x, flux): returns{V, |DW|, eigenvalues, is_susy, is_minimum, Nflux}.Thin delegator over
jaxvacua.flux_utils.classify_solution(). See its docstring for argument and return-value detail.- Return type:
dict
- compute_residual(x, axis=1)#
Computes residual.
- Parameters:
x (Array) – Array.
- Returns:
Array – Sum of absolute values.
- compute_tau_vev(moduli, flux)#
Computes the value of the axio-dilaton \(\tau\) from the fluxes and complex structure moduli as a solution to the corresponding \(F\)-term condition \(D_{\tau}W=0\).
Details
The axio-dilaton \(\tau\) can be computed from the fluxes and complex structure moduli as a solution to the \(F\)-term condition
\[D_{\tau}W = \partial_{\tau}W + W \partial_{\tau}K = 0\, .\]This condition can be written as
\[D_{\tau}W = -\frac{1}{\tau-\overline{\tau}} (f - \overline{\tau} h)\cdot \Sigma \cdot \overline{\Pi}(z^i) = 0\, ,\]and the corresponding solution is given by
\[\tau = \frac{f\cdot \Sigma \cdot \overline{\Pi}(z^i)}{h\cdot \Sigma \cdot \overline{\Pi}(z^i)}\, ,\]where \(f=(f_1,f_2)\) and \(h=(h_1,h_2)\) are the RR- and NSNS-fluxes respectively with \(f_i,h_i \in \mathbb{Z}^{h^{1,2}+1}\). Further, \(\Pi(z^i)\) is the period vector depending on the complex structure moduli and \(\Sigma\) is the symplectic matrix defined in
period_matrix().Note
Notice that this equation only has a solution if the denominator is non-zero, i.e. if
\[h\cdot \Sigma \cdot \overline{\Pi}(z^i) \neq 0\, .\]If this condition is not satisfied, then this function raises a
ZeroDivisionError.- Parameters:
moduli (Array) – Complex structure moduli values.
flux (Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
- Returns:
complex – Value of the axio-dilaton \(\tau\).
- conifold_monodromy_matrix(conifold_curve=None, conifold_index=None)#
Picard-Lefschetz monodromy matrix around a conifold singularity where a 3-cycle \(\gamma = \sum_a c_a A^a\) shrinks to zero.
The monodromy acts on the period vector \(\Pi = (F_0, F_a, X^0, z^a)\) as
\[F_a \;\to\; F_a + c_a \sum_b c_b\, z^b\,,\]with all other periods invariant. This follows from the Picard-Lefschetz formula \(\delta \to \delta + (\delta \cdot \gamma)\,\gamma\) applied to the symplectic basis of \(H_3(X,\mathbb{Z})\).
- Parameters:
conifold_curve (array-like, optional) – Charge vector \(c = (c_1, \dots, c_{h^{2,1}})\) of the vanishing cycle. The vanishing period is \(w = c^T z\). If
None, usesself.lcs_tree.conifold.conifold_curvewhen available.conifold_index (int, optional) – Index (0-based among \(z^1 \dots z^h\)) of the conifold modulus, equivalent to
conifold_curve = e_{index}.
- Returns:
np.ndarray – Integer matrix of shape
(2*h12+2, 2*h12+2).- Raises:
ValueError – If both
conifold_curveandconifold_indexare provided, or if neither is given andlcs_tree.conifold.conifold_curveis unavailable.
- dDW(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{I}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the complex structure moduli \(z^i\) and the axio-dilaton \(\tau\).
Note
The output shape is such that
output[J-1][I-1]corresponds to \(\partial_{I}D_{J}W\) with \(I,J=1,\ldots, h^{1,2}+1\).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{I}D_{J}W\).
- Return type:
Array
- dDW_c(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{I}}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\) and the axio-dilaton \(\overline{\tau}\).
Note
The output shape is such that
output[J-1][I-1]corresponds to \(\partial_{\overline{I}}D_{J}W\) with \(I,J=1,\ldots, h^{1,2}+1\).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{I}}D_{J}W\).
- Return type:
Array
See also:
dDW()
- dDW_ctau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{\tau}}D_{J}W\) of the \(F\)-term \(D_{J}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{\tau}}D_{J}W\).
- Return type:
Array
See also:
dDW_tau()
- dDW_cz(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{z}^i}D_{J}W\) of the \(F\)-term \(D_{J}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
Note
The output shape is such that
output[J-1][i-1]corresponds to \(\partial_{\bar{\imath}}D_{J}W\) with \(J=1,\ldots, h^{1,2}+1\) and \(i=1,\ldots, h^{1,2}\).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{z}^i}D_{J}W\).
- Return type:
Array
See also:
dDW_z()
- dDW_real(moduli, tau, fluxes)#
Returns the Jacobian \(\partial_{\phi^\alpha}(D_J W)\) of the \(F\)-terms with respect to the real scalar fields \(\phi^\alpha = (a^i, v^i, c_0, s)\).
Details
Constructs the real Jacobian from the holomorphic and antiholomorphic derivatives via:
\[\frac{\partial}{\partial v^i} = \mathrm{i}\Bigl( \frac{\partial}{\partial z^i} - \frac{\partial}{\partial \bar{z}^i}\Bigr),\quad \frac{\partial}{\partial a^i} = \frac{\partial}{\partial z^i} + \frac{\partial}{\partial \bar{z}^i}\]Output shape:
(2n, 2n)where the rows are[Re(D_J W), Im(D_J W)]and the columns are[∂_v, ∂_a]derivatives.- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Axio-dilaton value.fluxes (
Array) – Array of fluxes.
- Returns:
Array – Shape
(2n, 2n)real Jacobian \(\partial_{\phi^\alpha}(D_J W)\).- Return type:
Array
- dDW_tau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\tau}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\tau}D_{J}W\).
- Return type:
Array
- dDW_tau_ctau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{\tau}}D_{\tau}W\) of the \(F\)-term \(D_{\overline{\tau}}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{\tau}}D_{\tau}W\).
- Return type:
Array
- dDW_tau_cz(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{z}^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{z}^i}D_{\tau}W\).
- Return type:
Array
- dDW_tau_tau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\tau}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\tau}D_{\tau}W\).
- Return type:
complex
- dDW_tau_z(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{z^i}D_{\tau}W\) of the \(F\)-term \(D_{\tau}W\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{z^i}D_{\tau}W\).
- Return type:
Array
- dDW_x(x, fluxes)#
Returns the first derivatives of the F-term conditions by differentiating with respect to the real fields.
- Parameters:
x (
Array) – Array of shape (\(2(h^{1,2}+1)\), ) containing real and imaginary parts of the complex structure moduli \(z^i\) and axio-dilaton \(\tau\).fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
- Returns:
Array – First derivatives of the real \(F\)-term conditions with respect to the real and imaginary parts of the complex structure moduli \(z^i\) and axio-dilaton \(\tau\).
- Return type:
Array
See also:
DW_x()
- dDW_z(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{z^i}D_{J}W\) of the \(F\)-terms \(D_{J}W\) with respect to the complex structure moduli \(z^i\).
Note
The output shape is such that
output[J-1][i-1]corresponds to \(\partial_{i}D_{J}W\) with \(J=1,\ldots, h^{1,2}+1\) and \(i=1,\ldots, h^{1,2}\).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{I}D_{z^j}W\).
- Return type:
Array
- dDW_z_ctau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{\tau}}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{\tau}}D_{z^j}W\).
- Return type:
Array
- dDW_z_cz(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\overline{z}^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\overline{z}^i}D_{z^j}W\).
- Return type:
Array
- dDW_z_tau(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{\tau}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{\tau}D_{z^j}W\).
- Return type:
Array
- dDW_z_z(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the holomorphic derivative \(\partial_{z^i}D_{z^j}W\) of the \(F\)-term \(D_{z^j}W\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(\partial_{z^i}D_{z^j}W\).
- Return type:
Array
- dF(moduli, conj=False)#
Computes the holomorphic derivative \(\partial_{z^i} F\) of the prepotential \(F\) for given values of the moduli.
- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the holomorphic derivatives \(\partial_{z^i}F\) of the prepotential \(F(z^i)\).
- Return type:
Array
See also:
prepot()
- dGamma(moduli, moduli_c, tau, tau_c)#
Returns the holomorphic derivative of the Christoffel symbols \(\partial_B \Gamma^E_{AC}\).
Details
Differentiates \(\Gamma^E_{AC} = K^{E\bar{F}}\,\partial_A K_{C\bar{F}}\) with respect to the holomorphic direction \(z^B\) (or \(\tau\)).
This quantity appears in the holomorphic second derivative of the inverse Kähler metric (and thus in the holomorphic Hessian \(\partial_A\partial_B V\)) via
\[\partial_A\partial_B K^{I\bar{J}} = -(\partial_B\Gamma^I_{AC})\,K^{C\bar{J}} + \Gamma^I_{AC}\,\Gamma^C_{BD}\,K^{D\bar{J}}\,.\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – \(\partial_B \Gamma^E_{AC}\) with shape
(n, n, n, n)and index ordering[E, A, C, B].- Return type:
Array
See also:
christoffel_symbols()
- dIKM_c(moduli, moduli_c, tau, tau_c)#
Returns the anti-holomorphic derivative of the inverse Kähler metric \(\partial_{\bar{B}} K^{I\bar{J}}\).
Details
From the identity \(K_{I\bar{F}}\,K^{I\bar{J}} = \delta_{\bar{F}}^{\bar{J}}\) one obtains
\[\partial_{\bar{B}} K^{I\bar{J}} = - K^{I\bar{F}}\,(\partial_{\bar{B}} K_{C\bar{F}})\,K^{C\bar{J}}\,.\]This quantity appears in the anti-holomorphic variation of the \(F\)-term scalar \(S = D_{\bar{I}}\bar{W}\,K^{I\bar{J}}\,D_J W\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – \(\partial_{\bar{B}} K^{I\bar{J}}\) with shape
(n, n, n)and index ordering[I, J̄, B̄].- Return type:
Array
See also:
dddK_c(),inverse_kahler_metric()
- dK(moduli, moduli_c, tau, tau_c)#
Returns the holomorphic derivative \(\partial_I K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^{i}\) and the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Values of \(\partial_I K\).
- Return type:
Array
See also:
kahler_potential()
- dK_c(moduli, moduli_c, tau, tau_c)#
Returns the holomorphic derivative \(\partial_{\overline{I}} K\) of the Kähler potential \(K\) with respect to the complex conjugate complex structure moduli \(\overline{z}^{i}\) and the axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Values of \(\partial_{\overline{I}} K\).
- Return type:
Array
See also:
kahler_potential()
- dK_ctau(moduli, moduli_c, tau, tau_c)#
Returns the anti-holomorphic derivative \(\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Anti-holomorphic derivative \(\partial_{\overline{\tau}}K\) of the Kähler potential \(K\).
- Return type:
complex
See also:
kahler_potential()
- dK_cz(moduli, moduli_c, tau, tau_c)#
Returns the anti-holomorphic derivative \(\partial_{\overline{z}^i}K\) of the Kähler potential \(K\) with respect to the conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Anti-holomorphic derivative \(\partial_{\overline{z}^i}K\) of the Kähler potential \(K\).
- Return type:
Array
See also:
kahler_potential()
- dK_tau(moduli, moduli_c, tau, tau_c)#
Returns the holomorphic derivative \(\partial_{\tau}K\) of the Kähler potential \(K\) with respect to the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Holomorphic derivative \(\partial_{\tau}K\) of the Kähler potential \(K\).
- Return type:
complex
See also:
kahler_potential()
- dK_z(moduli, moduli_c, tau, tau_c)#
Returns the holomorphic derivative \(\partial_{z^i}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Holomorphic derivative \(\partial_{z^i}K\) of the Kähler potential \(K\).
- Return type:
Array
See also:
kahler_potential()
- dM(moduli, moduli_c)#
Returns the holomorphic derivative \(\partial_{z^i}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.
- Returns:
Array – Holomorphic derivative \(\partial_{z^i}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\).
- Return type:
Array
- dM_X(moduli, moduli_c)#
Returns the holomorphic derivative \(\partial_{X^I}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the periods \(X^I\).
Note
This function descends from
jaxvacua.periods.periods.dM()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.
- Returns:
Array – Holomorphic derivative \(\partial_{X^I}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\).
- Return type:
Array
- dM_c(moduli, moduli_c)#
Returns the anti-holomorphic derivative \(\partial_{\overline{z}^i}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.
- Returns:
Array – Anti-holomorphic derivative \(\partial_{\overline{z}^i}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\).
- Return type:
Array
- dM_cX(moduli, moduli_c)#
Returns the anti-holomorphic derivative \(\partial_{\overline{X}^I}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\) with respect to the complex conjugate periods \(\overline{X}^I\).
Note
This function descends from
jaxvacua.periods.periods.dM_c()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.
- Returns:
Array – Anti-holomorphic derivative \(\partial_{\overline{X}^I}\mathcal{M}\) of the ISD-matrix \(\mathcal{M}\).
- Return type:
Array
- dN(moduli, moduli_c, conj=False)#
Returns the holomorphic derivative \(\partial_{z^i}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the complex structure moduli \(z^i\).
- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Holomorphic derivative \(\partial_{z^i}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\).
- Return type:
Array
- dN_X(moduli, moduli_c, conj=False)#
Returns the holomorphic derivative \(\partial_{X^I}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the periods \(X^I\).
Note
This function descends from
jaxvacua.periods.periods.dN()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Holomorphic derivative \(\partial_{X^I}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\).
- Return type:
Array
- dN_c(moduli, moduli_c, conj=False)#
Returns the anti-holomorphic derivative \(\partial_{\overline{z}^i}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\).
- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Anti-holomorphic derivative \(\partial_{\overline{z}^i}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\).
- Return type:
Array
- dN_cX(moduli, moduli_c, conj=False)#
Returns the anti-holomorphic derivative \(\partial_{\overline{X}^I}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\) with respect to the complex conjugate periods \(\overline{X}^I\).
Note
This function descends from
jaxvacua.periods.periods.dN_c()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Anti-holomorphic derivative \(\partial_{\overline{X}^I}\mathcal{N}\) of the gauge kinetic matrix \(\mathcal{N}\).
- Return type:
Array
- dV(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False, mode='complex')#
Returns the first holomorphic derivative \(\partial_{I}V\) of the \(F\)-term scalar potential \(V\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse. Becomes void ifmode="real".mode (str, optional) – String specifying whether to return complex or real derivatives. Defaults to
"complex".
- Returns:
Array – Value of \(\partial_{I}V\).
- Return type:
Array
- dV_tau(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False)#
Returns the first holomorphic derivative \(\partial_{\tau}V\) of the \(F\)-term scalar potential \(V\) with respect to the axio-dilaton \(\tau\).
Details
Computed via
jax.jacrevofscalar_potential()with respect to \(\tau\) (argnums=2). Forconj=True, differentiates with respect to \(\bar\tau\) (argnums=3):\[\partial_\tau V = \mathrm{e}^K \bigl[K_\tau\,(S - \lambda G) + \partial_\tau S - \lambda\,\partial_\tau G\bigr]\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes \(\partial_{\bar\tau}V\). Defaults toFalse.
- Returns:
complex – Value of \(\partial_{\tau}V\) (scalar).
- Return type:
Array
- dV_x(x, fluxes, noscale=True)#
Returns the gradients of the F-term scalar potential \(V\) with respect to the real scalar fields for real inputs.
Details
Let us denote the complex scalar fields as
\[z^i = a^i + \text{i} v^i\, ,\quad \tau = c_0 + \text{i} s\, .\]Then this function computes
\[\nabla V = (\partial_{a^1}V, \partial_{v^1}V,\ldots ,\partial_{a^{h^{1,2}}}V, \partial_{v^{h^{1,2}}}V,\partial_{c_0}V, \partial_{s}V)\, .\]- Parameters:
x (
Array) – JAX array of shape (\(2(h^{1,2}+1)\),) containing the moduli and axio-dilaton as real and imaginary parts.fluxes (
Array) – Flux vector of shape (\(4(h^{1,2}+1)\),)noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.
- Returns:
Array – Value of \((\partial_{a^1}V, \partial_{v^1}V,\ldots ,\partial_{a^{h^{1,2}}}V, \partial_{v^{h^{1,2}}}V,\partial_{c_0}V, \partial_{s}V)\).
- Return type:
Array
See also:
V_x()
- dV_z(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False)#
Returns the first holomorphic derivative \(\partial_{z^i}V\) of the \(F\)-term scalar potential \(V\) with respect to the complex structure moduli \(z^i\).
Details
Computed via
jax.jacrevofscalar_potential()with respect to the holomorphic moduli (argnums=0). Forconj=True, differentiates with respect to the antiholomorphic moduli (argnums=1):\[(\texttt{dV\_z})_i = \partial_{z^i} V = \mathrm{e}^K \bigl[K_i\,(S - \lambda G) + \partial_i S - \lambda\,\partial_i G\bigr]\]where \(S = D_{\bar I}\bar W\,K^{I\bar J}\,D_J W\) and \(G = |W|^2\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes \(\partial_{\bar{z}^i}V\). Defaults toFalse.
- Returns:
Array – Value of \(\partial_{z^i}V\), shape
(h12,).- Return type:
Array
- dW(moduli, tau, fluxes, conj=False)#
Calculates the holomorphic derivative \(W_I\) of the superpotential \(W\) with respect to all moduli \((z^i, \tau)\).
Details
Combines
dW_z()anddW_tau()into a single array viajax.grad(W, argnums=(0,1), holomorphic=True):\[W_I = (W_{z^1}, \ldots, W_{z^{h^{1,2}}}, W_\tau)\]Shape:
(h12 + 1,).- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the holomorphic derivative of the superpotential with respect to the complex structure moduli \(z^{i}\) and the axio-dilaton \(\tau\).
- Return type:
Array
- dW_tau(moduli, tau, fluxes, conj=False)#
Calculates the holomorphic derivative \(W_\tau=\partial_{\tau}W\) of the superpotential \(W\) with respect to the axio-dilaton \(\tau\).
Details
Since \(W = f^T\Pi - \tau\,h^T\Pi\), the axio-dilaton derivative is
\[\partial_\tau W = -h^T\Pi = -\int H_3 \wedge \Omega\]- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of the holomorphic gradient of the superpotential with respect to the axio-dilaton \(\tau\).
- Return type:
complex
- dW_z(moduli, tau, fluxes, conj=False)#
Calculates the holomorphic derivative \(W_i=\partial_{z^i}W\) of the superpotential \(W\) with respect to the complex structure moduli \(z^{i}\).
Details
The Gukov-Vafa-Witten superpotential is \(W = \int G_3 \wedge \Omega\), where \(\Omega\) is the holomorphic 3-form. Its holomorphic derivative with respect to the complex structure moduli is computed via
jax.gradofsuperpotential()withholomorphic=True.\[W_i = \partial_{z^i} W = \int G_3 \wedge \chi_i\]where \(\chi_i = \partial_{z^i}\Omega\) are the Kodaira-Spencer forms.
- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the holomorphic derivative of the superpotential with respect to the complex structure moduli \(z^{i}\).
- Return type:
Array
- ddDW(moduli, moduli_c, tau, tau_c, fluxes, conj=False)#
Returns the second derivative of the \(F\)-terms \(\partial_A(D_I W)\).
Details
Differentiates \(\partial_A(D_I W)\) (computed by
dDW()) once more with respect to either the holomorphic or anti-holomorphic field-space directions.For
conj=False(holomorphic):\[(\texttt{ddDW})_{I,A,B} = \partial_B\,\partial_A(D_I W)\]For
conj=True(mixed):\[(\texttt{ddDW})_{I,A,\bar{B}} = \partial_{\bar{B}}\,\partial_A(D_I W)\]These quantities appear in the 9-term product-rule expansion of \(\partial_A\partial_B S\) and \(\partial_A\partial_{\bar{B}} S\) (see
_hessian_SUGRA()), where \(S = D_{\bar{I}}\bar{W}\,K^{I\bar{J}}\,D_J W\).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfFalse, returns \(\partial_B\partial_A(D_I W)\) (holomorphic second derivative). IfTrue, returns \(\partial_{\bar{B}}\partial_A(D_I W)\) (mixed second derivative). Defaults toFalse.
- Returns:
Array – Shape
(n, n, n)with index ordering[I, A, B](or[I, A, B̄]whenconj=True), wheren = h^{1,2}+1.- Return type:
Array
See also:
dDW(),_hessian_SUGRA()
- ddDW_x(x, fluxes)#
Returns the second derivatives of the F-term conditions by differentiating with respect to the real fields.
- Parameters:
x (
Array) – Array of shape (\(2(h^{1,2}+1)\), ) containing real and imaginary parts of the complex structure moduli \(z^i\) and axio-dilaton \(\tau\).fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
- Returns:
Array – Second derivatives of the real \(F\)-term conditions with respect to the real and imaginary parts of the complex structure moduli \(z^i\) and axio-dilaton \(\tau\).
- Return type:
Array
See also:
DW_x()
- ddIKM(moduli, moduli_c, tau, tau_c)#
Returns the mixed second derivative of the inverse Kähler metric \(\partial_A\partial_{\bar{B}} K^{I\bar{J}}\).
Details
Differentiating \(\partial_{\bar{B}} K^{I\bar{J}} = -K^{I\bar{F}}(\partial_{\bar{B}}K_{C\bar{F}})K^{C\bar{J}}\) with respect to \(z^A\) yields three terms via the product rule:
\[\partial_A\partial_{\bar{B}} K^{I\bar{J}} = \underbrace{-\Gamma^I_{AQ}\,(\partial_{\bar{B}} K^{Q\bar{J}})}_{\text{A1}} \;\underbrace{-\;K^{I\bar{F}}\,R_{C\bar{F}A\bar{B}}\,K^{C\bar{J}}}_{\text{A2}_R} \;\underbrace{-\;K^{I\bar{F}}\,(K^{M\bar{N}} K_{3h,C\bar{N}A}\,K_{3a,M\bar{F}\bar{B}})\,K^{C\bar{J}}}_{\text{A2}_\Gamma} \;\underbrace{+\;K^{I\bar{F}}\,K_{3a,C\bar{F}\bar{B}}\,\Gamma^C_{AD}\,K^{D\bar{J}}}_{\text{A3}}\]where \(K_{3h}\) and \(K_{3a}\) are the holomorphic and anti-holomorphic third Kähler derivatives (
dddK(),dddK_c()), \(\Gamma^E_{AC}\) are the Christoffel symbols (christoffel_symbols()), and \(R_{i\bar{\jmath}k\bar{l}}\) is the Riemann tensor (riemann_tensor()).The Riemann tensor enters through the holomorphic derivative of the anti-holomorphic Kähler-metric derivative \(\partial_A(\partial_{\bar{B}} K_{C\bar{F}}) = K_{C\bar{F}A\bar{B}}\), which decomposes as \(R + \Gamma\)-contraction via the metric formula for the Riemann tensor.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – \(\partial_A\partial_{\bar{B}} K^{I\bar{J}}\) with shape
(n, n, n, n)and index ordering[I, J̄, B̄, A].- Return type:
Array
See also:
riemann_tensor(),christoffel_symbols(),dIKM_c()
- ddK_ctau_ctau(moduli, moduli_c, tau, tau_c)#
Returns the second holomorphic derivatives of the Kähler potential with respect to the axio-dilaton \(\tau\).
Details
The returned array has the components
\[K_{\tau\tau}(z^i,\overline{z}^i,\tau,\overline{\tau})=\partial_{\tau}\partial_{\tau}K(z^i,\overline{z}^i,\tau,\overline{\tau})\, .\]Note
These holomorphic derivatives are used e.g. in
DDW()to compute the second Kähler covariant derivative of the superpotential.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Second holomorphic derivative of the Kähler potential with respect to \(\tau\).
- Return type:
complex
- ddK_cz_ctau(moduli, moduli_c, tau, tau_c)#
Returns the second derivatives \(K_{\bar{\imath}\overline{\tau}}=\partial_{\overline{z}^i}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the complex conjugate complex structure moduli \(\overline{z}^i\) and the axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Second derivatives \(K_{\bar{\imath}\overline{\tau}}=\partial_{\overline{z}^i}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\).
- Return type:
Array
- ddK_cz_cz(moduli, moduli_c, tau, tau_c)#
Returns the second anti-holomorphic derivatives of the Kähler potential with respect to the complex structure moduli \(z^i\).
Details
The returned array has the components
\[K_{ij}(z^i,\overline{z}^i,\tau,\overline{\tau})=\partial_{z^i}\partial_{z^{j}}K(z^i,\overline{z}^i,\tau,\overline{\tau})\, .\]Note
These holomorphic derivatives are used e.g. in
DDW()to compute the second Kähler covariant derivative of the superpotential.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – \(h^{1,2}\times h^{1,2}\) matrix of the second holomorphic derivatives of the Kähler potential with respect to \(z^i\).
- Return type:
Array
- ddK_cz_tau(moduli, moduli_c, tau, tau_c)#
Returns the second derivatives \(K_{\tau\overline{j}}=\partial_{\tau}\partial_{\overline{z}^{j}}K\) of the Kähler potential \(K\) with respect to the conjugate complex structure moduli \(\overline{z}^i\) and the axio-dilaton \(\tau\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Second derivatives \(K_{\tau\overline{j}}=\partial_{\tau}\partial_{\overline{z}^{j}}K\) of the Kähler potential \(K\).
- Return type:
Array
- ddK_cz_z(moduli, moduli_c, tau, tau_c)#
Returns the second derivatives \(K_{\bar{\jmath}i}=\partial_{\overline{z}^j}\partial_{z^i}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\) and their conjugate.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Second derivatives \(K_{\bar{\jmath}i}=\partial_{\overline{z}^j}\partial_{z^i}K\) of the Kähler potential \(K\).
- Return type:
Array
See also:
dK_z()
- ddK_tau_ctau(moduli, moduli_c, tau, tau_c)#
Returns the second derivatives \(\partial_{\tau}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the axio-dilaton \(\tau\) and its conjugate.
Note
The returned scalar is given by
\[K_{\tau\overline{\tau}}(z^i,\overline{z}^i,\tau,\overline{\tau})=\partial_{\tau}\partial_{\overline{\tau}}K\, .\]For the standard Kähler potential \(K \supset - \log (-\text{i}(\tau-\overline{\tau}))\), we find
\[K_{\tau\overline{\tau}} = -\frac{1}{(\tau-\overline{\tau})^2}= \frac{1}{4\mathrm{Im}(\tau)^2}\, .\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Second derivatives \(\partial_{\tau}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\).
- Return type:
complex
- ddK_tau_tau(moduli, moduli_c, tau, tau_c)#
Returns the second holomorphic derivatives of the Kähler potential with respect to the axio-dilaton \(\tau\).
Details
The returned array has the components
\[K_{\tau\tau}(z^i,\overline{z}^i,\tau,\overline{\tau})=\partial_{\tau}\partial_{\tau}K(z^i,\overline{z}^i,\tau,\overline{\tau})\, .\]Note
These holomorphic derivatives are used e.g. in
DDW()to compute the second Kähler covariant derivative of the superpotential.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Second holomorphic derivative of the Kähler potential with respect to \(\tau\).
- Return type:
complex
- ddK_z_ctau(moduli, moduli_c, tau, tau_c)#
Returns the second derivatives \(K_{i\overline{\tau}}=\partial_{z^i}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\) and the conjugate axio-dilaton \(\overline{\tau}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Second derivatives \(K_{i\overline{\tau}}=\partial_{z^i}\partial_{\overline{\tau}}K\) of the Kähler potential \(K\).
- Return type:
Array
- ddK_z_cz(moduli, moduli_c, tau, tau_c)#
Returns the second derivatives \(K_{i\bar{\jmath}}=\partial_{z^i}\partial_{\overline{z}^j}K\) of the Kähler potential \(K\) with respect to the complex structure moduli \(z^i\) and their conjugate.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Second derivatives \(K_{i\bar{\jmath}}=\partial_{z^i}\partial_{\overline{z}^j}K\) of the Kähler potential \(K\).
- Return type:
Array
See also:
dK_z()
- ddK_z_tau(moduli, moduli_c, tau, tau_c)#
Returns the second holomorphic derivatives of the Kähler potential with respect to the complex structure moduli \(z^i\) and the axio-dilaton \(\tau\).
Details
The returned array has the components
\[K_{i\tau}(z^i,\overline{z}^i,\tau,\overline{\tau})=\partial_{z^i}\partial_{\tau}K(z^i,\overline{z}^i,\tau,\overline{\tau})\, .\]Note
These holomorphic derivatives are used e.g. in
DDW()to compute the second Kähler covariant derivative of the superpotential.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – \(h^{1,2}\times 1\) matrix of the second holomorphic derivatives of the Kähler potential with respect to \(z^i\) and \(\tau\).
- Return type:
Array
- ddK_z_z(moduli, moduli_c, tau, tau_c)#
Returns the second holomorphic derivatives of the Kähler potential with respect to the complex structure moduli \(z^i\).
Details
The returned array has the components
\[K_{ij}(z^i,\overline{z}^i,\tau,\overline{\tau})=\partial_{z^i}\partial_{z^{j}}K(z^i,\overline{z}^i,\tau,\overline{\tau})\, .\]Note
These holomorphic derivatives are used e.g. in
DDW()to compute the second Kähler covariant derivative of the superpotential.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – \(h^{1,2}\times h^{1,2}\) matrix of the second holomorphic derivatives of the Kähler potential with respect to \(z^i\).
- Return type:
Array
- ddV(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False, mode='complex')#
Returns the second derivatives \((\partial_I\partial_J V,\,\partial_I\partial_{\bar J}V)\) of the \(F\)-term scalar potential.
Details
For
mode="complex"(default), returns the concatenation of the holomorphic block \(\partial_I\partial_J V\) and the mixed block \(\partial_I\partial_{\bar J}V\) as a \(n\times 2n\) array.For
mode="real", returns the real-coordinate Hessian \(\partial_{\phi^\alpha}\partial_{\phi^\beta}V\) (equivalent toddV_x()).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse. Becomes void ifmode="real".mode (str, optional) – String specifying whether to return complex or real derivatives. Defaults to
"complex".
- Returns:
Array – Value of \((\partial_{I}\partial_{J}V,\partial_{I}\partial_{\overline{J}}V)\).
- Return type:
Array
- ddV_ctau(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False)#
Returns the mixed second derivatives \(\partial_{I}\partial_{\bar\tau}V\) of the \(F\)-term scalar potential.
Details
Computed as
jacrev(dV, argnums=3)forconj=False(holomorphic–antiholomorphic) orjacrev(dV, argnums=2)forconj=True:\[(\texttt{ddV\_ctau})_{I} = \partial_I \partial_{\bar\tau} V\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes \(\partial_{\bar I}\partial_\tau V\). Defaults toFalse.
- Returns:
Array – Value of \(\partial_{I}\partial_{\overline{\tau}}V\).
- Return type:
Array
- ddV_cz(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False)#
Returns the mixed second derivatives \(\partial_{I}\partial_{\bar{z}^j}V\) of the \(F\)-term scalar potential.
Details
Computed as
jacrev(dV, argnums=1)forconj=False(holomorphic–antiholomorphic) orjacrev(dV, argnums=0)forconj=True:\[(\texttt{ddV\_cz})_{I,\bar j} = \partial_I \partial_{\bar{z}^j} V\]This is the mixed block of the Hessian that contains the Riemann curvature contribution (see
_hessian_SUGRA()).- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes \(\partial_{\bar I}\partial_{z^j}V\). Defaults toFalse.
- Returns:
Array – Shape
(n, h12)with \(\partial_{I}\partial_{\bar{z}^j}V\).- Return type:
Array
- ddV_tau(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False)#
Returns the second derivatives \(\partial_{I}\partial_{\tau}V\) of the \(F\)-term scalar potential.
Details
Computed as
jacrev(dV, argnums=2)forconj=Falseorjacrev(dV, argnums=3)forconj=True:\[(\texttt{ddV\_tau})_{I} = \partial_I \partial_\tau V\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes \(\partial_{\bar I}\partial_{\bar\tau}V\). Defaults toFalse.
- Returns:
Array – Shape
(n,)with \(\partial_{I}\partial_{\tau}V\).- Return type:
Array
- ddV_x(x, fluxes, noscale=True)#
Returns the second derivatives of the F-term scalar potential \(V\) with respect to the real scalar fields for real inputs.
Details
Let us denote the complex scalar fields as
\[z^i = a^i + \text{i} v^i\, ,\quad \tau = c_0 + \text{i} s\, .\]We introduce the fields
\[\phi^\alpha = (a^1,v^1,\ldots ,a^{h^{1,2}},v^{h^{1,2}},c_0,s)\, .\]Then this function computes
\[(\nabla \nabla V)_{\alpha\beta} = \partial_{\phi^\alpha}\partial_{\phi^\beta}V\, .\]Up to permutations, this function is equivalent to
_hessian_real(), but slightly faster.- Parameters:
x (
Array) – JAX array of shape (\(2(h^{1,2}+1)\),) containing the moduli and axio-dilaton as real and imaginary parts.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.
- Returns:
Array – Value of \(\partial_{\phi^\alpha}\partial_{\phi^\beta}V\).
- Return type:
Array
See also:
V_x()
- ddV_z(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, conj=False)#
Returns the holomorphic second derivatives \(\partial_{I}\partial_{z^j}V\) of the \(F\)-term scalar potential.
Details
Computed as
jacrev(dV, argnums=0)forconj=False(holomorphic–holomorphic) orjacrev(dV, argnums=1)forconj=True(antiholomorphic–antiholomorphic):\[(\texttt{ddV\_z})_{I,j} = \partial_I \partial_{z^j} V\]where \(I\) runs over all \(h^{1,2}+1\) fields \((z^i, \tau)\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.conj (
bool) – IfTrue, computes \(\partial_{\bar I}\partial_{\bar z^j}V\). Defaults toFalse.
- Returns:
Array – Shape
(n, h12)with \(\partial_{I}\partial_{z^j}V\).- Return type:
Array
- ddW(moduli, tau, fluxes, conj=False)#
Calculates the full second holomorphic derivatives \(W_{IJ}=\partial_I\partial_J W\) of the superpotential.
Details
Assembles the \((h^{1,2}+1)\times(h^{1,2}+1)\) matrix from the blocks
ddW_z_z(),ddW_z_tau(), andddW_tau_tau():\[\begin{split}W_{IJ} = \begin{pmatrix} W_{z^i z^j} & W_{z^i \tau} \\ W_{\tau z^j} & W_{\tau\tau} \end{pmatrix}\end{split}\]- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(W_{IJ}=\partial_{I}\partial_{J}W\).
- Return type:
Array
- ddW_tau_tau(moduli, tau, fluxes, conj=False)#
Calculates \(W_{\tau\tau}=\partial_\tau^2 W\).
Details
Since \(W\) is linear in \(\tau\), this vanishes identically: \(W_{\tau\tau} = 0\). Nevertheless, it is computed via
jacrevfor consistency with the autodiff framework.- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(W_{\tau \tau}=\partial_{\tau}\partial_{\tau}W\).
- Return type:
Array
- ddW_z_tau(moduli, tau, fluxes, conj=False)#
Calculates the mixed second derivative \(W_{i\tau}=\partial_{z^i}\partial_{\tau}W\) of the superpotential.
Details
Computed via
jacrev(dW_z, argnums=1). Shape(h12,).\[W_{i\tau} = \partial_{z^i}\partial_\tau W = -\partial_{z^i}(h^T\Pi)\]- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of \(W_{i \tau}=\partial_{z^i}\partial_{\tau}W\).
- Return type:
Array
- ddW_z_z(moduli, tau, fluxes, conj=False)#
Calculates the second holomorphic derivatives \(W_{ij}=\partial_{z^i}\partial_{z^j}W\) of the superpotential.
Details
Computed via
jacrevofdW_z(). Shape(h12, h12).\[W_{ij} = \partial_{z^i}\partial_{z^j}\int G_3 \wedge \Omega\]- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of \(W_{i j}=\partial_{z^i}\partial_{z^j}W\).
- Return type:
Array
- dddK(moduli, moduli_c, tau, tau_c)#
Returns the third holomorphic-mixed Kähler derivative \(\partial_{A} K_{C\bar{F}}\) with respect to the combined field-space index \(A = (z^i, \tau)\).
Details
Computes the holomorphic derivative of the Kähler metric \(K_{C\bar{F}} = \partial_C\partial_{\bar{F}} K\) with respect to each holomorphic direction \(A\):
\[(\texttt{dddK})_{C\bar{F}A} = \partial_A K_{C\bar{F}} = \partial_A \partial_C \partial_{\bar{F}} K\,.\]These third derivatives appear in the Christoffel symbols of the Kähler connection via
\[\Gamma^E_{AC} = K^{E\bar{F}}\,\partial_A K_{C\bar{F}} \,.\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Third Kähler derivative \(\partial_A K_{C\bar{F}}\) with shape
(n, n, n)and index ordering[C, F̄, A]wheren = h^{1,2} + 1.- Return type:
Array
See also:
kahler_metric(),christoffel_symbols()
- dddK_c(moduli, moduli_c, tau, tau_c)#
Returns the third anti-holomorphic-mixed Kähler derivative \(\partial_{\bar{B}} K_{C\bar{F}}\) with respect to the combined anti-holomorphic field-space index \(\bar{B} = (\bar{z}^i, \bar{\tau})\).
Details
Computes the anti-holomorphic derivative of the Kähler metric \(K_{C\bar{F}}\):
\[(\texttt{dddK\_c})_{C\bar{F}\bar{B}} = \partial_{\bar{B}} K_{C\bar{F}} = \partial_{\bar{B}} \partial_C \partial_{\bar{F}} K\,.\]These appear in the anti-holomorphic derivative of the inverse Kähler metric and in the Riemann curvature tensor.
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Third Kähler derivative \(\partial_{\bar{B}} K_{C\bar{F}}\) with shape
(n, n, n)and index ordering[C, F̄, B̄]wheren = h^{1,2} + 1.- Return type:
Array
See also:
kahler_metric(),riemann_tensor()
- dedup_key(moduli, tau, fluxes, n_digits=6)#
Hashable dedup key for a single
(moduli, tau, fluxes)triple. Suitable for incrementalset/dictmembership tests in a streaming sampling loop.Distinct from
deduplicate_vacua(), which is a batchedjnp.uniquepass over an entire solution set.Thin delegator over
jaxvacua.flux_utils.dedup_key(). See its docstring for argument and return-value detail.Note (2026-05-17 arg-order change): flipped from legacy
(flux, moduli, tau)to(moduli, tau, fluxes)for project-wide consistency.
- deduplicate_vacua(moduli, tau, fluxes, n_digits=8, boundary_tol=1e-08, axion_fd=None)#
Removes duplicate vacua from a batch of solutions.
If
map_to_fd=True(set at construction), vacua are first mapped to the fundamental domain viamap_to_fd()(monodromy + \(\text{SL}(2,\mathbb{Z})\)), so that monodromy-equivalent solutions are identified. Ifmap_to_fd=False, deduplication is performed on the raw(moduli, tau, fluxes)values directly.In both cases, duplicates are identified by rounding to
n_digitsdecimal places. Note that a single flux vector can admit multiple distinct vacua, so the fingerprint always includes moduli and tau.- Parameters:
moduli (
Array) – Complex structure moduli, shape(N, h12).tau (
Array) – Axio-dilaton values, shape(N,).fluxes (
Array) – Flux vectors, shape(N, 2*n_fluxes).n_digits (
int) – Number of decimal digits for rounding when identifying duplicates. Default8.boundary_tol (
float) – Points within this tolerance of the FD boundary are snapped to the boundary. Default1e-8. Only used whenmap_to_fd=True.axion_fd (
Optional[Tuple[float,float]]) – Axion fundamental domain(lo, hi). IfNone, usesself.axion_fd. Only used whenmap_to_fd=True.
- Returns:
Tuple[Array, Array, Array, Array] –
(moduli_unique, tau_unique, fluxes_unique, keep_indices)- Return type:
Tuple[Array,Array,Array,Array]
See also:
map_to_fd()
- flux_to_pfv(flux)#
Returns M- and K-vector specifying PFV from full flux vector.
- Parameters:
flux (
Array) – Flux-vector.- Returns:
M (Array) – M-vector.
K (Array) – K-vector.
- Return type:
Tuple[Array,Array]
- classmethod from_model(model, sampler=None, map_to_fd=False, flux_bounds=(-10, 10), axion_bounds=(-0.5, 0.5), dilaton_bounds=(2.0, 10.0), moduli_bounds=(1.0, 5.0), seed=42)#
Construct a
FluxVacuaFinderfrom an existingFluxEFTinstance, reusing all of its geometry data (period vector, prepotential, conifold tree, …) — no recomputation. Composition-style alternative to the standardFluxVacuaFinder(h12=..., model_ID=...)constructor.Use this when:
You already have a
FluxEFTand want to run a finder on it without rebuilding the geometry (which can be slow for large h12).You want multiple finders on the same model (e.g. different
samplerbounds, differentmap_to_fd).You have a custom
FluxEFTsubclass and want the finder methods on top of it.
Internally clones the
model’s__dict__into a freshly allocatedFluxVacuaFinderinstance. The two instances thereafter share references to the same arrays / sub-objects (lcs_tree,periods,css, …). Mutating the model will be visible on the finder; mutating finder-only state (_map_to_fd,_calibrated_sigmas, …) does not leak back into the model.- Parameters:
model (
FluxEFT) – Instance whose state to clone.sampler (
data_sampler) – If given, used instead of lazy-constructing one from the bounds kwargs.map_to_fd (
bool) – Whether to map results to the fundamental domain. Defaults toFalse.flux_bounds (
tuple) – Forwarded todata_sampler; only used ifsampler is None.axion_bounds (
tuple) – Forwarded todata_sampler; only used ifsampler is None.dilaton_bounds (
tuple) – Forwarded todata_sampler; only used ifsampler is None.moduli_bounds (
tuple) – Forwarded todata_sampler; only used ifsampler is None.seed (
int) – Forwarded todata_sampler; only used ifsampler is None.
- Returns:
FluxVacuaFinder – New instance sharing geometry with
model.- Return type:
Example:
model = jvc.FluxEFT(h12=2, model_ID=1, maximum_degree=5) # ... use model for some FluxEFT-only work ... finder = jvc.FluxVacuaFinder.from_model(model) vacua = finder.sample_critical_points(Nmax=200, n_target=10)
- fterm_solver(moduli, tau, fluxes, objective_fct=None, optimiser=None, tol=1e-10, max_iters=100, print_progress=False, mode=None)#
Solves F-term conditions for a given optimiser.
- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.objective_fct (
Optional[Callable]) – Objective function to miminise.optimiser (
Optional[Callable]) – Optimiser to be used for the minimisation.tol (
float) – Tolerance for the residual. Defaults to1e-10.max_iters (
int) – Maximum number of iterations. Defaults to100.print_progress (
bool) – Whether to print the progress of the minimisation. Defaults toFalse.mode (
str) – Mode for running the solver. Defaults toNone.
- Returns:
int – Number of iterations.
Array – Complex structure moduli values.
Array – Value of axio-dilaton.
Array – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.
Array – Boolean array specifying whether constraints are satisfied.
Array – Residuals \(\sum_A |D_A W|\) of the \(F\)-terms.
- Return type:
Tuple[int,Array,Array,Array,Array,Array]
- gauge_kinetic_matrix(moduli, moduli_c, conj=False)#
Computes the value of the gauge kinetic matrix \(\mathcal{N}\).
Note
This function descends from
jaxvacua.periods.periods.gauge_kinetic_matrix()upon gauge fixing, i.e., making a choice of homogeneous complex coordinates on the complex structure moduli space of \(X\).- Parameters:
moduli (
Array) – Values of the complex structure moduli.moduli_c (
Array) – Complex conjugate values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the gauge kinetic matrix \(\mathcal{N}\).
- Return type:
Array
- Aliases:
- hessian(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, mode=None)#
Returns the Hessian of the scalar potential.
Details
Explicitly, we compute the following second derivatives of the scalar potential,
\[V_{A\overline{B}}=\partial_{A}\partial_{\bar{B}} V \; ,\quad V_{AB}=\partial_{A}\partial_{B} V\, .\]We return the Hessian matrix
\[H = \left (\begin{array}{cc}V_{A\overline{B}} & V_{AC}\ V_{\overline{D}\overline{B}} & V_{\overline{D}C} \end{array}\right )\]This matrix is used to compute the mass spectrum from
mass_matrix().Note
We provide two computational modes which can be set via the optional argument
mode. If we compute the Hessian at generic points in moduli space, then we should usemode=Nonewhich is also the default. At SUSY minimum where \(D_I W=0\) for all fields, we can use a simplified version of the Hessian which is faster to evaluate. To do so, we have to usemode="SUSY"instead.Warning
When using
mode="SUSY", one should be cautious regarding numerical errors and noise.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.mode (
str) – The mode to compute the Hessian. Formode=None, returns the general Hessian from explicit second derivatives of the scalar potential. For"SUSY", computes Hessian at a SUSY locus assuming \(D_I W=0\) using standard SUGRA formulas for the Hessian. For"SUGRA", computes the Hessian from explicit SUGRA building blocks (\(D_I W\), \(K^{I\bar{J}}\), \(W\), \(\Gamma\), \(R\)) at generic points. See_hessian_SUGRA(). For"real", computes Hessian for the real and imaginary components of the complex scalar fields. Defaults toNone.
- Returns:
Array – Hessian matrix with entries \(\partial_{A}\partial_{\bar{B}} V\) and \(\partial_{A}\partial_{B} V\).
- Return type:
Array
- inverse_kahler_metric(moduli, moduli_c, tau, tau_c, mode='block diagonal')#
Returns the inverse Kähler metric \(K^{\overline{I}J}\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.mode (
str) – Description
- Returns:
Array – Inverse Kähler metric \(K^{\overline{I}J}\).
- Return type:
Array
See also:
kahler_metric()
- inverse_kahler_metric_grad(moduli, moduli_c, tau, tau_c, mode='block diagonal')#
Returns the gradient of the inverse Kähler metric.
Note
This function is currently not being used, but might turn out to be useful when taking derivatives of the F-terms \(F^i = K^{i\overline{j}}D_{\overline{j}}\overline{W}\). The output corresponds to the tuple
\[(\partial_{z^i}K^{\bar{J}L},\partial_{\overline{z}^i}K^{\bar{J}L},\partial_{\tau}K^{\bar{J}L},\partial_{\overline{\tau}}K^{\bar{J}L})\, .\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.mode (
str) – Description
- Returns:
Array – Gradient of the inverse Kähler metric \(\partial_{I}K^{\overline{J}L},\partial_{\overline{I}}K^{\overline{J}L}\).
- Return type:
Tuple[Array,Array,complex,complex]
See also:
kahler_metric()See also:
inverse_kahler_metric()
- is_physical(x, moduli_max=None, verbose=False)#
Decide whether the converged candidate
xlies in the physical region of moduli space. Runs a five-tier cascade: runaway bound → dilaton floor → Kähler-cone hyperplanes → Kähler-metric positivity → basicIm(z_i) > 0.Thin delegator over
jaxvacua.flux_utils.is_physical(), passingselfas both the model and the source of the sampler (viaself.sampler). See the helper’s docstring for full cascade detail.Pass
verbose=Trueto print which check rejected the point (useful for debugging “why was my candidate filtered?”).- Return type:
bool
- kahler_metric(moduli, moduli_c, tau, tau_c, mode='block diagonal')#
Computes the Kähler metric \(K_{\overline{I}J}\).
Details
We assemble the various components of second derivatives obtained from
ddK_z_cz(),ddK_z_ctau(),ddK_cz_tau()andddK_tau_ctau()in such a way that\[\begin{split}K_{A\overline{B}}=\left (\begin{array}{cc} K_{i\overline{j}} & K_{i\overline{\tau}} \\[0.3em] K_{\tau\overline{j}} & K_{\tau\overline{\tau}} \end{array} \right )\end{split}\]Depending on the use case, we assume a block diagonal structure of the Kähler metric in which case the mixed second derivatives vanish \(K_{i\overline{\tau}}=K_{\tau\overline{j}}=0\).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.mode (
str) – Mode to compute the Kahler metric. Defaults to"block diagonal"meaning that there are no mixing terms between complex structure moduli and the axio-dilaton in the Kähler potential. If set toNoneinstead, the full set of 2nd derivatives of the Kähler potential is computed.
- Returns:
Array – Kähler metric \(K_{\overline{I}J}\).
- Raises:
ValueError – Wrong mode for computation. Only
mode=Noneandmode="block diagonal"are supported.- Return type:
Array
- kahler_potential(moduli, moduli_c, tau, tau_c)#
Returns the value of the Kähler potential.
Details
Let \(X\) be a Calabi-Yau threefold and \(\Omega_3\) its holomorphic \((3,0)\)-form. Then this function returns the value of the following integral:
\[K(z^i,\overline{z}^i,\tau,\overline{\tau})=-\log\bigl [-\text{i}(\tau-\overline{\tau})\bigr ]-\log\bigl [\mathcal{A}(z^i,\overline{z}^i)\bigr ]\]where \(\mathcal{A}(z^i,\overline{z}^i)\) is the mirror dual CY volume defined as
\[\mathcal{A}(z^i,\overline{z}^i)=-\text{i}\, \int_{X}\, \Omega_3\wedge \overline{\Omega}_3 = -\text{i}\, \Pi^\dagger(\overline{z}^i)\cdot \Sigma\cdot \Pi(z^i)\, .\]The period vector can be computed via
period_vector()orjaxvacua.periods.periods.period_vector_per().- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
complex – Value of the Kähler potential.
- Return type:
complex
- Aliases:
See also:
A()
- property lcs_tree#
Description: The
lcs_treeobject containing the topological data (intersection numbers, second Chern class, GV invariants, etc.) for the underlying Calabi-Yau geometry.- Returns:
lcs_tree – The topological data tree.
- linearised_shifts(moduli, tau, fluxes, Q=None, mode='ISD', return_flag=True, constraints=None, remove_NANs=False, step_size=1.0)#
Computes the linearised shifts for the complex structure moduli and the axio-dilaton.
- Parameters:
moduli (
Array) – Starting point for the complex structure moduli.tau (
complex) – Starting point for the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.Q (
int|None) – Tadpole bound to be used in the computation for the constraints.mode (
str) – Computation mode for obtaining the linearised shifts.constraints (
Optional[Callable]) – Additional constraints to be imposed on the solutions.remove_NANs (
bool) – Whether to remove NaN values from input. Defaults toFalse.step_size (
float) – Damping factor applied to the linearised shift; the moduli/axio-dilaton are updated bystep_sizetimes the computed shift.1.0recovers the full (undamped) step. Defaults to1.0.
- Returns:
Array – Shifted values for the complex structure moduli \(Z^i\).
complex – Shifted value for the axio-dilaton \(\tau\).
Array – Updated values for the fluxes based on the ISD-condition.
bool, optional – Boolean specifying whether the constraints are satisfied.
- Return type:
Union[Tuple[Array,complex,Array],Tuple[Array,complex,Array,Array]]
- linearised_shifts_F(moduli, tau, fluxes, mode='Fflux', return_shifts=False, remove_NANs=False, step_size=1.0)#
Computes linearised shifts for the complex structure moduli and axio-dilaton based on given F-flux.
- Parameters:
moduli (
Array) – Starting point for the complex structure moduli.tau (
complex) – Starting point for the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Computation mode for obtaining the linearised shifts. Defaults to"Fflux".return_shifts (
bool) – Whether to return the shifts for the moduli or the shifted moduli. Defaults toFalse.remove_NANs (
bool) – Whether to remove NaN values from input. Defaults toFalse.step_size (
float) – Damping factor applied to the linearised shift; the moduli/axio-dilaton are updated bystep_sizetimes the computed shift.1.0recovers the full (undamped) step. Defaults to1.0.
- Returns:
Array – Moduli shifts or shifted values of the complex structure moduli \(Z^i\).
complex – Axio-dilaton shift or shifted value of the axio-dilaton \(\tau\).
Array – Values of the fluxes.
- Return type:
Union[Tuple[Array,complex,Array],Tuple[Array,complex,Array,Array]]
- linearised_shifts_H(moduli, tau, fluxes, mode='Hflux', return_shifts=False, remove_NANs=False, step_size=1.0)#
Computes linearised shifts for the complex structure moduli and axio-dilaton based on given H-flux.
- Parameters:
moduli (
Array) – Starting point for the complex structure moduli.tau (
complex) – Starting point for the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Computation mode for obtaining the linearised shifts.return_shifts (
bool) – Whether to return the shifts for the moduli or the shifted moduli. Defaults toFalse.remove_NANs (
bool) – Whether to remove NaN values from input. Defaults toFalse.step_size (
float) – Damping factor applied to the linearised shift; the moduli/axio-dilaton are updated bystep_sizetimes the computed shift.1.0recovers the full (undamped) step. Defaults to1.0.
- Returns:
Array – Moduli shifts or shifted values of the complex structure moduli \(Z^i\).
complex – Axio-dilaton shift or shifted value of the axio-dilaton :math:` au`.
Array – Values of the fluxes.
- Return type:
Union[Tuple[Array,complex,Array],Tuple[Array,complex,Array,Array]]
- linearised_shifts_ISD(moduli, tau, fluxes, mode='ISD', return_shifts=False, remove_NANs=False, step_size=1.0)#
Computes the linearised shifts for the complex structure moduli and the axio-dilaton based on \(ISD_+\)-sampling for fluxes.
- Parameters:
moduli (
Array) – Values for the complex structure moduli.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Computation mode for obtaining the linearised shifts.return_shifts (
bool) – Whether to return the shifts for the moduli or the shifted moduli. Defaults toFalse.remove_NANs (
bool) – Whether to remove NaN values from input. Defaults toFalse.step_size (
float) – Damping factor applied to the linearised shift; the moduli/axio-dilaton are updated bystep_sizetimes the computed shift.1.0recovers the full (undamped) step. Defaults to1.0.
- Returns:
Array – Moduli shifts or shifted values of the complex structure moduli \(Z^i\).
complex – Axio-dilaton shift or shifted value of the axio-dilaton :math:` au`.
Array – Values of the fluxes.
- Return type:
Union[Tuple[Array,complex,Array],Tuple[Array,complex,Array,Array]]
- load_calibration(path)#
Load calibrated prior parameters from a JSON file produced by
save_calibration().Sets
self._calibrated_sigmasfrom the loaded"sigmas"block; also restoresself._calibration_isd_modesso subsequent code can tell which modes were calibrated.- Parameters:
path (
str) – JSON file path.- Returns:
``dict[str, float]`` – the loaded σ values per mode (also stored
on ``self``).
- Return type:
dict
- map_to_fd(moduli, tau, fluxes, axion_fd=None, boundary_tol=1e-08)#
Maps a vacuum solution
(moduli, tau, fluxes)to the fundamental domain by:Mapping the axio-dilaton \(\tau\) to the \(\text{SL}(2,\mathbb{Z})\) fundamental domain via
map_to_fd_tau().Shifting the axion \(\text{Re}(z^a)\) into the range
(lo, hi]via integer monodromy transformations \(z^a \to z^a + n^a\).Snapping values within
boundary_tolof the excluded boundaryloto the included boundaryhi.
For conifold models (
coniLCS_seriesorconiLCS_bulk), the conifold modulus is left untouched because the logarithmic monodromy breaks integer periodicity. Withconifold_basis=Trueit is index 0; withconifold_basis=Falseit is the charge combinationq·z, so the axion shifts are computed in the conifold-aligned framez_al = Λ⁻ᵀ z(leavingz_al[0]fixed) and the integer shift is rotated back asn = Λᵀ n_al ∈ ker(q).- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Axio-dilaton value.fluxes (
Array) – Flux vector.axion_fd (
Optional[Tuple[float,float]]) – Range(lo, hi)for \(\text{Re}(z^a)\). Convention: \(\text{Re}(z^a) \in (lo, hi]\). IfNone, usesself.axion_fd(default(-0.5, 0.5)).boundary_tol (
float) – Points within this tolerance of the excluded boundaryloare snapped tohi. Default1e-8.
- Returns:
Tuple[Array, complex, Array] –
(moduli_fd, tau_fd, fluxes_fd)mapped to the fundamental domain.- Return type:
Tuple[Array,complex,Array]
See also:
map_to_fd_tau(),monodromy_matrix()
- map_to_fd_tau(tau, fluxes, return_SL2Z_matrix=False, cutoff=1000000000000000.0, verbose=False)#
Map of the axio-dilaton value and the flux vector to the fundamental domain (FD) of \(\text{SL}(2,\mathbb{Z})\).
Details
The axio-dilaton transforms as
\[\tau \rightarrow \dfrac{a\tau+b}{c\tau+d}\; ,\quad ad-bc=1\; ,\quad \Sigma = \left (\begin{array}{cc}a & b \ c & d \end{array} \right )\in \text{SL}(2,\mathbb{Z})\, .\]The flux vector of RR-flux \(f\) and NSNS-flux \(h\) transform as
\[\begin{split}\left (\begin{array}{c}f \ h \end{array} \right )\rightarrow\left (\begin{array}{c}a\, f+b\, h \\ c\, f+d\, h\end{array} \right )\, .\end{split}\]Given a value \(\tau_0\) for the axio-dilaton, we apply translations and S-duality transformations
\[\tau_0 \rightarrow \tau_0+b\; ,\quad \tau_0 \rightarrow -\dfrac{1}{\tau_0}\, ,\]until we find a value of \(\tau\) in the fundamental domain \(\mathcal{F}_{\text{SL}(2,\mathbb{Z})}\) of \(\text{SL}(2,\mathbb{Z})\) given by
\[\mathcal{F}_{\text{SL}(2,\mathbb{Z})} = \lbrace \tau\in\mathbb{C}:\, |\text{Re}(\tau)|\leq 0.5\, ,\, |\tau|\leq 1\rbrace \, .\]Note
Per default, this function only returns the value of the axio-dilaton and the fluxes. It is however also possible to return the \(\text{SL}(2,\mathbb{Z})\) transformation taking the input value \(\tau\) of the axio-dilaton to the fundamental domain.
- Parameters:
tau (
complex) – Axio-dilaton value.fluxes (
Array) – The flux vector used in the mapping.return_SL2Z_matrix (
bool) – IfTrue, also returns the \(\text{SL}(2,\mathbb{Z})\) matrix. Defaults toFalse.cutoff (
float) – Safety cutoff for the iteration count. Defaults to1e15.verbose (
bool) – IfTrue, enables verbose mode. Defaults toFalse.
- Returns:
Tuple –
(tau_fd, fluxes_fd)or(tau_fd, fluxes_fd, SL2Z_matrix)ifreturn_SL2Z_matrix=True. Returns(None, None)if the input is invalid.
- mass_matrix(moduli, moduli_c, tau, tau_c, fluxes, mode=None, noscale=True, use_real_derivatives=False)#
Returns the mass matrix after canonical normalisation of the kinetic terms.
Details
In the action, we expand the scalar potential \(V(\phi^A,\overline{\phi}^A)\) in terms of the fields \(\phi^A =(z^i, \tau)\) around a reference point \(\phi^A_0=(z^i_0,\tau_0)\)
\[V(\phi^A_0+\phi^A , \overline{\phi}^A_0+\overline{\phi}^A )=V_0+ (V_{B})_0 \phi^B+(V_{AB})_0 \phi^A\phi^B +(V_{\overline{A}B})_0 \phi^\overline{A}\phi^B+\text{c.c.} +\ldots\]where, by abuse of notation, we call the fluctuations collectively \(\phi^A\in\lbrace z^i,\tau\rbrace\), \(A=1,\ldots, h^{1,2}+1\). Further, we defined
\[V_0=V(\phi^A_0 , \overline{\phi}^A_0 )\; ,\quad (V_{B})_0 = \partial_{B}V(\phi^A_0 , \overline{\phi}^A_0 )\; ,\quad \ldots\]We are primarily interested in evaluating this function for vaccum solutions \(\phi^A_0=(z^i_0,\tau_0)\) in which case
\[(\partial_{B}V)_0 = 0 \; ,\quad (\partial_{\overline{B}}V)_0 = 0 \, .\]Further, in the case of vacua satisfying the \(F\)-term conditions \(D_A W=0\), we compute the vacuum energy
\[\begin{split}V_0= \begin{cases} -3\mathrm{e}^{K}\, |W|^2 & \text{full potential}\\ 0 & \text{no-scale potential}\, . \end{cases}\end{split}\]In particular, for no-scale models like for type IIB flux vacua, we find a vanishing cosmological constant. In this case, by introducing \(\Phi^{\Lambda}=(\phi^A,\overline{\phi}^{\overline{B}})\), the above becomes
\[V(\phi^A_0+\phi^A , \overline{\phi}^A_0+\overline{\phi}^A )=\Phi^{\Lambda}H_{\Lambda\overline{\Delta}}(\phi^A_0 , \overline{\phi}^A_0 )\overline{\Phi}^{\overline{\Delta}} +\ldots\]where \(H_{\Lambda\overline{\Delta}}(\phi^A_0 , \overline{\phi}^A_0 )\) is the Hessian evaluated at the minimum which is determined as (see
hessian())\[\begin{split}H_{\Lambda\overline{\Delta}}(\phi^A_0,\overline{\phi}^A_0) = \left (\begin{array}{cc}V_{A\overline{B}} \;&\; V_{AC}\\[0.3em] V_{\overline{D}\overline{B}} \;&\; V_{\overline{D}C} \end{array}\right ) \, .\end{split}\]To obtain the mass matrix, we first perform a change of basis by diagonalising \(K_{A\overline{B}}\). That is, we compute the matrix \(\tilde{U}\) of normalised eigenvectors of \(K_{A\overline{B}}\). Then, in order to define a canonically normalised basis of fields \(\psi^A\), we define
\[U=\text{diag}(\sqrt{\lambda_1},\ldots ,\sqrt{\lambda_{h^{1,2}+1}})\, \tilde{U}\]so that
\[\phi^A = U^{A}\,_{B} \psi^B\]and thus
\[K_{A\overline{B}}\partial \phi^A\partial \overline{\phi}^B = \delta_{A\overline{B}}\partial \psi^A\partial \overline{\psi}^B \, .\]Warning
Notice that by definition \(U\) is clearly not a unitary matrix anymore because its determinant does not necessarily satisfy \(|\text{det}(U)|=1\).
Then, the mass matrix for the canonically normalised fields is defined as
\[M = \mathbb{U} H \mathbb{U}^{\dagger}\, , \quad \mathbb{U} = \left (\begin{array}{cc}U^{A\overline{B}} \;&\; 0\[0.3em] 0 \;&\; U^{\overline{D}C} \end{array}\right )\]or, in components,
\[\begin{split}M = \left (\begin{array}{cc}U_{E}\,^{A} V_{A\overline{B}}U^{\overline{B}}\,_{\overline{F}} \quad&\quad U_{E}\,^{A}V_{AC}U^{C}\,_{F}\\[0.8em] U_{\overline{E}}\,^{\overline{D}}V_{\overline{D}\overline{B}}U^{\overline{B}}\,_{\overline{F}} \quad&\quad U_{\overline{E}}\,^{\overline{D}}V_{\overline{D}C}U^{C}\,_{F} \end{array}\right ) \, .\end{split}\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – : Value of axio-dilaton.tau_c (
complex) – Value of complex conjugate axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – The mode to compute the mass matrix. Formode=None, uses the general Hessian from explicit second derivatives of the scalar potential. Formode="SUSY", computes Hessian at a SUSY locus assuming \(D_I W=0\) using standard SUGRA formulas for the Hessian. For"real", calculates Hessian for the real and imaginary components of the complex scalar fields. Defaults toNone.
- Returns:
Array – Mass matrix of the canonically normalised fields.
- Return type:
Array
- mirror_volume(moduli, moduli_c)#
Returns the value of the mirror dual Calabi-Yau volume.
Details
Let \(X\) be a Calabi-Yau threefold and \(\Omega_3\) its holomorphic \((3,0)\)-form. Then this function returns the value of the following integral:
\[\mathcal{A}(z^i,\overline{z}^i)=-\text{i}\, \int_{X}\, \Omega_3\wedge \overline{\Omega}_3 = -\text{i}\, \Pi^\dagger(\overline{z}^i)\cdot \Sigma\cdot \Pi(z^i)\]This object appears as the argument inside the Kähler potential, see
kahler_potential(). Given that it is dual to the volume of the mirror Calabi-Yau threefold \(\widetilde{X}\), it is manifestly positive, provided the Kähler cone conditions of \(\widetilde{X}\) are satisfied.- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.
- Returns:
complex – Mirror dual Calabi-Yau volume.
- Return type:
complex
- Aliases:
See also:
period_vector()See also:
kahler_potential()
- moduli_to_periods(moduli, conj=False)#
Transforms complex structure moduli to periods for the global choice of gauge.
- Parameters:
moduli (
Array) – Values of the complex structure moduli.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the periods.
- Return type:
Array
- monodromy_matrix(n)#
Computes the monodromy matrix \(T(\vec{n})\) for a general integer shift \(z^a \to z^a + n^a\).
This is the product \(T(\vec{n}) = \prod_b T_b^{n_b}\). The LCS monodromy matrices commute (maximally unipotent monodromy), so the order does not matter.
- Parameters:
n (array-like) – Integer shift vector of shape
(h12,).- Returns:
np.ndarray – Integer monodromy matrix of shape
(2*h12+2, 2*h12+2).- Return type:
ndarray
See also:
monodromy_matrix_single()
- monodromy_matrix_single(b)#
Computes the monodromy matrix \(T_b\) for the shift \(z^b \to z^b + 1\).
The period vector transforms as \(\Pi \to T_b \cdot \Pi\).
At LCS, uses the analytical formula from the intersection numbers, a-matrix, and b-vector. For other limits, falls back to a numerical computation via the period vector.
Note
The monodromy matrices receive no instanton corrections: the instanton sum \(F_{\mathrm{inst}}\) involves \(e^{2\pi i q_a z^a}\) which is invariant under \(z^a \to z^a + 1\).
- Parameters:
b (
int) – Index of the modulus to shift (0-based:b = 0, ..., h12-1).- Returns:
np.ndarray – Integer monodromy matrix of shape
(2*h12+2, 2*h12+2).- Return type:
ndarray
See also:
monodromy_matrix(),verify_monodromy()
- newton_method_flux_vacua(moduli, tau, fluxes, mode=None, step_size_Newton=0.1, tol=1e-10, max_iters=100, print_progress=False, solver_mode='complex', moduli_max=None)#
Solves the minimum conditions for flux vacua using Newton’s method.
- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Value of axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Whether to solve F-term conditions \(D_IW=0\) for SUSY minima or instead \(\partial_IV=0\) for general minima. Defaults toNone.step_size_Newton (
float) – Step size to be used in Newton’s method. Defaults to0.1.tol (
float) – Tolerance for the residual. Defaults to1e-10.max_iters (
int) – Maximum number of iterations. Defaults to100.print_progress (
bool) – Whether to print the progress of the minimisation. Defaults toFalse.solver_mode (
str) – Solver mode to use for the computation. Available options are"real"or"complex"to solve equations in terms of real or complex fields. Defaults to"complex".
- Returns:
Array – Complex structure moduli values.
Array – Value of axio-dilaton.
float – Residual \(\sum_A |D_A W|\) of the \(F\)-terms.
- Return type:
Tuple[int,Array,Array,float]
- period_vector(moduli, conj=False)#
Returns the period vector \(\Pi\) at a given point in moduli space.
Details
We introduce a symplectic basis of \(\{\Sigma_{I},\Sigma^I\} \subset H_3(X,\mathbb{Z})\) together with the corresponding Poincaré dual forms \(\{\alpha^I,\beta_I\}\). We then define the periods by integrating the holomorphic \(3\)-form \(\Omega\) over these cycles,
\[X^I=\int_{\Sigma_{I}}\Omega=\int_{X} \Omega\wedge \alpha^I\, ,\quad \mathcal{F}_I=\int_{\Sigma^I}\Omega=\int_{X} \Omega \wedge \beta_I \, .\]We collect the periods \(X^I,\mathcal{F}_I\) in the period vector \(\Pi\), that is,
\[\begin{split}\Pi=\left (\begin{array}{c} \mathcal{F}_I\\ X^I \end{array}\right )\, I=0,1,\ldots,h^{1,2}\, .\end{split}\]The periods \(X^I\) serve as homogeneous complex coordinates on a local patch of the complex structure moduli space of \(X\). Away from the locus \(X^0=0\), we introduce projective coordinates
\[z^i =\dfrac{X^i}{X^0}\, , i=1,\ldots,h^{2,1}(X)\, ,\]and normalise \(\Omega\) such that \(X^0=1\). The dual periods \(\mathcal{F}_I=\mathcal{F}_I(z^i)\) are then determined by a prepotential \(F(z^i)\) through
\[\mathcal{F}_i(z^i)=\partial_{z^i} F \, ,\quad \mathcal{F}_0 =2F-z^i\partial_{z^i}F\, .\]The period vector can then be computed from the derivatives of the prepotential \(F(z^i)\) as follows
\[\begin{split}\Pi(z^1,\ldots , z^{h^{1,2}})=\left (\begin{array}{c} 2F-F_i z^i\\ F_i\\ 1\\ z^i \end{array}\right )\, i=1,\ldots,h^{1,2}\, .\end{split}\]Here, we make use of standard identities for computing periods in terms of the projective coordinates directly.
Note
To compute the period vector in terms of the periods directly, please use
jaxvacua.periods.periods.period_vector_per().- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
Array – Value of the period vector \(\Pi\).
- Return type:
Array
See also:
prepot()See also:
dF()
- periods_to_moduli(XPer)#
Transforms periods to complex structure moduli.
- Parameters:
XPer (
Array) – Values of the periods.- Returns:
Array – Value of the complex structure moduli.
- Return type:
Array
- pfv_to_flux(M, K)#
Returns full flux vector from M- and K-vector specifying PFV.
- Parameters:
M (
Array) – M-vector.K (
Array) – K-vector.
- Returns:
Array – Flux vector.
- Return type:
Array
- pfv_to_moduli(M, K, tau)#
Returns values of the complex structure moduli at the level of the PFV.
- Parameters:
M (
Array) – M-vector.K (
Array) – K-vector.tau (
complex) – Axio-dilaton value.
- Returns:
Array – Values of complex structure moduli.
- Return type:
Array
- prepot(moduli, conj=False)#
Computes the pre-potential for given values of the moduli.
Note
We return the value of the pre-potential in terms projective coordinates
\[z^{i}=\frac{X^i}{X^0}\, .\]Per default, we work in the gauge choice \(X^0=1\), but other gauge choices can be provided as inputs.
Note
We provide the option to compute the pre-potential and some additional functions in terms of the periods directly, see in particular
jaxvacua.periods.periods.F_LCS_per(),jaxvacua.periods.periods.prepot_per()andjaxvacua.periods.periods.period_vector_per().Warning
The moduli space limit around which the pre-potential is computed is set by the global parameter
self.periods.limit. Currently, onlyself.periods.limit="LCS"is supported.- Parameters:
moduli (
Array) – Complex structure moduli values.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.
- Returns:
complex – Value of the prepotential \(F(z^i)\).
- Return type:
complex
- Errors:
ValueError: If the moduli space limit is not identified.
- Aliases:
See also:
prepot_per()
- projection_fluxes(moduli, tau, fluxes, mode=None)#
Computes the Hodge decomposition of the 3-form flux \(G_3 = F_3 - \tau H_3\) into its \((p,q)\)-components on the Calabi-Yau threefold.
Details
The complexified 3-form flux decomposes as
\[G_3 = G_3^{(3,0)} + G_3^{(2,1)} + G_3^{(1,2)} + G_3^{(0,3)}\]The ISD condition (imaginary self-dual) requires \(G_3^{(3,0)} = G_3^{(1,2)} = 0\). At a SUSY minimum, additionally \(G_3^{(0,3)} = 0\), leaving only the \((2,1)\)-component.
For
mode="SUSY", returns only the \((2,1)\) and \((0,3)\) components.- Parameters:
moduli (
Array) – Values for the complex structure moduli.tau (
complex) – Value of the axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.mode (
str) – Ifmode="SUSY", returns only \((2,1)\) and \((0,3)\) components.
- Returns:
Array – \((3,0)\)-component of the 3-form flux.
Array – \((2,1)\)-component of the 3-form flux.
Array – \((1,2)\)-component of the 3-form flux.
Array – \((0,3)\)-component of the 3-form flux.
- riemann_tensor(moduli, moduli_c, tau, tau_c)#
Returns the Riemann curvature tensor \(R_{i\bar{\jmath}k\bar{l}}\) of the Kähler moduli space.
Details
The Riemann tensor of a Kähler manifold can be expressed in terms of the Kähler metric and its derivatives as
\[R_{i\bar{\jmath}k\bar{l}} = \partial_k\partial_{\bar{l}} K_{i\bar{\jmath}} - K^{m\bar{n}}\, (\partial_k K_{i\bar{n}})\, (\partial_{\bar{l}} K_{m\bar{\jmath}})\,.\]The first term is the fourth mixed Kähler derivative \(K_{i\bar{\jmath}k\bar{l}} = \partial_k\partial_{\bar{l}} K_{i\bar{\jmath}}\), while the second subtracts the Christoffel-symbol contraction.
The tensor satisfies the Kähler symmetry
\[R_{i\bar{\jmath}k\bar{l}} = R_{k\bar{\jmath}i\bar{l}}\,.\]It enters the Hessian of the \(\mathcal{N}=1\) supergravity scalar potential at generic points in moduli space (see e.g. hep-th/0411183, Eq. 2.3).
- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Value of the axio-dilaton.tau_c (
complex) – Complex conjugate value of the axio-dilaton.
- Returns:
Array – Riemann tensor \(R_{i\bar{\jmath}k\bar{l}}\) with shape
(n, n, n, n)and index ordering[i, j̄, k, l̄].- Return type:
Array
See also:
christoffel_symbols(),dddK(),dddK_c()
- run_calibration(Nmax=None, n_sample=50, n_test=200, target_acceptance=0.8, modes=None, sampler=None, verbose=True)#
Convenience wrapper that runs the full Gaussian-M-prior calibration pipeline in one call:
_precompute_M_eigensystem()— eigen-decomposes the best-conditioned ISD matrix acrossn_samplemoduli points._estimate_sigmas()— analytical σ-per-mode defaults from the eigensystem.calibrate_priors()— empirical binary-search refinement to hittarget_acceptance.
Roughly 1-5 s per ISD mode on h12=2 (longer for larger geometries). Recommended before any
sample_critical_points()run withflux_prior="gaussian"(the default) for non-trivial Nmax.- Parameters:
Nmax (
int) – tadpole bound for both stages. Default:self.D3_tadpole.n_sample (
int) – moduli points scanned in step 1. Default:50.n_test (
int) – candidates per σ trial in step 3. Default:200.target_acceptance (
float) – target acceptance rate for the binary-search. Default:0.8.modes (
list) – ISD modes to calibrate. Default:["F", "H", "ISD+", "ISD-"].sampler (data_sampler, optional) – defaults to
self.sampler.verbose (
bool) – print per-step progress.
- Returns:
``dict[str, float]`` – the calibrated σ per ISD mode (also
stored on ``self._calibrated_sigmas``).
- Return type:
dict
Example:
finder = jvc.FluxVacuaFinder(h12=2, model_ID=1) finder.run_calibration(Nmax=200) vacua = finder.sample_critical_points( Nmax=200, n_target=100, solver="hybrid", )
- sample_SUSY_flux_vacua(N=100, sampler=None, rns_key=None, max_iters=10, moduli_sampling_mode='cone', max_tadpole=None, objective_fct=None, optimiser=None, optimisers=None, constraints=None, mode=None, tol=1e-10, vmap_dim=100, print_progress=False, deduplicate=True, step_size=1.0, max_resample_attempts=200, max_batches=1000, errors='raise')#
Samples SUSY flux vacua.
- Parameters:
N (
int) – Defaults to100.sampler (data_sampler, optional) – Defaults to
None.rns_key (PRNGKey, optional) – PRNG random key. Defaults to
None.max_iters (
int) – Maximum number of iterations. Defaults to100.moduli_sampling_mode (
str) – Sampling mode for the moduli values. Defaults to"cone".max_tadpole (
int|None) – Maximum tadpole to use for the sampling. Defaults toNone.objective_fct (
Optional[Callable]) – Objective function to miminise.optimiser (
Optional[Callable]) – Optimiser to be used for the minimisation.optimisers (
list|None) – List of optimisers to be used for the minimisation.tol (
float) – Tolerance for the residual. Defaults to1e-10.print_progress (
bool) – Whether to print the progress of the minimisation. Defaults toFalse.constraints (
Optional[Callable]) – Defaults toNone.mode (
str|None) – Solving mode specifying we want to solve F-term conditions with random fluxes (mode="random") or using ISD bias (mode="ISD") for the fluxes. Defaults toNone.vmap_dim (
int) – Array dimension to use in vmapping. Defaults to100.step_size (
float) – Damping factor forwarded tolinearised_shifts(); the moduli/axio-dilaton are updated bystep_sizetimes the linearised shift each iteration.1.0is the full step. Defaults to1.0.max_resample_attempts (
int) – Maximum number of times initial guesses are re-sampled while searching for a batch in which at least one candidate passes the one-step filter. Bounds the inner loop so a geometry/mode that rarely yields passing candidates cannot spin forever. Defaults to200.max_batches (
int) – Maximum number of outer sampling batches before giving up on reachingN. Defaults to1000.errors (
str) – Behaviour whenmax_resample_attemptsormax_batchesis exhausted —"raise"raises aRuntimeError(fail fast),"warn"emits a warning and returns the partial result. Defaults to"raise".
- Returns:
Tuple[Array, Array, Array, Array] – Complex structure moduli, axio-dilaton values, fluxes, and residuals.
- Return type:
Tuple[Array,Array,Array,Array]
- sample_SUSY_vacua_from_fluxes(fluxes_init=None, initial_guesses=None, N=100, sampler=None, rns_key=None, max_iters=10, moduli_sampling_mode='cone', max_tadpole=None, objective_fct=None, optimiser_init=None, optimiser_steps=None, constraints=None, mode=None, tol=1e-10, vmap_dim_flux=10, vmap_dim_pts=10, print_progress=False, deduplicate=True, step_size=1.0, max_batches=1000, errors='raise')#
Samples SUSY flux vacua for given input fluxes.
- Parameters:
fluxes_init (Array, optional) – Input fluxes.
initial_guesses (Tuple[Array,Array], optional) – Initial guesses. Format: (moduli,tau).
N (int, optional) – Defaults to
100.sampler (data_sampler, optional) – Defaults to
None.rns_key (PRNGKey, optional) – PRNG random key. Defaults to
None.max_iters (int, optional) – Maximum number of iterations. Defaults to
100.moduli_sampling_mode (str, optional) – Sampling mode for the moduli values. Defaults to
"cone".max_tadpole (int, optional) – Maximum tadpole to use for the sampling. Defaults to
None.objective_fct (Callable, optional) – Objective function to miminise.
optimiser (Callable, optional) – Optimiser to be used for the minimisation.
optimisers (list, optional) – List of optimisers to be used for the minimisation.
tol (float, optional) – Tolerance for the residual. Defaults to
1e-10.print_progress (bool, optional) – Whether to print the progress of the minimisation. Defaults to
False.constraints (Callable, optional) – Defaults to
None.mode (str, optional) – Solving mode specifying we want to solve F-term conditions with random fluxes (
mode="random") or using ISD bias (mode="ISD") for the fluxes. Defaults toNone.vmap_dim_flux (int, optional) – Array dimension to use in vmapping over fluxes. Defaults to
10.vmap_dim_pts (int, optional) – Array dimension to use in vmapping over initial guesses. Defaults to
10.step_size (
float) – Damping factor forwarded tolinearised_shifts(); the moduli/axio-dilaton are updated bystep_sizetimes the linearised shift each iteration.1.0is the full step. Defaults to1.0.max_batches (
int) – Maximum number of sampling batches before giving up on reachingN. Bounds the loop so it cannot spin forever. Defaults to1000.errors (
str) – Behaviour whenmax_batchesis exhausted —"raise"raises aRuntimeError(fail fast),"warn"emits a warning and returns the partial result. Defaults to"raise".
- Returns:
int – Number of iterations.
Array – Complex structure moduli values.
Array – Value of axio-dilaton.
Array – Boolean array specifying whether constraints are satisfied.
Array – Residuals \(\sum_A |D_A W|\) of the \(F\)-terms.
- Return type:
Tuple[Array,Array,Array,Array]
- sample_critical_points(Nmax=None, n_target=100, n_batch=10000, max_batches=20, isd_mode='ISD-', solver='newton', step_size=1.0, newton_tol=1e-10, newton_max_iters=300, optax_steps=1000, optax_objective='dV2', optimiser=None, classify=True, deduplicate=True, noscale=True, flux_prior='gaussian', flux_prior_sigma=None, moduli_max=None, map_to_fd=None, sampler=None, verbose=True)#
Sample critical points of the scalar potential \(V\) by drawing Gaussian-M-prior flux candidates, ISD-completing them, refining via the chosen solver, then filtering by physicality and deduplicating.
Ties together
_generate_flux_candidates()(C3), the chosen refinement solver,is_physical()(A3),to_fd()(A4),dedup_key()(A1), andclassify_solution()(A2).Solver dispatch (
solverkwarg):"newton"— FVF Newton viajax.vmap()over the converged batch. Uses the B1+B2 guards (runaway escape + singular-Hessian protection). Best when starting points are already near a critical point (e.g. SUSY-mode initialisations)."adam"/"lbfgs"— per-candidate_solve_dV_optax_single(). Python loop; slow but robust to bad initial conditions. Useful for one-off debugging or whenoptax-only convergence is desired."adam_v"— batched_solve_dV_optax_batch()with cosine-decay schedule + gradient clipping. Vectorised vialax.scan+vmap. First-order so wider basin of attraction; pair withoptax_stepsin the high hundreds."hybrid"— adam_v warm-start (fast vmapped optax) followed by per-candidate Newton polish on the near-converged subset. Default-recommended for large non-SUSY scans — combines the robustness of optax with Newton’s quadratic convergence."scipy"— per-candidatescipy.optimize.root(method='hybr')with analytical Jacobian. Sequential Python loop. Robust; useful when the JAX-side solvers struggle.
Quick decision table (typical for
h12=2, Nmax=200, n_batch≈1000):solver
speed
robustness
when to use
newton
fastest
moderate
warm starts; SUSY-like inits
adam_v
fast
high (1st- order)
cold starts; large batch
hybrid
moderate
very high
default for non-SUSY sampling at scale
scipy
slow (no JAX)
very high
small N, debugging, when JAX paths fail
adam, lbfgs
slowest (per-cand)
high (1st- order)
single-candidate diagnostics
The C-cluster convention applies: formerly-instance kwargs are now method-level.
- Parameters:
Nmax (
int) – tadpole bound. Default:self.D3_tadpole(the geometry’s natural maximum).n_target (
int) – stop once this many critical points are found. Default:100.n_batch (
int) – candidates per batch. Default:10_000.max_batches (
int) – batch cap. Default:20.isd_mode (
str) – one of"F","H","ISD+","ISD-". Default:"ISD-".solver (
str) – see dispatch table above. Default:"newton".step_size (
float) – Newton step size. Default:1.0.newton_tol (
float) – convergence tolerance. Default:1e-10.newton_max_iters (
int) – Newton iteration cap. Default:300.optax_steps (
int) – step count for optax solvers. Default:1000.optax_objective (
str) –"dV2","log_dV2", or"V". Default:"dV2".optimiser (optax.GradientTransformation, optional) – custom optimiser overrides
solver.classify (
bool) – attach Hessian classification. Default:True.deduplicate (
bool) – streaming dedup viadedup_key(). Default:True.noscale (
bool) – pass-through to V/dV/ddV. Default:True.flux_prior (
str) –"gaussian"(default),"M_weighted", or"uniform".flux_prior_sigma (
float) – per-call σ override.moduli_max (
float) – runaway bound for Newton’s B1 guard. Also used post-warm-start insolver="hybrid".map_to_fd (
bool) – ifNone(default), usesself._map_to_fd. ExplicitTrue/Falseoverrides.sampler (data_sampler, optional) – defaults to
self.sampler.verbose (
bool) – print per-batch + final summary. Default:True.
- Returns:
``list[dict]`` – one dict per surviving critical point with keys
``flux``, ``moduli``, ``tau``, ``residual``, and (when
``classify=True``) ``V``, ``|DW|``, ``eigenvalues``,
``is_susy``, ``is_minimum``, ``Nflux``.
- Return type:
list
- property sampler: data_sampler#
Description: Lazily-initialised
data_samplerfor this model.The sampler is constructed on first access and cached for subsequent calls. Sampling bounds are configured via the constructor arguments
flux_bounds,axion_bounds,dilaton_bounds,moduli_bounds, andseed. To use a custom sampler instead, pass it explicitly to methods that accept asamplerkeyword argument.
- save_calibration(Nmax, path=None, flux_prior='gaussian')#
Save calibrated prior parameters to a JSON file for reuse.
- Parameters:
Nmax (
int) – tadpole bound the calibration is for. Required; used in the default filename and recorded in the JSON.path (
str) – explicit save path. IfNone(default), usesjaxvacua/models/{model_type}/h12_{h12}/critical_points_prior_Nmax{Nmax}.json, falling back to the current directory.flux_prior (
str) –"gaussian","M_weighted", or"uniform"— recorded in the JSON. Default:"gaussian".
- Returns:
str – path to the saved file.
- Return type:
str
Pre-requisite:
self._calibrated_sigmasmust be populated (via_estimate_sigmas()orcalibrate_priors()).
- scalar_potential(moduli, moduli_c, tau, tau_c, fluxes, noscale=True, normalise=False)#
Returns the value of the \(F\)-term scalar potential.
Details
The \(F\)-term scalar potential in 4D \(\mathcal{N}=1\) supergravity is given by
\[V_F=\mathrm{e}^{K}\,\bigl (K^{I\bar{J}}\, D_IW\, D_{\bar{J}} \overline{W}-3|W|^2\bigl )\, .\]Here, the indices \(I = (1,\ldots,h^{1,2}+1)\) run only over the axio-dilaton and the complex structure moduli ignoring the Kähler moduli. Due to the no-scale structure of the classical Kähler potential, the term \(-3|W|^2\) is cancelled by the Kähler moduli sector giving rise to the no-scale flux scalar potential
\[V_F=\mathrm{e}^{K}\, K^{I\bar{J}}\, D_IW\, D_{\bar{J}} \overline{W}\, .\]In more detail, we have at the level of the classical \(\mathcal{N}=2\) Kähler potential for the axio-dilaton \(\tau\) and the complex structure moduli \(z^{i}\)
\[V_F=\mathrm{e}^{K}\, \bigl (K^{i\bar{\jmath}}\, D_iW\, D_{\bar{\jmath}} \overline{W} +K^{\tau\bar{\tau}}\, D_\tau W\, D_{\bar{\tau}} \overline{W}\bigl )\, .\]- Parameters:
moduli (
Array) – Complex structure moduli values.moduli_c (
Array) – Complex conjugate values for complex structure moduli.tau (
complex) – Axio-dilaton value.tau_c (
complex) – Complex conjugate value for axio-dilaton.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.noscale (
bool) – IfTrue, uses the no-scale flux scalar potential. Defaults toTrue.normalise (
bool) – IfTrue, rescales superpotential by \(\sqrt{2/\pi}\). Defaults toFalse.
- Returns:
complex – Value of the \(F\)-term scalar potential induced by 3-form fluxes.
- Return type:
complex
- Aliases:
See also:
DW()See also:
inverse_kahler_metric()See also:
kahler_potential()
- superpotential(moduli, tau, fluxes, conj=False, normalise=False)#
Calculates the value of the superpotential for given flux, moduli and axio-dilaton.
Details
For a Calabi-Yau manifold \(X\), the Gukov-Vafa-Witten superpotential hep-th/9906070 is defined in terms of the complex 3-form flux \(G_3=F_3-\tau H_3\) and the holomorphic 3-form \(\Omega_3\) as
\[W(Z,\tau) = \int_{X} \, G_3\wedge \Omega_3 = (\vec{f}-\tau\vec{h})^T\cdot\Sigma\cdot\Pi(Z)\]following the conventions of eq. (4) in 1912.10047. The period vector \(\Pi\) and the symplectic pairing \(\Sigma\) are defined in the periods class
jaxvacua.periods.periods().- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Axio-dilaton value.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.normalise (
bool) – IfTrue, rescales superpotential by \(\sqrt{2/\pi}\). Defaults toFalse.
- Returns:
complex – Value of the superpotential.
- Return type:
complex
- superpotential_gauge_invariant(moduli, tau, fluxes, conj=False, normalise=True)#
Calculates the value of the gauge invariant version of the flux superpotential.
Details
Following the conventions of 1912.10047, we define the gauge invariant version of the superpotential as
\[\tilde{W} = \sqrt{\dfrac{2}{\pi}}\, \mathrm{e}^{K/2}\, W\]Its absolute value is proportional to the gravitino mass. The normalisation is taken from 1908.04788.
- Parameters:
moduli (
Array) – Complex structure moduli values.tau (
complex) – Axio-dilaton value.fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.conj (
bool) – IfTrue, computes the complex conjugate. Defaults toFalse.normalise (
bool) – IfTrue, rescales superpotential by \(\sqrt{2/\pi}\). Defaults toTrue.
- Returns:
complex – Value of the gauge invariant superpotential.
- Return type:
complex
See also:
superpotential()See also:
kahler_potential()
- tadpole(fluxes)#
Calculates the D3-charge for given fluxes.
Details
The D3-charge induced by fluxes is defined as
\[N_{\mathrm{flux}} = \vec{f}\Sigma \vec{h}\, ,\]where :math`vec{f}, vec{h}` are the NSNS- and RR-fluxes respectively. The symplectic pairing \(\Sigma\) is implemented in the periods class
jaxvacua.periods.periods().- Parameters:
fluxes (
Array) – Array of fluxes. The ordering starts with RR-fluxes, then the NSNS-fluxes.- Returns:
int – D3-charge induced by 3-form fluxes.
- Return type:
float
- to_fd(moduli, tau, fluxes)#
Optionally map
(moduli, tau, fluxes)to the fundamental domain viamap_to_fd(), with numpy/JAX marshalling at the boundary.Whether the mapping is applied is controlled by the constructor flag
self._map_to_fd(set viamap_to_fd=kwarg at finder construction). IfFalse, the inputs are returned unchanged.Thin delegator over
jaxvacua.flux_utils.map_to_fd(). See its docstring for full detail and the rationale for keeping this as a separate wrapper overmap_to_fd()(the actual math method).- Return type:
tuple
- verify_monodromy(b, z=None, tol=1e-08)#
Numerically verify the monodromy matrix by checking \(T_b \cdot \Pi(z) = \Pi(z + e_b)\).
- Parameters:
b (
int) – Direction index for the shift.z (Array, optional) – Test point. If
None, a random point is generated.tol (
float) – Tolerance for the check.
- Returns:
dict – Dictionary with keys
'T_b','max_error','passed'.- Return type:
dict