lattice_mod Module



Contents

epsilon_kvec_vector epsilon_kvec_symmetry epsilon_kvec_orbital add_k_vec add_k_vec_symbol inv_k_vec get_sym get_sym_from_k inv_k_vec_symbol subtract_k_vec get_orb_from_k_vec round_sym map_k_vec inside_bz inside_bz_explicit inside_bz_ole inside_bz_chain apply_basis_vector get_length_aim_star is_impurity is_bath calc_nsites_aim is_bath_site is_impurity_site get_bath get_impurities get_n_imps get_n_bath is_k_space is_periodic_aim get_num_neighbors_site get_site_index find_periodic_neighbors_ole apply_pbc inside_bz_2d on_line_2d get_k_vec get_r_vec dispersion_rel_chain_k dispersion_rel_rect dispersion_rel_cube dispersion_rel_tilted dispersion_rel_ole dispersion_rel_not_implemented dispersion_rel_orb dispersion_rel_spin_orb dot_prod_not_implemented dot_prod_chain dot_prod_rect dot_prod_tilted sort_unique aim_lattice_constructor lattice_constructor site_constructor get_index get_name get_neighbors_site get_num_neighbors_lattice get_neighbors_lattice get_spinorb_neighbors_lat calc_nsites_aim_star calc_nsites_star is_periodic_aim_star calc_nsites_chain calc_nsites_cube calc_nsites_hexagonal calc_nsites_kagome calc_nsites_rect calc_nsites_tilted calc_nsites_sujun calc_nsites_ole get_nconnect_max get_length_star get_length_chain get_length_cube get_length_rect get_length_aim_chain is_periodic_star is_periodic_chain is_periodic_cube is_periodic_rect is_periodic_x is_periodic_y get_ndim get_nsites determine_optimal_time_step read_lattice_n_sites get_helement_lattice_ex_mat_wrapper get_helement_lattice_general_wrapper

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: NAME_LEN = 13
integer, private, parameter :: sdim = 3
real(kind=dp), private, allocatable :: dispersion_rel_cached(:)
integer, private, parameter :: DIM_CHAIN = 1
integer, private, parameter :: DIM_STAR = 1
integer, private, parameter :: N_CONNECT_MAX_CHAIN = 2
integer, private, parameter :: STAR_LENGTH = 1
integer, private, parameter :: DIM_RECT = 2
integer, private, parameter :: DIM_CUBE = 3
class(lattice), public, pointer :: lat => null()
procedure(get_helement_lattice_ex_mat_t), public, pointer :: get_helement_lattice_ex_mat => null()
procedure(get_helement_lattice_general_t), public, pointer :: get_helement_lattice_general => null()

Interfaces

public interface lattice

  • private function lattice_constructor(lattice_type, length_x, length_y, length_z, t_periodic_x, t_periodic_y, t_periodic_z, space, t_bipartite_order) result(this)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: lattice_type
    integer, intent(in) :: length_x
    integer, intent(in) :: length_y
    integer, intent(in) :: length_z
    logical, intent(in) :: t_periodic_x
    logical, intent(in) :: t_periodic_y
    logical, intent(in) :: t_periodic_z
    character(len=*), intent(in), optional :: space
    logical, intent(in), optional :: t_bipartite_order

    Return Value class(lattice), pointer

public interface aim

  • private function aim_lattice_constructor(lat_type, length_x, length_y) result(this)

    Arguments

    Type IntentOptional Attributes Name
    character(len=*), intent(in) :: lat_type
    integer, intent(in) :: length_x
    integer, intent(in) :: length_y

    Return Value class(aim), pointer

private interface site

  • private function site_constructor(ind, n_neighbors, neighbors, k_vec, r_vec, site_type) result(this)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: ind
    integer, intent(in) :: n_neighbors
    integer, intent(in) :: neighbors(n_neighbors)
    integer, intent(in), optional :: k_vec(3)
    integer, intent(in), optional :: r_vec(3)
    character(len=*), intent(in), optional :: site_type

    Return Value type(site)

public interface get_helement_lattice

  • private function get_helement_lattice_ex_mat_wrapper(nI, ic, ex, tpar) result(hel)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nI(nel)
    integer, intent(in) :: ic
    integer, intent(in) :: ex(2,ic)
    logical, intent(in) :: tpar

    Return Value real(kind=dp)

  • private function get_helement_lattice_general_wrapper(nI, nJ, ic_ret) result(hel)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nI(nel)
    integer, intent(in) :: nJ(nel)
    integer, intent(inout), optional :: ic_ret

    Return Value real(kind=dp)

