w90_plot_mod Module

This module handles various plots


Uses

  • module~~w90_plot_mod~~UsesGraph module~w90_plot_mod w90_plot_mod module~w90_comms w90_comms module~w90_plot_mod->module~w90_comms module~w90_constants w90_constants module~w90_comms->module~w90_constants module~w90_error_base w90_error_base module~w90_comms->module~w90_error_base

Used by

  • module~~w90_plot_mod~~UsedByGraph module~w90_plot_mod w90_plot_mod proc~w90_plot w90_plot proc~w90_plot->module~w90_plot_mod

Subroutines

public subroutine plot_main(atom_data, band_plot, dis_manifold, fermi_energy_list, fermi_surface_plot, ham_logical, kmesh_info, kpt_latt, output_file, wvfn_read, real_space_ham, kpoint_path, print_output, wannier_data, wannier_plot, ws_region, w90_calculation, ham_k, ham_r, m_matrix, u_matrix, u_matrix_opt, eigval, real_lattice, wannier_centres_translated, bohr, irvec, mp_grid, ndegen, shift_vec, nrpts, num_bands, num_kpts, num_wann, rpt_origin, transport_mode, have_disentangled, lsitesymmetry, w90_system, seedname, stdout, timer, dist_k, error, comm)

Main plotting routine

Arguments

Type IntentOptional Attributes Name
type(atom_data_type), intent(in) :: atom_data
type(band_plot_type), intent(in) :: band_plot
type(dis_manifold_type), intent(in) :: dis_manifold
real(kind=dp), intent(in), allocatable :: fermi_energy_list(:)
type(fermi_surface_plot_type), intent(in) :: fermi_surface_plot
type(ham_logical_type), intent(inout) :: ham_logical
type(kmesh_info_type), intent(in) :: kmesh_info
real(kind=dp), intent(in) :: kpt_latt(:,:)
type(output_file_type), intent(in) :: output_file
type(wvfn_read_type), intent(in) :: wvfn_read
type(real_space_ham_type), intent(inout) :: real_space_ham
type(kpoint_path_type), intent(in) :: kpoint_path
type(print_output_type), intent(in) :: print_output
type(wannier_data_type), intent(in) :: wannier_data
type(wannier_plot_type), intent(in) :: wannier_plot
type(ws_region_type), intent(in) :: ws_region
type(w90_calculation_type), intent(in) :: w90_calculation
complex(kind=dp), intent(inout), allocatable :: ham_k(:,:,:)
complex(kind=dp), intent(inout), allocatable :: ham_r(:,:,:)
complex(kind=dp), intent(in) :: m_matrix(:,:,:,:)
complex(kind=dp), intent(in) :: u_matrix(:,:,:)
complex(kind=dp), intent(in) :: u_matrix_opt(:,:,:)
real(kind=dp), intent(in) :: eigval(:,:)
real(kind=dp), intent(in) :: real_lattice(3,3)
real(kind=dp), intent(inout), allocatable :: wannier_centres_translated(:,:)
real(kind=dp), intent(in) :: bohr
integer, intent(inout), allocatable :: irvec(:,:)
integer, intent(in) :: mp_grid(3)
integer, intent(inout), allocatable :: ndegen(:)
integer, intent(inout), allocatable :: shift_vec(:,:)
integer, intent(inout) :: nrpts
integer, intent(in) :: num_bands
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
integer, intent(inout) :: rpt_origin
character(len=20), intent(in) :: transport_mode
logical, intent(in) :: have_disentangled
logical, intent(in) :: lsitesymmetry
type(w90_system_type), intent(in) :: w90_system
character(len=50), intent(in) :: seedname
integer, intent(in) :: stdout
type(timer_list_type), intent(inout) :: timer
integer, intent(in) :: dist_k(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_interpolate_bands(mp_grid, real_lattice, band_plot, kpoint_path, real_space_ham, ws_region, print_output, recip_lattice, num_wann, wannier_data, ham_r, irvec, ndegen, nrpts, wannier_centres_translated, ws_distance, bands_num_spec_points, stdout, seedname, timer, error, comm)

Plots the interpolated band structure

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: mp_grid(3)
real(kind=dp), intent(in) :: real_lattice(3,3)
type(band_plot_type), intent(in) :: band_plot
type(kpoint_path_type), intent(in) :: kpoint_path
type(real_space_ham_type), intent(in) :: real_space_ham
type(ws_region_type), intent(in) :: ws_region
type(print_output_type), intent(in) :: print_output
real(kind=dp), intent(in) :: recip_lattice(3,3)
integer, intent(in) :: num_wann
type(wannier_data_type), intent(in) :: wannier_data
complex(kind=dp), intent(in) :: ham_r(:,:,:)
integer, intent(in) :: irvec(:,:)
integer, intent(in) :: ndegen(:)
integer, intent(inout) :: nrpts
real(kind=dp), intent(in) :: wannier_centres_translated(:,:)
type(ws_distance_type), intent(inout) :: ws_distance
integer, intent(in) :: bands_num_spec_points
integer, intent(in) :: stdout
character(len=50), intent(in) :: seedname
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_fermi_surface(fermi_energy_list, recip_lattice, fermi_surface_plot, num_wann, ham_r, irvec, ndegen, nrpts, timing_level, stdout, seedname, timer, error, comm)

Prepares a Xcrysden bxsf file to view the fermi surface

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), allocatable :: fermi_energy_list(:)
real(kind=dp), intent(in) :: recip_lattice(3,3)
type(fermi_surface_plot_type), intent(in) :: fermi_surface_plot
integer, intent(in) :: num_wann
complex(kind=dp), intent(in) :: ham_r(:,:,:)
integer, intent(in) :: irvec(:,:)
integer, intent(in) :: ndegen(:)
integer, intent(in) :: nrpts
integer, intent(in) :: timing_level
integer, intent(in) :: stdout
character(len=50), intent(in) :: seedname
type(timer_list_type), intent(inout) :: timer
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_wannier(wannier_plot, wvfn_read, wannier_data, print_output, u_matrix_opt, dis_manifold, real_lattice, atom_data, kpt_latt, u_matrix, num_kpts, num_bands, num_wann, have_disentangled, spinors, bohr, stdout, seedname, timer, dist_k, error, comm)

