Octopus
wannier90lib_interface_oct_m Module Reference

Interface module to Wannier 90 library. More...

Detailed Description

Interface module to Wannier 90 library.

The whole module is conditionally included in the cmake source if Wannier90 is present, hence the lack of preprocessor dressing.

Functions/Subroutines

subroutine, public wannier90lib_init_w90main (namespace, ions, latt, kpoints, st, inp_options, w90main, stdout, stderr, ierr)
 Initialize wannier90 library data. More...
 
subroutine wannier90lib_set_atom_data (w90main, ions, latt)
 Set atom data in wannier90 library. More...
 
subroutine wannier90lib_set_projections (w90main, inp_options)
 Parse projections. More...
 
subroutine, public wannier90lib_initialize_matrix_data (w90main, u_matrix, u_dis_matrix, m_matrix, centers)
 Associate w90main object with matrix data. More...
 
subroutine wannier90lib_warn_inputs (inp_options)
 Check for options in .win file. More...
 
subroutine, public wannier90lib_create_wannier90_amn (w90main, inp_options, band_index, space, mesh, latt, st, kpoints, projection)
 Calculate wannier90 Projection Matrix. More...
 
subroutine, public wannier90lib_create_wannier90_mmn (w90main, band_index, mesh, st, latt, overlap)
 Kohn-Sham State Overlap Matrix. More...
 
subroutine, public wannier90lib_wannierization (w90main, gr, space, st, latt, kpoints, options, band_index, m_matrix, u_matrix_opt, last_u_matrix, warm_start)
 Full wannierization. More...
 

Function/Subroutine Documentation

◆ wannier90lib_init_w90main()

subroutine, public wannier90lib_interface_oct_m::wannier90lib_init_w90main ( type(namespace_t), intent(in)  namespace,
type(ions_t), intent(in)  ions,
type(lattice_vectors_t), intent(in)  latt,
type(kpoints_t), intent(in)  kpoints,
type(states_elec_t), intent(in)  st,
type(wannier_opts_t), intent(in)  inp_options,
type(lib_common_type), intent(inout)  w90main,
integer, intent(inout)  stdout,
integer, intent(inout)  stderr,
integer, intent(inout)  ierr 
)

Initialize wannier90 library data.

This includes parsing input options and setting correct parallelization scheme (only kpoints). For more details see wannier90 library documentation here.

Definition at line 165 of file wannier90lib_interface.F90.

◆ wannier90lib_set_atom_data()

subroutine wannier90lib_interface_oct_m::wannier90lib_set_atom_data ( type(lib_common_type), intent(inout)  w90main,
type(ions_t), intent(in)  ions,
type(lattice_vectors_t), intent(in)  latt 
)
private

Set atom data in wannier90 library.

Wannier90 needs atomic information (positions and species) to properly parse the projections block from the .win file. This subroutine extracts this data from the octopus ions structure and passes it to the wannier90 library.

Definition at line 253 of file wannier90lib_interface.F90.

◆ wannier90lib_set_projections()

subroutine wannier90lib_interface_oct_m::wannier90lib_set_projections ( type(lib_common_type), intent(inout)  w90main,
type(wannier_opts_t), intent(in)  inp_options 
)
private

Parse projections.

This subroutine reads the projections specified in the .win file and set them in wannier90 library.

Definition at line 295 of file wannier90lib_interface.F90.

◆ wannier90lib_initialize_matrix_data()

subroutine, public wannier90lib_interface_oct_m::wannier90lib_initialize_matrix_data ( type(lib_common_type), intent(inout)  w90main,
complex(real64), dimension(:, :, :), intent(inout), contiguous  u_matrix,
complex(real64), dimension(:, :, :), intent(inout), contiguous  u_dis_matrix,
complex(real64), dimension(:, :, :, :), intent(inout), contiguous  m_matrix,
real(real64), dimension(:, :), intent(in), contiguous  centers 
)

Associate w90main object with matrix data.

All matrices (U, U_dis, M) are passed as pointers. The centers are copied.

Definition at line 340 of file wannier90lib_interface.F90.

◆ wannier90lib_warn_inputs()

subroutine wannier90lib_interface_oct_m::wannier90lib_warn_inputs ( type(wannier_opts_t), intent(in)  inp_options)
private

Check for options in .win file.

Some options are not set from .win file but directly from octopus by calling the library. If these options are present in .win file, issue warning to user.

Definition at line 364 of file wannier90lib_interface.F90.

◆ wannier90lib_create_wannier90_amn()

subroutine, public wannier90lib_interface_oct_m::wannier90lib_create_wannier90_amn ( type(lib_common_type), intent(in)  w90main,
type(wannier_opts_t), intent(in)  inp_options,
integer, dimension(:), intent(in), contiguous  band_index,
class(space_t), intent(in)  space,
class(mesh_t), intent(in)  mesh,
type(lattice_vectors_t), intent(in)  latt,
type(states_elec_t), intent(in)  st,
type(kpoints_t), intent(in)  kpoints,
complex(real64), dimension(:, :, :), intent(out), contiguous  projection 
)

Calculate wannier90 Projection Matrix.

This is a wrapper around wannier_calc::wannier_calc_create_amn .

Definition at line 420 of file wannier90lib_interface.F90.

◆ wannier90lib_create_wannier90_mmn()

subroutine, public wannier90lib_interface_oct_m::wannier90lib_create_wannier90_mmn ( type(lib_common_type), intent(in)  w90main,
integer, dimension(:), intent(in), contiguous  band_index,
class(mesh_t), intent(in)  mesh,
type(states_elec_t), intent(in), target  st,
type(lattice_vectors_t), intent(in)  latt,
complex(real64), dimension(:, :, :, :), intent(out), contiguous  overlap 
)

Kohn-Sham State Overlap Matrix.

This is a wrapper around wannier_calc::wannier_calc_create_mmn .

Definition at line 473 of file wannier90lib_interface.F90.

◆ wannier90lib_wannierization()

subroutine, public wannier90lib_interface_oct_m::wannier90lib_wannierization ( type(lib_common_type), intent(inout)  w90main,
class(mesh_t), intent(in)  gr,
class(space_t), intent(in)  space,
type(states_elec_t), intent(in)  st,
type(lattice_vectors_t), intent(in)  latt,
type(kpoints_t), intent(in)  kpoints,
type(wannier_opts_t), intent(in)  options,
integer, dimension(:), intent(in), contiguous  band_index,
complex(real64), dimension(:, :, :, :), intent(inout), contiguous  m_matrix,
complex(real64), dimension(:, :, :), intent(inout), contiguous  u_matrix_opt,
complex(real64), dimension(:, :, :), intent(in), contiguous  last_u_matrix,
logical, intent(in), optional  warm_start 
)

Full wannierization.

This calls libwannier90 and performs all steps to find MLWFs. The necessary setup of the main library object has to happen before calling this function

Definition at line 497 of file wannier90lib_interface.F90.