public interface epsilon_kvec

  • private function epsilon_kvec_vector(k_vec)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: k_vec(3)

    Return Value real(kind=dp)

  • private function epsilon_kvec_symmetry(sym)

    Arguments

    Type IntentOptional Attributes Name
    type(Symmetry), intent(in) :: sym

    Return Value real(kind=dp)

  • private function epsilon_kvec_orbital(orb)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: orb

    Return Value real(kind=dp)


Abstract Interfaces

abstract interface

  • private pure function get_length_t(this, dimen) result(length)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice), intent(in) :: this
    integer, intent(in), optional :: dimen

    Return Value integer

abstract interface

  • private function calc_nsites_t(this, length_x, length_y, length_z) result(n_sites)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice) :: this
    integer, intent(in) :: length_x
    integer, intent(in) :: length_y
    integer, intent(in), optional :: length_z

    Return Value integer

abstract interface

  • private pure function is_periodic_t(this, dimen)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice), intent(in) :: this
    integer, intent(in), optional :: dimen

    Return Value logical

abstract interface

  • private function dispersion_rel_t(this, k_vec) result(disp)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice) :: this
    integer, intent(in) :: k_vec(3)

    Return Value real(kind=dp)

abstract interface

  • private subroutine set_length_t(this, length_x, length_y, length_z)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice) :: this
    integer, intent(in) :: length_x
    integer, intent(in) :: length_y
    integer, intent(in), optional :: length_z

abstract interface

  • private subroutine initialize_sites_t(this)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice) :: this

abstract interface

  • private function test(this)

    Arguments

    Type IntentOptional Attributes Name
    class(lattice) :: this

    Return Value real

abstract interface

  • private function get_helement_lattice_ex_mat_t(nI, ic, ex, tpar) result(hel)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nI(nel)
    integer, intent(in) :: ic
    integer, intent(in) :: ex(2,ic)
    logical, intent(in) :: tpar

    Return Value real(kind=dp)

abstract interface

  • private function get_helement_lattice_general_t(nI, nJ, ic_ret) result(hel)

    Arguments

    Type IntentOptional Attributes Name
    integer, intent(in) :: nI(nel)
    integer, intent(in) :: nJ(nel)
    integer, intent(inout), optional :: ic_ret

    Return Value real(kind=dp)


Derived Types

type, private ::  site

Components

Type Visibility Attributes Name Initial
integer, private :: ind = -1
integer, private :: n_neighbors = -1
integer, private :: k_vec(3) = 0
integer, private :: r_vec(3) = 0
integer, private :: k_sym = -1
integer, private :: k_inv(3) = 0
integer, private :: sym_inv = -1
integer, private, allocatable :: neighbors(:)
logical, private :: t_impurity = .false.
logical, private :: t_bath = .false.

Constructor

private function site_constructor (ind, n_neighbors, neighbors, k_vec, r_vec, site_type)

Type-Bound Procedures

procedure , private , :: allocate_neighbors Subroutine
procedure , private , :: deallocate_neighbors Subroutine
procedure , private , :: get_neighbors => get_neighbors_site Function
procedure , private , :: initialize => init_site Subroutine
procedure , private , :: set_index Subroutine
procedure , private , :: get_index Function
procedure , private , :: set_num_neighbors Subroutine
procedure , private , :: get_num_neighbors => get_num_neighbors_site Function
procedure , private , :: set_neighbors Subroutine
procedure , private , :: set_impurity Subroutine
procedure , private , :: is_impurity Function
procedure , private , :: set_bath Subroutine
procedure , private , :: is_bath Function
procedure , private , :: set_k_vec Subroutine
procedure , private , :: set_r_vec Subroutine

type, private, extends(site) ::  impurity

type, private, extends(site) ::  bath

type, public ::  lattice

Components

Type Visibility Attributes Name Initial
integer, private :: n_sites = -1
integer, private :: n_connect_max = -1
integer, private :: n_dim = -1
integer, private, allocatable :: lu_table(:,:,:)
logical, private, allocatable :: bz_table(:,:,:)
integer, private :: kmin(sdim) = 0
integer, private :: kmax(sdim) = 0
integer, private :: r_min(sdim) = 0
integer, private :: r_max(sdim) = 0
logical, private :: t_periodic_x = .true.
logical, private :: t_periodic_y = .true.
logical, private :: t_periodic(3) = .true.
logical, private :: t_bipartite_order = .false.
character(len=NAME_LEN), private :: name = ''
logical, private :: t_momentum_space = .false.
integer, private :: lat_vec(3,3) = 0
integer, private :: k_vec(3,3) = 0
integer, private, allocatable :: basis_vecs(:,:)
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)
type(site), private, allocatable :: sites(:)
procedure(test), private, pointer :: a => null()

