neuralqx.lqx.wcl.core.wcl_1d module¶
- class LqxWCL1D(hilbert, graph, gauge_group, *, computational=True, spacetime_dimensions=3, model_name='U(1) BF Model', is_4d=False)¶
Bases:
LqxWclModel- holonomy(edge, adjoint=False, *, computational=None, jax=None, dimension=1)¶
Retuens a U(1) holonomy operator acting on the specified edge.
- Parameters:
edge (
Union[list,tuple]) – the edge the minimal loop holonomy operator should act on. This should be one specified from theadjoint (
bool) – if True, the operator acts as a lowering operator, otherwise a raising operator on the U(1) DOFscomputational (
Optional[bool]) – if True, the operator is implemented as a computational operatorjax (
Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operatoradjoint – if True, the operator acts as a lowering operator, otherwise a raising operator on the U(1) DOFs. Note that this is a dummy parameter in this model.
dimension (
Optional[int]) – This controls the dimension on which the holonomy operator is implemented in (e.g. call dimensions = 1 in a 3-d model to get the U(1) operator). Note that this is a dummy parameter in this model.
- Returns:
- minimal_loop_holonomy(minimal_loop, vertex_index=None, adjoint=0, *, computational=None, jax=True, dimension=1)¶
Implements the minimal loop holonomy operator recursively for a given minimal loop. It can either be the adjoint or the non-adjoint version of the operator.
- Usage:
if you want the non-adjoint version: only specify the minimal loop
if you want the adjoint version: set the adjoint flag to 1
Additionally, this will provide computational or local operator as specified, with the default choice being the flag the class has been instantiated with.
- Parameters:
minimal_loop (
list) – the minimal loop the operator should act onvertex_index (
int) – the current vertex index in te minimal loop (used for recursion)adjoint (
int) – a flag which identifies if the adjoint is requested (1 or 0)computational (
Optional[bool]) – if True, the operator is implemented as a computational operatorjax (
Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operatordimension (
Optional[int]) – This controls the dimension on which the minimal loop holonomy is implemented in (e.g. call dimensions = 1 in a 3-d model to get the U(1) operator). This is not operational in this model.
- curvature_constraint(*, computational=None, jax=True)¶
Implements the curvature constraint on the graph by imposing flatness over the minimal loops. The constraint takes the form
\[\hat{F} = \sum_{a \in L({\gamma})} ( \hat{h}_{a} - 1 ) ( \hat{h}_{a}^\dagger - 1 )\]for every minimal loop \(a\) in the graph. Here \(\hat{h}_{a}\) is a minimal loop holonomy.
- property constraint¶
This property should return the constraint of the model to be considered in the optimisation process
- number(edge, *, computational=None, jax=None, dimension=1, kwargs=None)¶
Returns the number operator acting on the specified edge
- Parameters:
edge (
tuple) – the edge the operator should act on. This should be one of the loops provided by the AbstractGraph.edgescomputational (
Optional[bool]) – if True, the operator is implemented as a computational operatoradjoint – if True, the operator acts as a lowering operator, otherwise a raising operator on the U(1) DOFs
jax (
Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operatordimension (
Optional[int]) – This controls the dimension on which the holonomy operator is implemented in (e.g. call dimensions = 1 in a 3-d model to get the U(1) operator)kwargs (
Optional[dict]) – and additional information to be passed to the LocalOperator implementation
- Returns:
- volume(vertex, *, computational=None, jax=None)¶
Returns the volume operator of the underlying wrapped model.
- Parameters:
vertex (
int) – the vertex the volume operator should act oncomputational (
Optional[bool]) – if True, the volume operator is implemented as a computational operatorjax (
Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator
- Returns:
- area(surface, *, computational=None, jax=None)¶
Returns the area operator of the underlying wrapped model.
- Parameters:
surface (
list) – the surface the area operator acts on. This should be a list composed of edges in their raw representation as provided from the AbstractGraph.edges propertycomputational (
Optional[bool]) – if True, the area operator is implemented as a computational operatorjax (
Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator
- Returns:
- thiemann_quadratic_constraint(*, computational=None, jax=True, **kwargs)¶
For appropriate models, any subclass should implement a quadratic constraint implemented using the Thiemann regularised quantum Hamilton constraint