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 the

  • adjoint (bool) – if True, the operator acts as a lowering operator, otherwise a raising operator on the U(1) DOFs

  • computational (Optional[bool]) – if True, the operator is implemented as a computational operator

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

  • adjoint – 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 on

  • vertex_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 operator

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

  • dimension (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.

Parameters:
  • computational (Optional[bool]) – if True, the operator is implemented as a computational operator

  • jax (Optional[bool]) – if True, and a computational operator implementation is requested, the operator is returned as a JAX computational operator

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.edges

  • computational (Optional[bool]) – if True, the operator is implemented as a computational operator

  • adjoint – 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 operator

  • 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)

  • 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 on

  • computational (Optional[bool]) – if True, the volume operator is implemented as a computational operator

  • jax (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 property

  • computational (Optional[bool]) – if True, the area operator is implemented as a computational operator

  • jax (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