80      CHARACTER(len=*), 
PARAMETER :: routinen = 
'init_interaction_radii' 
   82      INTEGER :: handle, i, iexp_ppl, ikind, ip, iprj_ppnl, j, l, lppl, lppnl, lppsl, lprj, &
 
   83         lprj_ppnl, maxl, n_local, nexp_lpot, nexp_lsd, nexp_ppl, nkind, nloc
 
   84      INTEGER, 
DIMENSION(0:10)                           :: npot
 
   85      INTEGER, 
DIMENSION(1:10)                           :: nrloc
 
   86      INTEGER, 
DIMENSION(1:15, 0:10)                     :: nrpot
 
   87      INTEGER, 
DIMENSION(:), 
POINTER                     :: nct_lpot, nct_lsd, nprj, nprj_ppnl
 
   88      LOGICAL                                            :: ecp_local, ecp_semi_local, llsd, lpot, &
 
   90      LOGICAL, 
DIMENSION(0:5)                            :: is_nonlocal
 
   91      REAL(kind=
dp) :: alpha_core_charge, alpha_ppl, ccore_charge, cerf_ppl, core_charge_radius, &
 
   92         cval, ppl_radius, ppnl_radius, rcprj, zeta
 
   93      REAL(kind=
dp), 
DIMENSION(1:10)                     :: aloc, bloc
 
   94      REAL(kind=
dp), 
DIMENSION(1:15, 0:10)               :: apot, bpot
 
   95      REAL(kind=
dp), 
DIMENSION(:), 
POINTER               :: a_local, a_nonlocal, alpha_lpot, &
 
   96                                                            alpha_lsd, alpha_ppnl, c_local, &
 
   98      REAL(kind=
dp), 
DIMENSION(:, :), 
POINTER            :: cprj_ppnl, cval_lpot, cval_lsd, rzetprj, &
 
  100      REAL(kind=
dp), 
DIMENSION(:, :, :), 
POINTER         :: c_nonlocal
 
  106         nuc_basis_set, orb_basis_set, p_lri_basis, rhoin_basis, ri_aux_basis_set, ri_basis, &
 
  107         ri_xas_basis, soft_basis, tda_k_basis
 
  111      CALL timeset(routinen, handle)
 
  113      NULLIFY (all_potential, gth_potential, sgp_potential, cneo_potential)
 
  114      NULLIFY (
aux_basis_set, aux_fit_basis_set, aux_gw_basis, tda_k_basis, &
 
  115               harris_basis, lri_basis, 
mao_basis, orb_basis_set, p_lri_basis, ri_aux_basis_set, &
 
  116               ri_basis, ri_xas_basis, soft_basis, gapw_1c_basis, aux_opt_basis_set, 
min_basis_set, &
 
  118      NULLIFY (nprj_ppnl, nprj)
 
  119      NULLIFY (alpha_ppnl, cexp_ppl, cprj_ppnl, zet)
 
  121      nkind = 
SIZE(qs_kind_set)
 
  126         CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, basis_type=
"ORB")
 
  129         CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_fit_basis_set, basis_type=
"AUX_FIT")
 
  130         CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_opt_basis_set, basis_type=
"AUX_OPT")
 
  131         CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis, basis_type=
"LRI_AUX")
 
  132         CALL get_qs_kind(qs_kind_set(ikind), basis_set=p_lri_basis, basis_type=
"P_LRI_AUX")
 
  133         CALL get_qs_kind(qs_kind_set(ikind), basis_set=ri_basis, basis_type=
"RI_HXC")
 
  134         CALL get_qs_kind(qs_kind_set(ikind), basis_set=ri_aux_basis_set, basis_type=
"RI_AUX")
 
  136         CALL get_qs_kind(qs_kind_set(ikind), basis_set=harris_basis, basis_type=
"HARRIS")
 
  137         CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_gw_basis, basis_type=