Constructor

private function lattice_constructor (lattice_type, length_x, length_y, length_z, t_periodic_x, t_periodic_y, t_periodic_z, space, t_bipartite_order)

Type-Bound Procedures

procedure , private , :: initialize => init_lattice Subroutine
procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure (is_periodic_t) , public :: is_periodic
procedure (get_length_t) , public :: get_length
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , private , :: add_k_vec_symbol Function
procedure , public :: inv_k_vec Function
procedure , private , :: inv_k_vec_symbol Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , private , :: set_name Subroutine
procedure , public :: get_name Function
procedure , private , :: set_nsites Subroutine
procedure , private , :: set_ndim Subroutine
procedure , private , :: set_nconnect_max Subroutine
procedure , private , :: set_periodic Subroutine
procedure (set_length_t) , private :: set_length
procedure (calc_nsites_t) , private :: calc_nsites
procedure , private , :: allocate_sites Subroutine
procedure (initialize_sites_t) , private :: initialize_sites
procedure , private , :: deallocate_sites Subroutine
procedure , public :: dispersion_rel => dispersion_rel_not_implemented Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: dot_prod => dot_prod_not_implemented Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , private , :: inside_bz Function
procedure , private , :: inside_bz_explicit Function
procedure , private , :: apply_basis_vector Function
procedure , public :: get_orb_from_k_vec Function
procedure , private , :: initialize_lu_table Subroutine
procedure , private , :: fill_bz_table Subroutine
procedure , private , :: fill_lu_table Subroutine
procedure , private , :: get_lu_table_size Subroutine
procedure , private , :: deallocate_caches Subroutine
procedure , private , :: init_basis_vecs Subroutine
procedure , public :: init_hop_cache_bounds Subroutine

type, public, extends(lattice) ::  aim

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)
integer, private :: n_imps = -1
integer, private :: n_bath = -1
integer, private, allocatable :: impurity_sites(:)
integer, private, allocatable :: bath_sites(:)

Constructor

private function aim_lattice_constructor (lat_type, length_x, length_y)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure (get_length_t) , public :: get_length
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel => dispersion_rel_not_implemented Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: dot_prod => dot_prod_not_implemented Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , private , :: set_n_imps Subroutine
procedure , private , :: set_n_bath Subroutine
procedure , private , :: calc_nsites => calc_nsites_aim Function
procedure , public :: is_periodic => is_periodic_aim Function
procedure , public :: get_n_imps Function
procedure , public :: get_n_bath Function
procedure , public :: is_impurity_site Function
procedure , public :: is_bath_site Function
procedure , public :: get_impurities Function
procedure , public :: get_bath Function

type, private, extends(lattice) ::  chain

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)
integer, private :: length = -1

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_chain Function
procedure , public :: is_periodic => is_periodic_chain Function
procedure , private , :: set_length => set_length_chain Subroutine
procedure , private , :: calc_nsites => calc_nsites_chain Function
procedure , private , :: initialize_sites => init_sites_chain Subroutine
procedure , public :: dispersion_rel => dispersion_rel_chain_k Function
procedure , private , :: init_basis_vecs => init_basis_vecs_chain Subroutine
procedure , public :: dot_prod => dot_prod_chain Function

type, private, extends(lattice) ::  cube

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)
integer, private :: length(3) = -1

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: dot_prod => dot_prod_not_implemented Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_cube Function
procedure , public :: is_periodic => is_periodic_cube Function
procedure , public :: dispersion_rel => dispersion_rel_cube Function
procedure , private , :: set_length => set_length_cube Subroutine
procedure , private , :: calc_nsites => calc_nsites_cube Function
procedure , private , :: initialize_sites => init_sites_cube Subroutine

type, private, extends(lattice) ::  rectangle

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)
integer, private :: length(2) = -1

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , private , :: init_basis_vecs_rect_base Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_rect Function
procedure , private , :: set_length => set_length_rect Subroutine
procedure , private , :: calc_nsites => calc_nsites_rect Function
procedure , private , :: initialize_sites => init_sites_rect Subroutine
procedure , private , :: init_basis_vecs => init_basis_vecs_rect Subroutine
procedure , public :: dot_prod => dot_prod_rect Function

