neuralqx.operators.computational.Euclidean3d.numba.volume module

An implementation for the (2+1) “volume” (= area) operator of the Eucli. rather than a LocalOperator.

class VolumeOperator(H, vertex)

Bases: ComputationalOperator

Returns the (diagonal) 2+1D “volume” operator at a single vertex v in the U(1)^3 model.

In 2+1 dimensions, the spatial slice is 2D, so the geometric operator associated with a small region around a vertex is an area operator. In the abelian U(1)^3 weak-coupling model, the operator is diagonal in the charge basis and is built from oriented pairs of edges meeting at the vertex.

On a charge basis state \(|\vec{m}\rangle\), we define

\[\hat{A}_v \,|\vec{m}\rangle \;=\; \left\| \sum_{(e_1,e_2)\ni v} \epsilon_v(e_1,e_2)\; \vec m_{e_1}\times \vec m_{e_2} \right\|\;|\vec{m}\rangle,\]

where each edge charge vector is

\[\vec m_e = (m_e^{(1)}, m_e^{(2)}, m_e^{(3)}),\]

and \(\epsilon_v(e_1,e_2)\in\{+1,-1\}\) is the oriented sign of the ordered pair at the vertex (2D right-hand convention on the embedded graph).

Notes

  • Units / overall normalization: set to 1 by convention.

  • This is the natural 2D analog of the 4D vertex volume, replacing the signed scalar triple product with a signed sum of cross products and taking the norm.

  • Requires the graph to provide oriented edge pairs and their signs at the vertex.

Implementation details

  • The set of contributing pairs at v is taken from graph.connectivities[str(v)]['edges'] (expected to be pairs for the 3D model).

  • Their orientation signs are taken from graph.signs[str(v)] using get_true_edge_pair to canonicalize keys.

  • Each pair contributes \(\epsilon_v(e_1,e_2)\,(\vec m_{e_1}\times \vec m_{e_2})\) (a 3-vector). All contributions are summed into a single 3-vector, and then its Euclidean norm is taken. The result is non-negative and diagonal.

property is_hermitian

This function must return either True or False based on whether your operator is Hermitian or not. Note that unlike for the case of LocalOperator types, you must specify by-hand whether this operator is Hermitian or not, there is no implementation to deduce that information for you as there is no matrices stored in this operator type.

This property plays a role in determining the computational path to be taken when computing gradients. If you specify that the operator is Hermitian while in reality it is not, the computed gradients will be incorrect.

Returns:

True if this operator is Hermitian, False otherwise

property dtype

Specify a JAX NumPy or NumPy dtype for this operator (that is, what is the dtype of the matrix elements returned by this operator)

class VolumeOperatorSquared(H, vertex)

Bases: VolumeOperator

Squared (diagonal) 2+1 “volume” operator at a single vertex v in the U(1)^3 model.

This class implements \(\hat{V}_v^2 = (\hat{V}_v)^2\) as a diagonal observable derived from VolumeOperator.

On a charge basis state \(|\vec m\rangle\), where the parent operator has the eigenvalue

\[V_v(\vec m) \;=\; \left\| \sum_{(e_1,e_2)\ni v} \epsilon_v(e_1,e_2)\; \vec m_{e_1}\times \vec m_{e_2} \right\| \;\ge 0,\]

this operator acts diagonally as

\[\hat{V}_v^2 \,|\vec m\rangle \;=\; \big(V_v(\vec m)\big)^2 \,|\vec m\rangle.\]

Notes

  • Diagonal in the charge basis and therefore Hermitian.

  • Implemented by squaring the diagonal matrix elements returned by the parent kernel.

class VolumeOperatorSqrt(H, vertex)

Bases: VolumeOperator

Square-root (diagonal) 2+1 “volume” operator at a single vertex v in the U(1)^3 model.

This class implements the operator function \(\sqrt{\hat{V}_v}\) derived from VolumeOperator.

On a charge basis state \(|\vec m\rangle\), where the parent operator has the eigenvalue

\[V_v(\vec m) \;=\; \left\| \sum_{(e_1,e_2)\ni v} \epsilon_v(e_1,e_2)\; \vec m_{e_1}\times \vec m_{e_2} \right\| \;\ge 0,\]

this operator acts diagonally as

\[\sqrt{\hat{V}_v}\,|\vec m\rangle \;=\; \sqrt{V_v(\vec m)}\,|\vec m\rangle.\]

Notes

  • In this 2+1D construction, \(V_v(\vec m)\) is a norm and thus non-negative.

  • Diagonal in the charge basis and therefore Hermitian.

  • Implemented by applying jnp.sqrt to the diagonal matrix elements returned by the parent kernel.