"AUX_GW")
 
  138         CALL get_qs_kind(qs_kind_set(ikind), basis_set=ri_xas_basis, basis_type=
"RI_XAS")
 
  139         CALL get_qs_kind(qs_kind_set(ikind), basis_set=soft_basis, basis_type=
"ORB_SOFT")
 
  140         CALL get_qs_kind(qs_kind_set(ikind), basis_set=gapw_1c_basis, basis_type=
"GAPW_1C")
 
  141         CALL get_qs_kind(qs_kind_set(ikind), basis_set=tda_k_basis, basis_type=
"TDA_HFX")
 
  142         CALL get_qs_kind(qs_kind_set(ikind), basis_set=rhoin_basis, basis_type=
"RHOIN")
 
  143         CALL get_qs_kind(qs_kind_set(ikind), basis_set=nuc_basis_set, basis_type=
"NUC")
 
  145                          paw_proj_set=paw_proj_set, &
 
  147                          all_potential=all_potential, &
 
  148                          gth_potential=gth_potential, &
 
  149                          sgp_potential=sgp_potential, &
 
  150                          cneo_potential=cneo_potential)
 
  156         IF (
ASSOCIATED(orb_basis_set)) 
THEN 
  158                                                  qs_control%eps_kg_orb)
 
  161         IF (
ASSOCIATED(all_potential)) 
THEN 
  164                               alpha_core_charge=alpha_core_charge, &
 
  165                               ccore_charge=ccore_charge)
 
  169            core_charge_radius = 
exp_radius(0, alpha_core_charge, &
 
  170                                            qs_control%eps_core_charge, &
 
  174                               core_charge_radius=core_charge_radius)
 
  176         ELSE IF (
ASSOCIATED(gth_potential)) 
THEN 
  179                               alpha_core_charge=alpha_core_charge, &
 
  180                               ccore_charge=ccore_charge, &
 
  181                               alpha_ppl=alpha_ppl, &
 
  188                               alpha_ppnl=alpha_ppnl, &
 
  189                               nprj_ppnl=nprj_ppnl, &
 
  193            core_charge_radius = 
