TABLE OF CONTENTS


ABINIT/defs_wannier90 [ Modules ]

[ Top ] [ Modules ]

NAME

 defs_wannier90

FUNCTION

 This module contains interfaces for wannier90 lib.

COPYRIGHT

 Copyright (C) 2004-2024 ABINIT group (BA, MT)
 This file is distributed under the terms of the
 GNU General Public License, see ~abinit/COPYING
 or http://www.gnu.org/copyleft/gpl.txt .

TODO

SOURCE

 18 #if defined HAVE_CONFIG_H
 19 #include "config.h"
 20 #endif
 21 
 22 module defs_wannier90
 23 
 24  implicit none
 25 
 26  interface
 27 #ifndef HAVE_WANNIER90_V1
 28 !WANNIER90_V2
 29  subroutine wannier_setup(seed__name,mp_grid_loc,num_kpts_loc,&
 30      real_lattice_loc,recip_lattice_loc,kpt_latt_loc,num_bands_tot, &
 31      num_atoms_loc,atom_symbols_loc,atoms_cart_loc,gamma_only_loc,spinors_loc,&
 32      nntot_loc,nnlist_loc,nncell_loc,num_bands_loc,num_wann_loc, &
 33      proj_site_loc,proj_l_loc,proj_m_loc,proj_radial_loc,proj_z_loc, &
 34      proj_x_loc,proj_zona_loc,exclude_bands_loc, &
 35 &    proj_s_loc,proj_s_qaxis_loc)
 36 #else
 37 !WANNIER90_V1
 38   subroutine wannier_setup(seed__name,mp_grid_loc,num_kpts_loc,&
 39      real_lattice_loc,recip_lattice_loc,kpt_latt_loc,num_bands_tot, &
 40      num_atoms_loc,atom_symbols_loc,atoms_cart_loc,gamma_only_loc,spinors_loc,&
 41      nntot_loc,nnlist_loc,nncell_loc,num_bands_loc,num_wann_loc, &
 42      proj_site_loc,proj_l_loc,proj_m_loc,proj_radial_loc,proj_z_loc, &
 43      proj_x_loc,proj_zona_loc,exclude_bands_loc)
 44 #endif
 45   use defs_basis
 46   implicit none
 47   character(len=*), intent(in) :: seed__name
 48   integer, dimension(3), intent(in) :: mp_grid_loc
 49   integer, intent(in) :: num_kpts_loc
 50   real(dp), dimension(3,3), intent(in) :: real_lattice_loc
 51   real(dp), dimension(3,3), intent(in) :: recip_lattice_loc
 52   real(dp), dimension(3,num_kpts_loc), intent(in) :: kpt_latt_loc
 53   integer, intent(in) :: num_bands_tot
 54   integer, intent(in) :: num_atoms_loc
 55   character(len=*), dimension(num_atoms_loc), intent(in) :: atom_symbols_loc
 56   real(dp), dimension(3,num_atoms_loc), intent(in) :: atoms_cart_loc
 57   logical, intent(in) :: gamma_only_loc
 58   logical, intent(in) :: spinors_loc
 59   integer, intent(out) :: nntot_loc
 60   integer, dimension(num_kpts_loc,12), intent(out) :: nnlist_loc
 61   integer,dimension(3,num_kpts_loc,12), intent(out) :: nncell_loc
 62   integer, intent(out) :: num_bands_loc
 63   integer, intent(out) :: num_wann_loc
 64   real(dp), dimension(3,num_bands_tot), intent(out) :: proj_site_loc
 65   integer, dimension(num_bands_tot), intent(out) :: proj_l_loc
 66   integer, dimension(num_bands_tot), intent(out) :: proj_m_loc
 67   integer, dimension(num_bands_tot), intent(out) :: proj_radial_loc
 68   real(dp), dimension(3,num_bands_tot), intent(out) :: proj_z_loc
 69   real(dp), dimension(3,num_bands_tot), intent(out) :: proj_x_loc
 70   real(dp), dimension(num_bands_tot), intent(out) :: proj_zona_loc
 71   integer, dimension(num_bands_tot), intent(out) :: exclude_bands_loc
 72 #ifndef HAVE_WANNIER90_V1
 73   !WANNIER90_V2
 74   integer, dimension(num_bands_tot), optional, intent(out) :: proj_s_loc  
 75   real(dp), dimension(3,num_bands_tot), optional, intent(out) :: proj_s_qaxis_loc
 76 #endif
 77   end subroutine wannier_setup
 78  end interface
 79 
 80  interface
 81   subroutine wannier_run(seed__name,mp_grid_loc,num_kpts_loc, &
 82      real_lattice_loc,recip_lattice_loc,kpt_latt_loc,num_bands_loc, &
 83      num_wann_loc,nntot_loc,num_atoms_loc,atom_symbols_loc, &
 84      atoms_cart_loc,gamma_only_loc,M_matrix_loc,A_matrix_loc,eigenvalues_loc, &
 85      U_matrix_loc,U_matrix_opt_loc,lwindow_loc,wann_centres_loc, &
 86      wann_spreads_loc,spread_loc)
 87    use defs_basis
 88    character(len=*), intent(in) :: seed__name
 89    integer, dimension(3), intent(in) :: mp_grid_loc
 90    integer, intent(in) :: num_kpts_loc
 91    real(dp), dimension(3,3), intent(in) :: real_lattice_loc
 92    real(dp), dimension(3,3), intent(in) :: recip_lattice_loc
 93    real(dp), dimension(3,num_kpts_loc), intent(in) :: kpt_latt_loc
 94    integer, intent(in) :: num_bands_loc
 95    integer, intent(in) :: num_wann_loc
 96    integer, intent(in) :: nntot_loc
 97    integer, intent(in) :: num_atoms_loc
 98    character(len=*), dimension(num_atoms_loc), intent(in) :: atom_symbols_loc
 99    real(dp), dimension(3,num_atoms_loc), intent(in) :: atoms_cart_loc
100    logical, intent(in)::gamma_only_loc
101    complex(dpc), dimension(num_bands_loc,num_bands_loc,nntot_loc,num_kpts_loc), intent(in) :: M_matrix_loc
102    complex(dpc), dimension(num_bands_loc,num_wann_loc,num_kpts_loc), intent(in) :: A_matrix_loc
103    real(dp), dimension(num_bands_loc,num_kpts_loc), intent(in) :: eigenvalues_loc
104    complex(dpc), dimension(num_wann_loc,num_wann_loc,num_kpts_loc), intent(out) :: U_matrix_loc
105    complex(dpc), dimension(num_bands_loc,num_wann_loc,num_kpts_loc), optional, intent(out) :: U_matrix_opt_loc
106    logical, dimension(num_bands_loc,num_kpts_loc), optional, intent(out) :: lwindow_loc
107    real(dp), dimension(3,num_wann_loc), optional, intent(out) :: wann_centres_loc
108    real(dp), dimension(num_wann_loc), optional, intent(out) :: wann_spreads_loc
109    real(dp), dimension(3), optional, intent(out) :: spread_loc
110   end subroutine wannier_run
111  end interface
112 
113 end module defs_wannier90