operator_stencil
Overloads
| Name | Description |
|---|---|
operator_stencil(const Map options) -> Operator | Generates a stencil operator. |
operator_stencil(const Model model) -> Operator | Converts 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 where are displacement vectors, are lattice position vectors, the are position independent coefficients and 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)