exp_radius(0, alpha_core_charge, &
 
  194                                            qs_control%eps_core_charge, &
 
  199            ppl_radius = 
exp_radius(0, alpha_ppl, qs_control%eps_ppl, cerf_ppl)
 
  201            DO iexp_ppl = 1, nexp_ppl
 
  202               lppl = 2*(iexp_ppl - 1)
 
  203               ppl_radius = max(ppl_radius, &
 
  205                                           qs_control%eps_ppl, &
 
  206                                           cexp_ppl(iexp_ppl), &
 
  212                                  nexp_lpot=nexp_lpot, &
 
  213                                  alpha_lpot=alpha_lpot, &
 
  217                  DO i = 1, nct_lpot(j)
 
  219                     ppl_radius = max(ppl_radius, &
 
  220                                      exp_radius(lppl, alpha_lpot(j), qs_control%eps_ppl, &
 
  221                                                 cval_lpot(i, j), rlow=ppl_radius))
 
  229                                  alpha_lsd=alpha_lsd, &
 
  235                     ppl_radius = max(ppl_radius, &
 
  236                                      exp_radius(lppl, alpha_lsd(j), qs_control%eps_ppl, &
 
  237                                                 cval_lsd(i, j), rlow=ppl_radius))
 
  246               DO iprj_ppnl = 1, nprj_ppnl(l)
 
  247                  lprj_ppnl = l + 2*(iprj_ppnl - 1)
 
  248                  ppnl_radius = max(ppnl_radius, &
 
  250                                               qs_control%eps_pgf_orb, &
 
  251                                               cprj_ppnl(iprj_ppnl, l), &
 
  256                               core_charge_radius=core_charge_radius, &
 
  257                               ppl_radius=ppl_radius, &
 
  258                               ppnl_radius=ppnl_radius)
 
  260         ELSE IF (
ASSOCIATED(sgp_potential)) 
THEN 
  264                               alpha_core_charge=alpha_core_charge, &
 
  265                               ccore_charge=ccore_charge)
 
  266            core_charge_radius = 
exp_radius(0, alpha_core_charge, &
 
  267                                            qs_control%eps_core_charge, &
 
  270            ppl_radius = core_charge_radius
 
  271            CALL get_potential(potential=sgp_potential, ecp_local=ecp_local)
 
  273               CALL get_potential(potential=sgp_potential, nloc=nloc, nrloc=nrloc, aloc=aloc, bloc=bloc)
 
  275                  lppl = max(0, nrloc(i) - 2)
 
  276                  ppl_radius = max(ppl_radius, &
 
  277                                   exp_radius(lppl, bloc(i), qs_control%eps_ppl, aloc(i), rlow=ppl_radius))
 
  280               CALL get_potential(potential=sgp_potential, n_local=n_local, a_local=a_local, c_local=c_local)
 
  282                  ppl_radius = max(ppl_radius, &
 
  283                                   exp_radius(0, a_local(i), qs_control%eps_ppl, c_local(i), rlow=ppl_radius))
 
  287            CALL get_potential(potential=sgp_potential, ecp_semi_local=ecp_semi_local)
 
  288            IF (ecp_semi_local) 
THEN 
  289               CALL get_potential(potential=sgp_potential, sl_lmax=lppsl, npot=npot, nrpot=nrpot, &
 
  290                                  apot=apot, bpot=bpot)
 
  293                     lppl = max(0, nrpot(i, l) - 2)
 
  294                     ppl_radius = max(ppl_radius, &
 
  295                                      exp_radius(lppl, bpot(i, l), qs_control%eps_ppl, apot(i, l), &
 
  302            CALL get_potential(potential=sgp_potential, lmax=lppnl, n_nonlocal=nloc)
 
  303            CALL get_potential(potential=sgp_potential, is_nonlocal=is_nonlocal, &
 
  304                               a_nonlocal=a_nonlocal, c_nonlocal=c_nonlocal)
 
  306               IF (is_nonlocal(l)) 
THEN 
  308                     cval = maxval(abs(c_nonlocal(i, :, l)))
 
  309                     ppnl_radius = max(ppnl_radius, &
 
  310                                       exp_radius(l, a_nonlocal(i), qs_control%eps_pgf_orb, cval, rlow=ppnl_radius))
 
  315                               core_charge_radius=core_charge_radius, &
 
  316                               ppl_radius=ppl_radius, &
 
  317                               ppnl_radius=ppnl_radius)
 
  319         ELSE IF (
ASSOCIATED(cneo_potential)) 
THEN 
  321            IF (
ASSOCIATED(nuc_basis_set)) 
THEN 
  323                                                     sqrt(cneo_potential%zeff))
 
  329         IF (
ASSOCIATED(aux_fit_basis_set)) 
THEN 
  331                                                  qs_control%eps_kg_orb)
 
  335         IF (
ASSOCIATED(aux_opt_basis_set)) 
THEN 
  350         IF (
ASSOCIATED(ri_aux_basis_set)) 
THEN 
  360         IF (
ASSOCIATED(harris_basis)) 
THEN 
  365         IF (
ASSOCIATED(aux_gw_basis)) 
THEN 
  370         IF (
ASSOCIATED(soft_basis)) 
THEN 
  375         IF (
ASSOCIATED(gapw_1c_basis)) 
THEN 
  380         IF (
ASSOCIATED(tda_k_basis)) 
THEN 
  385         IF (
ASSOCIATED(lri_basis)) 
THEN 
  388         IF (
ASSOCIATED(ri_basis)) 
THEN 
  391         IF (
ASSOCIATED(ri_xas_basis)) 
THEN 
  394         IF (
ASSOCIATED(p_lri_basis)) 
THEN 
  399         IF (
ASSOCIATED(rhoin_basis)) 
THEN 
  404         IF (
ASSOCIATED(paw_proj_set)) 
THEN 
  413               DO ip = 1, nprj(lprj)
 
  415                  rzetprj(ip, lprj) = max(rzetprj(ip, lprj), &
 
  416                                          exp_radius(lprj, zeta, qs_control%eps_pgf_orb, &
 
  417                                                     1.0_dp, rlow=rzetprj(ip, lprj)))
 
  418                  rcprj = max(rcprj, rzetprj(ip, lprj))
 
  428      CALL timestop(handle)
 
 
  672      CHARACTER(len=*)                                   :: basis
 
  674      TYPE(
qs_kind_type), 
DIMENSION(:), 
POINTER          :: qs_kind_set
 
  677      CHARACTER(LEN=10)                                  :: bas
 
  678      CHARACTER(LEN=default_string_length)               :: name, unit_str
 
  679      INTEGER                                            :: ikind, ipgf, iset, nkind, nset, &
 
  681      INTEGER, 
DIMENSION(:), 
POINTER                     :: npgf
 
  682      REAL(kind=
dp)                                      :: conv, kind_radius, short_kind_radius
 
  683      REAL(kind=
dp), 
DIMENSION(:), 
POINTER               :: set_radius
 
  684      REAL(kind=
dp), 
DIMENSION(:, :), 
POINTER            :: pgf_radius
 
  687                                                            nuc_basis_set, orb_basis_set
 
  691      NULLIFY (
aux_basis_set, orb_basis_set, lri_basis_set, nuc_basis_set)
 
  693      bas(1:3) = basis(1:3)
 
  695      IF (bas(1:3) == 
"ORB") 
THEN 
  697      ELSE IF (bas(1:3) == 
"AUX") 
THEN 
  699      ELSE IF (bas(1:3) == 
"LRI") 
THEN 
  701      ELSE IF (bas(1:3) == 
"NUC") 
THEN 
  704         cpabort(
"Undefined basis set type")
 
  707      nkind = 
SIZE(qs_kind_set)
 
  711                                         "PRINT%RADII/KIND_RADII", extension=
".Log")
 
  714      IF (output_unit > 0) 
