Newer
Older
#===============================================================================
state_functions.jl
Some functions that states support regardless of the specific implementation.
===============================================================================#
function mb_state_energy(orbital::T, state::SpinState)::AbstractFloat where T<:Orbital
""" Retrieves the energy for a many-body state (single spin species).
"""
e = 0
for k = 1:length(state)
if state[k]>0
e += orbital(k)
end
end
return e
end
function mb_state_energy(orbital_up::T, orbital_down::S, state::FullState)::AbstractFloat where {T<:Orbital,S<:Orbital}
""" Many-body energy for a full state (wraps the single-particle routine)..
"""
state_up, state_down = f_to_s(state)
return mb_state_energy(orbital_up, state_up) + mb_state_energy(orbital_down, state_down)
end