subroutine project_hamiltonian_lanczos(this, basis_index)
type(LanczosCalcType), intent(inout) :: this
integer, intent(in) :: basis_index
if (this%super%t_store_subspace_basis) then
if (iprocindex == root) then
call multiply_hamil_and_vector(this%super, this%super%basis_vectors(:, basis_index), this%lanczos_vector)
else
call multiply_hamil_and_vector(this%super, this%super%basis_vectors(:, basis_index), this%super%temp_out)
end if
else
if (iprocindex == root) then
call multiply_hamil_and_vector(this%super, this%current_v, this%lanczos_vector)
else
call multiply_hamil_and_vector(this%super, this%current_v, this%super%temp_out)
end if
end if
end subroutine project_hamiltonian_lanczos