oqp_tdhf_z_vector Subroutine

public subroutine oqp_tdhf_z_vector(infos)

Uses

  • proc~~oqp_tdhf_z_vector~~UsesGraph proc~oqp_tdhf_z_vector oqp_tdhf_z_vector module~dft dft proc~oqp_tdhf_z_vector->module~dft module~mathlib mathlib proc~oqp_tdhf_z_vector->module~mathlib module~messages messages proc~oqp_tdhf_z_vector->module~messages module~mod_dft_gridint_fxc mod_dft_gridint_fxc proc~oqp_tdhf_z_vector->module~mod_dft_gridint_fxc module~mod_dft_gridint_gxc mod_dft_gridint_gxc proc~oqp_tdhf_z_vector->module~mod_dft_gridint_gxc module~mod_dft_molgrid mod_dft_molgrid proc~oqp_tdhf_z_vector->module~mod_dft_molgrid module~oqp_tagarray_driver oqp_tagarray_driver proc~oqp_tdhf_z_vector->module~oqp_tagarray_driver module~pcg_mod pcg_mod proc~oqp_tdhf_z_vector->module~pcg_mod module~printing printing proc~oqp_tdhf_z_vector->module~printing module~strings strings proc~oqp_tdhf_z_vector->module~strings module~tdhf_lib tdhf_lib proc~oqp_tdhf_z_vector->module~tdhf_lib module~tdhf_sf_lib tdhf_sf_lib proc~oqp_tdhf_z_vector->module~tdhf_sf_lib module~util util proc~oqp_tdhf_z_vector->module~util module~dft->module~messages module~dft->module~mod_dft_molgrid module~basis_tools basis_tools module~dft->module~basis_tools module~io_constants io_constants module~dft->module~io_constants module~precision precision module~dft->module~precision module~oqp_linalg oqp_linalg module~mathlib->module~oqp_linalg module~mathlib->module~precision comm_IOFILE comm_IOFILE module~messages->comm_IOFILE comm_PAR comm_PAR module~messages->comm_PAR module~messages->module~io_constants module~messages->module~precision module~mod_dft_gridint mod_dft_gridint module~mod_dft_gridint_fxc->module~mod_dft_gridint module~mod_dft_gridint_fxc->module~oqp_linalg module~mod_dft_gridint_fxc->module~precision module~mod_dft_gridint_gxc->module~mod_dft_gridint_fxc module~mod_dft_gridint_gxc->module~mod_dft_gridint module~mod_dft_gridint_gxc->module~oqp_linalg module~mod_dft_gridint_gxc->module~precision module~bragg_slater_radii bragg_slater_radii module~mod_dft_molgrid->module~bragg_slater_radii module~lebedev lebedev module~mod_dft_molgrid->module~lebedev module~mod_grid_storage mod_grid_storage module~mod_dft_molgrid->module~mod_grid_storage module~mod_dft_molgrid->module~precision iso_c_binding iso_c_binding module~oqp_tagarray_driver->iso_c_binding tagarray tagarray module~oqp_tagarray_driver->tagarray module~pcg_mod->iso_c_binding module~pcg_mod->module~precision module~printing->module~precision module~strings->iso_c_binding module~tdhf_lib->module~basis_tools module~int2_compute int2_compute module~tdhf_lib->module~int2_compute module~tdhf_lib->module~oqp_linalg module~tdhf_lib->module~precision module~tdhf_sf_lib->module~oqp_linalg module~util->module~precision module~basis_tools->module~io_constants module~basis_tools->module~precision iso_fortran_env iso_fortran_env module~basis_tools->iso_fortran_env module~atomic_structure_m atomic_structure_m module~basis_tools->module~atomic_structure_m module~constants constants module~basis_tools->module~constants module~parallel parallel module~basis_tools->module~parallel module~bragg_slater_radii->module~precision module~int2_compute->module~messages module~int2_compute->module~basis_tools module~int2_compute->module~precision module~int2_compute->module~atomic_structure_m module~int2_pairs int2_pairs module~int2_compute->module~int2_pairs module~int2e_libint int2e_libint module~int2_compute->module~int2e_libint module~int2e_rys int2e_rys module~int2_compute->module~int2e_rys module~int2_compute->module~parallel module~lebedev->module~precision module~mod_dft_gridint->module~mod_dft_molgrid module~mod_dft_gridint->module~basis_tools module~mod_dft_gridint->module~io_constants module~mod_dft_gridint->module~oqp_linalg module~mod_dft_gridint->module~precision module~functionals functionals module~mod_dft_gridint->module~functionals module~mod_dft_xc_libxc mod_dft_xc_libxc module~mod_dft_gridint->module~mod_dft_xc_libxc module~mod_dft_gridint->module~parallel module~mod_grid_storage->module~precision module~blas_wrap blas_wrap module~oqp_linalg->module~blas_wrap module~lapack_wrap lapack_wrap module~oqp_linalg->module~lapack_wrap module~precision->iso_fortran_env module~atomic_structure_m->iso_c_binding module~blas_wrap->module~messages module~blas_wrap->module~precision module~mathlib_types mathlib_types module~blas_wrap->module~mathlib_types module~constants->module~precision module~functionals->iso_c_binding module~functionals->module~precision xc_f03_lib_m xc_f03_lib_m module~functionals->xc_f03_lib_m module~int2_pairs->module~precision module~int2e_libint->iso_c_binding module~int2e_libint->module~precision module~int2e_libint->module~constants module~int2e_libint->module~int2_pairs module~libint_f libint_f module~int2e_libint->module~libint_f module~int2e_rys->module~basis_tools module~int2e_rys->module~precision module~int2e_rys->module~constants module~lapack_wrap->module~messages module~lapack_wrap->module~precision module~lapack_wrap->module~mathlib_types module~mod_dft_xc_libxc->module~precision module~mod_dft_xclib mod_dft_xclib module~mod_dft_xc_libxc->module~mod_dft_xclib module~parallel->iso_c_binding module~parallel->module~precision module~parallel->iso_fortran_env mpi mpi module~parallel->mpi module~libint_f->iso_c_binding module~mod_dft_xclib->module~precision module~mod_dft_xclib->module~functionals

