lattice_mod Module



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 elemental 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
procedure, private :: deallocate_neighbors
procedure, private :: get_neighbors => get_neighbors_site
procedure, private :: initialize => init_site
procedure, private :: set_index
procedure, private :: get_index
procedure, private :: set_num_neighbors
procedure, private :: get_num_neighbors => get_num_neighbors_site
procedure, private :: set_neighbors
procedure, private :: set_impurity
procedure, private :: is_impurity
procedure, private :: set_bath
procedure, private :: is_bath
procedure, private :: set_k_vec
procedure, private :: set_r_vec

type, private, extends(site) ::  impurity

type, private, extends(site) ::  bath

type, public, abstract ::  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()
integer, private :: total_links

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
procedure, public :: get_nsites
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure(is_periodic_t), public, deferred :: is_periodic
procedure(get_length_t), public, deferred :: get_length
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, private :: add_k_vec_symbol
procedure, public :: inv_k_vec
procedure, private :: inv_k_vec_symbol
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, private :: set_name
procedure, public :: get_name
procedure, private :: set_nsites
procedure, private :: set_ndim
procedure, private :: set_nconnect_max
procedure, private :: set_periodic
procedure(set_length_t), private, deferred :: set_length
procedure(calc_nsites_t), private, deferred :: calc_nsites
procedure, private :: allocate_sites
procedure(initialize_sites_t), private, deferred :: initialize_sites
procedure, private :: calc_total_links
procedure, public :: get_total_links
procedure, private :: deallocate_sites
procedure, public :: dispersion_rel => dispersion_rel_not_implemented
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: dot_prod => dot_prod_not_implemented
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, private :: inside_bz
procedure, private :: inside_bz_explicit
procedure, private :: apply_basis_vector
procedure, public :: get_orb_from_k_vec
procedure, private :: initialize_lu_table
procedure, private :: fill_bz_table
procedure, private :: fill_lu_table
procedure, private :: get_lu_table_size
procedure, private :: deallocate_caches
procedure, private :: init_basis_vecs
procedure, public :: init_hop_cache_bounds

