35#include "./base/base_uses.f90"
41 INTEGER,
PARAMETER,
PRIVATE :: nelem = 106
52 INTEGER,
DIMENSION(0:nelem), &
53 PARAMETER,
PRIVATE :: zval = [-1, &
55 1, 2, 3, 4, 5, 6, 7, 8, &
56 1, 2, 3, 4, 5, 6, 7, 8, &
57 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 3, 4, 5, 6, 7, 8, &
58 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 3, 4, 5, 6, 7, 8, &
59 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, &
60 4, 5, 6, 7, 8, 9, 10, 11, 2, 3, 4, 5, 6, 7, 8, &
61 -1, -1, -1, 4, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
66 REAL(KIND=
dp),
DIMENSION(0:nelem), &
67 PARAMETER,
PRIVATE :: eneg = [0.00_dp, &
69 0.98_dp, 1.57_dp, 2.04_dp, 2.55_dp, 3.04_dp, 3.44_dp, 3.98_dp, 4.50_dp, &
70 0.93_dp, 1.31_dp, 1.61_dp, 1.90_dp, 2.19_dp, 2.58_dp, 3.16_dp, 3.50_dp, &
71 0.82_dp, 1.00_dp, 1.36_dp, 1.54_dp, 1.63_dp, 1.66_dp, 1.55_dp, 1.83_dp, &
72 1.88_dp, 1.91_dp, 1.90_dp, 1.65_dp, 1.81_dp, 2.01_dp, 2.18_dp, 2.55_dp, &
74 0.82_dp, 0.95_dp, 1.22_dp, 1.33_dp, 1.60_dp, 2.16_dp, 1.90_dp, 2.20_dp, &
75 2.28_dp, 2.20_dp, 1.93_dp, 1.69_dp, 1.78_dp, 1.96_dp, 2.05_dp, 2.10_dp, &
77 0.79_dp, 0.89_dp, 1.10_dp, &
78 1.12_dp, 1.13_dp, 1.14_dp, 1.15_dp, 1.17_dp, 1.18_dp, 1.20_dp, 1.21_dp, &
79 1.22_dp, 1.23_dp, 1.24_dp, 1.25_dp, 1.26_dp, 1.27_dp, &
80 1.30_dp, 1.50_dp, 2.36_dp, 1.90_dp, 2.20_dp, 2.20_dp, 2.28_dp, 2.54_dp, &
81 2.00_dp, 2.04_dp, 2.33_dp, 2.02_dp, 2.00_dp, 2.20_dp, 2.20_dp, &
82 0.70_dp, 0.89_dp, 1.10_dp, &
83 1.30_dp, 1.50_dp, 1.38_dp, 1.36_dp, 1.28_dp, 1.30_dp, 1.30_dp, 1.30_dp, &
84 1.30_dp, 1.30_dp, 1.30_dp, 1.30_dp, 1.30_dp, 1.50_dp, &
85 1.50_dp, 1.50_dp, 1.50_dp]
90 INTEGER,
DIMENSION(1:5, 0:nelem) :: occupation = reshape([0,0,0,0,0, &
91 1,0,0,0,0, 2,0,0,0,0, &
92 1,0,0,0,0, 2,0,0,0,0, 2,1,0,0,0, 2,2,0,0,0, 2,3,0,0,0, 2,4,0,0,0, 2,5,0,0,0, 2,6,0,0,0, &
93 1,0,0,0,0, 2,0,0,0,0, 2,1,0,0,0, 2,2,0,0,0, 2,3,0,0,0, 2,4,0,0,0, 2,5,0,0,0, 2,6,0,0,0, &
94 1,0,0,0,0, 2,0,0,0,0, 2,0,1,0,0, 2,0,2,0,0, 2,0,3,0,0, 2,0,4,0,0, 2,0,5,0,0, 2,0,6,0,0, &
95 2,0,7,0,0, 2,0,8,0,0, 2,0,9,0,0, 2,0,0,0,0, 2,1,0,0,0, 2,2,0,0,0, 2,3,0,0,0, 2,4,0,0,0, 2,5,0,0,0, 2,6,0,0,0, &
96 1,0,0,0,0, 2,0,0,0,0, 2,0,1,0,0, 2,0,2,0,0, 2,0,3,0,0, 2,0,4,0,0, 2,0,5,0,0, 2,0,6,0,0, &
97 2,0,7,0,0, 2,0,8,0,0, 2,0,9,0,0, 2,0,0,0,0, 2,1,0,0,0, 2,2,0,0,0, 2,3,0,0,0, 2,4,0,0,0, 2,5,0,0,0, 2,6,0,0,0, &
98 1,0,0,0,0, 2,0,0,0,0, 2,0,1,0,0, &
99 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, &
100 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, 2,0,1,0,0, &
101 2,0,2,0,0, 2,0,3,0,0, 2,0,4,0,0, 2,0,5,0,0, 2,0,6,0,0, 2,0,7,0,0, 2,0,8,0,0, 2,0,9,0,0, &
102 2,0,0,0,0, 2,1,0,0,0, 2,2,0,0,0, 2,3,0,0,0, 2,4,0,0,0, 2,5,0,0,0, 2,6,0,0,0, &
103 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, &
104 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, &
105 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, &
106 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0], [5, nelem+1])
115 REAL(KIND=
dp),
DIMENSION(0:nelem), &
116 PARAMETER,
PRIVATE :: crad = [0.00_dp, &
118 1.30_dp, 0.99_dp, 0.84_dp, 0.75_dp, 0.71_dp, 0.64_dp, 0.60_dp, 0.62_dp, &
119 1.60_dp, 1.40_dp, 1.24_dp, 1.14_dp, 1.09_dp, 1.04_dp, 1.00_dp, 1.01_dp, &
120 2.00_dp, 1.74_dp, 1.59_dp, 1.48_dp, 1.44_dp, 1.30_dp, 1.29_dp, 1.24_dp, &
121 1.18_dp, 1.17_dp, 1.22_dp, 1.20_dp, 1.23_dp, 1.20_dp, 1.20_dp, 1.18_dp, &
123 2.15_dp, 1.90_dp, 1.76_dp, 1.64_dp, 1.56_dp, 1.46_dp, 1.38_dp, 1.36_dp, &
124 1.34_dp, 1.30_dp, 1.36_dp, 1.40_dp, 1.42_dp, 1.40_dp, 1.40_dp, 1.37_dp, &
126 2.38_dp, 2.06_dp, 1.94_dp, &
127 1.84_dp, 1.90_dp, 1.88_dp, 1.86_dp, 1.85_dp, 1.83_dp, 1.82_dp, 1.81_dp, &
128 1.80_dp, 1.79_dp, 1.77_dp, 1.77_dp, 1.78_dp, 1.74_dp, &
129 1.64_dp, 1.58_dp, 1.50_dp, 1.41_dp, 1.36_dp, 1.32_dp, 1.30_dp, 1.30_dp, &
130 1.32_dp, 1.44_dp, 1.45_dp, 1.50_dp, 1.42_dp, 1.48_dp, 1.46_dp, &
131 2.42_dp, 2.11_dp, 2.01_dp, &
132 1.90_dp, 1.84_dp, 1.83_dp, 1.80_dp, 1.80_dp, 1.51_dp, 0.96_dp, 1.54_dp, &
133 1.83_dp, 1.50_dp, 1.50_dp, 1.50_dp, 1.50_dp, 1.50_dp, &
134 1.50_dp, 1.50_dp, 1.50_dp]
139 REAL(KIND=
dp),
DIMENSION(0:nelem), &
140 PARAMETER,
PRIVATE :: clmt = [0.00_dp, &
142 1.05_dp, 2.05_dp, 3.00_dp, 4.00_dp, 3.00_dp, 2.00_dp, 1.25_dp, 1.00_dp, &
143 1.05_dp, 2.05_dp, 3.00_dp, 4.00_dp, 3.00_dp, 2.00_dp, 1.25_dp, 1.00_dp, &
144 1.05_dp, 2.05_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, &
145 3.50_dp, 3.50_dp, 3.50_dp, 2.50_dp, 2.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, &
147 1.05_dp, 2.05_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, &
148 3.50_dp, 3.50_dp, 3.50_dp, 2.50_dp, 2.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, &
150 1.05_dp, 2.05_dp, 3.00_dp, &
151 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
152 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
153 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, &
154 2.50_dp, 2.50_dp, 3.50_dp, 3.50_dp, 3.50_dp, 1.25_dp, 1.00_dp, &
155 1.05_dp, 2.05_dp, 3.00_dp, &
156 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
157 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, 3.00_dp, &
158 3.00_dp, 3.00_dp, 3.00_dp]
163 INTEGER,
PARAMETER :: number_of_primitives(1:3, 1:nelem) = reshape([&
164 & 4, 3, 0, 4, 0, 0, 6, 6, 0, 6, 6, 0, 6, 6, 0, 6, 6, 0, 6, 6, 0, &
165 & 6, 6, 0, 6, 6, 0, 6, 6, 4, 6, 6, 0, 6, 6, 0, 6, 6, 4, 6, 6, 4, &
166 & 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 0, 6, 6, 4, 4, 6, 6, &
167 & 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, &
168 & 4, 6, 6, 6, 6, 0, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, &
169 & 6, 6, 4, 6, 6, 0, 6, 6, 4, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, &
170 & 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 6, 6, 0, 6, 6, 4, &
171 & 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 0, 6, 6, 4, &
172 & 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, &
173 & 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, &
174 & 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, &
175 & 4, 6, 6, 4, 6, 6, 6, 6, 0, 6, 6, 0, 6, 6, 0, 6, 6, 0, 6, 6, 4, &
176 & 6, 6, 4, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, &
177 & 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, &
178 & 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, &
185 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'xtb_parameters'
205 parameter_file_path, parameter_file_name, &
209 INTEGER,
INTENT(IN) :: gfn_type
210 CHARACTER(LEN=2),
INTENT(IN) :: element_symbol
211 CHARACTER(LEN=*),
INTENT(IN) :: parameter_file_path, parameter_file_name
214 SELECT CASE (gfn_type)
216 CALL xtb0_parameters_init(param, element_symbol, parameter_file_path, &
217 parameter_file_name, para_env)
219 CALL xtb1_parameters_init(param, element_symbol, parameter_file_path, &
220 parameter_file_name, para_env)
222 cpabort(
"gfn_type = 2 not yet supported")
224 cpabort(
"Wrong gfn_type")
237 SUBROUTINE xtb0_parameters_init(param, element_symbol, parameter_file_path, parameter_file_name, &
241 CHARACTER(LEN=2),
INTENT(IN) :: element_symbol
242 CHARACTER(LEN=*),
INTENT(IN) :: parameter_file_path, parameter_file_name
245 CHARACTER(len=2) :: esym
246 CHARACTER(len=default_string_length) :: aname, atag, filename
247 INTEGER :: i, l, zin, znum
248 LOGICAL :: at_end, found
251 filename = adjustl(trim(parameter_file_path))//adjustl(trim(parameter_file_name))
252 CALL parser_create(parser, filename, apply_preprocessing=.false., para_env=para_env)
262 IF (aname ==
"$Z")
THEN
264 IF (zin == znum)
THEN
269 cpabort(
"Incomplete xTB parameter file")
276 CALL xtb_get_shells(atag, param%nshell, param%nval, param%lval)
278 DO i = 1, param%nshell
282 DO i = 1, param%nshell
293 param%kcn(1) = param%kcn(1)*0.1_dp
296 param%kcn(2) = param%kcn(2)*0.1_dp
299 param%kcn(3) = param%kcn(3)*0.1_dp
325 cpabort(
"Unknown parameter in xTB file")
335 param%typ =
"STANDARD"
336 param%symbol = element_symbol
337 param%defined = .true.
339 param%aname =
ptable(znum)%name
340 param%lmax = maxval(param%lval(1:param%nshell))
342 DO i = 1, param%nshell
344 param%natorb = param%natorb + (2*l + 1)
346 param%zeff = zval(znum)
348 esym = element_symbol
350 IF (
"X " == esym)
THEN
352 param%symbol = element_symbol
353 param%defined = .false.
361 param%defined = .false.
362 CALL cp_warn(__location__,
"xTB parameters for element "//element_symbol// &
363 " were not found in the parameter file "//adjustl(trim(filename)))
368 END SUBROUTINE xtb0_parameters_init
378 SUBROUTINE xtb1_parameters_init(param, element_symbol, parameter_file_path, parameter_file_name, &
382 CHARACTER(LEN=2),
INTENT(IN) :: element_symbol
383 CHARACTER(LEN=*),
INTENT(IN) :: parameter_file_path, parameter_file_name
386 CHARACTER(len=2) :: esym
387 CHARACTER(len=default_string_length) :: aname, atag, filename
388 INTEGER :: i, l, zin, znum
389 LOGICAL :: at_end, found
392 filename = adjustl(trim(parameter_file_path))//adjustl(trim(parameter_file_name))
393 CALL parser_create(parser, filename, apply_preprocessing=.false., para_env=para_env)
403 IF (aname ==
"$Z")
THEN
405 IF (zin == znum)
THEN
410 cpabort(
"Incomplete xTB parameter file")
417 CALL xtb_get_shells(atag, param%nshell, param%nval, param%lval)
419 DO i = 1, param%nshell
423 DO i = 1, param%nshell
449 cpabort(
"Unknown parameter in xTB file")
459 param%typ =
"STANDARD"
460 param%symbol = element_symbol
461 param%defined = .true.
463 param%aname =
ptable(znum)%name
464 param%lmax = maxval(param%lval(1:param%nshell))
466 DO i = 1, param%nshell
468 param%natorb = param%natorb + (2*l + 1)
470 param%zeff = zval(znum)
472 esym = element_symbol
474 IF (
"X " == esym)
THEN
476 param%symbol = element_symbol
477 param%defined = .false.
485 param%defined = .false.
486 CALL cp_warn(__location__,
"xTB parameters for element "//element_symbol// &
487 " were not found in the parameter file "//adjustl(trim(filename)))
492 END SUBROUTINE xtb1_parameters_init
503 SUBROUTINE xtb_spinpol_init(param, gfn_type, element_symbol, parameter_file_path, spinpol_param_file_name, &
507 INTEGER,
INTENT(IN) :: gfn_type
508 CHARACTER(LEN=2),
INTENT(IN) :: element_symbol
509 CHARACTER(LEN=*),
INTENT(IN) :: parameter_file_path, &
510 spinpol_param_file_name
513 CHARACTER(len=default_string_length) :: filename
518 SELECT CASE (gfn_type)
520 cpabort(
"gfn_type = 0: No spin polarisation possible!")
524 cpabort(
"gfn_type = 2 not yet supported")
526 cpabort(
"Wrong gfn_type")
529 filename = adjustl(trim(parameter_file_path))//adjustl(trim(spinpol_param_file_name))
530 CALL parser_create(parser, filename, apply_preprocessing=.false., para_env=para_env)
539 IF (zin == znum)
THEN
546 param%wall(2, 1) = param%wall(1, 2)
547 param%wall(3, 1) = param%wall(1, 3)
548 param%wall(3, 2) = param%wall(2, 3)
563 INTEGER,
INTENT(IN) :: gfn_type
568 SELECT CASE (gfn_type)
570 cpabort(
"gfn_type = 0: No spin polarisation possible!")
574 cpabort(
"gfn_type = 2 not yet supported")
576 cpabort(
"Wrong gfn_type")
579 IF (param%defined)
THEN
580 IF (
ASSOCIATED(xtb_control%spinpol_type))
THEN
581 DO i = 1,
SIZE(xtb_control%spinpol_type)
582 IF (xtb_control%spinpol_type(i) == param%z)
THEN
583 param%wall(1, 1) = xtb_control%spinpol_vals(1, i)
584 param%wall(1, 2) = xtb_control%spinpol_vals(2, i)
585 param%wall(2, 2) = xtb_control%spinpol_vals(3, i)
586 param%wall(1, 3) = xtb_control%spinpol_vals(4, i)
587 param%wall(2, 3) = xtb_control%spinpol_vals(5, i)
588 param%wall(3, 3) = xtb_control%spinpol_vals(6, i)
589 param%wall(2, 1) = param%wall(1, 2)
590 param%wall(3, 1) = param%wall(1, 3)
591 param%wall(3, 2) = param%wall(2, 3)
608 INTEGER :: i, is, l, na
609 REAL(kind=
dp),
DIMENSION(5) :: kp
611 IF (param%defined)
THEN
615 DO is = 1, param%nshell
626 param%electronegativity = eneg(i)
627 IF (param%en == 0.0_dp) param%en = eneg(i)
629 param%rcov = crad(i)*
bohr
631 param%occupation(:) = occupation(:, i)
634 param%ngauss(1:3) = number_of_primitives(:, i)
636 IF (abs(param%zeff - sum(param%occupation)) > 1.e-10_dp)
THEN
637 CALL cp_abort(__location__,
"Element <"//trim(param%aname)//
"> has inconsistent shell occupations")
640 param%hen = param%hen/
evolt
642 param%xgamma = 0.1_dp*param%xgamma
643 param%kpoly(:) = 0.01_dp*param%kpoly(:)
644 param%kappa(:) = 0.1_dp*param%kappa(:)
646 param%xgamma = -2.0_dp*param%xgamma
648 kp(:) = param%kpoly(:)
649 param%kpoly(:) = 0.0_dp
650 DO is = 1, param%nshell
652 param%kpoly(is) = kp(l + 1)
655 param%kx = 0.1_dp*param%kx
656 IF (param%kx < -5._dp)
THEN
658 SELECT CASE (param%z)
662 param%kx = 0.1_dp*0.381742_dp
664 param%kx = 0.1_dp*0.321944_dp
666 param%kx = 0.1_dp*0.220000_dp
670 param%chmax = clmt(i)
686 INTEGER,
INTENT(IN) :: ngauss
687 INTEGER,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: ngaussflex
689 CHARACTER(LEN=6),
DIMENSION(:),
POINTER :: symbol
691 INTEGER,
DIMENSION(:),
POINTER :: lq, nq
692 REAL(kind=
dp),
DIMENSION(:),
POINTER :: zet
695 IF (
ASSOCIATED(param))
THEN
696 IF (param%defined)
THEN
697 NULLIFY (sto_basis_set)
699 nshell = param%nshell
701 ALLOCATE (symbol(1:nshell))
704 SELECT CASE (param%lval(i))
706 WRITE (symbol(i),
'(I1,A1)') param%nval(i),
"S"
708 WRITE (symbol(i),
'(I1,A1)') param%nval(i),
"P"
710 WRITE (symbol(i),
'(I1,A1)') param%nval(i),
"D"
712 WRITE (symbol(i),
'(I1,A1)') param%nval(i),
"F"
714 cpabort(
'BASIS SET OUT OF RANGE (lval)')
719 ALLOCATE (nq(nshell), lq(nshell), zet(nshell))
720 nq(1:nshell) = param%nval(1:nshell)
721 lq(1:nshell) = param%lval(1:nshell)
722 zet(1:nshell) = param%zeta(1:nshell)
723 CALL set_sto_basis_set(sto_basis_set, name=param%aname, nshell=nshell, symbol=symbol, &
724 nq=nq, lq=lq, zet=zet)
725 IF (
PRESENT(ngaussflex))
THEN
727 ngaussflex=ngaussflex)
735 DEALLOCATE (symbol, nq, lq, zet)
739 cpabort(
"The pointer param is not associated")
753 INTEGER,
INTENT(IN) :: za, zb
763 IF (xtb_control%kab_nval > 0)
THEN
764 DO j = 1, xtb_control%kab_nval
765 IF ((za == xtb_control%kab_types(1, j) .AND. &
766 zb == xtb_control%kab_types(2, j)) .OR. &
767 (za == xtb_control%kab_types(2, j) .AND. &
768 zb == xtb_control%kab_types(1, j)))
THEN
770 kab = xtb_control%kab_vals(j)
776 IF (.NOT. custom)
THEN
777 IF (za == 1 .OR. zb == 1)
THEN
794 ELSE IF (za == 5 .OR. zb == 5)
THEN
801 ELSE IF (za == 7 .OR. zb == 7)
THEN
810 ELSE IF (za > 20 .AND. za < 30)
THEN
812 IF (zb > 20 .AND. zb < 30)
THEN
815 ELSE IF ((zb > 38 .AND. zb < 48) .OR. (zb > 56 .AND. zb < 80))
THEN
817 kab = 0.50_dp*(1.20_dp + 1.10_dp)
819 ELSE IF ((za > 38 .AND. za < 48) .OR. (za > 56 .AND. za < 80))
THEN
821 IF (zb > 20 .AND. zb < 30)
THEN
823 kab = 0.50_dp*(1.20_dp + 1.10_dp)
824 ELSE IF ((zb > 38 .AND. zb < 48) .OR. (zb > 56 .AND. zb < 80))
THEN
841 SUBROUTINE xtb_get_shells(atag, nshell, nval, lval)
842 CHARACTER(len=*) :: atag
844 INTEGER,
DIMENSION(:) :: nval, lval
846 CHARACTER(LEN=1) :: ltag
847 CHARACTER(LEN=10) :: aotag
850 aotag = adjustl(trim(atag))
851 nshell = len(trim(aotag))/2
854 READ (aotag(j:j), fmt=
"(i1)") nval(i)
855 READ (aotag(j + 1:j + 1), fmt=
"(A1)") ltag
868 END SUBROUTINE xtb_get_shells
882 CASE (1:2, 6:10, 14:18, 32:36, 50:54, 82:86)
898 IF (z >= 21 .AND. z <= 24) isearly3d = .true.
910 REAL(kind=
dp) :: pparm
913 IF ((za > 20 .AND. za < 30) .OR. (za > 38 .AND. za < 48) .OR. (za > 56 .AND. za < 80))
THEN
914 IF ((zb > 20 .AND. zb < 30) .OR. (zb > 38 .AND. zb < 48) .OR. (zb > 56 .AND. zb < 80))
THEN
916 IF (za == 29 .OR. za == 47 .OR. za == 79)
THEN
917 IF (za == 29 .OR. za == 47 .OR. za == 79)
THEN
subroutine, public create_gto_from_sto_basis(sto_basis_set, gto_basis_set, ngauss, ortho, ngaussflex)
...
subroutine, public deallocate_sto_basis_set(sto_basis_set)
...
subroutine, public allocate_sto_basis_set(sto_basis_set)
...
subroutine, public set_sto_basis_set(sto_basis_set, name, nshell, symbol, nq, lq, zet)
...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_get_next_line(parser, nline, at_end)
Read the next input line and broadcast the input information. Skip (nline-1) lines and skip also all ...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_release(parser)
releases the parser
subroutine, public parser_create(parser, file_name, unit_nr, para_env, end_section_label, separator_chars, comment_char, continuation_char, quote_char, section_char, parse_white_lines, initial_variables, apply_preprocessing)
Start a parser run. Initial variables allow to @SET stuff before opening the file.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Interface to the message passing library MPI.
Periodic Table related data definitions.
type(atom), dimension(0:nelem), public ptable
subroutine, public get_ptable_info(symbol, number, amass, ielement, covalent_radius, metallic_radius, vdw_radius, found)
Pass information about the kind given the element symbol.
Definition of physical constants:
real(kind=dp), parameter, public evolt
real(kind=dp), parameter, public bohr
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
subroutine, public xtb_parameters_set(param)
Read atom parameters for xTB Hamiltonian from input file.
logical function, public metal(z)
...
logical function, public early3d(z)
...
subroutine, public xtb_parameters_init(param, gfn_type, element_symbol, parameter_file_path, parameter_file_name, para_env)
...
subroutine, public xtb_spinpol_ext(param, gfn_type, xtb_control)
...
real(kind=dp) function, public pp_gfn0(za, zb)
...
subroutine, public xtb_spinpol_init(param, gfn_type, element_symbol, parameter_file_path, spinpol_param_file_name, para_env)
...
subroutine, public init_xtb_basis(param, gto_basis_set, ngauss, ngaussflex)
...
real(kind=dp) function, public xtb_set_kab(za, zb, xtb_control)
...
Definition of the xTB parameter types.
stores all the informations relevant to an mpi environment