Arguments

Type IntentOptional Attributes Name
type(information), intent(inout), target :: infos

Calls

proc~~oqp_tdhf_z_vector~~CallsGraph proc~oqp_tdhf_z_vector oqp_tdhf_z_vector interface~data_has_tags data_has_tags proc~oqp_tdhf_z_vector->interface~data_has_tags interface~pack_matrix pack_matrix proc~oqp_tdhf_z_vector->interface~pack_matrix interface~show_message show_message proc~oqp_tdhf_z_vector->interface~show_message interface~tagarray_get_data tagarray_get_data proc~oqp_tdhf_z_vector->interface~tagarray_get_data interface~unpack_matrix unpack_matrix proc~oqp_tdhf_z_vector->interface~unpack_matrix none~clean~17 int2_fock_data_t%clean proc~oqp_tdhf_z_vector->none~clean~17 none~init~16 int2_compute_t%init proc~oqp_tdhf_z_vector->none~init~16 none~run~6 int2_compute_t%run proc~oqp_tdhf_z_vector->none~run~6 none~set_screening~2 int2_compute_t%set_screening proc~oqp_tdhf_z_vector->none~set_screening~2 none~step pcg_t%step proc~oqp_tdhf_z_vector->none~step proc~dft_initialize dft_initialize proc~oqp_tdhf_z_vector->proc~dft_initialize proc~dftclean dftclean proc~oqp_tdhf_z_vector->proc~dftclean proc~iatogen iatogen proc~oqp_tdhf_z_vector->proc~iatogen proc~int2_rpagrd_data_t_clean int2_rpagrd_data_t%int2_rpagrd_data_t_clean proc~oqp_tdhf_z_vector->proc~int2_rpagrd_data_t_clean proc~measure_time measure_time proc~oqp_tdhf_z_vector->proc~measure_time proc~oqp_dgemm_i64 oqp_dgemm_i64 proc~oqp_tdhf_z_vector->proc~oqp_dgemm_i64 proc~oqp_dsyr2k_i64 oqp_dsyr2k_i64 proc~oqp_tdhf_z_vector->proc~oqp_dsyr2k_i64 proc~orthogonal_transform orthogonal_transform proc~oqp_tdhf_z_vector->proc~orthogonal_transform proc~print_module_info print_module_info proc~oqp_tdhf_z_vector->proc~print_module_info proc~symmetrize_matrix symmetrize_matrix proc~oqp_tdhf_z_vector->proc~symmetrize_matrix proc~tddft_fxc tddft_fxc proc~oqp_tdhf_z_vector->proc~tddft_fxc proc~tddft_gxc tddft_gxc proc~oqp_tdhf_z_vector->proc~tddft_gxc proc~tdhf_unrelaxed_density tdhf_unrelaxed_density proc~oqp_tdhf_z_vector->proc~tdhf_unrelaxed_density proc~triangular_to_full triangular_to_full proc~oqp_tdhf_z_vector->proc~triangular_to_full remove_records remove_records proc~oqp_tdhf_z_vector->remove_records reserve_data reserve_data proc~oqp_tdhf_z_vector->reserve_data proc~pack_f90 PACK_F90 interface~pack_matrix->proc~pack_f90 proc~unpack_f90 UNPACK_F90 interface~unpack_matrix->proc~unpack_f90 none~alloc int2_pair_storage%alloc none~init~16->none~alloc none~compute int2_pair_storage%compute none~init~16->none~compute none~init_shell_centers basis_set%init_shell_centers none~init~16->none~init_shell_centers none~init~14 par_env_t%init none~init~16->none~init~14 none~set int2_cutoffs_t%set none~init~16->none~set proc~libint_static_init libint_static_init none~init~16->proc~libint_static_init none~run~6->interface~show_message none~run_cam int2_compute_t%run_cam none~run~6->none~run_cam none~run_generic int2_compute_t%run_generic none~run~6->none~run_generic proc~ints_exchange ints_exchange none~set_screening~2->proc~ints_exchange proc~dft_initialize->interface~show_message none~add_atomic_grid dft_grid_t%add_atomic_grid proc~dft_initialize->none~add_atomic_grid none~add_grid sorted_grid_t%add_grid proc~dft_initialize->none~add_grid none~compress dft_grid_t%compress proc~dft_initialize->none~compress none~find_neighbours dft_grid_t%find_neighbours proc~dft_initialize->none~find_neighbours none~reset dft_grid_t%reset proc~dft_initialize->none~reset none~set_screening basis_set%set_screening proc~dft_initialize->none~set_screening proc~c_f_char c_f_char proc~dft_initialize->proc~c_f_char proc~dft_fc_blk dft_fc_blk proc~dft_initialize->proc~dft_fc_blk proc~get_radial_grid get_radial_grid proc~dft_initialize->proc~get_radial_grid proc~libxc_input libxc_input proc~dft_initialize->proc~libxc_input proc~set_bragg_slater set_bragg_slater proc~dft_initialize->proc~set_bragg_slater proc~libxc_destroy libxc_destroy proc~dftclean->proc~libxc_destroy proc~oqp_dgemm_i64->interface~show_message dgemm dgemm proc~oqp_dgemm_i64->dgemm proc~oqp_dsyr2k_i64->interface~show_message dsyr2k dsyr2k proc~oqp_dsyr2k_i64->dsyr2k proc~orthogonal_transform->interface~show_message proc~orthogonal_transform->proc~oqp_dgemm_i64 proc~tddft_fxc->proc~triangular_to_full none~clean~21 xc_consumer_tde_t%clean proc~tddft_fxc->none~clean~21 proc~tddft_fxc->none~init~14 proc~run_xc run_xc proc~tddft_fxc->proc~run_xc proc~tddft_gxc->proc~triangular_to_full proc~tddft_gxc->none~clean~21 proc~tddft_gxc->none~init~14 proc~tddft_gxc->proc~run_xc proc~tdhf_unrelaxed_density->interface~pack_matrix proc~tdhf_unrelaxed_density->proc~oqp_dgemm_i64 proc~tdhf_unrelaxed_density->proc~orthogonal_transform proc~triangular_to_full->interface~show_message none~add_slices dft_grid_t%add_slices none~add_atomic_grid->none~add_slices none~get~5 list_grid_3d_t%get none~add_grid->none~get~5 none~set~4 list_grid_3d_t%set none~add_grid->none~set~4 proc~lebedev_get_grid lebedev_get_grid none~add_grid->proc~lebedev_get_grid none~set~2 partition_function%set none~find_neighbours->none~set~2 mpi_comm_rank mpi_comm_rank none~init~14->mpi_comm_rank mpi_comm_size mpi_comm_size none~init~14->mpi_comm_size none~init~21 sorted_grid_t%init none~reset->none~init~21 none~run_cam->none~run_generic none~run_generic->interface~show_message none~run_generic->proc~ints_exchange libint2_cleanup_eri libint2_cleanup_eri none~run_generic->libint2_cleanup_eri libint2_init_eri libint2_init_eri none~run_generic->libint2_init_eri none~clean~2 int2_rys_data_t%clean none~run_generic->none~clean~2 none~init~2 int2_rys_data_t%init none~run_generic->none~init~2 none~screen_ij int2_compute_data_t%screen_ij none~run_generic->none~screen_ij none~screen_ijkl int2_compute_data_t%screen_ijkl none~run_generic->none~screen_ijkl none~set_ids int2_rys_data_t%set_ids none~run_generic->none~set_ids parallel_start parallel_start none~run_generic->parallel_start parallel_stop parallel_stop none~run_generic->parallel_stop proc~genr22 genr22 none~run_generic->proc~genr22 proc~int2_rys_compute int2_rys_compute none~run_generic->proc~int2_rys_compute proc~libint_compute_eri libint_compute_eri none~run_generic->proc~libint_compute_eri proc~libint_print_eri libint_print_eri none~run_generic->proc~libint_print_eri proc~rys_print_eri rys_print_eri none~run_generic->proc~rys_print_eri update update none~run_generic->update none~getbyid list_grid_3d_t%getByID proc~dft_fc_blk->none~getbyid proc~dft_fc_blk->none~set~2 set set proc~get_radial_grid->set transform transform proc~get_radial_grid->transform proc~ints_exchange->interface~show_message proc~ints_exchange->none~alloc proc~ints_exchange->none~compute proc~ints_exchange->none~set proc~ints_exchange->libint2_cleanup_eri proc~ints_exchange->libint2_init_eri proc~ints_exchange->none~clean~2 proc~ints_exchange->none~init~2 proc~ints_exchange->none~set_ids proc~ints_exchange->proc~genr22 proc~ints_exchange->proc~int2_rys_compute proc~ints_exchange->proc~libint_compute_eri libint2_static_init libint2_static_init proc~libint_static_init->libint2_static_init none~destroy~2 functional_t%destroy proc~libxc_destroy->none~destroy~2 proc~libxc_input->interface~show_message none~add_functional functional_t%add_functional proc~libxc_input->none~add_functional none~can_calculate functional_t%can_calculate proc~libxc_input->none~can_calculate xc_f03_reference xc_f03_reference proc~libxc_input->xc_f03_reference xc_f03_reference_doi xc_f03_reference_doi proc~libxc_input->xc_f03_reference_doi xc_f03_version_string xc_f03_version_string proc~libxc_input->xc_f03_version_string proc~pack_f90->interface~show_message proc~oqp_dtrttp_i64 oqp_dtrttp_i64 proc~pack_f90->proc~oqp_dtrttp_i64 none~allreduce par_env_t%allreduce proc~run_xc->none~allreduce none~compaos xc_engine_t%compAOs proc~run_xc->none~compaos none~compxc xc_engine_t%compXC proc~run_xc->none~compxc none~getslicenonzero dft_grid_t%getSliceNonZero proc~run_xc->none~getslicenonzero none~getstats xc_engine_t%getStats proc~run_xc->none~getstats none~init~18 xc_engine_t%init proc~run_xc->none~init~18 none~pruneaos xc_engine_t%pruneAOs proc~run_xc->none~pruneaos none~resetpointers xc_engine_t%resetPointers proc~run_xc->none~resetpointers proc~run_xc->parallel_start proc~run_xc->parallel_stop postUpdate postUpdate proc~run_xc->postUpdate proc~run_xc->update proc~unpack_f90->interface~show_message proc~oqp_dtpttr_i64 oqp_dtpttr_i64 proc~unpack_f90->proc~oqp_dtpttr_i64 none~add_functional->interface~show_message xc_f03_func_get_info xc_f03_func_get_info none~add_functional->xc_f03_func_get_info xc_f03_func_info_get_family xc_f03_func_info_get_family none~add_functional->xc_f03_func_info_get_family xc_f03_func_info_get_flags xc_f03_func_info_get_flags none~add_functional->xc_f03_func_info_get_flags xc_f03_func_info_get_kind xc_f03_func_info_get_kind none~add_functional->xc_f03_func_info_get_kind xc_f03_func_info_get_name xc_f03_func_info_get_name none~add_functional->xc_f03_func_info_get_name xc_f03_func_info_get_references xc_f03_func_info_get_references none~add_functional->xc_f03_func_info_get_references xc_f03_func_init xc_f03_func_init none~add_functional->xc_f03_func_init xc_f03_func_reference_get_doi xc_f03_func_reference_get_doi none~add_functional->xc_f03_func_reference_get_doi xc_f03_func_reference_get_ref xc_f03_func_reference_get_ref none~add_functional->xc_f03_func_reference_get_ref xc_f03_func_set_ext_params xc_f03_func_set_ext_params none~add_functional->xc_f03_func_set_ext_params xc_f03_hyb_cam_coef xc_f03_hyb_cam_coef none~add_functional->xc_f03_hyb_cam_coef xc_f03_hyb_exx_coef xc_f03_hyb_exx_coef none~add_functional->xc_f03_hyb_exx_coef none~add_slices->none~get~5 none~extend dft_grid_t%extend none~add_slices->none~extend none~setslice dft_grid_t%setSlice none~add_slices->none~setslice none~par_env_t_allreduce_byte par_env_t%par_env_t_allreduce_byte none~allreduce->none~par_env_t_allreduce_byte none~par_env_t_allreduce_c_bool par_env_t%par_env_t_allreduce_c_bool none~allreduce->none~par_env_t_allreduce_c_bool none~par_env_t_allreduce_dp_1d par_env_t%par_env_t_allreduce_dp_1d none~allreduce->none~par_env_t_allreduce_dp_1d none~par_env_t_allreduce_dp_2d par_env_t%par_env_t_allreduce_dp_2d none~allreduce->none~par_env_t_allreduce_dp_2d none~par_env_t_allreduce_dp_3d par_env_t%par_env_t_allreduce_dp_3d none~allreduce->none~par_env_t_allreduce_dp_3d none~par_env_t_allreduce_dp_4d par_env_t%par_env_t_allreduce_dp_4d none~allreduce->none~par_env_t_allreduce_dp_4d none~par_env_t_allreduce_dp_scalar par_env_t%par_env_t_allreduce_dp_scalar none~allreduce->none~par_env_t_allreduce_dp_scalar none~par_env_t_allreduce_int32_1d par_env_t%par_env_t_allreduce_int32_1d none~allreduce->none~par_env_t_allreduce_int32_1d none~par_env_t_allreduce_int32_scalar par_env_t%par_env_t_allreduce_int32_scalar none~allreduce->none~par_env_t_allreduce_int32_scalar none~par_env_t_allreduce_int64_1d par_env_t%par_env_t_allreduce_int64_1d none~allreduce->none~par_env_t_allreduce_int64_1d none~par_env_t_allreduce_int64_scalar par_env_t%par_env_t_allreduce_int64_scalar none~allreduce->none~par_env_t_allreduce_int64_scalar none~aoval basis_set%aoval none~compaos->none~aoval none~compmos xc_engine_t%compMOs none~compxc->none~compmos none~comprhoall xc_engine_t%compRhoAll none~compxc->none~comprhoall proc~compute~2 xc_libxc_t%compute none~compxc->proc~compute~2 xc_f03_func_end xc_f03_func_end none~destroy~2->xc_f03_func_end none~getslicenonzero->none~getbyid none~getenergy xc_lib_t%getEnergy none~getstats->none~getenergy none~check grid_3d_t%check none~get~5->none~check proc~init xc_libxc_t%init none~init~18->proc~init none~init~22 list_grid_3d_t%init none~init~21->none~init~22 none~resetprunedpointers xc_engine_t%resetPrunedPointers none~pruneaos->none~resetprunedpointers none~resetorbpointers~2 xc_engine_t%resetOrbPointers none~resetpointers->none~resetorbpointers~2 none~resetxcpointers xc_engine_t%resetXCPointers none~resetpointers->none~resetxcpointers proc~setpts xc_libxc_t%setPts none~resetpointers->proc~setpts unused_dummy unused_dummy none~screen_ij->unused_dummy none~screen_ijkl->unused_dummy none~set~4->none~get~5 none~push list_grid_3d_t%push none~set~4->none~push fgrid fgrid proc~genr22->fgrid rfinc rfinc proc~genr22->rfinc rmr rmr proc~genr22->rmr xgrid xgrid proc~genr22->xgrid none~evaluate rys_root_t%evaluate proc~int2_rys_compute->none~evaluate proc~lebedev_get_grid->interface~show_message ab_x ab_x proc~libint_compute_eri->ab_x ab_y ab_y proc~libint_compute_eri->ab_y ab_z ab_z proc~libint_compute_eri->ab_z alpha1over_zetapluseta alpha1over_zetapluseta proc~libint_compute_eri->alpha1over_zetapluseta alpha1rho_over_zeta2 alpha1rho_over_zeta2 proc~libint_compute_eri->alpha1rho_over_zeta2 alpha2over_zetapluseta alpha2over_zetapluseta proc~libint_compute_eri->alpha2over_zetapluseta alpha2rho_over_zeta2 alpha2rho_over_zeta2 proc~libint_compute_eri->alpha2rho_over_zeta2 alpha3over_zetapluseta alpha3over_zetapluseta proc~libint_compute_eri->alpha3over_zetapluseta alpha3rho_over_eta2 alpha3rho_over_eta2 proc~libint_compute_eri->alpha3rho_over_eta2 alpha4over_zetapluseta alpha4over_zetapluseta proc~libint_compute_eri->alpha4over_zetapluseta alpha4rho_over_eta2 alpha4rho_over_eta2 proc~libint_compute_eri->alpha4rho_over_eta2 cd_x cd_x proc~libint_compute_eri->cd_x cd_y cd_y proc~libint_compute_eri->cd_y cd_z cd_z proc~libint_compute_eri->cd_z f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_0 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_0 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_0 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_1 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_1 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_1 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_10 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_10 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_10 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_11 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_11 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_11 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_12 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_12 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_12 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_13 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_13 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_13 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_14 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_14 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_14 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_15 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_15 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_15 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_16 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_16 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_16 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_17 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_17 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_17 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_18 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_18 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_18 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_19 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_19 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_19 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_2 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_2 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_2 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_20 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_20 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_20 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_3 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_3 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_3 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_4 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_4 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_4 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_5 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_5 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_5 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_6 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_6 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_6 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_7 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_7 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_7 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_8 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_8 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_8 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_9 f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_9 proc~libint_compute_eri->f_ab_s___0__s___1___twoprep_s___0__s___1___ab__up_9 proc~libint_compute_eri->fgrid igrid igrid proc~libint_compute_eri->igrid irgrd irgrd proc~libint_compute_eri->irgrd oo2e oo2e proc~libint_compute_eri->oo2e oo2z oo2z proc~libint_compute_eri->oo2z oo2ze oo2ze proc~libint_compute_eri->oo2ze pa_x pa_x proc~libint_compute_eri->pa_x pa_y pa_y proc~libint_compute_eri->pa_y pa_z pa_z proc~libint_compute_eri->pa_z qc_x qc_x proc~libint_compute_eri->qc_x qc_y qc_y proc~libint_compute_eri->qc_y qc_z qc_z proc~libint_compute_eri->qc_z proc~libint_compute_eri->rfinc rho12_over_alpha1 rho12_over_alpha1 proc~libint_compute_eri->rho12_over_alpha1 rho12_over_alpha2 rho12_over_alpha2 proc~libint_compute_eri->rho12_over_alpha2 rho34_over_alpha3 rho34_over_alpha3 proc~libint_compute_eri->rho34_over_alpha3 rho34_over_alpha4 rho34_over_alpha4 proc~libint_compute_eri->rho34_over_alpha4 proc~libint_compute_eri->rmr roe roe proc~libint_compute_eri->roe roz roz proc~libint_compute_eri->roz two_alpha0_bra two_alpha0_bra proc~libint_compute_eri->two_alpha0_bra two_alpha0_ket two_alpha0_ket proc~libint_compute_eri->two_alpha0_ket two_alpha1bra two_alpha1bra proc~libint_compute_eri->two_alpha1bra two_alpha1ket two_alpha1ket proc~libint_compute_eri->two_alpha1ket wp_x wp_x proc~libint_compute_eri->wp_x wp_y wp_y proc~libint_compute_eri->wp_y wp_z wp_z proc~libint_compute_eri->wp_z wq_x wq_x proc~libint_compute_eri->wq_x wq_y wq_y proc~libint_compute_eri->wq_y wq_z wq_z proc~libint_compute_eri->wq_z proc~oqp_dtpttr_i64->interface~show_message dtpttr dtpttr proc~oqp_dtpttr_i64->dtpttr proc~oqp_dtrttp_i64->interface~show_message dtrttp dtrttp proc~oqp_dtrttp_i64->dtrttp none~compaov basis_set%compAOv none~aoval->none~compaov none~compaovg basis_set%compAOvg none~aoval->none~compaovg none~compaovgg basis_set%compAOvgg none~aoval->none~compaovgg proc~mo_tran_gemm_ mo_tran_gemm_ none~compmos->proc~mo_tran_gemm_ proc~mo_tran_symm_ mo_tran_symm_ none~compmos->proc~mo_tran_symm_ none~clear~2 list_grid_3d_t%clear none~init~22->none~clear~2 mpi_allreduce mpi_allreduce none~par_env_t_allreduce_byte->mpi_allreduce none~par_env_t_allreduce_c_bool->mpi_allreduce none~par_env_t_allreduce_dp_1d->mpi_allreduce none~par_env_t_allreduce_dp_2d->mpi_allreduce none~par_env_t_allreduce_dp_3d->mpi_allreduce none~par_env_t_allreduce_dp_4d->mpi_allreduce none~par_env_t_allreduce_dp_scalar->mpi_allreduce none~par_env_t_allreduce_int32_1d->mpi_allreduce none~par_env_t_allreduce_int32_scalar->mpi_allreduce none~par_env_t_allreduce_int64_1d->mpi_allreduce none~par_env_t_allreduce_int64_scalar->mpi_allreduce none~calc_evfxc functional_t%calc_evfxc proc~compute~2->none~calc_evfxc none~calc_evxc functional_t%calc_evxc proc~compute~2->none~calc_evxc none~calc_xc functional_t%calc_xc proc~compute~2->none~calc_xc none~scalexc xc_lib_t%scalexc proc~compute~2->none~scalexc none~clean~13 xc_lib_t%clean proc~init->none~clean~13 none~resetenergy xc_lib_t%resetEnergy proc~init->none~resetenergy none~calc_evfxc->interface~show_message none~calc_evfxc->xc_f03_func_info_get_family none~calc_evfxc->xc_f03_func_info_get_kind none~calc_evfxc->xc_f03_func_info_get_name xc_f03_gga_exc_vxc_fxc xc_f03_gga_exc_vxc_fxc none~calc_evfxc->xc_f03_gga_exc_vxc_fxc xc_f03_lda_exc_vxc_fxc xc_f03_lda_exc_vxc_fxc none~calc_evfxc->xc_f03_lda_exc_vxc_fxc xc_f03_mgga_exc_vxc_fxc xc_f03_mgga_exc_vxc_fxc none~calc_evfxc->xc_f03_mgga_exc_vxc_fxc none~calc_evxc->interface~show_message none~calc_evxc->xc_f03_func_info_get_family none~calc_evxc->xc_f03_func_info_get_kind none~calc_evxc->xc_f03_func_info_get_name xc_f03_gga_exc_vxc xc_f03_gga_exc_vxc none~calc_evxc->xc_f03_gga_exc_vxc xc_f03_lda_exc_vxc xc_f03_lda_exc_vxc none~calc_evxc->xc_f03_lda_exc_vxc xc_f03_mgga_exc_vxc xc_f03_mgga_exc_vxc none~calc_evxc->xc_f03_mgga_exc_vxc none~calc_xc->interface~show_message none~calc_xc->xc_f03_func_info_get_family none~calc_xc->xc_f03_func_info_get_kind none~calc_xc->xc_f03_func_info_get_name xc_f03_gga_exc_vxc_fxc_kxc xc_f03_gga_exc_vxc_fxc_kxc none~calc_xc->xc_f03_gga_exc_vxc_fxc_kxc xc_f03_lda_exc_vxc_fxc_kxc xc_f03_lda_exc_vxc_fxc_kxc none~calc_xc->xc_f03_lda_exc_vxc_fxc_kxc xc_f03_mgga_exc_vxc_fxc_kxc xc_f03_mgga_exc_vxc_fxc_kxc none~calc_xc->xc_f03_mgga_exc_vxc_fxc_kxc proc~mo_tran_gemm_->proc~oqp_dgemm_i64 proc~oqp_dsymm_i64 oqp_dsymm_i64 proc~mo_tran_symm_->proc~oqp_dsymm_i64 proc~oqp_dsymm_i64->interface~show_message dsymm dsymm proc~oqp_dsymm_i64->dsymm