type, public, abstract, 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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure(get_length_t), public, deferred :: get_length
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel => dispersion_rel_not_implemented
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: dot_prod => dot_prod_not_implemented
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, private :: set_n_imps
procedure, private :: set_n_bath
procedure, private :: calc_nsites => calc_nsites_aim
procedure, public :: is_periodic => is_periodic_aim
procedure, public :: get_n_imps
procedure, public :: get_n_bath
procedure, public :: is_impurity_site
procedure, public :: is_bath_site
procedure, public :: get_impurities
procedure, public :: get_bath

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_chain
procedure, public :: is_periodic => is_periodic_chain
procedure, private :: set_length => set_length_chain
procedure, private :: calc_nsites => calc_nsites_chain
procedure, private :: initialize_sites => init_sites_chain
procedure, public :: dispersion_rel => dispersion_rel_chain_k
procedure, private :: init_basis_vecs => init_basis_vecs_chain
procedure, public :: dot_prod => dot_prod_chain

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: dot_prod => dot_prod_not_implemented
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_cube
procedure, public :: is_periodic => is_periodic_cube
procedure, public :: dispersion_rel => dispersion_rel_cube
procedure, private :: set_length => set_length_cube
procedure, private :: calc_nsites => calc_nsites_cube
procedure, private :: initialize_sites => init_sites_cube

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, private :: init_basis_vecs_rect_base
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_rect
procedure, private :: set_length => set_length_rect
procedure, private :: calc_nsites => calc_nsites_rect
procedure, private :: initialize_sites => init_sites_rect
procedure, private :: init_basis_vecs => init_basis_vecs_rect
procedure, public :: dot_prod => dot_prod_rect

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_rect
procedure, public :: dot_prod => dot_prod_rect
procedure, private :: calc_nsites => calc_nsites_kagome
procedure, private :: initialize_sites => init_sites_kagome

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_rect
procedure, public :: dot_prod => dot_prod_rect
procedure, private :: calc_nsites => calc_nsites_hexagonal
procedure, private :: initialize_sites => init_sites_hexagonal

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_rect
procedure, public :: dot_prod => dot_prod_rect
procedure, private :: initialize_sites => init_sites_triangular

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_tilted
procedure, private :: calc_nsites => calc_nsites_tilted
procedure, private :: initialize_sites => init_sites_tilted
procedure, private :: init_basis_vecs => init_basis_vecs_tilted
procedure, public :: dot_prod => dot_prod_tilted

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_rect
procedure, public :: dot_prod => dot_prod_rect
procedure, private :: calc_nsites => calc_nsites_sujun
procedure, private :: initialize_sites => init_sites_sujun

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dispersion_rel => dispersion_rel_rect
procedure, public :: dot_prod => dot_prod_rect
procedure, private :: calc_nsites => read_lattice_n_sites
procedure, private :: initialize_sites => read_sites

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_length => get_length_rect
procedure, public :: is_periodic => is_periodic_rect
procedure, public :: dot_prod => dot_prod_rect
procedure, public :: dispersion_rel => dispersion_rel_ole
procedure, private :: calc_nsites => calc_nsites_ole
procedure, private :: initialize_sites => init_sites_ole
procedure, private :: find_periodic_neighbors => find_periodic_neighbors_ole
procedure, private :: inside_bz => inside_bz_ole

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel => dispersion_rel_not_implemented
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: dot_prod => dot_prod_not_implemented
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: is_periodic => is_periodic_aim
procedure, public :: get_n_imps
procedure, public :: get_n_bath
procedure, public :: is_impurity_site
procedure, public :: is_bath_site
procedure, public :: get_impurities
procedure, public :: get_bath
procedure, public :: get_length => get_length_aim_chain
procedure, private :: set_length => set_length_aim_chain
procedure, private :: initialize_sites => init_sites_aim_chain

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel => dispersion_rel_not_implemented
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: dot_prod => dot_prod_not_implemented
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, private :: calc_nsites => calc_nsites_star
procedure, private :: set_length => set_length_star
procedure, private :: initialize_sites => init_sites_star
procedure, public :: get_length => get_length_star
procedure, public :: is_periodic => is_periodic_star

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
procedure, public :: get_ndim
procedure, public :: get_nconnect_max
procedure, public :: is_periodic_x
procedure, public :: is_periodic_y
procedure, public :: get_site_index
procedure, public :: get_neighbors => get_neighbors_lattice
procedure, public :: get_nn_neighbors => get_nn_neighbors_lattice
procedure, public :: get_num_neighbors => get_num_neighbors_lattice
procedure, public :: get_spinorb_neighbors => get_spinorb_neighbors_lat
procedure, public :: get_spinorb_nn_neighbors => get_spinorb_nn_neighbors_lat
procedure, public :: is_k_space
procedure, public :: print_lat
procedure, public :: add_k_vec
procedure, public :: inv_k_vec
procedure, public :: get_sym
procedure, public :: subtract_k_vec
procedure, public :: get_sym_from_k
procedure, public :: set_sym
procedure, public :: get_name
procedure, public :: get_total_links
procedure, public :: dispersion_rel => dispersion_rel_not_implemented
procedure, public :: dispersion_rel_orb
procedure, public :: dispersion_rel_spin_orb
procedure, public :: dot_prod => dot_prod_not_implemented
procedure, public :: get_k_vec
procedure, public :: get_r_vec
procedure, public :: round_sym
procedure, public :: map_k_vec
procedure, public :: get_orb_from_k_vec
procedure, public :: init_hop_cache_bounds
procedure, public :: get_n_imps
procedure, public :: get_n_bath
procedure, public :: is_impurity_site
procedure, public :: is_bath_site
procedure, public :: get_impurities
procedure, public :: get_bath
procedure, private :: set_length => set_length_aim_star
procedure, private :: calc_nsites => calc_nsites_aim_star
procedure, private :: initialize_sites => init_sites_aim_star
procedure, public :: is_periodic => is_periodic_aim_star
procedure, public :: get_length => get_length_aim_star

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 elemental 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 pure function get_neighbors_site(this) result(neighbors)

Arguments

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

Return Value integer, (this%n_neighbors)

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

Arguments

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

Return Value integer

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

Arguments

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

Return Value integer, allocatable, (:)

private pure function get_nn_neighbors_lattice(this, ind) result(res)

Arguments

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

Return Value integer, allocatable, (:)

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

Arguments

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

Return Value integer, allocatable, (:)

private pure function get_spinorb_nn_neighbors_lat(this, spinorb) result(neighbors)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: 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 elemental 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 elemental 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 elemental 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 elemental 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 elemental 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 elemental function is_periodic_x(this)

Arguments

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

Return Value logical

private elemental function is_periodic_y(this)

Arguments

Type IntentOptional Attributes Name
class(lattice), intent(in) :: 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 calc_total_links(this) result(total_links)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value integer

private function get_total_links(this) result(total_links)

Arguments

Type IntentOptional Attributes Name
class(lattice) :: this

Return Value integer

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)

Arguments

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

Maximal number of unit vectors to be combined into a basis vector

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