Interface: Determinant Quantum Monte Carlo (DQMC)

Any model that wants to be simulated by means of DQMC must implement the following interface. Below you find all semantic definitions and precise signatures of mandatory fields and mandatory and optional methods that any model should implement to work with the determinant Monte Carlo flavor Determinant Quantum Monte Carlo (DQMC).

Example models: Attractive Hubbard Model

Mandatory fields

  • l::AbstractLattice: any AbstractLattice
  • flv::Int: number of distinct fermion flavors (e.g. spins, bands, etc.). The Green's function will have shape (flv*N, flv*N), where N is the number of sites. Note that different fermion flavors are often related by symmetry and it's advisable to use this symmetry to work with smaller Green's function matrices. Have a look at the Attractive Hubbard Model as an example where flv=1 although it has spinful fermions.

Index of all methods

Mandatory methods

Missing docstring.

Missing docstring for conftype(::Type{DQMC}, m::Model). Check Documenter's build log for details.

Missing docstring.

Missing docstring for rand(::DQMC, ::Model). Check Documenter's build log for details.

Missing docstring.

Missing docstring for hopping_matrix(mc::DQMC, m::Model). Check Documenter's build log for details.

MonteCarlo.interaction_matrix_exp!Function
interaction_matrix_exp!(
    mc::DQMC, m::Model, field::AbstractField, 
    result::AbstractArray, slice::Int, power::Float64 = 1.0
)

Calculate the, exponentiated interaction matrix exp(- power * delta_tau * V(slice)) and store it in result::AbstractArray.

This only includes terms with 4 operators, i.e. not the chemical potential or any hoppings. By default the calculation will be performed by the appropriate field type (i.e. by interaction_matrix_exp!(field, result, slice, power))

By default this function will call interaction_matrix_exp!(field, result, slice, power).

This is a performance critical method and one might consider efficient in-place (in result) construction.

source
MonteCarlo.propose_localMethod
propose_local(mc::DQMC, m::Model, field::AbstractField, i::Int, slice::Int)

Propose a local move for lattice site i at time slice slice for a field holding the current configuration. Returns the Green's function determinant ratio, the boson energy difference ΔE_boson = E_boson_new - E_boson, and any extra information passthrough that might be useful in accept_local.

By default this function will call propose_local(mc, field, i, slice).

See also accept_local!.

source
Missing docstring.

Missing docstring for accept_local(mc::DQMC, m::Model, i::Int, slice::Int, conf, delta, detratio, delta_E_boson). Check Documenter's build log for details.

Optional methods

Missing docstring.

Missing docstring for greenseltype(::Type{DQMC}, m::Model). Check Documenter's build log for details.

MonteCarlo.energy_bosonMethod
energy_boson(mc::DQMC, model::Model, conf)

Calculate bosonic part (non-Green's function determinant part) of energy for configuration conf for Model m.

This is required for global and parallel updates as well as boson energy measurements, but not for local updates. By default calls energy_boson(field(mc), conf)

source
Missing docstring.

Missing docstring for prepare_observables(mc::DQMC, m::Model). Check Documenter's build log for details.

Missing docstring.

Missing docstring for measure_observables!(mc::DQMC, m::Model, obs::Dict{String,Observable}, conf). Check Documenter's build log for details.

Missing docstring.

Missing docstring for finish_observables!(mc::DQMC, m::Model, obs::Dict{String,Observable}). Check Documenter's build log for details.