Called by

proc~~oqp_tdhf_z_vector~~CalledByGraph proc~oqp_tdhf_z_vector oqp_tdhf_z_vector proc~tdhf_z_vector_c tdhf_z_vector_C proc~tdhf_z_vector_c->proc~oqp_tdhf_z_vector

Source Code

  subroutine oqp_tdhf_z_vector(infos)
    use oqp_tagarray_driver

    use strings, only: Cstring, fstring
    use messages, only: show_message, with_abort
    use util, only: measure_time

    use tdhf_lib, only: iatogen, mntoia, esum, &
      tdhf_unrelaxed_density
    use tdhf_sf_lib, only: sfrorhs, &
      sfromcal, sfrogen, sfrolhs, &
      pcgb, sfropcal, sfrowcal
    use dft, only: dft_initialize, dftclean
    use mod_dft_gridint_fxc, only: tddft_fxc
    use mod_dft_gridint_gxc, only: tddft_gxc
    use mathlib, only: symmetrize_matrix, orthogonal_transform
    use mod_dft_molgrid, only: dft_grid_t
    use mathlib, only: pack_matrix, unpack_matrix
    use mathlib, only: triangular_to_full
    use tdhf_lib, only: int2_rpagrd_data_t
    use pcg_mod
    use printing, only: print_module_info

    implicit none

    character(len=*), parameter :: subroutine_name = "oqp_tdhf_z_vector"

    type(basis_set), pointer :: basis
    type(information), target, intent(inout) :: infos


    type(dft_grid_t), target :: molGrid
    type(int2_compute_t), target :: int2_driver
    class(int2_fock_data_t), allocatable, target :: int2_data
    type(tdhf_cg_data) :: cgdata
    type(pcg_t) :: pcg

    real(kind=dp), allocatable :: hpp(:,:,:), hpt(:,:,:), hmm(:,:,:), gxp(:,:,:)
    real(kind=dp), allocatable, target :: wrk1(:,:), &
            rhs(:), xm(:), zvec(:), xminv(:), pa(:,:,:)

    real(kind=dp), contiguous, pointer :: ppa(:,:,:,:), &
            pxm(:,:), prhs(:,:), wmo(:,:)


    logical :: dft, tda
    integer :: scf_type, mol_mult
    integer :: i, j, iter, ok
    integer :: nocc, nvir, lexc, nbf, nbf2
    real(kind=dp) :: cnvtol, scale_exch

    ! tagarray
    real(kind=dp), contiguous, pointer :: &
      mo_a(:,:), mo_energy_a(:), wao(:), td_p(:,:), td_t(:,:), &
      ta(:), xpy(:,:), xmy(:,:), td_energies(:)

    character(len=*), parameter :: &
      tags_required(*) = [  character(len=80) :: &
        OQP_E_MO_A, OQP_VEC_MO_A, OQP_TD_T, OQP_TD_XPY, OQP_TD_XMY, &
        OQP_td_energies &
      ]

  ! Log file
    open (unit=IW, file=infos%log_filename, position="append")
  !
    call print_module_info('TDHF_Z_Vector','Solving Z-Vector for TDDFT')
    mol_mult = infos%mol_prop%mult
    scf_type = infos%control%scftype
    dft = infos%control%hamilton == 20
    tda = infos%tddft%tda

  ! Load basis set
    basis => infos%basis
    basis%atoms => infos%atoms

    nbf = basis%nbf
    nbf2 = nbf*(nbf+1)/2

    if (dft) call dft_initialize(infos, basis, molGrid)

  ! Parameter it should be inputed later
  ! convergence tolerance in the iterative TD-DFT step.
    cnvtol = infos%tddft%zvconv

    nocc = infos%mol_prop%nocc
    nvir = nbf-nocc
    lexc = nocc*nvir

    allocate(&
      rhs(lexc), &
      pa(nbf,nbf,1), &
      wrk1(nbf,nbf), &
      stat=ok, &
      source=0.0_dp)

    if( ok/=0 ) call show_message('Cannot allocate memory', with_abort)

    call infos%dat%remove_records([character(80) :: OQP_WAO, OQP_TD_P])

    call data_has_tags(infos%dat, tags_required, 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)
    call tagarray_get_data(infos%dat, OQP_TD_T, td_t)
    call tagarray_get_data(infos%dat, OQP_TD_XPY, xpy)
    call tagarray_get_data(infos%dat, OQP_TD_XMY, xmy)
    call tagarray_get_data(infos%dat, OQP_td_energies, td_energies)
    ta => td_t(:,1)

    write(iw,'(/1x,71("-")&
             &/19x,"TD-DFT ENERGY GRADIENT CALCULATION"&
             &/1x,71("-")/)')

    write(iw,fmt='(5x,a/&
                  &5x,16("-")/&
                  &5x,a,x,i0,x,f17.10,x,"Hartree"/&
                  &5x,a,x,i0/&
                  &5x,a,x,e10.4/&
                  &5x,a,x,i0)') &
        'Z-vector options' &
      , 'Target state       is', infos%tddft%target_state, infos%mol_energy%energy+td_energies(infos%tddft%target_state) &
      , 'Multiplicity       is', infos%tddft%mult &
      , 'Convergence        is', infos%tddft%zvconv &
      , 'Maximum iterations is', infos%control%maxit_zv
    call flush(iw)

