![]() |
Octopus
|
Interface module to Wannier 90 library. More...
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... | |
| 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.
|
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.
|
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.
| 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.
|
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.
| 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.
| 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.
| 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.