UNPACK_F90 Subroutine

public subroutine UNPACK_F90(AP, A, UPLO)

@brief Fortran-90 routine for unpacking 1D array to symmetric matrix

@details LAPACK returns only upper or lower filling of matrix

@date 6 October 2021 - Initial release - @author Igor S. Gerasimov

@param[in] AP - packed matrix (N x N) @param[out] A - matrix for unpacking ( N*(N+1)/2 ) @param[in,optional] UPLO - format of packed matrix, U for upper and L for lower

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: AP(*)
real(kind=dp), intent(out) :: A(:,:)
character(len=1), intent(in), optional :: UPLO

Calls

proc~~unpack_f90~~CallsGraph proc~unpack_f90 UNPACK_F90 interface~show_message show_message proc~unpack_f90->interface~show_message proc~oqp_dtpttr_i64 oqp_dtpttr_i64 proc~unpack_f90->proc~oqp_dtpttr_i64 proc~oqp_dtpttr_i64->interface~show_message dtpttr dtpttr proc~oqp_dtpttr_i64->dtpttr

Called by

proc~~unpack_f90~~CalledByGraph proc~unpack_f90 UNPACK_F90 interface~unpack_matrix unpack_matrix interface~unpack_matrix->proc~unpack_f90 none~add_data scf_conv%add_data none~add_data->interface~unpack_matrix proc~dftder dftder proc~dftder->interface~unpack_matrix proc~eijden eijden proc~eijden->interface~unpack_matrix proc~form_rohf_fock form_rohf_fock proc~form_rohf_fock->interface~unpack_matrix proc~get_ab_initio_orbital get_ab_initio_orbital proc~get_ab_initio_orbital->interface~unpack_matrix proc~get_spin_square get_spin_square proc~get_spin_square->interface~unpack_matrix proc~grad_ee_kinetic grad_ee_kinetic proc~grad_ee_kinetic->interface~unpack_matrix proc~grad_ee_overlap grad_ee_overlap proc~grad_ee_overlap->interface~unpack_matrix proc~grad_en_hellman_feynman grad_en_hellman_feynman proc~grad_en_hellman_feynman->interface~unpack_matrix proc~grad_en_pulay grad_en_pulay proc~grad_en_pulay->interface~unpack_matrix proc~huckel_guess huckel_guess proc~huckel_guess->interface~unpack_matrix proc~mo_to_ao mo_to_ao proc~mo_to_ao->interface~unpack_matrix proc~oqp_tdhf_z_vector oqp_tdhf_z_vector proc~oqp_tdhf_z_vector->interface~unpack_matrix proc~run_population_analysis run_population_analysis proc~run_population_analysis->interface~unpack_matrix proc~scf_driver scf_driver proc~scf_driver->interface~unpack_matrix proc~scf_driver->none~add_data proc~scf_driver->proc~form_rohf_fock proc~scf_driver->proc~get_ab_initio_orbital proc~scf_driver->proc~mo_to_ao proc~tdhf_gradient tdhf_gradient proc~tdhf_gradient->interface~unpack_matrix proc~tdhf_1e_grad tdhf_1e_grad proc~tdhf_gradient->proc~tdhf_1e_grad proc~tdhf_mrsf_energy tdhf_mrsf_energy proc~tdhf_mrsf_energy->interface~unpack_matrix proc~tdhf_sf_energy tdhf_sf_energy proc~tdhf_sf_energy->interface~unpack_matrix proc~tdhf_sf_energy->proc~get_spin_square proc~guess_hcore guess_hcore proc~guess_hcore->proc~get_ab_initio_orbital proc~guess_huckel guess_huckel proc~guess_huckel->proc~huckel_guess proc~hf_energy hf_energy proc~hf_energy->proc~scf_driver proc~hf_gradient hf_gradient proc~hf_gradient->proc~dftder proc~hf_gradient->proc~eijden proc~hf_gradient->proc~grad_ee_kinetic proc~hf_gradient->proc~grad_ee_overlap proc~hf_gradient->proc~grad_en_hellman_feynman proc~hf_gradient->proc~grad_en_pulay proc~lowdin lowdin proc~lowdin->proc~run_population_analysis proc~mulliken mulliken proc~mulliken->proc~run_population_analysis proc~tdhf_1e_grad->proc~eijden proc~tdhf_1e_grad->proc~grad_ee_kinetic proc~tdhf_1e_grad->proc~grad_ee_overlap proc~tdhf_1e_grad->proc~grad_en_hellman_feynman proc~tdhf_1e_grad->proc~grad_en_pulay proc~tdhf_gradient_c tdhf_gradient_C proc~tdhf_gradient_c->proc~tdhf_gradient proc~tdhf_mrsf_energy_c tdhf_mrsf_energy_C proc~tdhf_mrsf_energy_c->proc~tdhf_mrsf_energy proc~tdhf_sf_energy_c tdhf_sf_energy_C proc~tdhf_sf_energy_c->proc~tdhf_sf_energy proc~tdhf_z_vector_c tdhf_z_vector_C proc~tdhf_z_vector_c->proc~oqp_tdhf_z_vector proc~guess_hcore_c guess_hcore_C proc~guess_hcore_c->proc~guess_hcore proc~guess_huckel_c guess_huckel_C proc~guess_huckel_c->proc~guess_huckel

Source Code

  subroutine UNPACK_F90(AP, A, UPLO)
    real(dp), intent(IN) :: AP(*)
    real(dp), intent(OUT) :: A(:, :)
    character(len=1), intent(in), optional :: UPLO
    character(len=1) :: DUPLO
    if (.not. present(UPLO)) then
      DUPLO = 'U'
    else
      DUPLO = UPLO
    end if
    call UNPACK_F77(AP, A, size(A, 1), DUPLO)
  end subroutine UNPACK_F90