neuralqx.operators.computational.Euclidean4d.numba.volume module¶
An implementation for the volume oeprator of the Euclidean WCL 4-d model using a ComputationalOperator rather than a LocalOperator
- class VolumeOperator(H, vertex)¶
Bases:
ComputationalOperatorReturns the (diagonal) volume operator at a single vertex
vin the U(1)^3 model.The operator acts on the charge basis \(|\vec{m}\rangle\) by summing, over all oriented edge triplets that meet at
v, the signed scalar triple products of the corresponding 3-component U(1) charge vectors, and then taking the absolute value and square root:\[\hat{V}_v \,|\vec{m}\rangle \;=\; \sqrt{\left| \sum_{(e_1,e_2,e_3)\ni v} \epsilon_v(e_1,e_2,e_3)\; \vec m_{e_1}\!\cdot\!\big(\vec m_{e_2}\times \vec m_{e_3}\big) \right|}\;|\vec{m}\rangle,\]where each edge charge vector is
\[\vec m_{e} = \big( m_e^{(1)}, \, m_e^{(2)} , \, m_e^{(3)} \big),\]and \(\epsilon_v(e_1, e_2, e_3) \in \{+1,-1\}\) is the orientation sign of the ordered triple at the vertex (right-hand rule with the graph’s local orientation). The operator is Hermitian and non-negative, and it is diagonal in the charge basis.
Implementation details¶
The set of contributing triplets at
vis taken fromgraph.connectivities[str(v)]['edges'], their orientation signs are taken fromgraph.signs[str(v)].Each triplet contributes \(\epsilon_v(e_1,e_2,e_3)\;\vec m_{e_1}\!\cdot\!(\vec m_{e_2}\times\vec m_{e_3})\). All contributions are summed before applying \(\sqrt{|\cdot|}\).
Edge orientations enter only through \(\epsilon_v(\cdot)\), the charge vectors themselves are used as-is.
Notes
Units: overall normalization/constant is 1 by convention
For non-planar embeddings, the triplets should be provided in the same ordering/convention as returned by the graph’s
connectivities(not by any planarized drawing).
- 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)