Skip to main content

operator_stencil

Overloads

NameDescription
operator_stencil(const Map options) -> OperatorGenerates a stencil operator.
operator_stencil(const Model model) -> OperatorConverts a model to a free fermion stencil operator.

operator_stencil(const Map options) -> Operator

Generates a stencil operator.

A free stencil represents an operator of the form sn=0Nαncscs+δn\sum_{s}\sum_{n=0}^N \alpha_{n}c_{s}^{\dagger}c_{s + \delta_n} where δn\delta_n are displacement vectors, ss are lattice position vectors, the αn\alpha_n are position independent coefficients and NN is the number of such coefficients.To construct a stencil, the above parameters must be passed explicitly, together with information about the lattice dimensions and the boundary conditions.

Parameters

  • options: An option map to specify the parameters of the stencil.

Example

var stencil_vectors = [[-1,0],[1,0],[0,1],[0,-1]] //[[delta_{0,x},delta_{0,y}],[delta_{1,x},delta_{1,y}],[delta_{2,x},delta_{2,y}],[delta_{3,x},delta_{3,y}]]
var dimensions = [50,40] // [L_x, L_y]
var stencil_values = [0.5 + 1i, 0.2 + 1i, 0.3 + 0.1i, 2i + 2] // [alpha_0, alpha_1, alpha_2, alpha_3]
var boundary_conditions = ["periodic", "open"]
var stencil = operator_stencil(["displacements":stencil_vectors,"dimensions":dimensions,"values":stencil_values,"boundary_conditions":boundary_conditions])

operator_stencil(const Model model) -> Operator

Converts a model to a free fermion stencil operator.

Parameters

  • model: The model to convert to a free fermion stencil operator.

Example

var my_model = model(lattice("square", [4,4]))
my_model.add(coefficient("J", 1.0))
my_model.add(neighbourhood_rule("nn_x", [1,0]))
my_model.add(neighbourhood_rule("nn_y", [0,1]))
my_model.add(term("J", [Create, Destroy], "nn_x"))
my_model.add(term("J", [Create, Destroy], "nn_y"))
var stencil = operator_stencil(my_model)