31#include "./base/base_uses.f90"
39 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'xtb_types'
44 CHARACTER(LEN=default_string_length) :: typ =
""
45 CHARACTER(LEN=default_string_length) :: aname =
""
46 CHARACTER(LEN=2) :: symbol =
""
47 LOGICAL :: defined = .false.
49 REAL(kind=
dp) :: zeff = -1.0_dp
50 INTEGER :: natorb = -1
53 REAL(kind=
dp) :: rcut = -1.0_dp
54 REAL(kind=
dp) :: rcov = -1.0_dp
55 REAL(kind=
dp) :: electronegativity = -1.0_dp
57 REAL(kind=
dp) :: kx = -1.0_dp
59 REAL(kind=
dp) :: eta = -1.0_dp
60 REAL(kind=
dp) :: xgamma = -1.0_dp
61 REAL(kind=
dp) :: alpha = -1.0_dp
62 REAL(kind=
dp) :: zneff = -1.0_dp
64 INTEGER :: nshell = -1
65 INTEGER,
DIMENSION(5) :: nval = -1
66 INTEGER,
DIMENSION(5) :: lval = -1
67 INTEGER,
DIMENSION(5) :: occupation = -1
68 REAL(kind=
dp),
DIMENSION(5) :: kpoly = -1.0_dp
69 REAL(kind=
dp),
DIMENSION(5) :: kappa = -1.0_dp
70 REAL(kind=
dp),
DIMENSION(5) :: hen = -1.0_dp
71 REAL(kind=
dp),
DIMENSION(5) :: zeta = -1.0_dp
73 REAL(kind=
dp) :: en = -1.0_dp
74 REAL(kind=
dp) :: kqat2 = -1.0_dp
75 REAL(kind=
dp),
DIMENSION(5) :: kq = -1.0_dp
76 REAL(kind=
dp),
DIMENSION(5) :: kcn = -1.0_dp
78 REAL(kind=
dp) :: xi = -1.0_dp
79 REAL(kind=
dp) :: kappa0 = -1.0_dp
80 REAL(kind=
dp) :: alpg = -1.0_dp
82 INTEGER,
DIMENSION(25) :: nao = -1, lao = -1
84 REAL(kind=
dp) :: chmax = -1.0_dp
102 IF (
ASSOCIATED(xtb_parameter)) &
105 ALLOCATE (xtb_parameter)
107 xtb_parameter%defined = .false.
108 xtb_parameter%aname =
""
109 xtb_parameter%symbol =
""
110 xtb_parameter%typ =
"NONE"
112 xtb_parameter%zeff = -1.0_dp
113 xtb_parameter%natorb = 0
114 xtb_parameter%lmax = -1
115 xtb_parameter%rcut = 0.0_dp
116 xtb_parameter%rcov = 0.0_dp
117 xtb_parameter%electronegativity = 0.0_dp
118 xtb_parameter%kx = -100.0_dp
119 xtb_parameter%eta = 0.0_dp
120 xtb_parameter%xgamma = 0.0_dp
121 xtb_parameter%alpha = 0.0_dp
122 xtb_parameter%zneff = 0.0_dp
123 xtb_parameter%nshell = 0
124 xtb_parameter%nval = 0
125 xtb_parameter%lval = 0
126 xtb_parameter%occupation = 0
127 xtb_parameter%kpoly = 0.0_dp
128 xtb_parameter%kappa = 0.0_dp
129 xtb_parameter%hen = 0.0_dp
130 xtb_parameter%zeta = 0.0_dp
131 xtb_parameter%en = 0.0_dp
132 xtb_parameter%kqat2 = 0.0_dp
133 xtb_parameter%kq = 0.0_dp
134 xtb_parameter%kcn = 0.0_dp
135 xtb_parameter%xi = 0.0_dp
136 xtb_parameter%kappa0 = 0.0_dp
137 xtb_parameter%alpg = 0.0_dp
138 xtb_parameter%nao = 0
139 xtb_parameter%lao = 0
140 xtb_parameter%chmax = 0.0_dp
152 cpassert(
ASSOCIATED(xtb_parameter))
153 DEALLOCATE (xtb_parameter)
195 SUBROUTINE get_xtb_atom_param(xtb_parameter, symbol, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, &
196 rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, &
197 hen, zeta, xi, kappa0, alpg, occupation, electronegativity, chmax, &
201 CHARACTER(LEN=2),
INTENT(OUT),
OPTIONAL :: symbol
202 CHARACTER(LEN=default_string_length), &
203 INTENT(OUT),
OPTIONAL :: aname, typ
204 LOGICAL,
INTENT(OUT),
OPTIONAL :: defined
205 INTEGER,
INTENT(OUT),
OPTIONAL :: z
206 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: zeff
207 INTEGER,
INTENT(OUT),
OPTIONAL :: natorb, lmax
208 INTEGER,
DIMENSION(25),
INTENT(OUT),
OPTIONAL :: nao, lao
209 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: rcut, rcov, kx, eta, xgamma, alpha, zneff
210 INTEGER,
INTENT(OUT),
OPTIONAL :: nshell
211 INTEGER,
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: nval, lval
212 REAL(kind=
dp),
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: kpoly, kappa, hen, zeta
213 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: xi, kappa0, alpg
214 INTEGER,
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: occupation
215 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: electronegativity, chmax, en, kqat2
216 REAL(kind=
dp),
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: kcn, kq
218 cpassert(
ASSOCIATED(xtb_parameter))
220 IF (
PRESENT(symbol)) symbol = xtb_parameter%symbol
221 IF (
PRESENT(aname)) aname = xtb_parameter%aname
222 IF (
PRESENT(typ)) typ = xtb_parameter%typ
223 IF (
PRESENT(defined)) defined = xtb_parameter%defined
224 IF (
PRESENT(z)) z = xtb_parameter%z
225 IF (
PRESENT(zeff)) zeff = xtb_parameter%zeff
226 IF (
PRESENT(natorb)) natorb = xtb_parameter%natorb
227 IF (
PRESENT(lmax)) lmax = xtb_parameter%lmax
228 IF (
PRESENT(nao)) nao = xtb_parameter%nao
229 IF (
PRESENT(lao)) lao = xtb_parameter%lao
231 IF (
PRESENT(rcut)) rcut = xtb_parameter%rcut
232 IF (
PRESENT(rcov)) rcov = xtb_parameter%rcov
233 IF (
PRESENT(kx)) kx = xtb_parameter%kx
234 IF (
PRESENT(electronegativity)) electronegativity = xtb_parameter%electronegativity
235 IF (
PRESENT(eta)) eta = xtb_parameter%eta
236 IF (
PRESENT(xgamma)) xgamma = xtb_parameter%xgamma
237 IF (
PRESENT(alpha)) alpha = xtb_parameter%alpha
238 IF (
PRESENT(zneff)) zneff = xtb_parameter%zneff
239 IF (
PRESENT(nshell)) nshell = xtb_parameter%nshell
240 IF (
PRESENT(nval)) nval = xtb_parameter%nval
241 IF (
PRESENT(lval)) lval = xtb_parameter%lval
242 IF (
PRESENT(occupation)) occupation = xtb_parameter%occupation
243 IF (
PRESENT(kpoly)) kpoly = xtb_parameter%kpoly
244 IF (
PRESENT(kappa)) kappa = xtb_parameter%kappa
245 IF (
PRESENT(hen)) hen = xtb_parameter%hen
246 IF (
PRESENT(zeta)) zeta = xtb_parameter%zeta
247 IF (
PRESENT(chmax)) chmax = xtb_parameter%chmax
248 IF (
PRESENT(xi)) xi = xtb_parameter%xi
249 IF (
PRESENT(kappa0)) kappa0 = xtb_parameter%kappa0
250 IF (
PRESENT(alpg)) alpg = xtb_parameter%alpg
251 IF (
PRESENT(en)) en = xtb_parameter%en
252 IF (
PRESENT(kqat2)) kqat2 = xtb_parameter%kqat2
253 IF (
PRESENT(kcn)) kcn = xtb_parameter%kcn
254 IF (
PRESENT(kq)) kq = xtb_parameter%kq
295 SUBROUTINE set_xtb_atom_param(xtb_parameter, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, &
296 rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, &
297 hen, zeta, xi, kappa0, alpg, electronegativity, occupation, chmax, &
301 CHARACTER(LEN=default_string_length),
INTENT(IN), &
302 OPTIONAL :: aname, typ
303 LOGICAL,
INTENT(IN),
OPTIONAL :: defined
304 INTEGER,
INTENT(IN),
OPTIONAL :: z
305 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: zeff
306 INTEGER,
INTENT(IN),
OPTIONAL :: natorb, lmax
307 INTEGER,
DIMENSION(25),
INTENT(IN),
OPTIONAL :: nao, lao
308 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: rcut, rcov, kx, eta, xgamma, alpha, zneff
309 INTEGER,
INTENT(IN),
OPTIONAL :: nshell
310 INTEGER,
DIMENSION(5),
INTENT(IN),
OPTIONAL :: nval, lval
311 REAL(kind=
dp),
DIMENSION(5),
INTENT(IN),
OPTIONAL :: kpoly, kappa, hen, zeta
312 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: xi, kappa0, alpg, electronegativity
313 INTEGER,
DIMENSION(5),
INTENT(IN),
OPTIONAL :: occupation
314 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: chmax, en, kqat2
315 REAL(kind=
dp),
DIMENSION(5),
INTENT(IN),
OPTIONAL :: kcn, kq
317 cpassert(
ASSOCIATED(xtb_parameter))
319 IF (
PRESENT(aname)) xtb_parameter%aname = aname
320 IF (
PRESENT(typ)) xtb_parameter%typ = typ
321 IF (
PRESENT(defined)) xtb_parameter%defined = defined
322 IF (
PRESENT(z)) xtb_parameter%z = z
323 IF (
PRESENT(zeff)) xtb_parameter%zeff = zeff
324 IF (
PRESENT(natorb)) xtb_parameter%natorb = natorb
325 IF (
PRESENT(lmax)) xtb_parameter%lmax = lmax
326 IF (
PRESENT(nao)) xtb_parameter%nao = nao
327 IF (
PRESENT(lao)) xtb_parameter%lao = lao
329 IF (
PRESENT(rcut)) xtb_parameter%rcut = rcut
330 IF (
PRESENT(rcov)) xtb_parameter%rcov = rcov
331 IF (
PRESENT(kx)) xtb_parameter%kx = kx
332 IF (
PRESENT(electronegativity)) xtb_parameter%electronegativity = electronegativity
333 IF (
PRESENT(eta)) xtb_parameter%eta = eta
334 IF (
PRESENT(xgamma)) xtb_parameter%xgamma = xgamma
335 IF (
PRESENT(alpha)) xtb_parameter%alpha = alpha
336 IF (
PRESENT(zneff)) xtb_parameter%zneff = zneff
337 IF (
PRESENT(nshell)) xtb_parameter%nshell = nshell
338 IF (
PRESENT(nval)) xtb_parameter%nval = nval
339 IF (
PRESENT(lval)) xtb_parameter%lval = lval
340 IF (
PRESENT(occupation)) xtb_parameter%occupation = occupation
341 IF (
PRESENT(kpoly)) xtb_parameter%kpoly = kpoly
342 IF (
PRESENT(kappa)) xtb_parameter%kappa = kappa
343 IF (
PRESENT(hen)) xtb_parameter%hen = hen
344 IF (
PRESENT(zeta)) xtb_parameter%zeta = zeta
345 IF (
PRESENT(chmax)) xtb_parameter%chmax = chmax
347 IF (
PRESENT(xi)) xtb_parameter%xi = xi
348 IF (
PRESENT(kappa0)) xtb_parameter%kappa0 = kappa0
349 IF (
PRESENT(alpg)) xtb_parameter%alpg = alpg
350 IF (
PRESENT(en)) xtb_parameter%en = en
351 IF (
PRESENT(kqat2)) xtb_parameter%kqat2 = kqat2
352 IF (
PRESENT(kcn)) xtb_parameter%kcn = kcn
353 IF (
PRESENT(kq)) xtb_parameter%kq = kq
366 INTEGER,
INTENT(IN) :: gfn_type
369 CHARACTER(LEN=default_string_length) :: aname, bb
370 INTEGER :: i, io_unit, m, natorb, nshell
371 INTEGER,
DIMENSION(5) :: lval, nval, occupation
374 REAL(kind=
dp) :: alpha, en, eta, xgamma, zneff
375 REAL(kind=
dp),
DIMENSION(5) :: hen, kappa, kpoly, zeta
380 IF (
ASSOCIATED(xtb_parameter) .AND. &
382 "PRINT%KINDS/POTENTIAL"),
cp_p_file))
THEN
387 IF (io_unit > 0)
THEN
388 SELECT CASE (gfn_type)
390 cpabort(
"gfn_type = 0 missing code")
392 CALL get_xtb_atom_param(xtb_parameter, aname=aname, defined=defined, zeff=zeff, natorb=natorb)
393 CALL get_xtb_atom_param(xtb_parameter, nshell=nshell, lval=lval, nval=nval, occupation=occupation)
395 CALL get_xtb_atom_param(xtb_parameter, electronegativity=en, xgamma=xgamma, eta=eta, alpha=alpha, zneff=zneff)
398 WRITE (unit=io_unit, fmt=
"(/,A,T67,A14)")
" xTB parameters: ", trim(aname)
401 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.2)")
"Effective core charge:", zeff
402 WRITE (unit=io_unit, fmt=
"(T16,A,T71,I10)")
"Number of orbitals:", natorb
403 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5(A4,I1,I2,A1))")
"Basis set [nl]", bb(1:8*m), &
404 (
" [", nval(i), lval(i),
"]", i=1, nshell)
405 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Slater Exponent", bb(1:8*m), (zeta(i), i=1, nshell)
406 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5I8)")
"Ref. occupation", bb(1:8*m), (occupation(i), i=1, nshell)
407 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Energy levels [au]", bb(1:8*m), (hen(i), i=1, nshell)
408 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Kpoly", bb(1:8*m), (kpoly(i), i=1, nshell)
409 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.3)")
"Electronegativity", en
410 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.3)")
"Mataga-Nishimoto constant (eta)", eta
411 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Mataga-Nishimoto scaling kappa", bb(1:8*m), &
412 (kappa(i), i=1, nshell)
413 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.3)")
"3rd Order constant", xgamma
414 WRITE (unit=io_unit, fmt=
"(T16,A,T61,2F10.3)")
"Repulsion potential [Z,alpha]", zneff, alpha
416 WRITE (unit=io_unit, fmt=
"(T55,A)")
"Parameters are not defined"
419 cpabort(
"gfn_type = 2 not yet defined")
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,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of the xTB parameter types.
subroutine, public allocate_xtb_atom_param(xtb_parameter)
...
subroutine, public get_xtb_atom_param(xtb_parameter, symbol, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, hen, zeta, xi, kappa0, alpg, occupation, electronegativity, chmax, en, kqat2, kcn, kq)
...
subroutine, public deallocate_xtb_atom_param(xtb_parameter)
...
subroutine, public write_xtb_atom_param(xtb_parameter, gfn_type, subsys_section)
...
subroutine, public set_xtb_atom_param(xtb_parameter, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, hen, zeta, xi, kappa0, alpg, electronegativity, occupation, chmax, en, kqat2, kcn, kq)
...
type of a logger, at the moment it contains just a print level starting at which level it should be l...