neuralqx.operators.computational.Euclidean3d.numba.vertex_TRC module¶
- class Euclidean3dVertexTRCOperator(lqx, vertex, *, apply_lapse=False)¶
Bases:
ComputationalOperatorSingle-vertex Thiemann-regularised Euclidean Hamiltonian constraint H_v for the 2+1 U(1)^3 weak-coupling model, implemented as a ComputationalOperator.
For each triangulation pairing at vertex v, and for each U(1) copy c in {0,1,2}, the operator produces a loop-shifted configuration:
- with matrix element
<σ’|H_v|σ> = eps_term * Δ_k^{(c)}(σ) * Δ_l^{(c)}(σ),
- where
Δ_s^{(c)}(σ) = sqrt(V_v(σ)) - sqrt(V_v(h_{s}^{(c)-1} σ)).
The orientation of the loop holonomy is encoded by eps(ij) via an adjoint flip of the loop.
Notes
This is the “non-adjoint” (ket-action) ordering
- property is_hermitian: bool¶
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 Euclidean3dVertexTRCAdjointOperator(lqx, vertex, *, apply_lapse=False)¶
Bases:
Euclidean3dVertexTRCOperatorAdjoint of Euclidean3dVertexTRCOperator in the same computational convention.
- Differences vs non-adjoint:
- segment difference uses h_s (forward) instead of h_s^{-1}:
Δ_s^†(σ) = sqrtV(σ) - sqrtV(h_s σ)
loop holonomy is daggered: loop shifts are negated.
- ThiemannRegularisedVertexConstraint3d(lqx, vertex, *, apply_lapse=False, adjoint=False)¶