(git:d18deda)
Loading...
Searching...
No Matches
qs_interactions.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2025 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
39 USE kinds, ONLY: default_string_length,&
40 dp
44 USE qs_kind_types, ONLY: get_qs_kind,&
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
64CONTAINS
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, rhoin_basis, ri_aux_basis_set, ri_basis, ri_xas_basis, &
105 soft_basis, 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), basis_set=rhoin_basis, basis_type="RHOIN")
140 CALL get_qs_kind(qs_kind_set(ikind), &
141 paw_proj_set=paw_proj_set, &
142 paw_atom=paw_atom, &
143 all_potential=all_potential, &
144 gth_potential=gth_potential, &
145 sgp_potential=sgp_potential)
146
147 ! Calculate the orbital basis function radii ***
148 ! For ALL electron this has to come before the calculation of the
149 ! radii used to calculate the 3c lists.
150 ! Indeed, there the radii of the GTO primitives are needed
151 IF (ASSOCIATED(orb_basis_set)) THEN
152 CALL init_interaction_radii_orb_basis(orb_basis_set, qs_control%eps_pgf_orb, &
153 qs_control%eps_kg_orb)
154 END IF
155
156 IF (ASSOCIATED(all_potential)) THEN
157
158 CALL get_potential(potential=all_potential, &
159 alpha_core_charge=alpha_core_charge, &
160 ccore_charge=ccore_charge)
161
162 ! Calculate the radius of the core charge distribution
163
164 core_charge_radius = exp_radius(0, alpha_core_charge, &
165 qs_control%eps_core_charge, &
166 ccore_charge)
167
168 CALL set_potential(potential=all_potential, &
169 core_charge_radius=core_charge_radius)
170
171 ELSE IF (ASSOCIATED(gth_potential)) THEN
172
173 CALL get_potential(potential=gth_potential, &
174 alpha_core_charge=alpha_core_charge, &
175 ccore_charge=ccore_charge, &
176 alpha_ppl=alpha_ppl, &
177 cerf_ppl=cerf_ppl, &
178 nexp_ppl=nexp_ppl, &
179 cexp_ppl=cexp_ppl, &
180 lpot_present=lpot, &
181 lsd_present=llsd, &
182 lppnl=lppnl, &
183 alpha_ppnl=alpha_ppnl, &
184 nprj_ppnl=nprj_ppnl, &
185 cprj_ppnl=cprj_ppnl)
186
187 ! Calculate the radius of the core charge distribution
188 core_charge_radius = exp_radius(0, alpha_core_charge, &
189 qs_control%eps_core_charge, &
190 ccore_charge)
191
192 ! Calculate the radii of the local part
193 ! of the Goedecker pseudopotential (GTH)
194 ppl_radius = exp_radius(0, alpha_ppl, qs_control%eps_ppl, cerf_ppl)
195
196 DO iexp_ppl = 1, nexp_ppl
197 lppl = 2*(iexp_ppl - 1)
198 ppl_radius = max(ppl_radius, &
199 exp_radius(lppl, alpha_ppl, &
200 qs_control%eps_ppl, &
201 cexp_ppl(iexp_ppl), &
202 rlow=ppl_radius))
203 END DO
204 IF (lpot) THEN
205 ! extended local potential
206 CALL get_potential(potential=gth_potential, &
207 nexp_lpot=nexp_lpot, &
208 alpha_lpot=alpha_lpot, &
209 nct_lpot=nct_lpot, &
210 cval_lpot=cval_lpot)
211 DO j = 1, nexp_lpot
212 DO i = 1, nct_lpot(j)
213 lppl = 2*(i - 1)
214 ppl_radius = max(ppl_radius, &
215 exp_radius(lppl, alpha_lpot(j), qs_control%eps_ppl, &
216 cval_lpot(i, j), rlow=ppl_radius))
217 END DO
218 END DO
219 END IF
220 IF (llsd) THEN
221 ! lsd local potential
222 CALL get_potential(potential=gth_potential, &
223 nexp_lsd=nexp_lsd, &
224 alpha_lsd=alpha_lsd, &
225 nct_lsd=nct_lsd, &
226 cval_lsd=cval_lsd)
227 DO j = 1, nexp_lsd
228 DO i = 1, nct_lsd(j)
229 lppl = 2*(i - 1)
230 ppl_radius = max(ppl_radius, &
231 exp_radius(lppl, alpha_lsd(j), qs_control%eps_ppl, &
232 cval_lsd(i, j), rlow=ppl_radius))
233 END DO
234 END DO
235 END IF
236
237 ! Calculate the radii of the non-local part
238 ! of the Goedecker pseudopotential (GTH)
239 ppnl_radius = 0.0_dp
240 DO l = 0, lppnl
241 DO iprj_ppnl = 1, nprj_ppnl(l)
242 lprj_ppnl = l + 2*(iprj_ppnl - 1)
243 ppnl_radius = max(ppnl_radius, &
244 exp_radius(lprj_ppnl, alpha_ppnl(l), &
245 qs_control%eps_pgf_orb, &
246 cprj_ppnl(iprj_ppnl, l), &
247 rlow=ppnl_radius))
248 END DO
249 END DO
250 CALL set_potential(potential=gth_potential, &
251 core_charge_radius=core_charge_radius, &
252 ppl_radius=ppl_radius, &
253 ppnl_radius=ppnl_radius)
254
255 ELSE IF (ASSOCIATED(sgp_potential)) THEN
256
257 ! Calculate the radius of the core charge distribution
258 CALL get_potential(potential=sgp_potential, &
259 alpha_core_charge=alpha_core_charge, &
260 ccore_charge=ccore_charge)
261 core_charge_radius = exp_radius(0, alpha_core_charge, &
262 qs_control%eps_core_charge, &
263 ccore_charge)
264 ! Calculate the radii of the local part
265 ppl_radius = core_charge_radius
266 CALL get_potential(potential=sgp_potential, ecp_local=ecp_local)
267 IF (ecp_local) THEN
268 CALL get_potential(potential=sgp_potential, nloc=nloc, nrloc=nrloc, aloc=aloc, bloc=bloc)
269 DO i = 1, nloc
270 lppl = max(0, nrloc(i) - 2)
271 ppl_radius = max(ppl_radius, &
272 exp_radius(lppl, bloc(i), qs_control%eps_ppl, aloc(i), rlow=ppl_radius))
273 END DO
274 ELSE
275 CALL get_potential(potential=sgp_potential, n_local=n_local, a_local=a_local, c_local=c_local)
276 DO i = 1, n_local
277 ppl_radius = max(ppl_radius, &
278 exp_radius(0, a_local(i), qs_control%eps_ppl, c_local(i), rlow=ppl_radius))
279 END DO
280 END IF
281 ! Calculate the radii of the semi-local part
282 CALL get_potential(potential=sgp_potential, ecp_semi_local=ecp_semi_local)
283 IF (ecp_semi_local) THEN
284 CALL get_potential(potential=sgp_potential, sl_lmax=lppsl, npot=npot, nrpot=nrpot, &
285 apot=apot, bpot=bpot)
286 DO l = 0, lppsl
287 DO i = 1, npot(l)
288 lppl = max(0, nrpot(i, l) - 2)
289 ppl_radius = max(ppl_radius, &
290 exp_radius(lppl, bpot(i, l), qs_control%eps_ppl, apot(i, l), &
291 rlow=ppl_radius))
292 END DO
293 END DO
294 END IF
295 ! Calculate the radii of the non-local part
296 ppnl_radius = 0.0_dp
297 CALL get_potential(potential=sgp_potential, lmax=lppnl, n_nonlocal=nloc)
298 CALL get_potential(potential=sgp_potential, is_nonlocal=is_nonlocal, &
299 a_nonlocal=a_nonlocal, c_nonlocal=c_nonlocal)
300 DO l = 0, lppnl
301 IF (is_nonlocal(l)) THEN
302 DO i = 1, nloc
303 cval = maxval(abs(c_nonlocal(i, :, l)))
304 ppnl_radius = max(ppnl_radius, &
305 exp_radius(l, a_nonlocal(i), qs_control%eps_pgf_orb, cval, rlow=ppnl_radius))
306 END DO
307 END IF
308 END DO
309 CALL set_potential(potential=sgp_potential, &
310 core_charge_radius=core_charge_radius, &
311 ppl_radius=ppl_radius, &
312 ppnl_radius=ppnl_radius)
313 END IF
314
315 ! Calculate the aux fit orbital basis function radii
316 IF (ASSOCIATED(aux_fit_basis_set)) THEN
317 CALL init_interaction_radii_orb_basis(aux_fit_basis_set, qs_control%eps_pgf_orb, &
318 qs_control%eps_kg_orb)
319 END IF
320
321 ! Calculate the aux opt orbital basis function radii
322 IF (ASSOCIATED(aux_opt_basis_set)) THEN
323 CALL init_interaction_radii_orb_basis(aux_opt_basis_set, qs_control%eps_pgf_orb)
324 END IF
325
326 ! Calculate the minimal basis function radii
327 IF (ASSOCIATED(min_basis_set)) THEN
328 CALL init_interaction_radii_orb_basis(min_basis_set, qs_control%eps_pgf_orb)
329 END IF
330
331 ! Calculate the aux orbital basis function radii
332 IF (ASSOCIATED(aux_basis_set)) THEN
333 CALL init_interaction_radii_orb_basis(aux_basis_set, qs_control%eps_pgf_orb)
334 END IF
335
336 ! Calculate the RI aux orbital basis function radii
337 IF (ASSOCIATED(ri_aux_basis_set)) THEN
338 CALL init_interaction_radii_orb_basis(ri_aux_basis_set, qs_control%eps_pgf_orb)
339 END IF
340
341 ! Calculate the MAO orbital basis function radii
342 IF (ASSOCIATED(mao_basis)) THEN
343 CALL init_interaction_radii_orb_basis(mao_basis, qs_control%eps_pgf_orb)
344 END IF
345
346 ! Calculate the HARRIS orbital basis function radii
347 IF (ASSOCIATED(harris_basis)) THEN
348 CALL init_interaction_radii_orb_basis(harris_basis, qs_control%eps_pgf_orb)
349 END IF
350
351 ! Calculate the AUX_GW orbital basis function radii
352 IF (ASSOCIATED(aux_gw_basis)) THEN
353 CALL init_interaction_radii_orb_basis(aux_gw_basis, qs_control%eps_pgf_orb)
354 END IF
355
356 ! Calculate the soft orbital basis function radii
357 IF (ASSOCIATED(soft_basis)) THEN
358 CALL init_interaction_radii_orb_basis(soft_basis, qs_control%eps_pgf_orb)
359 END IF
360
361 ! Calculate the GAPW 1 center basis function radii
362 IF (ASSOCIATED(gapw_1c_basis)) THEN
363 CALL init_interaction_radii_orb_basis(gapw_1c_basis, qs_control%eps_pgf_orb)
364 END IF
365
366 ! Calculate the HFX SR basis for TDA
367 IF (ASSOCIATED(tda_k_basis)) THEN
368 CALL init_interaction_radii_orb_basis(tda_k_basis, qs_control%eps_pgf_orb)
369 END IF
370
371 ! Calculate the lri basis function radii
372 IF (ASSOCIATED(lri_basis)) THEN
373 CALL init_interaction_radii_orb_basis(lri_basis, qs_control%eps_pgf_orb)
374 END IF
375 IF (ASSOCIATED(ri_basis)) THEN
376 CALL init_interaction_radii_orb_basis(ri_basis, qs_control%eps_pgf_orb)
377 END IF
378 IF (ASSOCIATED(ri_xas_basis)) THEN
379 CALL init_interaction_radii_orb_basis(ri_xas_basis, qs_control%eps_pgf_orb)
380 END IF
381 IF (ASSOCIATED(p_lri_basis)) THEN
382 CALL init_interaction_radii_orb_basis(p_lri_basis, qs_control%eps_pgf_orb)
383 END IF
384
385 ! Calculate the density input basis function radii
386 IF (ASSOCIATED(rhoin_basis)) THEN
387 CALL init_interaction_radii_orb_basis(rhoin_basis, qs_control%eps_pgf_orb)
388 END IF
389
390 ! Calculate the paw projector basis function radii
391 IF (ASSOCIATED(paw_proj_set)) THEN
392 CALL get_paw_proj_set(paw_proj_set=paw_proj_set, &
393 nprj=nprj, &
394 maxl=maxl, &
395 zetprj=zet, &
396 rzetprj=rzetprj)
397 rcprj = 0.0_dp
398 rzetprj = 0.0_dp
399 DO lprj = 0, maxl
400 DO ip = 1, nprj(lprj)
401 zeta = zet(ip, lprj)
402 rzetprj(ip, lprj) = max(rzetprj(ip, lprj), &
403 exp_radius(lprj, zeta, qs_control%eps_pgf_orb, &
404 1.0_dp, rlow=rzetprj(ip, lprj)))
405 rcprj = max(rcprj, rzetprj(ip, lprj))
406 END DO
407 END DO
408 CALL set_paw_proj_set(paw_proj_set=paw_proj_set, &
409 rzetprj=rzetprj, &
410 rcprj=rcprj)
411
412 END IF
413 END DO ! ikind
414
415 CALL timestop(handle)
416
417 END SUBROUTINE init_interaction_radii
418
419! **************************************************************************************************
420!> \brief ...
421!> \param orb_basis_set ...
422!> \param eps_pgf_orb ...
423!> \param eps_pgf_short ...
424! **************************************************************************************************
425 SUBROUTINE init_interaction_radii_orb_basis(orb_basis_set, eps_pgf_orb, eps_pgf_short)
426
427 TYPE(gto_basis_set_type), POINTER :: orb_basis_set
428 REAL(kind=dp), INTENT(IN) :: eps_pgf_orb
429 REAL(kind=dp), INTENT(IN), OPTIONAL :: eps_pgf_short
430
431 INTEGER :: ipgf, iset, ishell, l, nset
432 INTEGER, DIMENSION(:), POINTER :: npgf, nshell
433 INTEGER, DIMENSION(:, :), POINTER :: lshell
434 REAL(kind=dp) :: eps_short, gcca, kind_radius, &
435 short_radius, zeta
436 REAL(kind=dp), DIMENSION(:), POINTER :: set_radius
437 REAL(kind=dp), DIMENSION(:, :), POINTER :: pgf_radius, zet
438 REAL(kind=dp), DIMENSION(:, :, :), POINTER :: gcc
439
440 IF (ASSOCIATED(orb_basis_set)) THEN
441
442 IF (PRESENT(eps_pgf_short)) THEN
443 eps_short = eps_pgf_short
444 ELSE
445 eps_short = eps_pgf_orb
446 END IF
447
448 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
449 nset=nset, &
450 nshell=nshell, &
451 npgf=npgf, &
452 l=lshell, &
453 zet=zet, &
454 gcc=gcc, &
455 pgf_radius=pgf_radius, &
456 set_radius=set_radius)
457
458 kind_radius = 0.0_dp
459 short_radius = 0.0_dp
460
461 DO iset = 1, nset
462 set_radius(iset) = 0.0_dp
463 DO ipgf = 1, npgf(iset)
464 pgf_radius(ipgf, iset) = 0.0_dp
465 DO ishell = 1, nshell(iset)
466 l = lshell(ishell, iset)
467 gcca = gcc(ipgf, ishell, iset)
468 zeta = zet(ipgf, iset)
469 pgf_radius(ipgf, iset) = max(pgf_radius(ipgf, iset), &
470 exp_radius(l, zeta, eps_pgf_orb, gcca, &
471 rlow=pgf_radius(ipgf, iset)))
472 short_radius = max(short_radius, &
473 exp_radius(l, zeta, eps_short, gcca, &
474 rlow=short_radius))
475 END DO
476 set_radius(iset) = max(set_radius(iset), pgf_radius(ipgf, iset))
477 END DO
478 kind_radius = max(kind_radius, set_radius(iset))
479 END DO
480
481 CALL set_gto_basis_set(gto_basis_set=orb_basis_set, &
482 pgf_radius=pgf_radius, &
483 set_radius=set_radius, &
484 kind_radius=kind_radius, &
485 short_kind_radius=short_radius)
486
487 END IF
488
490
491! **************************************************************************************************
492!> \brief ...
493!> \param se_control ...
494!> \param atomic_kind_set ...
495!> \param qs_kind_set ...
496!> \param subsys_section ...
497! **************************************************************************************************
498 SUBROUTINE init_se_nlradius(se_control, atomic_kind_set, qs_kind_set, &
499 subsys_section)
500
501 TYPE(semi_empirical_control_type), POINTER :: se_control
502 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
503 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
504 TYPE(section_vals_type), POINTER :: subsys_section
505
506 INTEGER :: ikind, nkind
507 REAL(kind=dp) :: kind_radius
508 TYPE(gto_basis_set_type), POINTER :: orb_basis_set
509 TYPE(qs_kind_type), POINTER :: qs_kind
510
511 NULLIFY (orb_basis_set, qs_kind)
512
513 nkind = SIZE(qs_kind_set)
514
515 DO ikind = 1, nkind
516
517 qs_kind => qs_kind_set(ikind)
518
519 CALL get_qs_kind(qs_kind=qs_kind, basis_set=orb_basis_set)
520
521 IF (ASSOCIATED(orb_basis_set)) THEN
522
523 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
524 kind_radius=kind_radius)
525
526 kind_radius = max(kind_radius, se_control%cutoff_exc)
527
528 CALL set_gto_basis_set(gto_basis_set=orb_basis_set, &
529 kind_radius=kind_radius)
530
531 END IF
532
533 END DO
534
535 CALL write_kind_radii(atomic_kind_set, qs_kind_set, subsys_section)
536
537 END SUBROUTINE init_se_nlradius
538
539! **************************************************************************************************
540!> \brief ...
541!> \param atomic_kind_set ...
542!> \param qs_kind_set ...
543!> \param subsys_section ...
544! **************************************************************************************************
545 SUBROUTINE write_kind_radii(atomic_kind_set, qs_kind_set, subsys_section)
546
547 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
548 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
549 TYPE(section_vals_type), POINTER :: subsys_section
550
551 CHARACTER(LEN=10) :: bas
552 CHARACTER(LEN=default_string_length) :: name, unit_str
553 INTEGER :: ikind, nkind, output_unit
554 REAL(kind=dp) :: conv, kind_radius
555 TYPE(cp_logger_type), POINTER :: logger
556 TYPE(gto_basis_set_type), POINTER :: orb_basis_set
557
558 NULLIFY (logger)
559 logger => cp_get_default_logger()
560 NULLIFY (orb_basis_set)
561 bas = "ORBITAL "
562
563 nkind = SIZE(atomic_kind_set)
564! *** Print the kind radii ***
565 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
566 "PRINT%RADII/KIND_RADII", extension=".Log")
567 CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
568 conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
569 IF (output_unit > 0) THEN
570 WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
571 "RADII: "//trim(bas)//" BASIS in "//trim(unit_str), &
572 "Kind", "Label", "Radius"
573 DO ikind = 1, nkind
574 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
575 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
576 IF (ASSOCIATED(orb_basis_set)) THEN
577 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
578 kind_radius=kind_radius)
579 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
580 ikind, name, kind_radius*conv
581 ELSE
582 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T72,A9)") &
583 ikind, name, "no basis"
584 END IF
585 END DO
586 END IF
587 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
588 "PRINT%RADII/KIND_RADII")
589
590 END SUBROUTINE write_kind_radii
591
592! **************************************************************************************************
593!> \brief Write the radii of the core charge distributions to the output
594!> unit.
595!> \param atomic_kind_set ...
596!> \param qs_kind_set ...
597!> \param subsys_section ...
598!> \date 15.09.2000
599!> \author MK
600!> \version 1.0
601! **************************************************************************************************
602 SUBROUTINE write_core_charge_radii(atomic_kind_set, qs_kind_set, subsys_section)
603 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
604 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
605 TYPE(section_vals_type), POINTER :: subsys_section
606
607 CHARACTER(LEN=default_string_length) :: name, unit_str
608 INTEGER :: ikind, nkind, output_unit
609 REAL(kind=dp) :: conv, core_charge_radius
610 TYPE(all_potential_type), POINTER :: all_potential
611 TYPE(cp_logger_type), POINTER :: logger
612 TYPE(gth_potential_type), POINTER :: gth_potential
613
614 NULLIFY (logger)
615 logger => cp_get_default_logger()
616 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
617 "PRINT%RADII/CORE_CHARGE_RADII", extension=".Log")
618 CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
619 conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
620 IF (output_unit > 0) THEN
621 nkind = SIZE(atomic_kind_set)
622 WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
623 "RADII: CORE CHARGE DISTRIBUTIONS in "// &
624 trim(unit_str), "Kind", "Label", "Radius"
625 DO ikind = 1, nkind
626 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
627 CALL get_qs_kind(qs_kind_set(ikind), &
628 all_potential=all_potential, gth_potential=gth_potential)
629
630 IF (ASSOCIATED(all_potential)) THEN
631 CALL get_potential(potential=all_potential, &
632 core_charge_radius=core_charge_radius)
633 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
634 ikind, name, core_charge_radius*conv
635 ELSE IF (ASSOCIATED(gth_potential)) THEN
636 CALL get_potential(potential=gth_potential, &
637 core_charge_radius=core_charge_radius)
638 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
639 ikind, name, core_charge_radius*conv
640 END IF
641 END DO
642 END IF
643 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
644 "PRINT%RADII/CORE_CHARGE_RADII")
645 END SUBROUTINE write_core_charge_radii
646
647! **************************************************************************************************
648!> \brief Write the orbital basis function radii to the output unit.
649!> \param basis ...
650!> \param atomic_kind_set ...
651!> \param qs_kind_set ...
652!> \param subsys_section ...
653!> \date 05.06.2000
654!> \author MK
655!> \version 1.0
656! **************************************************************************************************
657 SUBROUTINE write_pgf_orb_radii(basis, atomic_kind_set, qs_kind_set, subsys_section)
658
659 CHARACTER(len=*) :: basis
660 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
661 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
662 TYPE(section_vals_type), POINTER :: subsys_section
663
664 CHARACTER(LEN=10) :: bas
665 CHARACTER(LEN=default_string_length) :: name, unit_str
666 INTEGER :: ikind, ipgf, iset, nkind, nset, &
667 output_unit
668 INTEGER, DIMENSION(:), POINTER :: npgf
669 REAL(kind=dp) :: conv, kind_radius, short_kind_radius
670 REAL(kind=dp), DIMENSION(:), POINTER :: set_radius
671 REAL(kind=dp), DIMENSION(:, :), POINTER :: pgf_radius
672 TYPE(cp_logger_type), POINTER :: logger
673 TYPE(gto_basis_set_type), POINTER :: aux_basis_set, lri_basis_set, &
674 orb_basis_set
675
676 NULLIFY (logger)
677 logger => cp_get_default_logger()
678 NULLIFY (aux_basis_set, orb_basis_set, lri_basis_set)
679 bas = " "
680 bas(1:3) = basis(1:3)
681 CALL uppercase(bas)
682 IF (bas(1:3) == "ORB") THEN
683 bas = "ORBITAL "
684 ELSE IF (bas(1:3) == "AUX") THEN
685 bas = "AUXILLIARY"
686 ELSE IF (bas(1:3) == "LRI") THEN
687 bas = "LOCAL RI"
688 ELSE
689 cpabort("Undefined basis set type")
690 END IF
691
692 nkind = SIZE(qs_kind_set)
693
694! *** Print the kind radii ***
695 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
696 "PRINT%RADII/KIND_RADII", extension=".Log")
697 CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
698 conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
699 IF (output_unit > 0) THEN
700 WRITE (unit=output_unit, fmt="(/,T2,A,T46,A,T53,A,T63,A,T71,A)") &
701 "RADII: "//trim(bas)//" BASIS in "//trim(unit_str), &
702 "Kind", "Label", "Radius", "OCE Radius"
703 DO ikind = 1, nkind
704 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
705 IF (bas(1:3) == "ORB") THEN
706 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
707 IF (ASSOCIATED(orb_basis_set)) THEN
708 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
709 kind_radius=kind_radius, &
710 short_kind_radius=short_kind_radius)
711 END IF
712 ELSE IF (bas(1:3) == "AUX") THEN
713 CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
714 IF (ASSOCIATED(aux_basis_set)) THEN
715 CALL get_gto_basis_set(gto_basis_set=aux_basis_set, &
716 kind_radius=kind_radius)
717 END IF
718 ELSE IF (bas(1:3) == "LOC") THEN
719 CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type="LRI_AUX")
720 IF (ASSOCIATED(lri_basis_set)) THEN
721 CALL get_gto_basis_set(gto_basis_set=lri_basis_set, &
722 kind_radius=kind_radius)
723 END IF
724 ELSE
725 cpabort("Undefined basis set type")
726 END IF
727 IF (ASSOCIATED(aux_basis_set) .OR. ASSOCIATED(orb_basis_set)) THEN
728 WRITE (unit=output_unit, fmt="(T45,I5,T53,A5,T57,F12.6,T69,F12.6)") &
729 ikind, name, kind_radius*conv, short_kind_radius*conv
730 ELSE
731 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T72,A9)") &
732 ikind, name, "no basis"
733 END IF
734 END DO
735 END IF
736 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
737 "PRINT%RADII/KIND_RADII")
738
739! *** Print the shell set radii ***
740 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
741 "PRINT%RADII/SET_RADII", extension=".Log")
742 IF (output_unit > 0) THEN
743 WRITE (unit=output_unit, fmt="(/,T2,A,T51,A,T57,A,T65,A,T75,A)") &
744 "RADII: SHELL SETS OF "//trim(bas)//" BASIS in "// &
745 trim(unit_str), "Kind", "Label", "Set", "Radius"
746 DO ikind = 1, nkind
747 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
748 IF (bas(1:3) == "ORB") THEN
749 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
750 IF (ASSOCIATED(orb_basis_set)) THEN
751 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
752 nset=nset, &
753 set_radius=set_radius)
754 END IF
755 ELSE IF (bas(1:3) == "AUX") THEN
756 CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
757 IF (ASSOCIATED(aux_basis_set)) THEN
758 CALL get_gto_basis_set(gto_basis_set=aux_basis_set, &
759 nset=nset, &
760 set_radius=set_radius)
761 END IF
762 ELSE IF (bas(1:3) == "LOC") THEN
763 CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type="LRI_AUX")
764 IF (ASSOCIATED(lri_basis_set)) THEN
765 CALL get_gto_basis_set(gto_basis_set=lri_basis_set, &
766 nset=nset, &
767 set_radius=set_radius)
768 END IF
769 ELSE
770 cpabort("Undefined basis set type")
771 END IF
772 IF (ASSOCIATED(aux_basis_set) .OR. ASSOCIATED(orb_basis_set)) THEN
773 WRITE (unit=output_unit, fmt="(T50,I5,T57,A5,(T63,I5,T69,F12.6))") &
774 ikind, name, (iset, set_radius(iset)*conv, iset=1, nset)
775 ELSE
776 WRITE (unit=output_unit, fmt="(T50,I5,T58,A5,T73,A8)") &
777 ikind, name, "no basis"
778 END IF
779 END DO
780 END IF
781 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
782 "PRINT%RADII/SET_RADII")
783! *** Print the primitive Gaussian function radii ***
784 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
785 "PRINT%RADII/PGF_RADII", extension=".Log")
786 IF (output_unit > 0) THEN
787 WRITE (unit=output_unit, fmt="(/,T2,A,T51,A,T57,A,T65,A,T75,A)") &
788 "RADII: PRIMITIVE GAUSSIANS OF "//trim(bas)//" BASIS in "// &
789 trim(unit_str), "Kind", "Label", "Set", "Radius"
790 DO ikind = 1, nkind
791 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
792 IF (bas(1:3) == "ORB") THEN
793 CALL get_qs_kind(qs_kind_set(ikind), basis_set=orb_basis_set)
794 IF (ASSOCIATED(orb_basis_set)) THEN
795 CALL get_gto_basis_set(gto_basis_set=orb_basis_set, &
796 nset=nset, &
797 npgf=npgf, &
798 pgf_radius=pgf_radius)
799 END IF
800 ELSE IF (bas(1:3) == "AUX") THEN
801 CALL get_qs_kind(qs_kind_set(ikind), basis_set=aux_basis_set, basis_type="AUX")
802 IF (ASSOCIATED(aux_basis_set)) THEN
803 CALL get_gto_basis_set(gto_basis_set=aux_basis_set, &
804 nset=nset, &
805 npgf=npgf, &
806 pgf_radius=pgf_radius)
807 END IF
808 ELSE IF (bas(1:3) == "LOC") THEN
809 CALL get_qs_kind(qs_kind_set(ikind), basis_set=lri_basis_set, basis_type="LRI_AUX")
810 IF (ASSOCIATED(lri_basis_set)) THEN
811 CALL get_gto_basis_set(gto_basis_set=lri_basis_set, &
812 nset=nset, &
813 npgf=npgf, &
814 pgf_radius=pgf_radius)
815 END IF
816 ELSE
817 cpabort("Undefined basis type")
818 END IF
819 IF (ASSOCIATED(aux_basis_set) .OR. ASSOCIATED(orb_basis_set) .OR. &
820 ASSOCIATED(lri_basis_set)) THEN
821 DO iset = 1, nset
822 WRITE (unit=output_unit, fmt="(T50,I5,T57,A5,T63,I5,(T69,F12.6))") &
823 ikind, name, iset, &
824 (pgf_radius(ipgf, iset)*conv, ipgf=1, npgf(iset))
825 END DO
826 ELSE
827 WRITE (unit=output_unit, fmt="(T50,I5,T58,A5,T73,A8)") &
828 ikind, name, "no basis"
829 END IF
830 END DO
831 END IF
832 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
833 "PRINT%RADII/PGF_RADII")
834 END SUBROUTINE write_pgf_orb_radii
835
836! **************************************************************************************************
837!> \brief Write the radii of the exponential functions of the Goedecker
838!> pseudopotential (GTH, local part) to the logical unit number
839!> "output_unit".
840!> \param atomic_kind_set ...
841!> \param qs_kind_set ...
842!> \param subsys_section ...
843!> \date 06.10.2000
844!> \author MK
845!> \version 1.0
846! **************************************************************************************************
847 SUBROUTINE write_ppl_radii(atomic_kind_set, qs_kind_set, subsys_section)
848
849 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
850 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
851 TYPE(section_vals_type), POINTER :: subsys_section
852
853 CHARACTER(LEN=default_string_length) :: name, unit_str
854 INTEGER :: ikind, nkind, output_unit
855 REAL(kind=dp) :: conv, ppl_radius
856 TYPE(cp_logger_type), POINTER :: logger
857 TYPE(gth_potential_type), POINTER :: gth_potential
858
859 NULLIFY (logger)
860 logger => cp_get_default_logger()
861 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
862 "PRINT%RADII/PPL_RADII", extension=".Log")
863 CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
864 conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
865 IF (output_unit > 0) THEN
866 nkind = SIZE(atomic_kind_set)
867 WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
868 "RADII: LOCAL PART OF GTH/ELP PP in "// &
869 trim(unit_str), "Kind", "Label", "Radius"
870 DO ikind = 1, nkind
871 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
872 CALL get_qs_kind(qs_kind_set(ikind), gth_potential=gth_potential)
873 IF (ASSOCIATED(gth_potential)) THEN
874 CALL get_potential(potential=gth_potential, &
875 ppl_radius=ppl_radius)
876 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
877 ikind, name, ppl_radius*conv
878 END IF
879 END DO
880 END IF
881 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
882 "PRINT%RADII/PPL_RADII")
883 END SUBROUTINE write_ppl_radii
884
885! **************************************************************************************************
886!> \brief Write the radii of the projector functions of the Goedecker
887!> pseudopotential (GTH, non-local part) to the logical unit number
888!> "output_unit".
889!> \param atomic_kind_set ...
890!> \param qs_kind_set ...
891!> \param subsys_section ...
892!> \date 06.10.2000
893!> \author MK
894!> \version 1.0
895! **************************************************************************************************
896 SUBROUTINE write_ppnl_radii(atomic_kind_set, qs_kind_set, subsys_section)
897
898 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
899 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
900 TYPE(section_vals_type), POINTER :: subsys_section
901
902 CHARACTER(LEN=default_string_length) :: name, unit_str
903 INTEGER :: ikind, nkind, output_unit
904 REAL(kind=dp) :: conv, ppnl_radius
905 TYPE(cp_logger_type), POINTER :: logger
906 TYPE(gth_potential_type), POINTER :: gth_potential
907
908 NULLIFY (logger)
909 logger => cp_get_default_logger()
910 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
911 "PRINT%RADII/PPNL_RADII", extension=".Log")
912 CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
913 conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
914 IF (output_unit > 0) THEN
915 nkind = SIZE(atomic_kind_set)
916 WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
917 "RADII: NON-LOCAL PART OF GTH PP in "// &
918 trim(unit_str), "Kind", "Label", "Radius"
919 DO ikind = 1, nkind
920 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
921 CALL get_qs_kind(qs_kind_set(ikind), gth_potential=gth_potential)
922 IF (ASSOCIATED(gth_potential)) THEN
923 CALL get_potential(potential=gth_potential, &
924 ppnl_radius=ppnl_radius)
925 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
926 ikind, name, ppnl_radius*conv
927 END IF
928 END DO
929 END IF
930 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
931 "PRINT%RADII/PPNL_RADII")
932 END SUBROUTINE write_ppnl_radii
933
934! **************************************************************************************************
935!> \brief Write the radii of the one center projector
936!> \param atomic_kind_set ...
937!> \param qs_kind_set ...
938!> \param subsys_section ...
939!> \version 1.0
940! **************************************************************************************************
941 SUBROUTINE write_paw_radii(atomic_kind_set, qs_kind_set, subsys_section)
942 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
943 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
944 TYPE(section_vals_type), POINTER :: subsys_section
945
946 CHARACTER(LEN=default_string_length) :: name, unit_str
947 INTEGER :: ikind, nkind, output_unit
948 LOGICAL :: paw_atom
949 REAL(kind=dp) :: conv, rcprj
950 TYPE(cp_logger_type), POINTER :: logger
951 TYPE(paw_proj_set_type), POINTER :: paw_proj_set
952
953 NULLIFY (logger)
954 logger => cp_get_default_logger()
955 output_unit = cp_print_key_unit_nr(logger, subsys_section, &
956 "PRINT%RADII/GAPW_PRJ_RADII", extension=".Log")
957 CALL section_vals_val_get(subsys_section, "PRINT%RADII%UNIT", c_val=unit_str)
958 conv = cp_unit_from_cp2k(1.0_dp, trim(unit_str))
959 IF (output_unit > 0) THEN
960 nkind = SIZE(qs_kind_set)
961 WRITE (unit=output_unit, fmt="(/,T2,A,T56,A,T63,A,T75,A)") &
962 "RADII: ONE CENTER PROJECTORS in "// &
963 trim(unit_str), "Kind", "Label", "Radius"
964 DO ikind = 1, nkind
965 CALL get_atomic_kind(atomic_kind_set(ikind), name=name)
966 CALL get_qs_kind(qs_kind_set(ikind), &
967 paw_atom=paw_atom, paw_proj_set=paw_proj_set)
968 IF (paw_atom .AND. ASSOCIATED(paw_proj_set)) THEN
969 CALL get_paw_proj_set(paw_proj_set=paw_proj_set, &
970 rcprj=rcprj)
971 WRITE (unit=output_unit, fmt="(T55,I5,T63,A5,T69,F12.6)") &
972 ikind, name, rcprj*conv
973 END IF
974 END DO
975 END IF
976 CALL cp_print_key_finished_output(output_unit, logger, subsys_section, &
977 "PRINT%RADII/GAPW_PRJ_RADII")
978 END SUBROUTINE write_paw_radii
979
980END 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 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 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.
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
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.
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, 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.
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
Provides all information about an atomic kind.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Provides all information about a quickstep kind.