PACK_F90 Subroutine

public subroutine PACK_F90(A, AP, UPLO)

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

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

@param[in] A - matrix for packing (N x N) @param[out] AP - packed matrix ( 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) :: A(:,:)
real(kind=dp), intent(out) :: AP(:)
character(len=1), intent(in), optional :: UPLO

Calls

proc~~pack_f90~~CallsGraph proc~pack_f90 PACK_F90 interface~show_message show_message proc~pack_f90->interface~show_message proc~oqp_dtrttp_i64 oqp_dtrttp_i64 proc~pack_f90->proc~oqp_dtrttp_i64 proc~oqp_dtrttp_i64->interface~show_message dtrttp dtrttp proc~oqp_dtrttp_i64->dtrttp

Called by

proc~~pack_f90~~CalledByGraph proc~pack_f90 PACK_F90 interface~pack_matrix pack_matrix interface~pack_matrix->proc~pack_f90 none~add_data scf_conv%add_data none~add_data->interface~pack_matrix proc~build_pfon_density build_pfon_density proc~build_pfon_density->interface~pack_matrix proc~form_rohf_fock form_rohf_fock proc~form_rohf_fock->interface~pack_matrix proc~get_spin_square get_spin_square proc~get_spin_square->interface~pack_matrix proc~get_td_transition_dipole get_td_transition_dipole proc~get_td_transition_dipole->interface~pack_matrix proc~get_transition_dipole get_transition_dipole proc~get_transition_dipole->interface~pack_matrix proc~mo_to_ao mo_to_ao proc~mo_to_ao->interface~pack_matrix proc~oqp_tdhf_z_vector oqp_tdhf_z_vector proc~oqp_tdhf_z_vector->interface~pack_matrix proc~tdhf_unrelaxed_density tdhf_unrelaxed_density proc~oqp_tdhf_z_vector->proc~tdhf_unrelaxed_density proc~orb_to_dens orb_to_dens proc~orb_to_dens->interface~pack_matrix proc~sfdmat sfdmat proc~sfdmat->interface~pack_matrix proc~tdhf_unrelaxed_density->interface~pack_matrix proc~get_ab_initio_density get_ab_initio_density proc~get_ab_initio_density->proc~orb_to_dens proc~scf_driver scf_driver proc~scf_driver->none~add_data proc~scf_driver->proc~build_pfon_density proc~scf_driver->proc~form_rohf_fock proc~scf_driver->proc~mo_to_ao proc~scf_driver->proc~get_ab_initio_density proc~tdhf_energy tdhf_energy proc~tdhf_energy->proc~get_td_transition_dipole proc~tdhf_mrsf_energy tdhf_mrsf_energy proc~tdhf_mrsf_energy->proc~get_transition_dipole proc~tdhf_sf_energy tdhf_sf_energy proc~tdhf_sf_energy->proc~get_spin_square proc~tdhf_sf_energy->proc~get_transition_dipole proc~tdhf_sf_energy->proc~sfdmat proc~tdhf_z_vector_c tdhf_z_vector_C proc~tdhf_z_vector_c->proc~oqp_tdhf_z_vector proc~guess_hcore guess_hcore proc~guess_hcore->proc~get_ab_initio_density proc~guess_huckel guess_huckel proc~guess_huckel->proc~get_ab_initio_density proc~guess_json guess_json proc~guess_json->proc~get_ab_initio_density proc~hf_energy hf_energy proc~hf_energy->proc~scf_driver proc~tdhf_energy_c tdhf_energy_C proc~tdhf_energy_c->proc~tdhf_energy 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~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 proc~guess_json_c guess_json_C proc~guess_json_c->proc~guess_json

Source Code

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