!   1. Compute right-hand side of Z-vector equation
    allocate(hpp(nbf,nbf,1), & ! H+[X+Y]
             hpt(nbf,nbf,1), & ! H+[T]
             hmm(nbf,nbf,1), & ! H-[X-Y]
             gxp(nbf,nbf,1), & ! g_xc[X+Y][X+Y]
             source=0.0d0)

    call tdhf_unrelaxed_density(xmy(:,infos%tddft%target_state), xpy(:,infos%tddft%target_state), mo_a, td_t(:,1), nocc, tda)

    ! Initialize ERI calculations
    call int2_driver%init(basis, infos)
    call int2_driver%set_screening()

    ! Compute H+[X+Y], H+[T], H-[X-Y], and G_xc
    call compute_r_terms(infos, basis, int2_driver, molGrid, mo_a, xpy(:,infos%tddft%target_state), &
                         xmy(:,infos%tddft%target_state), ta, hpp, hpt, hmm, gxp)

    ! Transform Gxc to MO basis
    call orthogonal_transform('n', nbf, mo_a, gxp(:,:,1))

    ! Assemble RHS in MO basis
    prhs(1:nocc,1:nvir) => rhs(1:)
    call compute_r_mo(prhs, mo_a, xpy(:,infos%tddft%target_state), xmy(:,infos%tddft%target_state), hpt, hpp, hmm, gxp(:,:,1))
    rhs = -rhs

