@brief print eigenvector/values, with MO symmetry labels
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(basis_set), | intent(in) | :: | basis | |||
type(information), | intent(inout) | :: | infos | |||
integer, | intent(in) | :: | mostart | |||
integer, | intent(in) | :: | moend |
subroutine print_eigvec_vals_labeled(basis, infos, mostart, moend) use io_constants, only: iw use oqp_tagarray_driver use types, only: information use basis_tools, only: basis_set use messages, only: show_message, with_abort implicit none character(len=*), parameter :: subroutine_name = "print_eigvec_vals_labeled" type(basis_set), intent(in) :: basis type(information), intent(inout) :: infos integer, intent(in) :: mostart, moend integer :: i, imax, imin, j, nmax character(len=*), parameter :: fmt1 = '(/15x,10(8x,i4,5x))' character(len=*), parameter :: fmt2 = '(15x,10f17.10)' character(len=*), parameter :: fmt4 = '(i5,2x,a8,10f17.10)' ! tagarray real(kind=dp), contiguous, pointer :: & mo_energy_a(:), mo_energy_b(:), mo_a(:,:), mo_b(:,:) character(len=*), parameter :: tags_alpha(2) = (/ character(len=80) :: & OQP_E_MO_A, OQP_VEC_MO_A /) character(len=*), parameter :: tags_beta(2) = (/ character(len=80) :: & OQP_E_MO_B, OQP_VEC_MO_B /) !Print out eigendata, with mo symmetry labels !The rows are labeled with the basis function names. nmax = 5 call data_has_tags(infos%dat, tags_alpha, module_name, subroutine_name, WITH_ABORT) call tagarray_get_data(infos%dat, OQP_E_MO_A, mo_energy_a) call tagarray_get_data(infos%dat, OQP_VEC_MO_A, mo_a) write(iw,'(/,A)') ' -------------- Alpha Orbitals -------------' do imin = mostart, moend, nmax imax = min(imin+nmax-1, moend) write(iw,fmt1) (i, i=imin, imax) write(iw,fmt2) (mo_energy_a(i), i=imin, imax) do j = 1, basis%nbf write(iw,fmt4) j, basis%bf_label(j), mo_a(j,imin:imax) end do end do if ((infos%mol_prop%nelec_b /= 0) .and. (infos%control%scftype == 2)) then call data_has_tags(infos%dat, tags_beta, module_name, subroutine_name, WITH_ABORT) call tagarray_get_data(infos%dat, OQP_E_MO_B, mo_energy_b) call tagarray_get_data(infos%dat, OQP_VEC_MO_B, mo_b) write(iw,'(/,A)') ' -------------- Beta Orbitals -------------' do imin = mostart, moend, nmax imax = min(imin+nmax-1, moend) write(iw,fmt1) (i, i=imin, imax) write(iw,fmt2) (mo_energy_b(i), i=imin, imax) do j = 1, basis%nbf write(iw,fmt4) j, basis%bf_label(j), mo_b(j,imin:imax) end do end do end if end subroutine print_eigvec_vals_labeled