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
Intent Optional Attributes
Name
real(kind=dp),
intent(in)
::
AP (*)
real(kind=dp),
intent(out)
::
A (:,:)
character(len=1),
intent(in),
optional
::
UPLO
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
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
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
Nodes of different colours represent the following:
Graph Key
Subroutine
Subroutine
Function
Function
Interface
Interface
Type Bound Procedure
Type Bound Procedure
Unknown Procedure Type
Unknown Procedure Type
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
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