!   2. Initialize CG for Z-vector solution
    write(iw,'(/3x,25("-")&
             &/6x,"START Z-VECTOR LOOP"&
             &/3x,25("-")/)')
    call flush(iw)

    allocate(xminv(lexc), &
             xm(lexc), &
             stat=ok, &
             source=0.0_dp)

    if( ok/=0 ) call show_message('Cannot allocate memory', with_abort)

    scale_exch = 1.0_dp
    if (dft) scale_exch = infos%dft%HFscale
    int2_data = int2_td_data_t(d2=pa, &
            int_apb=.true., &
            int_amb=.false., &
            tamm_dancoff=tda, &
            scale_exchange=scale_exch)

    pxm(1:nocc, 1:nvir) => xm(1:)
    do i = 1, nvir
      do j = 1, nocc
        pxm(j,i) = mo_energy_a(nocc+i) - mo_energy_a(j)
      end do
    end do
    xminv = 1.0d0/xm

    cgdata = tdhf_cg_data( &
        infos=infos, int2_driver=int2_driver, &
        int2_data=int2_data, molgrid=molgrid, &
        wrk=wrk1, mo=mo_a, pa=pa, xm=xm, xminv=xminv, &
        nbf=nbf, nocc = nocc, dft = dft &
      )

    call pcg%init(b=rhs, &
      update=compute_apbx, precond=precond, &
      dat=cgdata, tol=sqrt(abs(cnvtol)))

    write(iw,'(" INITIAL ERROR =",3X,1P,E10.3,1X,"/",1P,E10.3)') pcg%error**2, cnvtol

    ! Begin CG iterations
    do iter = 1, infos%control%maxit_zv
      if (pcg%errcode /= PCG_OK) exit

      call pcg%step()

      write(iw,'(" ITER#",I2," ERROR =",3X,1P,E10.3,1X,"/",1P,E10.3)') &
              iter, pcg%error**2, cnvtol
      call flush(iw)
    end do

    select case (pcg%errcode)
    case (PCG_CONVERGED)
      write(iw,'(/3x,24("-")&
               &/6x,"Z-Vector converged"&
               &/3x,24("-")/)')
      infos%mol_energy%Z_Vector_converged=.true.
    case default
      write(iw,'(/3x,24("-")&
               &/6x,"Z-Vector not converged"&
               &/3x,24("-")/)')
      infos%mol_energy%Z_Vector_converged=.false.
    end select
    call flush(iw)

