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:
ComputationalOperatorReturns the (diagonal) 2+1D “volume” operator at a single vertex
vin 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
vis taken fromgraph.connectivities[str(v)]['edges'](expected to be pairs for the 3D model).Their orientation signs are taken from
graph.signs[str(v)]usingget_true_edge_pairto 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
TrueorFalsebased on whether your operator is Hermitian or not. Note that unlike for the case ofLocalOperatortypes, 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:
Trueif this operator is Hermitian,Falseotherwise
- 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:
VolumeOperatorSquared (diagonal) 2+1 “volume” operator at a single vertex
vin 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:
VolumeOperatorSquare-root (diagonal) 2+1 “volume” operator at a single vertex
vin 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.sqrtto the diagonal matrix elements returned by the parent kernel.