THEN 
  715         WRITE (unit=output_unit, fmt=
"(/,T2,A,T46,A,T53,A,T63,A,T71,A)") &
 
  716            "RADII: "//trim(bas)//
" BASIS in "//trim(unit_str), &
 
  717            "Kind", 
"Label", 
"Radius", 
"OCE Radius" 
  720            IF (bas(1:3) == 
"ORB") 
THEN 
  721               CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
 
  722               IF (
ASSOCIATED(orb_basis_set)) 
THEN 
  724                                         kind_radius=kind_radius, &
 
  725                                         short_kind_radius=short_kind_radius)
 
  727            ELSE IF (bas(1:3) == 
"AUX") 
THEN 
  731                                         kind_radius=kind_radius)
 
  733            ELSE IF (bas(1:3) == 
"LOC") 
THEN 
  734               CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type=
"LRI_AUX")
 
  735               IF (
ASSOCIATED(lri_basis_set)) 
THEN 
  737                                         kind_radius=kind_radius)
 
  739            ELSE IF (bas(1:3) == 
"NUC") 
THEN 
  740               CALL get_qs_kind(qs_kind_set(ikind), basis_set=nuc_basis_set, basis_type=
"NUC")
 
  741               IF (
ASSOCIATED(nuc_basis_set)) 
THEN 
  743                                         kind_radius=kind_radius, &
 
  744                                         short_kind_radius=short_kind_radius)
 
  747               cpabort(
"Undefined basis set type")
 
  749            IF (
ASSOCIATED(
aux_basis_set) .OR. 
ASSOCIATED(orb_basis_set) .OR. &
 
  750                ASSOCIATED(nuc_basis_set)) 
THEN 
  751               WRITE (unit=output_unit, fmt=
"(T45,I5,T53,A5,T57,F12.6,T69,F12.6)") &
 
  752                  ikind, name, kind_radius*conv, short_kind_radius*conv
 
  754               WRITE (unit=output_unit, fmt=
"(T55,I5,T63,A5,T72,A9)") &
 
  755                  ikind, name, 
"no basis" 
  760                                        "PRINT%RADII/KIND_RADII")
 
  764                                         "PRINT%RADII/SET_RADII", extension=
".Log")
 
  765      IF (output_unit > 0) 
THEN 
  766         WRITE (unit=output_unit, fmt=
"(/,T2,A,T51,A,T57,A,T65,A,T75,A)") &
 
  767            "RADII: SHELL SETS OF "//trim(bas)//
