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
: anyAbstractLattice
flv::Int
: number of distinct fermion flavors (e.g. spins, bands, etc.). The Green's function will have shape(flv*N, flv*N)
, whereN
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 whereflv=1
although it has spinful fermions.
Index of all methods
Mandatory methods
Missing docstring for conftype(::Type{DQMC}, m::Model)
. Check Documenter's build log for details.
Missing docstring for rand(::DQMC, ::Model)
. Check Documenter's build log for details.
Missing docstring for hopping_matrix(mc::DQMC, m::Model)
. Check Documenter's build log for details.
MonteCarlo.interaction_matrix_exp!
— Functioninteraction_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.
MonteCarlo.propose_local
— Methodpropose_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!
.
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 for greenseltype(::Type{DQMC}, m::Model)
. Check Documenter's build log for details.
MonteCarlo.energy_boson
— Methodenergy_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)
Missing docstring for prepare_observables(mc::DQMC, m::Model)
. Check Documenter's build log for details.
Missing docstring for measure_observables!(mc::DQMC, m::Model, obs::Dict{String,Observable}, conf)
. Check Documenter's build log for details.
Missing docstring for finish_observables!(mc::DQMC, m::Model, obs::Dict{String,Observable})
. Check Documenter's build log for details.