diff --git a/src/hamiltonian.F90 b/src/hamiltonian.F90 index 6d8d4cbe7..d136fd87f 100644 --- a/src/hamiltonian.F90 +++ b/src/hamiltonian.F90 @@ -152,6 +152,14 @@ subroutine hamiltonian_dealloc() if (ierr /= 0) call io_error('Error in deallocating wannier_centres_translated in param_dealloc') end if + ham_have_setup = .false. + have_translated = .false. + use_translation = .false. + have_ham_r = .false. + have_ham_k = .false. + hr_written = .false. + tb_written = .false. + return end subroutine hamiltonian_dealloc diff --git a/src/wannierise.F90 b/src/wannierise.F90 index bfd0ed990..197162e5c 100644 --- a/src/wannierise.F90 +++ b/src/wannierise.F90 @@ -235,8 +235,17 @@ subroutine wann_main if (ierr /= 0) call io_error('Error in allocating cdq in wann_main') ! for MPI - allocate (counts(0:num_nodes - 1), displs(0:num_nodes - 1), stat=ierr) - if (ierr /= 0) call io_error('Error in allocating counts and displs in wann_main') + if (allocated(counts)) deallocate (counts) + allocate (counts(0:num_nodes - 1), stat=ierr) + if (ierr /= 0) then + call io_error('Error in allocating counts in wann_main') + end if + + if (allocated(displs)) deallocate (displs) + allocate (displs(0:num_nodes - 1), stat=ierr) + if (ierr /= 0) then + call io_error('Error in allocating displs in wann_main') + end if call comms_array_split(num_kpts, counts, displs) allocate (rnkb_loc(num_wann, nntot, max(1, counts(my_node_id))), stat=ierr) if (ierr /= 0) call io_error('Error in allocating rnkb_loc in wann_main') @@ -801,6 +810,9 @@ subroutine wann_main if (ierr /= 0) call io_error('Error in deallocating m0_loc in wann_main') end if + if (allocated(counts)) deallocate (counts) + if (allocated(displs)) deallocate (displs) + deallocate (history, stat=ierr) if (ierr /= 0) call io_error('Error deallocating history in wann_main')