Plot the WF in Xcrysden format based on code written by Michel Posternak

Read more…

Arguments

Type IntentOptional Attributes Name
type(wannier_plot_type), intent(in) :: wannier_plot
type(wvfn_read_type), intent(in) :: wvfn_read
type(wannier_data_type), intent(in) :: wannier_data
type(print_output_type), intent(in) :: print_output
complex(kind=dp), intent(in) :: u_matrix_opt(:,:,:)
type(dis_manifold_type), intent(in) :: dis_manifold
real(kind=dp), intent(in) :: real_lattice(3,3)
type(atom_data_type), intent(in) :: atom_data
real(kind=dp), intent(in) :: kpt_latt(:,:)
complex(kind=dp), intent(in) :: u_matrix(:,:,:)
integer, intent(in) :: num_kpts
integer, intent(in) :: num_bands
integer, intent(in) :: num_wann
logical, intent(in) :: have_disentangled
logical, intent(in) :: spinors
real(kind=dp), intent(in) :: bohr
integer, intent(in) :: stdout
character(len=50), intent(in) :: seedname
type(timer_list_type), intent(inout) :: timer
integer, intent(in) :: dist_k(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_read_unk(wfnname, formatted, spinors, inc_band, num_inc, num_bands, kpt, ngx, ngy, ngz, wvfn, wvfn_nc, stdout, error, comm)

Read a single UNK file into wvfn (or wvfn_nc for spinors), keeping the first num_inc bands flagged in inc_band (bands not flagged are read and discarded).

Read more…

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: wfnname

Name of the UNK file to read

logical, intent(in) :: formatted

Whether the UNK file is formatted

logical, intent(in) :: spinors

Whether the wavefunctions are spinors

logical, intent(in) :: inc_band(:)

Bands to keep

integer, intent(in) :: num_inc

Number of bands to keep

integer, intent(in) :: num_bands

Total number of bands in the file

integer, intent(in) :: kpt

Expected k-point index (checked against the file header)

integer, intent(in) :: ngx

Expected grid dimensions (checked against the file header)

integer, intent(in) :: ngy

Expected grid dimensions (checked against the file header)

integer, intent(in) :: ngz

Expected grid dimensions (checked against the file header)

complex(kind=dp), intent(inout), allocatable :: wvfn(:,:)

Destination, band as second index (caller-allocated; if .not. spinors)

complex(kind=dp), intent(inout), allocatable :: wvfn_nc(:,:,:)

Spinor destination, spin as third index (caller-allocated; if spinors)

integer, intent(in) :: stdout
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_u_matrices(u_matrix_opt, u_matrix, kpt_latt, dis_manifold, have_disentangled, num_wann, num_kpts, num_bands, seedname, error, comm)

Plot u_matrix and u_matrix_opt to textfiles in readable format

Arguments

Type IntentOptional Attributes Name
complex(kind=dp), intent(in) :: u_matrix_opt(:,:,:)
complex(kind=dp), intent(in) :: u_matrix(:,:,:)
real(kind=dp), intent(in) :: kpt_latt(:,:)
type(dis_manifold_type), intent(in) :: dis_manifold
logical, intent(in) :: have_disentangled
integer, intent(in) :: num_wann
integer, intent(in) :: num_kpts
integer, intent(in) :: num_bands
character(len=50), intent(in) :: seedname
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_bvec(kmesh_info, num_kpts, seedname, error, comm)

June 2018: RM and SP Write to file the matrix elements of bvector and their weights This is used by EPW to compute the velocity. You need "write_bvec = .true." in your wannier input

Arguments

Type IntentOptional Attributes Name
type(kmesh_info_type), intent(in) :: kmesh_info
integer, intent(in) :: num_kpts
character(len=50), intent(in) :: seedname
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_write_rmn(kmesh_info, m_matrix, kpt_latt, irvec, nrpts, num_kpts, num_wann, seedname, dist_k, error, comm)

Write out the matrix elements of r

Arguments

Type IntentOptional Attributes Name
type(kmesh_info_type), intent(in) :: kmesh_info
complex(kind=dp), intent(in) :: m_matrix(:,:,:,:)
real(kind=dp), intent(in) :: kpt_latt(:,:)
integer, intent(in) :: irvec(:,:)
integer, intent(in) :: nrpts
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
character(len=50), intent(in) :: seedname
integer, intent(in) :: dist_k(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_write_r2mn(num_kpts, num_wann, kmesh_info, m_matrix, seedname, dist_k, error, comm)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: num_kpts
integer, intent(in) :: num_wann
type(kmesh_info_type), intent(in) :: kmesh_info
complex(kind=dp), intent(in) :: m_matrix(:,:,:,:)
character(len=50), intent(in) :: seedname
integer, intent(in) :: dist_k(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm

private subroutine plot_calc_projection(num_bands, num_wann, num_kpts, u_matrix_opt, eigval, lwindow, timing_level, iprint, stdout, timer)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: num_bands
integer, intent(in) :: num_wann
integer, intent(in) :: num_kpts
complex(kind=dp), intent(in) :: u_matrix_opt(:,:,:)
real(kind=dp), intent(in) :: eigval(:,:)
logical, intent(in) :: lwindow(:,:)
integer, intent(in) :: timing_level
integer, intent(in) :: iprint
integer, intent(in) :: stdout
type(timer_list_type), intent(inout) :: timer

private subroutine plot_write_vdw_data(num_wann, wannier_data, real_lattice, u_matrix, u_matrix_opt, have_disentangled, w90_system, error, comm, stdout, seedname)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: num_wann
type(wannier_data_type), intent(in) :: wannier_data
real(kind=dp), intent(in) :: real_lattice(3,3)
complex(kind=dp), intent(in) :: u_matrix(:,:,:)
complex(kind=dp), intent(in) :: u_matrix_opt(:,:,:)
logical, intent(in) :: have_disentangled
type(w90_system_type), intent(in) :: w90_system
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm
integer, intent(in) :: stdout
character(len=50), intent(in) :: seedname

private subroutine plot_svd_omega_i(num_wann, num_kpts, kmesh_info, m_matrix, print_output, timer, dist_k, error, comm, stdout)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: num_wann
integer, intent(in) :: num_kpts
type(kmesh_info_type), intent(in) :: kmesh_info
complex(kind=dp), intent(in) :: m_matrix(:,:,:,:)
type(print_output_type), intent(in) :: print_output
type(timer_list_type), intent(inout) :: timer
integer, intent(in) :: dist_k(:)
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm
integer, intent(in) :: stdout

private subroutine plot_write_xyz(translate_home_cell, num_wann, wannier_centres, real_lattice, atom_data, print_output, error, comm, stdout, seedname)

Arguments

Type IntentOptional Attributes Name
logical, intent(in) :: translate_home_cell
integer, intent(in) :: num_wann
real(kind=dp), intent(in) :: wannier_centres(:,:)
real(kind=dp), intent(in) :: real_lattice(3,3)
type(atom_data_type), intent(in) :: atom_data
type(print_output_type), intent(in) :: print_output
type(w90_error_type), intent(out), allocatable :: error
type(w90_comm_type), intent(in) :: comm
integer, intent(in) :: stdout
character(len=50), intent(in) :: seedname