type, private, extends(rectangle) ::  kagome

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_rect Function
procedure , public :: dot_prod => dot_prod_rect Function
procedure , private , :: calc_nsites => calc_nsites_kagome Function
procedure , private , :: initialize_sites => init_sites_kagome Subroutine

type, private, extends(rectangle) ::  hexagonal

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_rect Function
procedure , public :: dot_prod => dot_prod_rect Function
procedure , private , :: calc_nsites => calc_nsites_hexagonal Function
procedure , private , :: initialize_sites => init_sites_hexagonal Subroutine

type, private, extends(rectangle) ::  triangular

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_rect Function
procedure , public :: dot_prod => dot_prod_rect Function
procedure , private , :: initialize_sites => init_sites_triangular Subroutine

type, private, extends(rectangle) ::  tilted

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_tilted Function
procedure , private , :: calc_nsites => calc_nsites_tilted Function
procedure , private , :: initialize_sites => init_sites_tilted Subroutine
procedure , private , :: init_basis_vecs => init_basis_vecs_tilted Subroutine
procedure , public :: dot_prod => dot_prod_tilted Function

type, private, extends(rectangle) ::  sujun

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_rect Function
procedure , public :: dot_prod => dot_prod_rect Function
procedure , private , :: calc_nsites => calc_nsites_sujun Function
procedure , private , :: initialize_sites => init_sites_sujun Subroutine

type, private, extends(rectangle) ::  ext_input

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dispersion_rel => dispersion_rel_rect Function
procedure , public :: dot_prod => dot_prod_rect Function
procedure , private , :: calc_nsites => read_lattice_n_sites Function
procedure , private , :: initialize_sites => read_sites Subroutine

type, private, extends(rectangle) ::  ole

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_length => get_length_rect Function
procedure , public :: is_periodic => is_periodic_rect Function
procedure , public :: dot_prod => dot_prod_rect Function
procedure , public :: dispersion_rel => dispersion_rel_ole Function
procedure , private , :: calc_nsites => calc_nsites_ole Function
procedure , private , :: initialize_sites => init_sites_ole Subroutine
procedure , private , :: find_periodic_neighbors => find_periodic_neighbors_ole Function
procedure , private , :: inside_bz => inside_bz_ole Function

type, private, extends(aim) ::  aim_chain

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)
integer, private :: length = -1

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel => dispersion_rel_not_implemented Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: dot_prod => dot_prod_not_implemented Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: is_periodic => is_periodic_aim Function
procedure , public :: get_n_imps Function
procedure , public :: get_n_bath Function
procedure , public :: is_impurity_site Function
procedure , public :: is_bath_site Function
procedure , public :: get_impurities Function
procedure , public :: get_bath Function
procedure , public :: get_length => get_length_aim_chain Function
procedure , private , :: set_length => set_length_aim_chain Subroutine
procedure , private , :: initialize_sites => init_sites_aim_chain Subroutine

type, private, extends(lattice) ::  star

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel => dispersion_rel_not_implemented Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: dot_prod => dot_prod_not_implemented Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , private , :: calc_nsites => calc_nsites_star Function
procedure , private , :: set_length => set_length_star Subroutine
procedure , private , :: initialize_sites => init_sites_star Subroutine
procedure , public :: get_length => get_length_star Function
procedure , public :: is_periodic => is_periodic_star Function

type, private, extends(aim) ::  aim_star

Components

Type Visibility Attributes Name Initial
integer, public, allocatable :: k_to_sym(:,:,:)
integer, public, allocatable :: sym_to_k(:,:)
integer, public, allocatable :: mult_table(:,:)
integer, public, allocatable :: inv_table(:)

Type-Bound Procedures

