jaxvacua.conifold.conifold_utils.get_bulk_embedding#
- get_bulk_embedding(q)#
Bulk embedding matrix for the conifold charge \(q\): the bulk rows \(\Lambda_{1:}\) of the basis change \(\Lambda\) (from
get_basis_change()), transposed to shape \((h^{1,2}, h^{1,2}-1)\).Details
Used to build a full \(h^{1,2}\)-vector from its \((h^{1,2}-1)\) bulk components. It serves three roles, all with the same matrix because charges are covectors and moduli are vectors of the same lattice:
embed bulk moduli/periods:
X_bulk -> bulk_embedding @ X_bulk, which carries zero conifold component (\(q\cdot\Lambda_{1:}^T = 0\));contract the intersection/
a/btensors along bulk directions;project a charge/flux covector onto the bulk:
charge @ bulk_embedding\(= \Lambda_{1:}\, \tilde q\).
Together with the conifold embedding
get_embedding()(\(e_q = \Lambda_0\), the conifold direction of a vector) and the conifold charge \(q\) it satisfies the resolution of identity \(q\, e_q^T + \text{bulk\_proj}\cdot\text{bulk\_embedding}^T = \mathbb{1}\), where the matching bulk projection (the left inverse, \(\text{bulk\_embedding}^T\,\text{bulk\_proj} = \mathbb{1}_{h^{1,2}-1}\)) isget_bulk_projection(). In the conifold-aligned basis (\(q=(1,0,\ldots,0)\)) it reduces to \([0;\mathbb{1}]\).- Parameters:
q (Array) – Integer conifold charge vector of length \(h^{1,2}\).
- Returns:
Array – Bulk embedding matrix of shape \((h^{1,2}, h^{1,2}-1)\).
See also:
get_bulk_projection(),get_embedding(),get_basis_change()