function calc_nsites_aim(this, length_x, length_y, length_z) result(n_sites)
class(aim) :: this
integer, intent(in) :: length_x, length_y
integer, intent(in), optional :: length_z
integer :: n_sites
character(*), parameter :: this_routine = "calc_nsites_aim"
unused_var(this)
if (present(length_z)) then
unused_var(length_z)
end if
unused_var(this)
unused_var(length_z)
! for AIM systems assume first length input is number of impurity
! sites and bath sites are number of path sites per impurity!!
if (length_x <= 0) then
call stop_all(this_routine, &
"incorrect aim_sites input <= 0!")
end if
if (length_y <= 0) then
call stop_all(this_routine, &
"incorrect bath_sites input <= 0!")
end if
n_sites = length_x * length_y + length_x
end function calc_nsites_aim