procedure , public :: get_nsites Function
procedure , public :: get_ndim Function
procedure , public :: get_nconnect_max Function
procedure , public :: is_periodic_x Function
procedure , public :: is_periodic_y Function
procedure , public :: get_site_index Function
procedure , public :: get_neighbors => get_neighbors_lattice Function
procedure , public :: get_num_neighbors => get_num_neighbors_lattice Function
procedure , public :: get_spinorb_neighbors => get_spinorb_neighbors_lat Function
procedure , public :: is_k_space Function
procedure , public :: print_lat Subroutine
procedure , public :: add_k_vec Function
procedure , public :: inv_k_vec Function
procedure , public :: get_sym Function
procedure , public :: subtract_k_vec Function
procedure , public :: get_sym_from_k Function
procedure , public :: set_sym Subroutine
procedure , public :: get_name Function
procedure , public :: dispersion_rel => dispersion_rel_not_implemented Function
procedure , public :: dispersion_rel_orb Function
procedure , public :: dispersion_rel_spin_orb Function
procedure , public :: dot_prod => dot_prod_not_implemented Function
procedure , public :: get_k_vec Function
procedure , public :: get_r_vec Function
procedure , public :: round_sym Function
procedure , public :: map_k_vec Function
procedure , public :: get_orb_from_k_vec Function
procedure , public :: init_hop_cache_bounds Subroutine
procedure , public :: get_n_imps Function
procedure , public :: get_n_bath Function
procedure , public :: is_impurity_site Function
procedure , public :: is_bath_site Function
procedure , public :: get_impurities Function
procedure , public :: get_bath Function
procedure , private , :: set_length => set_length_aim_star Subroutine
procedure , private , :: calc_nsites => calc_nsites_aim_star Function
procedure , private , :: initialize_sites => init_sites_aim_star Subroutine
procedure , public :: is_periodic => is_periodic_aim_star Function
procedure , public :: get_length => get_length_aim_star Function

Functions

private function epsilon_kvec_vector(k_vec)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function epsilon_kvec_symmetry(sym)

Arguments

Type IntentOptional Attributes Name
type(Symmetry), intent(in) :: sym

Return Value real(kind=dp)

private function epsilon_kvec_orbital(orb)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: orb

Return Value real(kind=dp)

private pure function add_k_vec(this, k_1, k_2) result(k_out)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: k_1(3)
integer, intent(in) :: k_2(3)

Return Value integer, (3)

private function add_k_vec_symbol(this, sym_1, sym_2) result(sym_out)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: sym_1
integer, intent(in) :: sym_2

Return Value integer

private function inv_k_vec(this, k) result(k_inv)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: k(3)

Return Value integer, (3)

private pure function get_sym(this, orb) result(sym)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: orb

Return Value integer

private pure function get_sym_from_k(this, k) result(sym)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: k(3)

Return Value integer

private function inv_k_vec_symbol(this, sym) result(inv_sym)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: sym

Return Value integer

private function subtract_k_vec(this, k_1, k_2) result(k_out)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: k_1(3)
integer, intent(in) :: k_2(3)

Return Value integer, (3)

private function get_orb_from_k_vec(this, k_in, spin) result(orb)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: k_in(3)
integer, intent(in), optional :: spin

Return Value integer

private elemental function round_sym(this, sym_in) result(sym_out)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
type(BasisFN), intent(in) :: sym_in

Return Value type(BasisFN)

private pure function map_k_vec(this, k_in) result(k_out)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: k_in(3)

Return Value integer, (3)

private pure function inside_bz(this, k_vec)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: k_vec(3)

Return Value logical

private pure function inside_bz_explicit(this, k_vec)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: k_vec(sdim)

Return Value logical

private pure function inside_bz_ole(this, k_vec)

Arguments

Type IntentOptional Attributes Name
class(ole), intent(in) :: this
integer, intent(in) :: k_vec(sdim)

Return Value logical

private function inside_bz_chain(this, k_vec)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this
integer, intent(in) :: k_vec(3)

Return Value logical

private pure function apply_basis_vector(this, k_in, ind) result(k_out)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: k_in(3)
integer, intent(in), optional :: ind

Return Value integer, (3)

