Read checkpoint file This is used to allocate the matrices.
Note on parallelization: this function should be called from the root node only!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dis_manifold_type), | intent(inout) | :: | dis_manifold | |||
| integer, | intent(inout), | allocatable | :: | exclude_bands(:) | ||
| type(kmesh_info_type), | intent(in) | :: | kmesh_info | |||
| real(kind=dp), | intent(in) | :: | kpt_latt(:,:) | |||
| type(wannier_data_type), | intent(inout) | :: | wannier_data | |||
| complex(kind=dp), | intent(inout) | :: | m_matrix(:,:,:,:) | |||
| complex(kind=dp), | intent(inout) | :: | u_matrix(:,:,:) | |||
| complex(kind=dp), | intent(inout) | :: | u_matrix_opt(:,:,:) | |||
| real(kind=dp), | intent(in) | :: | real_lattice(3,3) | |||
| real(kind=dp), | intent(inout) | :: | omega_invariant | |||
| integer, | intent(in) | :: | mp_grid(3) | |||
| integer, | intent(in) | :: | num_bands | |||
| integer, | intent(in) | :: | num_exclude_bands | |||
| integer, | intent(in) | :: | num_kpts | |||
| integer, | intent(in) | :: | num_wann | |||
| character(len=20), | intent(inout) | :: | checkpoint | |||
| logical, | intent(out) | :: | have_disentangled | |||
| logical, | intent(in) | :: | ispostw90 | |||
| character(len=*), | intent(in) | :: | seedname | |||
| integer, | intent(in) | :: | stdout | |||
| type(w90_error_type), | intent(out), | allocatable | :: | error | ||
| type(w90_comm_type), | intent(in) | :: | comm |
subroutine w90_readwrite_read_chkpt(dis_manifold, exclude_bands, kmesh_info, kpt_latt, & wannier_data, m_matrix, u_matrix, u_matrix_opt, & real_lattice, omega_invariant, mp_grid, num_bands, & num_exclude_bands, num_kpts, num_wann, checkpoint, & have_disentangled, ispostw90, seedname, stdout, error, comm) !================================================! !! Read checkpoint file !! This is used to allocate the matrices. !! !! Note on parallelization: this function should be called !! from the root node only! !! !================================================! use w90_error, only: w90_error_type, set_error_file, set_error_file, set_error_alloc use w90_utility, only: utility_recip_lattice implicit none ! arguments type(dis_manifold_type), intent(inout) :: dis_manifold type(kmesh_info_type), intent(in) :: kmesh_info type(w90_comm_type), intent(in) :: comm type(w90_error_type), allocatable, intent(out) :: error type(wannier_data_type), intent(inout) :: wannier_data integer, allocatable, intent(inout) :: exclude_bands(:) integer, intent(in) :: mp_grid(3) integer, intent(in) :: num_bands integer, intent(in) :: num_exclude_bands integer, intent(in) :: num_kpts integer, intent(in) :: num_wann integer, intent(in) :: stdout complex(kind=dp), intent(inout) :: u_matrix(:, :, :) complex(kind=dp), intent(inout) :: u_matrix_opt(:, :, :) complex(kind=dp), intent(inout) :: m_matrix(:, :, :, :) real(kind=dp), intent(in) :: kpt_latt(:, :) real(kind=dp), intent(inout) :: omega_invariant real(kind=dp), intent(in) :: real_lattice(3, 3) character(len=20), intent(inout) :: checkpoint character(len=*), intent(in) :: seedname logical, intent(in) :: ispostw90 ! Are we running postw90? logical, intent(out) :: have_disentangled ! local variables integer :: chk_unit call w90_readwrite_read_chkpt_header(exclude_bands, kmesh_info, kpt_latt, real_lattice, & mp_grid, num_bands, num_exclude_bands, num_kpts, & num_wann, checkpoint, have_disentangled, ispostw90, & seedname, chk_unit, stdout, error, comm) if (allocated(error)) return call w90_readwrite_read_chkpt_matrices(dis_manifold, kmesh_info, wannier_data, m_matrix, & u_matrix, u_matrix_opt, omega_invariant, num_bands, & num_kpts, num_wann, have_disentangled, seedname, & chk_unit, stdout, error, comm) end subroutine w90_readwrite_read_chkpt