(git:b279b6b)
qs_interactions.F
Go to the documentation of this file.
1 !--------------------------------------------------------------------------------------------------!
2 ! CP2K: A general program to perform molecular dynamics simulations !
3 ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 ! !
5 ! SPDX-License-Identifier: GPL-2.0-or-later !
6 !--------------------------------------------------------------------------------------------------!
7 
8 ! **************************************************************************************************
9 !> \brief Calculate the interaction radii for the operator matrix calculation.
10 !> \par History
11 !> Joost VandeVondele : added exp_radius_very_extended
12 !> 24.09.2002 overloaded init_interaction_radii for KG use (gt)
13 !> 27.02.2004 integrated KG into QS version of init_interaction_radii (jgh)
14 !> 07.03.2006 new routine to extend kind interaction radius for semi-empiric (jgh)
15 !> \author MK (12.07.2000)
16 ! **************************************************************************************************
18 
19  USE ao_util, ONLY: exp_radius
20  USE atomic_kind_types, ONLY: atomic_kind_type,&
23  gto_basis_set_type,&
25  USE cp_control_types, ONLY: qs_control_type,&
26  semi_empirical_control_type
28  cp_logger_type
31  USE cp_units, ONLY: cp_unit_from_cp2k
32  USE external_potential_types, ONLY: all_potential_type,&
33  get_potential,&
34  gth_potential_type,&
35  set_potential,&
36  sgp_potential_type
37  USE input_section_types, ONLY: section_vals_type,&
39  USE kinds, ONLY: default_string_length,&
40  dp
42  paw_proj_set_type,&
44  USE qs_kind_types, ONLY: get_qs_kind,&
45  qs_kind_type
46  USE string_utilities, ONLY: uppercase
47 #include "./base/base_uses.f90"
48 
49  IMPLICIT NONE
50 
51  PRIVATE
52 
53 ! *** Global parameters (only in this module)
54 
55  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_interactions'
56 
57 ! *** Public subroutines ***
58 
60 
63 
64 CONTAINS
65 
66 ! **************************************************************************************************
67 !> \brief Initialize all the atomic kind radii for a given threshold value.
68 !> \param qs_control ...
69 !> \param qs_kind_set ...
70 !> \date 24.09.2002
71 !> \author GT
72 !> \version 1.0
73 ! **************************************************************************************************
74  SUBROUTINE init_interaction_radii(qs_control, qs_kind_set)
75 
76  TYPE(qs_control_type), INTENT(IN) :: qs_control
77  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
78 
79  CHARACTER(len=*), PARAMETER :: routinen = 'init_interaction_radii'
80 
81  INTEGER :: handle, i, iexp_ppl, ikind, ip, iprj_ppnl, j, l, lppl, lppnl, lppsl, lprj, &
82  lprj_ppnl, maxl, n_local, nexp_lpot, nexp_lsd, nexp_ppl, nkind, nloc
83  INTEGER, DIMENSION(0:10) :: npot
84  INTEGER, DIMENSION(1:10) :: nrloc
85  INTEGER, DIMENSION(1:15, 0:10) :: nrpot
86  INTEGER, DIMENSION(:), POINTER :: nct_lpot, nct_lsd, nprj, nprj_ppnl
87  LOGICAL :: ecp_local, ecp_semi_local, llsd, lpot, &
88  paw_atom
89  LOGICAL, DIMENSION(0:5) :: is_nonlocal
90  REAL(kind=dp) :: alpha_core_charge, alpha_ppl, ccore_charge, cerf_ppl, core_charge_radius, &
91  cval, ppl_radius, ppnl_radius, rcprj, zeta
92  REAL(kind=dp), DIMENSION(1:10) :: aloc, bloc
93  REAL(kind=dp), DIMENSION(1:15, 0:10) :: apot, bpot
94  REAL(kind=dp), DIMENSION(:), POINTER :: a_local, a_nonlocal, alpha_lpot, &
95  alpha_lsd, alpha_ppnl, c_local, &
96  cexp_ppl
97  REAL(kind=dp), DIMENSION(:, :), POINTER :: cprj_ppnl, cval_lpot, cval_lsd, rzetprj, &
98  zet
99  REAL(kind=dp), DIMENSION(:, :, :), POINTER :: c_nonlocal
100  TYPE(all_potential_type), POINTER :: all_potential
101  TYPE(gth_potential_type), POINTER :: gth_potential
102  TYPE(gto_basis_set_type), POINTER :: aux_basis_set, aux_fit_basis_set, aux_gw_basis, &
103  aux_opt_basis_set, gapw_1c_basis, harris_basis, lri_basis, mao_basis, min_basis_set, &
104  orb_basis_set, p_lri_basis, ri_aux_basis_set, ri_basis, ri_xas_basis, soft_basis, &
105  tda_k_basis
106  TYPE(paw_proj_set_type), POINTER :: paw_proj_set
107  TYPE(sgp_potential_type), POINTER :: sgp_potential
108 
109  CALL timeset(routinen, handle)
110 
111  NULLIFY (all_potential, gth_potential, sgp_potential)
112  NULLIFY (aux_basis_set, aux_fit_basis_set, aux_gw_basis, tda_k_basis, &
113  harris_basis, lri_basis, mao_basis, orb_basis_set, p_lri_basis, ri_aux_basis_set, &
114  ri_basis, ri_xas_basis, soft_basis, gapw_1c_basis, aux_opt_basis_set, min_basis_set)
115  NULLIFY (nprj_ppnl, nprj)
116  NULLIFY (alpha_ppnl, cexp_ppl, cprj_ppnl, zet)
117 
118  nkind = SIZE(qs_kind_set)
119  nexp_ppl = 0
120 
121  DO ikind = 1, nkind
122 
123  CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set, basis_type="ORB")
124  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
125  CALL get_qs_kind(qs_kind_set(ikind), basis_set=min_basis_set, basis_type="MIN")
126  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_fit_basis_set, basis_type="AUX_FIT")
127  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_opt_basis_set, basis_type="AUX_OPT")
128  CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis, basis_type="LRI_AUX")
129  CALL get_qs_kind(qs_kind_set(ikind), basis_set=p_lri_basis, basis_type="P_LRI_AUX")
130  CALL get_qs_kind(qs_kind_set(ikind), basis_set=ri_basis, basis_type="RI_HXC")
131  CALL get_qs_kind(qs_kind_set(ikind), basis_set=ri_aux_basis_set, basis_type="RI_AUX")
132  CALL get_qs_kind(qs_kind_set(ikind), basis_set=mao_basis, basis_type="MAO")
133  CALL get_qs_kind(qs_kind_set(ikind), basis_set=harris_basis, basis_type="HARRIS")
134  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_gw_basis, basis_type="AUX_GW")
135  CALL get_qs_kind(qs_kind_set(ikind), basis_set=ri_xas_basis, basis_type="RI_XAS")
136  CALL get_qs_kind(qs_kind_set(ikind), basis_set=soft_basis, basis_type="ORB_SOFT")
137  CALL get_qs_kind(qs_kind_set(ikind), basis_set=gapw_1c_basis, basis_type="GAPW_1C")
138  CALL get_qs_kind(qs_kind_set(ikind), basis_set=tda_k_basis, basis_type="TDA_HFX")
139  CALL get_qs_kind(qs_kind_set(ikind), &
140  paw_proj_set=paw_proj_set, &
141  paw_atom=paw_atom, &
142  all_potential=all_potential, &
143  gth_potential=gth_potential, &
144  sgp_potential=sgp_potential)
145 
146  ! Calculate the orbital basis function radii ***
147  ! For ALL electron this has to come before the calculation of the
148  ! radii used to calculate the 3c lists.
149  ! Indeed, there the radii of the GTO primitives are needed
150  IF (ASSOCIATED(orb_basis_set)) THEN
151  CALL init_interaction_radii_orb_basis(orb_basis_set, qs_control%eps_pgf_orb, &
152  qs_control%eps_kg_orb)
153  END IF
154 
155  IF (ASSOCIATED(all_potential)) THEN
156 
157  CALL get_potential(potential=all_potential, &
158  alpha_core_charge=alpha_core_charge, &
159  ccore_charge=ccore_charge)
160 
161  ! Calculate the radius of the core charge distribution
162 
163  core_charge_radius = exp_radius(0, alpha_core_charge, &
164  qs_control%eps_core_charge, &
165  ccore_charge)
166 
167  CALL set_potential(potential=all_potential, &
168  core_charge_radius=core_charge_radius)
169 
170  ELSE IF (ASSOCIATED(gth_potential)) THEN
171 
172  CALL get_potential(potential=gth_potential, &
173  alpha_core_charge=alpha_core_charge, &
174  ccore_charge=ccore_charge, &
175  alpha_ppl=alpha_ppl, &
176  cerf_ppl=cerf_ppl, &
177  nexp_ppl=nexp_ppl, &
178  cexp_ppl=cexp_ppl, &
179  lpot_present=lpot, &
180  lsd_present=llsd, &
181  lppnl=lppnl, &
182  alpha_ppnl=alpha_ppnl, &
183  nprj_ppnl=nprj_ppnl, &
184  cprj_ppnl=cprj_ppnl)
185 
186  ! Calculate the radius of the core charge distribution
187  core_charge_radius = exp_radius(0, alpha_core_charge, &
188  qs_control%eps_core_charge, &
189  ccore_charge)
190 
191  ! Calculate the radii of the local part
192  ! of the Goedecker pseudopotential (GTH)
193  ppl_radius = exp_radius(0, alpha_ppl, qs_control%eps_ppl, cerf_ppl)
194 
195  DO iexp_ppl = 1, nexp_ppl
196  lppl = 2*(iexp_ppl - 1)
197  ppl_radius = max(ppl_radius, &
198  exp_radius(lppl, alpha_ppl, &
199  qs_control%eps_ppl, &
200  cexp_ppl(iexp_ppl), &
201  rlow=ppl_radius))
202  END DO
203  IF (lpot) THEN
204  ! extended local potential
205  CALL get_potential(potential=gth_potential, &
206  nexp_lpot=nexp_lpot, &
207  alpha_lpot=alpha_lpot, &
208  nct_lpot=nct_lpot, &
209  cval_lpot=cval_lpot)
210  DO j = 1, nexp_lpot
211  DO i = 1, nct_lpot(j)
212  lppl = 2*(i - 1)
213  ppl_radius = max(ppl_radius, &
214  exp_radius(lppl, alpha_lpot(j), qs_control%eps_ppl, &
215  cval_lpot(i, j), rlow=ppl_radius))
216  END DO
217  END DO
218  END IF
219  IF (llsd) THEN
220  ! lsd local potential
221  CALL get_potential(potential=gth_potential, &
222  nexp_lsd=nexp_lsd, &
223  alpha_lsd=alpha_lsd, &
224  nct_lsd=nct_lsd, &
225  cval_lsd=cval_lsd)
226  DO j = 1, nexp_lsd
227  DO i = 1, nct_lsd(j)
228  lppl = 2*(i - 1)
229  ppl_radius = max(ppl_radius, &
230  exp_radius(lppl, alpha_lsd(j), qs_control%eps_ppl, &
231  cval_lsd(i, j), rlow=ppl_radius))
232  END DO
233  END DO
234  END IF
235 
236  ! Calculate the radii of the non-local part
237  ! of the Goedecker pseudopotential (GTH)
238  ppnl_radius = 0.0_dp
239  DO l = 0, lppnl
240  DO iprj_ppnl = 1, nprj_ppnl(l)
241  lprj_ppnl = l + 2*(iprj_ppnl - 1)
242  ppnl_radius = max(ppnl_radius, &
243  exp_radius(lprj_ppnl, alpha_ppnl(l), &
244  qs_control%eps_pgf_orb, &
245  cprj_ppnl(iprj_ppnl, l), &
246  rlow=ppnl_radius))
247  END DO
248  END DO
249  CALL set_potential(potential=gth_potential, &
250  core_charge_radius=core_charge_radius, &
251  ppl_radius=ppl_radius, &
252  ppnl_radius=ppnl_radius)
253 
254  ELSE IF (ASSOCIATED(sgp_potential)) THEN
255 
256  ! Calculate the radius of the core charge distribution
257  CALL get_potential(potential=sgp_potential, &
258  alpha_core_charge=alpha_core_charge, &
259  ccore_charge=ccore_charge)
260  core_charge_radius = exp_radius(0, alpha_core_charge, &
261  qs_control%eps_core_charge, &
262  ccore_charge)
263  ! Calculate the radii of the local part
264  ppl_radius = core_charge_radius
265  CALL get_potential(potential=sgp_potential, ecp_local=ecp_local)
266  IF (ecp_local) THEN
267  CALL get_potential(potential=sgp_potential, nloc=nloc, nrloc=nrloc, aloc=aloc, bloc=bloc)
268  DO i = 1, nloc
269  lppl = max(0, nrloc(i) - 2)
270  ppl_radius = max(ppl_radius, &
271  exp_radius(lppl, bloc(i), qs_control%eps_ppl, aloc(i), rlow=ppl_radius))
272  END DO
273  ELSE
274  CALL get_potential(potential=sgp_potential, n_local=n_local, a_local=a_local, c_local=c_local)
275  DO i = 1, n_local
276  ppl_radius = max(ppl_radius, &
277  exp_radius(0, a_local(i), qs_control%eps_ppl, c_local(i), rlow=ppl_radius))
278  END DO
279  END IF
280  ! Calculate the radii of the semi-local part
281  CALL get_potential(potential=sgp_potential, ecp_semi_local=ecp_semi_local)
282  IF (ecp_semi_local) THEN
283  CALL get_potential(potential=sgp_potential, sl_lmax=lppsl, npot=npot, nrpot=nrpot, &
284  apot=apot, bpot=bpot)
285  DO l = 0, lppsl
286  DO i = 1, npot(l)
287  lppl = max(0, nrpot(i, l) - 2)
288  ppl_radius = max(ppl_radius, &
289  exp_radius(lppl, bpot(i, l), qs_control%eps_ppl, apot(i, l), &
290  rlow=ppl_radius))
291  END DO
292  END DO
293  END IF
294  ! Calculate the radii of the non-local part
295  ppnl_radius = 0.0_dp
296  CALL get_potential(potential=sgp_potential, lmax=lppnl, n_nonlocal=nloc)
297  CALL get_potential(potential=sgp_potential, is_nonlocal=is_nonlocal, &
298  a_nonlocal=a_nonlocal, c_nonlocal=c_nonlocal)
299  DO l = 0, lppnl
300  IF (is_nonlocal(l)) THEN
301  DO i = 1, nloc
302  cval = maxval(abs(c_nonlocal(i, :, l)))
303  ppnl_radius = max(ppnl_radius, &
304  exp_radius(l, a_nonlocal(i), qs_control%eps_pgf_orb, cval, rlow=ppnl_radius))
305  END DO
306  END IF
307  END DO
308  CALL set_potential(potential=sgp_potential, &
309  core_charge_radius=core_charge_radius, &
310  ppl_radius=ppl_radius, &
311  ppnl_radius=ppnl_radius)
312  END IF
313 
314  ! Calculate the aux fit orbital basis function radii
315  IF (ASSOCIATED(aux_fit_basis_set)) THEN
316  CALL init_interaction_radii_orb_basis(aux_fit_basis_set, qs_control%eps_pgf_orb, &
317  qs_control%eps_kg_orb)
318  END IF
319 
320  ! Calculate the aux opt orbital basis function radii
321  IF (ASSOCIATED(aux_opt_basis_set)) THEN
322  CALL init_interaction_radii_orb_basis(aux_opt_basis_set, qs_control%eps_pgf_orb)
323  END IF
324 
325  ! Calculate the minimal basis function radii
326  IF (ASSOCIATED(min_basis_set)) THEN
327  CALL init_interaction_radii_orb_basis(min_basis_set, qs_control%eps_pgf_orb)
328  END IF
329 
330  ! Calculate the aux orbital basis function radii
331  IF (ASSOCIATED(aux_basis_set)) THEN
332  CALL init_interaction_radii_orb_basis(aux_basis_set, qs_control%eps_pgf_orb)
333  END IF
334 
335  ! Calculate the RI aux orbital basis function radii
336  IF (ASSOCIATED(ri_aux_basis_set)) THEN
337  CALL init_interaction_radii_orb_basis(ri_aux_basis_set, qs_control%eps_pgf_orb)
338  END IF
339 
340  ! Calculate the MAO orbital basis function radii
341  IF (ASSOCIATED(mao_basis)) THEN
342  CALL init_interaction_radii_orb_basis(mao_basis, qs_control%eps_pgf_orb)
343  END IF
344 
345  ! Calculate the HARRIS orbital basis function radii
346  IF (ASSOCIATED(harris_basis)) THEN
347  CALL init_interaction_radii_orb_basis(harris_basis, qs_control%eps_pgf_orb)
348  END IF
349 
350  ! Calculate the AUX_GW orbital basis function radii
351  IF (ASSOCIATED(aux_gw_basis)) THEN
352  CALL init_interaction_radii_orb_basis(aux_gw_basis, qs_control%eps_pgf_orb)
353  END IF
354 
355  ! Calculate the soft orbital basis function radii
356  IF (ASSOCIATED(soft_basis)) THEN
357  CALL init_interaction_radii_orb_basis(soft_basis, qs_control%eps_pgf_orb)
358  END IF
359 
360  ! Calculate the GAPW 1 center basis function radii
361  IF (ASSOCIATED(gapw_1c_basis)) THEN
362  CALL init_interaction_radii_orb_basis(gapw_1c_basis, qs_control%eps_pgf_orb)
363  END IF
364 
365  ! Calculate the HFX SR basis for TDA
366  IF (ASSOCIATED(tda_k_basis)) THEN
367  CALL init_interaction_radii_orb_basis(tda_k_basis, qs_control%eps_pgf_orb)
368  END IF
369 
370  ! Calculate the lri basis function radii
371  IF (ASSOCIATED(lri_basis)) THEN
372  CALL init_interaction_radii_orb_basis(lri_basis, qs_control%eps_pgf_orb)
373  END IF
374  IF (ASSOCIATED(ri_basis)) THEN
375  CALL init_interaction_radii_orb_basis(ri_basis, qs_control%eps_pgf_orb)
376  END IF
377  IF (ASSOCIATED(ri_xas_basis)) THEN
378  CALL init_interaction_radii_orb_basis(ri_xas_basis, qs_control%eps_pgf_orb)
379  END IF
380  IF (ASSOCIATED(p_lri_basis)) THEN
381  CALL init_interaction_radii_orb_basis(p_lri_basis, qs_control%eps_pgf_orb)
382  END IF
383 
384  ! Calculate the paw projector basis function radii
385  IF (ASSOCIATED(paw_proj_set)) THEN
386  CALL get_paw_proj_set(paw_proj_set=paw_proj_set, &
387  nprj=nprj, &
388  maxl=maxl, &
389  zetprj=zet, &
390  rzetprj=rzetprj)
391  rcprj = 0.0_dp
392  rzetprj = 0.0_dp
393  DO lprj = 0, maxl
394  DO ip = 1, nprj(lprj)
395  zeta = zet(ip, lprj)
396  rzetprj(ip, lprj) = max(rzetprj(ip, lprj), &
397  exp_radius(lprj, zeta, qs_control%eps_pgf_orb, &
398  1.0_dp, rlow=rzetprj(ip, lprj)))
399  rcprj = max(rcprj, rzetprj(ip, lprj))
400  END DO
401  END DO
402  CALL set_paw_proj_set(paw_proj_set=paw_proj_set, &
403  rzetprj=rzetprj, &
404  rcprj=rcprj)
405 
406  END IF
407  END DO ! ikind
408 
409  CALL timestop(handle)
410 
411  END SUBROUTINE init_interaction_radii
412 
413 ! **************************************************************************************************
414 !> \brief ...
415 !> \param orb_basis_set ...
416 !> \param eps_pgf_orb ...
417 !> \param eps_pgf_short ...
418 ! **************************************************************************************************
419  SUBROUTINE init_interaction_radii_orb_basis(orb_basis_set, eps_pgf_orb, eps_pgf_short)
420 
421  TYPE(gto_basis_set_type), POINTER :: orb_basis_set
422  REAL(kind=dp), INTENT(IN) :: eps_pgf_orb
423  REAL(kind=dp), INTENT(IN), OPTIONAL :: eps_pgf_short
424 
425  INTEGER :: ipgf, iset, ishell, l, nset
426  INTEGER, DIMENSION(:), POINTER :: npgf, nshell
427  INTEGER, DIMENSION(:, :), POINTER :: lshell
428  REAL(kind=dp) :: eps_short, gcca, kind_radius, &
429  short_radius, zeta
430  REAL(kind=dp), DIMENSION(:), POINTER :: set_radius
431  REAL(kind=dp), DIMENSION(:, :), POINTER :: pgf_radius, zet
432  REAL(kind=dp), DIMENSION(:, :, :), POINTER :: gcc
433 
434  IF (ASSOCIATED(orb_basis_set)) THEN
435 
436  IF (PRESENT(eps_pgf_short)) THEN
437  eps_short = eps_pgf_short
438  ELSE
439  eps_short = eps_pgf_orb
440  END IF
441 
442  CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
443  nset=nset, &
444  nshell=nshell, &
445  npgf=npgf, &
446  l=lshell, &
447  zet=zet, &
448  gcc=gcc, &
449  pgf_radius=pgf_radius, &
450  set_radius=set_radius)
451 
452  kind_radius = 0.0_dp
453  short_radius = 0.0_dp
454 
455  DO iset = 1, nset
456  set_radius(iset) = 0.0_dp
457  DO ipgf = 1, npgf(iset)
458  pgf_radius(ipgf, iset) = 0.0_dp
459  DO ishell = 1, nshell(iset)
460  l = lshell(ishell, iset)
461  gcca = gcc(ipgf, ishell, iset)
462  zeta = zet(ipgf, iset)
463  pgf_radius(ipgf, iset) = max(pgf_radius(ipgf, iset), &
464  exp_radius(l, zeta, eps_pgf_orb, gcca, &
465  rlow=pgf_radius(ipgf, iset)))
466  short_radius = max(short_radius, &
467  exp_radius(l, zeta, eps_short, gcca, &
468  rlow=short_radius))
469  END DO
470  set_radius(iset) = max(set_radius(iset), pgf_radius(ipgf, iset))
471  END DO
472  kind_radius = max(kind_radius, set_radius(iset))
473  END DO
474 
475  CALL set_gto_basis_set(gto_basis_set=orb_basis_set, &
476  pgf_radius=pgf_radius, &
477  set_radius=set_radius, &
478  kind_radius=kind_radius, &
479  short_kind_radius=short_radius)
480 
481  END IF
482 
483  END SUBROUTINE init_interaction_radii_orb_basis
484 
485 ! **************************************************************************************************
486 !> \brief ...
487 !> \param se_control ...
488 !> \param atomic_kind_set ...
489 !> \param qs_kind_set ...
490 !> \param subsys_section ...
491 ! **************************************************************************************************
492  SUBROUTINE init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, &
493  subsys_section)
494 
495  TYPE(semi_empirical_control_type), POINTER :: se_control
496  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
497  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
498  TYPE(section_vals_type), POINTER :: subsys_section
499 
500  INTEGER :: ikind, nkind
501  REAL(kind=dp) :: kind_radius
502  TYPE(gto_basis_set_type), POINTER :: orb_basis_set
503  TYPE(qs_kind_type), POINTER :: qs_kind
504 
505  NULLIFY (orb_basis_set, qs_kind)
506 
507  nkind = SIZE(qs_kind_set)
508 
509  DO ikind = 1, nkind
510 
511  qs_kind => qs_kind_set(ikind)
512 
513  CALL get_qs_kind(qs_kind=qs_kind, basis_set=orb_basis_set)
514 
515  IF (ASSOCIATED(orb_basis_set)) THEN
516 
517  CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
518  kind_radius=kind_radius)
519 
520  kind_radius = max(kind_radius, se_control%cutoff_exc)
521 
522  CALL set_gto_basis_set(gto_basis_set=orb_basis_set, &
523  kind_radius=kind_radius)
524 
525  END IF
526 
527  END DO
528 
529  CALL write_kind_radii(atomic_kind_set, qs_kind_set, subsys_section)
530 
531  END SUBROUTINE init_se_nlradius
532 
533 ! **************************************************************************************************
534 !> \brief ...
535 !> \param atomic_kind_set ...
536 !> \param qs_kind_set ...
537 !> \param subsys_section ...
538 ! **************************************************************************************************
539  SUBROUTINE write_kind_radii(atomic_kind_set, qs_kind_set, subsys_section)
540 
541  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
542  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
543  TYPE(section_vals_type), POINTER :: subsys_section
544 
545  CHARACTER(LEN=10) :: bas
546  CHARACTER(LEN=default_string_length) :: name, unit_str
547  INTEGER :: ikind, nkind, output_unit
548  REAL(kind=dp) :: conv, kind_radius
549  TYPE(cp_logger_type), POINTER :: logger
550  TYPE(gto_basis_set_type), POINTER :: orb_basis_set
551 
552  NULLIFY (logger)
553  logger => cp_get_default_logger()
554  NULLIFY (orb_basis_set)
555  bas = "ORBITAL "
556 
557  nkind = SIZE(atomic_kind_set)
558 ! *** Print the kind radii ***
559  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
560  "PRINT%RADII/KIND_RADII", extension=".Log")
561  CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
562  conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
563  IF (output_unit > 0) THEN
564  WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
565  "RADII: "//trim(bas)//" BASIS in "//trim(unit_str), &
566  "Kind", "Label", "Radius"
567  DO ikind = 1, nkind
568  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
569  CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
570  IF (ASSOCIATED(orb_basis_set)) THEN
571  CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
572  kind_radius=kind_radius)
573  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
574  ikind, name, kind_radius*conv
575  ELSE
576  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T72,A9)") &
577  ikind, name, "no basis"
578  END IF
579  END DO
580  END IF
581  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
582  "PRINT%RADII/KIND_RADII")
583 
584  END SUBROUTINE write_kind_radii
585 
586 ! **************************************************************************************************
587 !> \brief Write the radii of the core charge distributions to the output
588 !> unit.
589 !> \param atomic_kind_set ...
590 !> \param qs_kind_set ...
591 !> \param subsys_section ...
592 !> \date 15.09.2000
593 !> \author MK
594 !> \version 1.0
595 ! **************************************************************************************************
596  SUBROUTINE write_core_charge_radii(atomic_kind_set, qs_kind_set, subsys_section)
597  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
598  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
599  TYPE(section_vals_type), POINTER :: subsys_section
600 
601  CHARACTER(LEN=default_string_length) :: name, unit_str
602  INTEGER :: ikind, nkind, output_unit
603  REAL(kind=dp) :: conv, core_charge_radius
604  TYPE(all_potential_type), POINTER :: all_potential
605  TYPE(cp_logger_type), POINTER :: logger
606  TYPE(gth_potential_type), POINTER :: gth_potential
607 
608  NULLIFY (logger)
609  logger => cp_get_default_logger()
610  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
611  "PRINT%RADII/CORE_CHARGE_RADII", extension=".Log")
612  CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
613  conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
614  IF (output_unit > 0) THEN
615  nkind = SIZE(atomic_kind_set)
616  WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
617  "RADII: CORE CHARGE DISTRIBUTIONS in "// &
618  trim(unit_str), "Kind", "Label", "Radius"
619  DO ikind = 1, nkind
620  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
621  CALL get_qs_kind(qs_kind_set(ikind), &
622  all_potential=all_potential, gth_potential=gth_potential)
623 
624  IF (ASSOCIATED(all_potential)) THEN
625  CALL get_potential(potential=all_potential, &
626  core_charge_radius=core_charge_radius)
627  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
628  ikind, name, core_charge_radius*conv
629  ELSE IF (ASSOCIATED(gth_potential)) THEN
630  CALL get_potential(potential=gth_potential, &
631  core_charge_radius=core_charge_radius)
632  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
633  ikind, name, core_charge_radius*conv
634  END IF
635  END DO
636  END IF
637  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
638  "PRINT%RADII/CORE_CHARGE_RADII")
639  END SUBROUTINE write_core_charge_radii
640 
641 ! **************************************************************************************************
642 !> \brief Write the orbital basis function radii to the output unit.
643 !> \param basis ...
644 !> \param atomic_kind_set ...
645 !> \param qs_kind_set ...
646 !> \param subsys_section ...
647 !> \date 05.06.2000
648 !> \author MK
649 !> \version 1.0
650 ! **************************************************************************************************
651  SUBROUTINE write_pgf_orb_radii(basis, atomic_kind_set, qs_kind_set, subsys_section)
652 
653  CHARACTER(len=*) :: basis
654  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
655  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
656  TYPE(section_vals_type), POINTER :: subsys_section
657 
658  CHARACTER(LEN=10) :: bas
659  CHARACTER(LEN=default_string_length) :: name, unit_str
660  INTEGER :: ikind, ipgf, iset, nkind, nset, &
661  output_unit
662  INTEGER, DIMENSION(:), POINTER :: npgf
663  REAL(kind=dp) :: conv, kind_radius, short_kind_radius
664  REAL(kind=dp), DIMENSION(:), POINTER :: set_radius
665  REAL(kind=dp), DIMENSION(:, :), POINTER :: pgf_radius
666  TYPE(cp_logger_type), POINTER :: logger
667  TYPE(gto_basis_set_type), POINTER :: aux_basis_set, lri_basis_set, &
668  orb_basis_set
669 
670  NULLIFY (logger)
671  logger => cp_get_default_logger()
672  NULLIFY (aux_basis_set, orb_basis_set, lri_basis_set)
673  bas = " "
674  bas(1:3) = basis(1:3)
675  CALL uppercase(bas)
676  IF (bas(1:3) == "ORB") THEN
677  bas = "ORBITAL "
678  ELSE IF (bas(1:3) == "AUX") THEN
679  bas = "AUXILLIARY"
680  ELSE IF (bas(1:3) == "LRI") THEN
681  bas = "LOCAL RI"
682  ELSE
683  cpabort("Undefined basis set type")
684  END IF
685 
686  nkind = SIZE(qs_kind_set)
687 
688 ! *** Print the kind radii ***
689  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
690  "PRINT%RADII/KIND_RADII", extension=".Log")
691  CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
692  conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
693  IF (output_unit > 0) THEN
694  WRITE (unit=output_unit, fmt="(/,T2,A,T46,A,T53,A,T63,A,T71,A)") &
695  "RADII: "//trim(bas)//" BASIS in "//trim(unit_str), &
696  "Kind", "Label", "Radius", "OCE Radius"
697  DO ikind = 1, nkind
698  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
699  IF (bas(1:3) == "ORB") THEN
700  CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
701  IF (ASSOCIATED(orb_basis_set)) THEN
702  CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
703  kind_radius=kind_radius, &
704  short_kind_radius=short_kind_radius)
705  END IF
706  ELSE IF (bas(1:3) == "AUX") THEN
707  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
708  IF (ASSOCIATED(aux_basis_set)) THEN
709  CALL get_gto_basis_set(gto_basis_set=aux_basis_set, &
710  kind_radius=kind_radius)
711  END IF
712  ELSE IF (bas(1:3) == "LOC") THEN
713  CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type="LRI_AUX")
714  IF (ASSOCIATED(lri_basis_set)) THEN
715  CALL get_gto_basis_set(gto_basis_set=lri_basis_set, &
716  kind_radius=kind_radius)
717  END IF
718  ELSE
719  cpabort("Undefined basis set type")
720  END IF
721  IF (ASSOCIATED(aux_basis_set) .OR. ASSOCIATED(orb_basis_set)) THEN
722  WRITE (unit=output_unit, fmt="(T45,I5,T53,A5,T57,F12.6,T69,F12.6)") &
723  ikind, name, kind_radius*conv, short_kind_radius*conv
724  ELSE
725  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T72,A9)") &
726  ikind, name, "no basis"
727  END IF
728  END DO
729  END IF
730  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
731  "PRINT%RADII/KIND_RADII")
732 
733 ! *** Print the shell set radii ***
734  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
735  "PRINT%RADII/SET_RADII", extension=".Log")
736  IF (output_unit > 0) THEN
737  WRITE (unit=output_unit, fmt="(/,T2,A,T51,A,T57,A,T65,A,T75,A)") &
738  "RADII: SHELL SETS OF "//trim(bas)//" BASIS in "// &
739  trim(unit_str), "Kind", "Label", "Set", "Radius"
740  DO ikind = 1, nkind
741  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
742  IF (bas(1:3) == "ORB") THEN
743  CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
744  IF (ASSOCIATED(orb_basis_set)) THEN
745  CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
746  nset=nset, &
747  set_radius=set_radius)
748  END IF
749  ELSE IF (bas(1:3) == "AUX") THEN
750  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
751  IF (ASSOCIATED(aux_basis_set)) THEN
752  CALL get_gto_basis_set(gto_basis_set=aux_basis_set, &
753  nset=nset, &
754  set_radius=set_radius)
755  END IF
756  ELSE IF (bas(1:3) == "LOC") THEN
757  CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type="LRI_AUX")
758  IF (ASSOCIATED(lri_basis_set)) THEN
759  CALL get_gto_basis_set(gto_basis_set=lri_basis_set, &
760  nset=nset, &
761  set_radius=set_radius)
762  END IF
763  ELSE
764  cpabort("Undefined basis set type")
765  END IF
766  IF (ASSOCIATED(aux_basis_set) .OR. ASSOCIATED(orb_basis_set)) THEN
767  WRITE (unit=output_unit, fmt="(T50,I5,T57,A5,(T63,I5,T69,F12.6))") &
768  ikind, name, (iset, set_radius(iset)*conv, iset=1, nset)
769  ELSE
770  WRITE (unit=output_unit, fmt="(T50,I5,T58,A5,T73,A8)") &
771  ikind, name, "no basis"
772  END IF
773  END DO
774  END IF
775  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
776  "PRINT%RADII/SET_RADII")
777 ! *** Print the primitive Gaussian function radii ***
778  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
779  "PRINT%RADII/PGF_RADII", extension=".Log")
780  IF (output_unit > 0) THEN
781  WRITE (unit=output_unit, fmt="(/,T2,A,T51,A,T57,A,T65,A,T75,A)") &
782  "RADII: PRIMITIVE GAUSSIANS OF "//trim(bas)//" BASIS in "// &
783  trim(unit_str), "Kind", "Label", "Set", "Radius"
784  DO ikind = 1, nkind
785  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
786  IF (bas(1:3) == "ORB") THEN
787  CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
788  IF (ASSOCIATED(orb_basis_set)) THEN
789  CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
790  nset=nset, &
791  npgf=npgf, &
792  pgf_radius=pgf_radius)
793  END IF
794  ELSE IF (bas(1:3) == "AUX") THEN
795  CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
796  IF (ASSOCIATED(aux_basis_set)) THEN
797  CALL get_gto_basis_set(gto_basis_set=aux_basis_set, &
798  nset=nset, &
799  npgf=npgf, &
800  pgf_radius=pgf_radius)
801  END IF
802  ELSE IF (bas(1:3) == "LOC") THEN
803  CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type="LRI_AUX")
804  IF (ASSOCIATED(lri_basis_set)) THEN
805  CALL get_gto_basis_set(gto_basis_set=lri_basis_set, &
806  nset=nset, &
807  npgf=npgf, &
808  pgf_radius=pgf_radius)
809  END IF
810  ELSE
811  cpabort("Undefined basis type")
812  END IF
813  IF (ASSOCIATED(aux_basis_set) .OR. ASSOCIATED(orb_basis_set) .OR. &
814  ASSOCIATED(lri_basis_set)) THEN
815  DO iset = 1, nset
816  WRITE (unit=output_unit, fmt="(T50,I5,T57,A5,T63,I5,(T69,F12.6))") &
817  ikind, name, iset, &
818  (pgf_radius(ipgf, iset)*conv, ipgf=1, npgf(iset))
819  END DO
820  ELSE
821  WRITE (unit=output_unit, fmt="(T50,I5,T58,A5,T73,A8)") &
822  ikind, name, "no basis"
823  END IF
824  END DO
825  END IF
826  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
827  "PRINT%RADII/PGF_RADII")
828  END SUBROUTINE write_pgf_orb_radii
829 
830 ! **************************************************************************************************
831 !> \brief Write the radii of the exponential functions of the Goedecker
832 !> pseudopotential (GTH, local part) to the logical unit number
833 !> "output_unit".
834 !> \param atomic_kind_set ...
835 !> \param qs_kind_set ...
836 !> \param subsys_section ...
837 !> \date 06.10.2000
838 !> \author MK
839 !> \version 1.0
840 ! **************************************************************************************************
841  SUBROUTINE write_ppl_radii(atomic_kind_set, qs_kind_set, subsys_section)
842 
843  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
844  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
845  TYPE(section_vals_type), POINTER :: subsys_section
846 
847  CHARACTER(LEN=default_string_length) :: name, unit_str
848  INTEGER :: ikind, nkind, output_unit
849  REAL(kind=dp) :: conv, ppl_radius
850  TYPE(cp_logger_type), POINTER :: logger
851  TYPE(gth_potential_type), POINTER :: gth_potential
852 
853  NULLIFY (logger)
854  logger => cp_get_default_logger()
855  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
856  "PRINT%RADII/PPL_RADII", extension=".Log")
857  CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
858  conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
859  IF (output_unit > 0) THEN
860  nkind = SIZE(atomic_kind_set)
861  WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
862  "RADII: LOCAL PART OF GTH/ELP PP in "// &
863  trim(unit_str), "Kind", "Label", "Radius"
864  DO ikind = 1, nkind
865  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
866  CALL get_qs_kind(qs_kind_set(ikind), gth_potential=gth_potential)
867  IF (ASSOCIATED(gth_potential)) THEN
868  CALL get_potential(potential=gth_potential, &
869  ppl_radius=ppl_radius)
870  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
871  ikind, name, ppl_radius*conv
872  END IF
873  END DO
874  END IF
875  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
876  "PRINT%RADII/PPL_RADII")
877  END SUBROUTINE write_ppl_radii
878 
879 ! **************************************************************************************************
880 !> \brief Write the radii of the projector functions of the Goedecker
881 !> pseudopotential (GTH, non-local part) to the logical unit number
882 !> "output_unit".
883 !> \param atomic_kind_set ...
884 !> \param qs_kind_set ...
885 !> \param subsys_section ...
886 !> \date 06.10.2000
887 !> \author MK
888 !> \version 1.0
889 ! **************************************************************************************************
890  SUBROUTINE write_ppnl_radii(atomic_kind_set, qs_kind_set, subsys_section)
891 
892  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
893  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
894  TYPE(section_vals_type), POINTER :: subsys_section
895 
896  CHARACTER(LEN=default_string_length) :: name, unit_str
897  INTEGER :: ikind, nkind, output_unit
898  REAL(kind=dp) :: conv, ppnl_radius
899  TYPE(cp_logger_type), POINTER :: logger
900  TYPE(gth_potential_type), POINTER :: gth_potential
901 
902  NULLIFY (logger)
903  logger => cp_get_default_logger()
904  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
905  "PRINT%RADII/PPNL_RADII", extension=".Log")
906  CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
907  conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
908  IF (output_unit > 0) THEN
909  nkind = SIZE(atomic_kind_set)
910  WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
911  "RADII: NON-LOCAL PART OF GTH PP in "// &
912  trim(unit_str), "Kind", "Label", "Radius"
913  DO ikind = 1, nkind
914  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
915  CALL get_qs_kind(qs_kind_set(ikind), gth_potential=gth_potential)
916  IF (ASSOCIATED(gth_potential)) THEN
917  CALL get_potential(potential=gth_potential, &
918  ppnl_radius=ppnl_radius)
919  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
920  ikind, name, ppnl_radius*conv
921  END IF
922  END DO
923  END IF
924  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
925  "PRINT%RADII/PPNL_RADII")
926  END SUBROUTINE write_ppnl_radii
927 
928 ! **************************************************************************************************
929 !> \brief Write the radii of the one center projector
930 !> \param atomic_kind_set ...
931 !> \param qs_kind_set ...
932 !> \param subsys_section ...
933 !> \version 1.0
934 ! **************************************************************************************************
935  SUBROUTINE write_paw_radii(atomic_kind_set, qs_kind_set, subsys_section)
936  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
937  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
938  TYPE(section_vals_type), POINTER :: subsys_section
939 
940  CHARACTER(LEN=default_string_length) :: name, unit_str
941  INTEGER :: ikind, nkind, output_unit
942  LOGICAL :: paw_atom
943  REAL(kind=dp) :: conv, rcprj
944  TYPE(cp_logger_type), POINTER :: logger
945  TYPE(paw_proj_set_type), POINTER :: paw_proj_set
946 
947  NULLIFY (logger)
948  logger => cp_get_default_logger()
949  output_unit = cp_print_key_unit_nr(logger, subsys_section, &
950  "PRINT%RADII/GAPW_PRJ_RADII", extension=".Log")
951  CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
952  conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
953  IF (output_unit > 0) THEN
954  nkind = SIZE(qs_kind_set)
955  WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
956  "RADII: ONE CENTER PROJECTORS in "// &
957  trim(unit_str), "Kind", "Label", "Radius"
958  DO ikind = 1, nkind
959  CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
960  CALL get_qs_kind(qs_kind_set(ikind), &
961  paw_atom=paw_atom, paw_proj_set=paw_proj_set)
962  IF (paw_atom .AND. ASSOCIATED(paw_proj_set)) THEN
963  CALL get_paw_proj_set(paw_proj_set=paw_proj_set, &
964  rcprj=rcprj)
965  WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
966  ikind, name, rcprj*conv
967  END IF
968  END DO
969  END IF
970  CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
971  "PRINT%RADII/GAPW_PRJ_RADII")
972  END SUBROUTINE write_paw_radii
973 
974 END MODULE qs_interactions
All kind of helpful little routines.
Definition: ao_util.F:14
real(kind=dp) function, public exp_radius(l, alpha, threshold, prefactor, epsabs, epsrel, rlow)
The radius of a primitive Gaussian function for a given threshold is calculated. g(r) = prefactor*r**...
Definition: ao_util.F:96
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
subroutine, public set_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, short_kind_radius)
Set the components of Gaussian-type orbital (GTO) basis set data set.
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)
...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
unit conversion facility
Definition: cp_units.F:30
real(kind=dp) function, public cp_unit_from_cp2k(value, unit_str, defaults, power)
converts from the internal cp2k units to the given unit
Definition: cp_units.F:1179
Definition of the atomic potential types.
objects that represent the structure of input sections and the data contained in an input section
subroutine, public section_vals_val_get(section_vals, keyword_name, i_rep_section, i_rep_val, n_rep_val, val, l_val, i_val, r_val, c_val, l_vals, i_vals, r_vals, c_vals, explicit)
returns the requested value
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
integer, parameter, public default_string_length
Definition: kinds.F:57
Calculate MAO's and analyze wavefunctions.
Definition: mao_basis.F:15
generate or use from input minimal basis set
Definition: min_basis_set.F:14
subroutine, public get_paw_proj_set(paw_proj_set, csprj, chprj, first_prj, first_prjs, last_prj, local_oce_sphi_h, local_oce_sphi_s, maxl, ncgauprj, nsgauprj, nsatbas, nsotot, nprj, o2nindex, n2oindex, rcprj, rzetprj, zisomin, zetprj)
Get informations about a paw projectors set.
subroutine, public set_paw_proj_set(paw_proj_set, rzetprj, rcprj)
Set informations about a paw projectors set.
Calculate the interaction radii for the operator matrix calculation.
subroutine, public write_pgf_orb_radii(basis, atomic_kind_set, qs_kind_set, subsys_section)
Write the orbital basis function radii to the output unit.
subroutine, public init_interaction_radii_orb_basis(orb_basis_set, eps_pgf_orb, eps_pgf_short)
...
subroutine, public write_paw_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the one center projector.
subroutine, public write_ppnl_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the projector functions of the Goedecker pseudopotential (GTH, non-local part) to ...
subroutine, public init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, subsys_section)
...
subroutine, public write_ppl_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the exponential functions of the Goedecker pseudopotential (GTH,...
subroutine, public init_interaction_radii(qs_control, qs_kind_set)
Initialize all the atomic kind radii for a given threshold value.
subroutine, public write_core_charge_radii(atomic_kind_set, qs_kind_set, subsys_section)
Write the radii of the core charge distributions to the output unit.
Define the quickstep kind type and their sub types.
Definition: qs_kind_types.F:23
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, 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_r3d_rs_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_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.