private pure function get_length_aim_star(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(aim_star), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value integer

private function is_impurity(this)

Arguments

Type IntentOptional Attributes Name
class(site) :: this

Return Value logical

private function is_bath(this)

Arguments

Type IntentOptional Attributes Name
class(site) :: this

Return Value logical

private function calc_nsites_aim(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function is_bath_site(this, ind)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this
integer, intent(in) :: ind

Return Value logical

private function is_impurity_site(this, ind)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this
integer, intent(in) :: ind

Return Value logical

private function get_bath(this) result(bath_sites)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this

Return Value integer, (this%n_bath)

private function get_impurities(this) result(imp_sites)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this

Return Value integer, (this%n_imps)

private function get_n_imps(this)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this

Return Value integer

private function get_n_bath(this)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this

Return Value integer

private function is_k_space(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value logical

private pure function is_periodic_aim(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(aim), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value logical

private pure function get_num_neighbors_site(this)

Arguments

Type IntentOptional Attributes Name
class(site), intent(in) :: this

Return Value integer

private function get_site_index(this, ind)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: ind

Return Value integer

private function find_periodic_neighbors_ole(this, ind, A)

Arguments

Type IntentOptional Attributes Name
class(ole) :: this
integer, intent(in) :: ind(2)
integer, intent(in) :: A(:,:)

Return Value integer

private function apply_pbc(array, shift) result(s_array)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: array(:,:)
integer, intent(in) :: shift(2)

Return Value integer, (size(array,1),size(array,2))

public function inside_bz_2d(x, y, A, B, C, D)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: x
integer, intent(in) :: y
integer, intent(in) :: A(2)
integer, intent(in) :: B(2)
integer, intent(in) :: C(2)
integer, intent(in) :: D(2)

Return Value logical

public function on_line_2d(P, A, B)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: P(2)
integer, intent(in) :: A(2)
integer, intent(in) :: B(2)

Return Value logical

private pure function get_k_vec(this, orb) result(k_vec)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this
integer, intent(in) :: orb

Return Value integer, (3)

private function get_r_vec(this, orb) result(r_vec)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: orb

Return Value integer, (3)

private function dispersion_rel_chain_k(this, k_vec) result(disp)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function dispersion_rel_rect(this, k_vec) result(disp)

Arguments

Type IntentOptional Attributes Name
class(rectangle) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function dispersion_rel_cube(this, k_vec) result(disp)

Arguments

Type IntentOptional Attributes Name
class(cube) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function dispersion_rel_tilted(this, k_vec) result(disp)

Arguments

Type IntentOptional Attributes Name
class(tilted) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function dispersion_rel_ole(this, k_vec) result(disp)

Arguments

Type IntentOptional Attributes Name
class(ole) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function dispersion_rel_not_implemented(this, k_vec) result(disp)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)

private function dispersion_rel_orb(this, orb) result(disp)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: orb

Return Value real(kind=dp)

private function dispersion_rel_spin_orb(this, orb) result(disp)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: orb

Return Value real(kind=dp)

private function dot_prod_not_implemented(this, k_vec, r_vec) result(dot)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: k_vec(3)
integer, intent(in) :: r_vec(3)

Return Value real(kind=dp)

private function dot_prod_chain(this, k_vec, r_vec) result(dot)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this
integer, intent(in) :: k_vec(3)
integer, intent(in) :: r_vec(3)

Return Value real(kind=dp)

private function dot_prod_rect(this, k_vec, r_vec) result(dot)

Arguments

Type IntentOptional Attributes Name
class(rectangle) :: this
integer, intent(in) :: k_vec(3)
integer, intent(in) :: r_vec(3)

Return Value real(kind=dp)

private function dot_prod_tilted(this, k_vec, r_vec) result(dot)

Arguments

Type IntentOptional Attributes Name
class(tilted) :: this
integer, intent(in) :: k_vec(3)
integer, intent(in) :: r_vec(3)

Return Value real(kind=dp)

public function sort_unique(list) result(output)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: list(:)

Return Value integer, allocatable, (:)

private function aim_lattice_constructor(lat_type, length_x, length_y) result(this)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: lat_type
integer, intent(in) :: length_x
integer, intent(in) :: length_y

Return Value class(aim), pointer

private function lattice_constructor(lattice_type, length_x, length_y, length_z, t_periodic_x, t_periodic_y, t_periodic_z, space, t_bipartite_order) result(this)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: lattice_type
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in) :: length_z
logical, intent(in) :: t_periodic_x
logical, intent(in) :: t_periodic_y
logical, intent(in) :: t_periodic_z
character(len=*), intent(in), optional :: space
logical, intent(in), optional :: t_bipartite_order

Return Value class(lattice), pointer

private function site_constructor(ind, n_neighbors, neighbors, k_vec, r_vec, site_type) result(this)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: ind
integer, intent(in) :: n_neighbors
integer, intent(in) :: neighbors(n_neighbors)
integer, intent(in), optional :: k_vec(3)
integer, intent(in), optional :: r_vec(3)
character(len=*), intent(in), optional :: site_type

Return Value type(site)

private function get_index(this)

Arguments

Type IntentOptional Attributes Name
class(site) :: this

Return Value integer

private function get_name(this) result(lattice_name)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value character(len=NAME_LEN)

private function get_neighbors_site(this) result(neighbors)

Arguments

Type IntentOptional Attributes Name
class(site) :: this

Return Value integer, (this%n_neighbors)

private function get_num_neighbors_lattice(this, ind) result(n_neighbors)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: ind

Return Value integer

private function get_neighbors_lattice(this, ind) result(neighbors)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: ind

Return Value integer, allocatable, (:)

private function get_spinorb_neighbors_lat(this, spinorb) result(neighbors)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: spinorb

Return Value integer, allocatable, (:)

private function calc_nsites_aim_star(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(aim_star) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_star(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(star) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private pure function is_periodic_aim_star(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(aim_star), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value logical

private function calc_nsites_chain(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_cube(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(cube) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_hexagonal(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(hexagonal) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_kagome(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(kagome) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_rect(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(rectangle) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_tilted(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(tilted) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_sujun(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(sujun) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function calc_nsites_ole(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(ole) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function get_nconnect_max(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value integer

private pure function get_length_star(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(star), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value integer

private pure function get_length_chain(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(chain), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value integer

private pure function get_length_cube(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(cube), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value integer

private pure function get_length_rect(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(rectangle), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value integer

private pure function get_length_aim_chain(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(aim_chain), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value integer

private pure function is_periodic_star(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(star), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value logical

private pure function is_periodic_chain(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(chain), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value logical

private pure function is_periodic_cube(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(cube), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value logical

private pure function is_periodic_rect(this, dimen)

Arguments

Type IntentOptional Attributes Name
class(rectangle), intent(in) :: this
integer, intent(in), optional :: dimen

Return Value logical

private function is_periodic_x(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value logical

private function is_periodic_y(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value logical

private elemental function get_ndim(this)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this

Return Value integer

private elemental function get_nsites(this)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: this

Return Value integer

public function determine_optimal_time_step(time_step_death) result(time_step)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(out), optional :: time_step_death

Return Value real(kind=dp)

private function read_lattice_n_sites(this, length_x, length_y, length_z) result(n_sites)

Arguments

Type IntentOptional Attributes Name
class(ext_input) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

Return Value integer

private function get_helement_lattice_ex_mat_wrapper(nI, ic, ex, tpar) result(hel)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: ic
integer, intent(in) :: ex(2,ic)
logical, intent(in) :: tpar

Return Value real(kind=dp)

private function get_helement_lattice_general_wrapper(nI, nJ, ic_ret) result(hel)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nI(nel)
integer, intent(in) :: nJ(nel)
integer, intent(inout), optional :: ic_ret

Return Value real(kind=dp)


Subroutines

public subroutine setup_lattice_symmetry()

Arguments

None

public subroutine init_dispersion_rel_cache()

Arguments

None

private subroutine set_sym(this, orb, sym)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: orb
integer, intent(in) :: sym

private subroutine init_basis_vecs(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine init_basis_vecs_chain(this)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this

private subroutine init_basis_vecs_rect(this)

Arguments

Type IntentOptional Attributes Name
class(rectangle) :: this

private subroutine init_basis_vecs_tilted(this)

Arguments

Type IntentOptional Attributes Name
class(tilted) :: this

private subroutine init_basis_vecs_rect_base(this, l)

Base function for setting up a the basis vector array for rectangular lattices (extracted from the previous init_basis_vecs_rect) @param[in] l Maximal number of unit vectors to be combined into a basis vector

Arguments

Type IntentOptional Attributes Name
class(rectangle), intent(inout) :: this
integer, intent(in) :: l

private subroutine set_impurity(this, flag)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
logical, intent(in) :: flag

private subroutine set_bath(this, flag)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
logical, intent(in) :: flag

private subroutine init_sites_aim_chain(this)

Arguments

Type IntentOptional Attributes Name
class(aim_chain) :: this

private subroutine set_n_imps(this, n_imps)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this
integer, intent(in) :: n_imps

private subroutine set_n_bath(this, n_bath)

Arguments

Type IntentOptional Attributes Name
class(aim) :: this
integer, intent(in) :: n_bath

private subroutine set_num_neighbors(this, n_neighbors)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: n_neighbors

private subroutine init_sites_aim_star(this)

Arguments

Type IntentOptional Attributes Name
class(aim_star) :: this

private subroutine init_sites_star(this)

Arguments

Type IntentOptional Attributes Name
class(star) :: this

private subroutine init_sites_chain(this)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this

private subroutine init_sites_cube(this)

Arguments

Type IntentOptional Attributes Name
class(cube) :: this

private subroutine init_sites_kagome(this)

Arguments

Type IntentOptional Attributes Name
class(kagome) :: this

private subroutine init_sites_hexagonal(this)

Arguments

Type IntentOptional Attributes Name
class(hexagonal) :: this

private subroutine init_sites_triangular(this)

Arguments

Type IntentOptional Attributes Name
class(triangular) :: this

private subroutine init_sites_rect(this)

Arguments

Type IntentOptional Attributes Name
class(rectangle) :: this

private subroutine read_sites(this)

Arguments

Type IntentOptional Attributes Name
class(ext_input) :: this

private subroutine init_sites_sujun(this)

Arguments

Type IntentOptional Attributes Name
class(sujun) :: this

private subroutine init_sites_ole(this)

Arguments

Type IntentOptional Attributes Name
class(ole) :: this

private subroutine init_sites_tilted(this)

Arguments

Type IntentOptional Attributes Name
class(tilted) :: this

private subroutine apply_pbc_tilted(array, pbc_1, pbc_2, ur, dr, ul, dl, rr, ll)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: array(:,:)
integer, intent(in) :: pbc_1(2)
integer, intent(in) :: pbc_2(2)
integer, intent(out) :: ur(:,:)
integer, intent(out) :: dr(:,:)
integer, intent(out) :: ul(:,:)
integer, intent(out) :: dl(:,:)
integer, intent(out) :: rr(:,:)
integer, intent(out) :: ll(:,:)

private subroutine init_lattice(this, length_x, length_y, length_z, t_periodic_x, t_periodic_y, t_periodic_z, t_bipartite_order)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in) :: length_z
logical, intent(in) :: t_periodic_x
logical, intent(in) :: t_periodic_y
logical, intent(in) :: t_periodic_z
logical, intent(in), optional :: t_bipartite_order

private subroutine init_hop_cache_bounds(this, r_min, r_max)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(out), optional :: r_min(3)
integer, intent(out), optional :: r_max(3)

private subroutine initialize_lu_table(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine get_lu_table_size(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine fill_lu_table(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine fill_bz_table(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine deallocate_caches(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine init_site(this, ind, n_neighbors, neighbors, k_vec, r_vec)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: ind
integer, intent(in) :: n_neighbors
integer, intent(in) :: neighbors(n_neighbors)
integer, intent(in), optional :: k_vec(3)
integer, intent(in), optional :: r_vec(3)

private subroutine set_k_vec(this, k_vec)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: k_vec(3)

private subroutine set_r_vec(this, r_vec)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: r_vec(3)

private subroutine set_neighbors(this, neighbors)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: neighbors(this%n_neighbors)

private subroutine allocate_neighbors(this, n_neighbors)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: n_neighbors

private subroutine set_index(this, ind)

Arguments

Type IntentOptional Attributes Name
class(site) :: this
integer, intent(in) :: ind

private subroutine allocate_sites(this, n_sites)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: n_sites

private subroutine set_name(this, lat_type)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
character(len=*), intent(in) :: lat_type

private subroutine deallocate_sites(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine deallocate_neighbors(this)

Arguments

Type IntentOptional Attributes Name
class(site) :: this

public subroutine lattice_deconstructor(this)

Arguments

Type IntentOptional Attributes Name
class(lattice), pointer :: this

public subroutine aim_deconstructor(this)

Arguments

Type IntentOptional Attributes Name
class(aim), pointer :: this

private subroutine set_length_aim_star(this, length_x, length_y, length_z)

Arguments

Type IntentOptional Attributes Name
class(aim_star) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

private subroutine set_length_star(this, length_x, length_y, length_z)

Arguments

Type IntentOptional Attributes Name
class(star) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

private subroutine set_length_chain(this, length_x, length_y, length_z)

Arguments

Type IntentOptional Attributes Name
class(chain) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

private subroutine set_length_cube(this, length_x, length_y, length_z)

Arguments

Type IntentOptional Attributes Name
class(cube) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

private subroutine set_length_rect(this, length_x, length_y, length_z)

Arguments

Type IntentOptional Attributes Name
class(rectangle) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

private subroutine set_nsites(this, n_sites)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: n_sites

private subroutine set_ndim(this, n_dim)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: n_dim

private subroutine set_nconnect_max(this, n_connect_max)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
integer, intent(in) :: n_connect_max

private subroutine set_periodic(this, t_periodic_x, t_periodic_y, t_periodic_z)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this
logical, intent(in) :: t_periodic_x
logical, intent(in) :: t_periodic_y
logical, intent(in), optional :: t_periodic_z

private subroutine set_length_aim_chain(this, length_x, length_y, length_z)

Arguments

Type IntentOptional Attributes Name
class(aim_chain) :: this
integer, intent(in) :: length_x
integer, intent(in) :: length_y
integer, intent(in), optional :: length_z

private subroutine print_lat(this)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

private subroutine read_lattice_struct(this)

Arguments

Type IntentOptional Attributes Name
class(ext_input) :: this