" BASIS in "// &
 
  768            trim(unit_str), 
"Kind", 
"Label", 
"Set", 
"Radius" 
  771            IF (bas(1:3) == 
"ORB") 
THEN 
  772               CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
 
  773               IF (
ASSOCIATED(orb_basis_set)) 
THEN 
  776                                         set_radius=set_radius)
 
  778            ELSE IF (bas(1:3) == 
"AUX") 
THEN 
  783                                         set_radius=set_radius)
 
  785            ELSE IF (bas(1:3) == 
"LOC") 
THEN 
  786               CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type=
"LRI_AUX")
 
  787               IF (
ASSOCIATED(lri_basis_set)) 
THEN 
  790                                         set_radius=set_radius)
 
  792            ELSE IF (bas(1:3) == 
"NUC") 
THEN 
  793               CALL get_qs_kind(qs_kind_set(ikind), basis_set=nuc_basis_set, basis_type=
"NUC")
 
  794               IF (
ASSOCIATED(nuc_basis_set)) 
THEN 
  797                                         set_radius=set_radius)
 
  800               cpabort(
"Undefined basis set type")
 
  802            IF (
ASSOCIATED(
aux_basis_set) .OR. 
ASSOCIATED(orb_basis_set) .OR. &
 
  803                ASSOCIATED(nuc_basis_set)) 
THEN 
  804               WRITE (unit=output_unit, fmt=
"(T50,I5,T57,A5,(T63,I5,T69,F12.6))") &
 
  805                  ikind, name, (iset, set_radius(iset)*conv, iset=1, nset)
 
  807               WRITE (unit=output_unit, fmt=
"(T50,I5,T58,A5,T73,A8)") &
 
  808                  ikind, name, 
"no basis" 
  813                                        "PRINT%RADII/SET_RADII")
 
  816                                         "PRINT%RADII/PGF_RADII", extension=
".Log")
 
  817      IF (output_unit > 0) 
THEN 
  818         WRITE (unit=output_unit, fmt=
"(/,T2,A,T51,A,T57,A,T65,A,T75,A)") &
 
  819            "RADII: PRIMITIVE GAUSSIANS OF "//trim(bas)//
" BASIS in "// &
 
  820            trim(unit_str), 
"Kind", 
"Label", 
"Set", 
"Radius" 
  823            IF (bas(1:3) == 
"ORB") 
THEN 
  824               CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
 
  825               IF (
ASSOCIATED(orb_basis_set)) 
THEN 
  829                                         pgf_radius=pgf_radius)
 
  831            ELSE IF (bas(1:3) == 
"AUX") 
THEN 
  837                                         pgf_radius=pgf_radius)
 
  839            ELSE IF (bas(1:3) == 
"LOC") 
THEN 
  840               CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type=
"LRI_AUX")
 
  841               IF (
ASSOCIATED(lri_basis_set)) 
THEN 
  845                                         pgf_radius=pgf_radius)
 
  847            ELSE IF (bas(1:3) == 
"NUC") 
THEN 
  848               CALL get_qs_kind(qs_kind_set(ikind), basis_set=nuc_basis_set, basis_type=
"NUC")
 
  849               IF (
ASSOCIATED(nuc_basis_set)) 
THEN 
  853                                         pgf_radius=pgf_radius)
 
  856               cpabort(
"Undefined basis type")
 
  858            IF (
ASSOCIATED(
aux_basis_set) .OR. 
ASSOCIATED(orb_basis_set) .OR. &
 
  859                ASSOCIATED(lri_basis_set) .OR. 
ASSOCIATED(nuc_basis_set)) 
THEN 
  861                  WRITE (unit=output_unit, fmt=
"(T50,I5,T57,A5,T63,I5,(T69,F12.6))") &
 
  863                     (pgf_radius(ipgf, iset)*conv, ipgf=1, npgf(iset))
 
  866               WRITE (unit=output_unit, fmt=
"(T50,I5,T58,A5,T73,A8)") &
 
  867                  ikind, name, 
"no basis" 
  872                                        "PRINT%RADII/PGF_RADII")
 
 
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
 
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, cneo_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.