jaxvacua.conifold.conifold_utils.get_basis_change#
- get_basis_change(coninop)#
Constructs the unimodular integer basis transformation that maps a conifold curve charge vector to the canonical form \((1, 0, \ldots, 0)\).
Details
Given the integer charge vector \(q \in \mathbb{Z}^{h^{1,1}}\) of the conifold curve (with \(\gcd(q) = 1\)), the function builds the \(h^{1,1}\times h^{1,1}\) unimodular matrix \(\Lambda \in \mathrm{GL}(h^{1,1}, \mathbb{Z})\) satisfying
\[\Lambda \, q = (1,\, 0,\,\ldots,\, 0)^T \,.\]\(\Lambda\) is assembled from two complementary pieces:
First row — the Bézout coefficients \(b\) computed by
extended_euclidean(), satisfying \(b \cdot q = 1\).Remaining rows — generators of the lattice \(\{v : v \cdot q = 0\}\), computed by
orthogonal_lattice().
The resulting \(\Lambda\) is passed to
lcs_treeto change the complex-structure-moduli basis so that \(z^1\) directly parameterises the approach to the conifold singularity.- Parameters:
coninop (Array) – Integer charge vector \(q \in \mathbb{Z}^n\) of the conifold curve, satisfying \(\gcd(q) = 1\).
- Returns:
np.ndarray – Unimodular integer matrix \(\Lambda\) of shape \((n, n)\) satisfying \(\Lambda\, q = (1, 0,\ldots,0)^T\).
See also:
extended_euclidean(),orthogonal_lattice()