!   Save Z-vector and clean up memory
    deallocate(xminv, rhs, xm)
    call int2_data%clean()
    deallocate(int2_data)
    allocate(zvec, source=pcg%x)
    call pcg%clean()

!   3. Now, compute relaxed energy-weighted difference density matrix W

    ! Convert Z-vector from MO to AO and assemble P = T+Z
    pa = 0
    call iatogen(zvec, pa(:,:,1), nocc, nocc)
    call symmetrize_matrix(pa(:,:,1), nbf)
    pa(:,:,1) = 0.5*pa(:,:,1)
    call orthogonal_transform('t', nbf, mo_a, pa(:,:,1))

    call unpack_matrix(ta, wrk1) ! T
    pa(:,:,1) = pa(:,:,1) + wrk1 ! T+Z

    ! Store relaxed difference density matrix P to global memory
    call infos%dat%reserve_data(OQP_td_p, TA_TYPE_REAL64, nbf2, [nbf2, 1], comment=OQP_td_p_comment)
    call tagarray_get_data(infos%dat, OQP_td_p, td_p)
    call pack_matrix(pa(:,:,1), td_p(:,1))

    ! Compute H+[P]
    ppa(1:nbf,1:nbf, 1:1, 1:1) => pa
    int2_data = int2_rpagrd_data_t(&
            xpy=null(), &
            xmy=null(), &
            t=ppa, &
            nspin = 1, &
            tamm_dancoff=tda, &
            scale_exchange=scale_exch)

    call int2_driver%run(int2_data, &
            cam=dft.and.infos%dft%cam_flag, &
            alpha=infos%dft%cam_alpha, &
            beta=infos%dft%cam_beta,&
            mu=infos%dft%cam_mu)
    select type (int2_data)
    type is (int2_rpagrd_data_t)
      hpt = int2_data%hpt(:,:,:,1,1)
    end select

    call int2_data%clean()
    deallocate(int2_data)

    if (dft) then
      pa = pa*2
      call tddft_fxc(basis=basis, &
             molGrid=molGrid, &
             isVecs=.true., &
             wf=MO_A, &
             fx=hpt(:,:,1:1), &
             dx=pa(:,:,1:1), &
             nmtx=1, &
             !threshold=1.0d-15, &
             threshold=0.0d0, &
             infos=infos)
    end if

    ! Transform H+[P], H+[X+Y], H-[X-Y] from AO to MO basis
    call orthogonal_transform('n', nbf, mo_a, hpt(:,:,1), wrk=wrk1) ! P
    call orthogonal_transform('n', nbf, mo_a, hpp(:,:,1), wrk=wrk1) ! X+Y
    call orthogonal_transform('n', nbf, mo_a, hmm(:,:,1), wrk=wrk1) ! X-Y

    ! Calculate W in MO basis
    wmo(1:nbf,1:nbf) => wrk1
    call compute_w_mo(wmo, xpy(:,infos%tddft%target_state), xmy(:,infos%tddft%target_state), zvec, &
            hpt(:,:,1), hpp(:,:,1), hmm(:,:,1), &
            mo_energy_a, td_energies(infos%tddft%target_state), nocc, gxp(:,:,1))

    ! Transform W from MO to AO basis
    call orthogonal_transform('t', nbf, mo_a, wmo)

    ! Store W to global memory
    call infos%dat%reserve_data(OQP_WAO, TA_TYPE_REAL64, nbf2, comment=OQP_WAO_comment)
    call tagarray_get_data(infos%dat, OQP_WAO, wao)
    call pack_matrix(wmo, wao)
    wao = wao*0.5_dp

    ! Cleanup
    call int2_driver%clean()
    if (dft) call dftclean(infos)
    call measure_time(print_total=1, log_unit=iw)
    close(iw)

  end subroutine oqp_tdhf_z_vector