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
55 REAL(KIND=
dp) :: electronegativity
60 REAL(KIND=
dp) :: xgamma
61 REAL(KIND=
dp) :: alpha
62 REAL(KIND=
dp) :: zneff
65 INTEGER,
DIMENSION(5) :: nval
66 INTEGER,
DIMENSION(5) :: lval
67 INTEGER,
DIMENSION(5) :: occupation
68 REAL(KIND=
dp),
DIMENSION(5) :: kpoly
69 REAL(KIND=
dp),
DIMENSION(5) :: kappa
70 REAL(KIND=
dp),
DIMENSION(5) :: hen
71 REAL(KIND=
dp),
DIMENSION(5) :: zeta
73 INTEGER,
DIMENSION(25) :: nao, lao
75 REAL(KIND=
dp) :: chmax
76 END TYPE xtb_atom_type
91 TYPE(xtb_atom_type),
POINTER :: xtb_parameter
93 IF (
ASSOCIATED(xtb_parameter)) &
96 ALLOCATE (xtb_parameter)
98 xtb_parameter%defined = .false.
99 xtb_parameter%aname =
""
100 xtb_parameter%symbol =
""
101 xtb_parameter%typ =
"NONE"
103 xtb_parameter%zeff = -1.0_dp
104 xtb_parameter%natorb = 0
105 xtb_parameter%lmax = -1
106 xtb_parameter%rcut = 0.0_dp
107 xtb_parameter%rcov = 0.0_dp
108 xtb_parameter%electronegativity = 0.0_dp
109 xtb_parameter%kx = -100.0_dp
110 xtb_parameter%eta = 0.0_dp
111 xtb_parameter%xgamma = 0.0_dp
112 xtb_parameter%alpha = 0.0_dp
113 xtb_parameter%zneff = 0.0_dp
114 xtb_parameter%nshell = 0
115 xtb_parameter%nval = 0
116 xtb_parameter%lval = 0
117 xtb_parameter%occupation = 0
118 xtb_parameter%kpoly = 0.0_dp
119 xtb_parameter%kappa = 0.0_dp
120 xtb_parameter%hen = 0.0_dp
121 xtb_parameter%zeta = 0.0_dp
122 xtb_parameter%nao = 0
123 xtb_parameter%lao = 0
124 xtb_parameter%chmax = 0.0_dp
134 TYPE(xtb_atom_type),
POINTER :: xtb_parameter
136 cpassert(
ASSOCIATED(xtb_parameter))
137 DEALLOCATE (xtb_parameter)
172 SUBROUTINE get_xtb_atom_param(xtb_parameter, symbol, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, &
173 rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, &
174 hen, zeta, occupation, electronegativity, chmax)
176 TYPE(xtb_atom_type),
POINTER :: xtb_parameter
177 CHARACTER(LEN=2),
INTENT(OUT),
OPTIONAL :: symbol
178 CHARACTER(LEN=default_string_length), &
179 INTENT(OUT),
OPTIONAL :: aname, typ
180 LOGICAL,
INTENT(OUT),
OPTIONAL :: defined
181 INTEGER,
INTENT(OUT),
OPTIONAL :: z
182 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: zeff
183 INTEGER,
INTENT(OUT),
OPTIONAL :: natorb, lmax
184 INTEGER,
DIMENSION(25),
INTENT(OUT),
OPTIONAL :: nao, lao
185 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: rcut, rcov, kx, eta, xgamma, alpha, zneff
186 INTEGER,
INTENT(OUT),
OPTIONAL :: nshell
187 INTEGER,
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: nval, lval
188 REAL(kind=
dp),
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: kpoly, kappa, hen, zeta
189 INTEGER,
DIMENSION(5),
INTENT(OUT),
OPTIONAL :: occupation
190 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: electronegativity, chmax
192 cpassert(
ASSOCIATED(xtb_parameter))
194 IF (
PRESENT(symbol)) symbol = xtb_parameter%symbol
195 IF (
PRESENT(aname)) aname = xtb_parameter%aname
196 IF (
PRESENT(typ)) typ = xtb_parameter%typ
197 IF (
PRESENT(defined)) defined = xtb_parameter%defined
198 IF (
PRESENT(z)) z = xtb_parameter%z
199 IF (
PRESENT(zeff)) zeff = xtb_parameter%zeff
200 IF (
PRESENT(natorb)) natorb = xtb_parameter%natorb
201 IF (
PRESENT(lmax)) lmax = xtb_parameter%lmax
202 IF (
PRESENT(nao)) nao = xtb_parameter%nao
203 IF (
PRESENT(lao)) lao = xtb_parameter%lao
205 IF (
PRESENT(rcut)) rcut = xtb_parameter%rcut
206 IF (
PRESENT(rcov)) rcov = xtb_parameter%rcov
207 IF (
PRESENT(kx)) kx = xtb_parameter%kx
208 IF (
PRESENT(electronegativity)) electronegativity = xtb_parameter%electronegativity
209 IF (
PRESENT(eta)) eta = xtb_parameter%eta
210 IF (
PRESENT(xgamma)) xgamma = xtb_parameter%xgamma
211 IF (
PRESENT(alpha)) alpha = xtb_parameter%alpha
212 IF (
PRESENT(zneff)) zneff = xtb_parameter%zneff
213 IF (
PRESENT(nshell)) nshell = xtb_parameter%nshell
214 IF (
PRESENT(nval)) nval = xtb_parameter%nval
215 IF (
PRESENT(lval)) lval = xtb_parameter%lval
216 IF (
PRESENT(occupation)) occupation = xtb_parameter%occupation
217 IF (
PRESENT(kpoly)) kpoly = xtb_parameter%kpoly
218 IF (
PRESENT(kappa)) kappa = xtb_parameter%kappa
219 IF (
PRESENT(hen)) hen = xtb_parameter%hen
220 IF (
PRESENT(zeta)) zeta = xtb_parameter%zeta
221 IF (
PRESENT(chmax)) chmax = xtb_parameter%chmax
255 SUBROUTINE set_xtb_atom_param(xtb_parameter, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, &
256 rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, &
257 hen, zeta, electronegativity, occupation, chmax)
259 TYPE(xtb_atom_type),
POINTER :: xtb_parameter
260 CHARACTER(LEN=default_string_length),
INTENT(IN), &
261 OPTIONAL :: aname, typ
262 LOGICAL,
INTENT(IN),
OPTIONAL :: defined
263 INTEGER,
INTENT(IN),
OPTIONAL :: z
264 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: zeff
265 INTEGER,
INTENT(IN),
OPTIONAL :: natorb, lmax
266 INTEGER,
DIMENSION(25),
INTENT(IN),
OPTIONAL :: nao, lao
267 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: rcut, rcov, kx, eta, xgamma, alpha, zneff
268 INTEGER,
INTENT(IN),
OPTIONAL :: nshell
269 INTEGER,
DIMENSION(5),
INTENT(IN),
OPTIONAL :: nval, lval
270 REAL(kind=
dp),
DIMENSION(5),
INTENT(IN),
OPTIONAL :: kpoly, kappa, hen, zeta
271 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: electronegativity
272 INTEGER,
DIMENSION(5),
INTENT(IN),
OPTIONAL :: occupation
273 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: chmax
275 cpassert(
ASSOCIATED(xtb_parameter))
277 IF (
PRESENT(aname)) xtb_parameter%aname = aname
278 IF (
PRESENT(typ)) xtb_parameter%typ = typ
279 IF (
PRESENT(defined)) xtb_parameter%defined = defined
280 IF (
PRESENT(z)) xtb_parameter%z = z
281 IF (
PRESENT(zeff)) xtb_parameter%zeff = zeff
282 IF (
PRESENT(natorb)) xtb_parameter%natorb = natorb
283 IF (
PRESENT(lmax)) xtb_parameter%lmax = lmax
284 IF (
PRESENT(nao)) xtb_parameter%nao = nao
285 IF (
PRESENT(lao)) xtb_parameter%lao = lao
287 IF (
PRESENT(rcut)) xtb_parameter%rcut = rcut
288 IF (
PRESENT(rcov)) xtb_parameter%rcov = rcov
289 IF (
PRESENT(kx)) xtb_parameter%kx = kx
290 IF (
PRESENT(electronegativity)) xtb_parameter%electronegativity = electronegativity
291 IF (
PRESENT(eta)) xtb_parameter%eta = eta
292 IF (
PRESENT(xgamma)) xtb_parameter%xgamma = xgamma
293 IF (
PRESENT(alpha)) xtb_parameter%alpha = alpha
294 IF (
PRESENT(zneff)) xtb_parameter%zneff = zneff
295 IF (
PRESENT(nshell)) xtb_parameter%nshell = nshell
296 IF (
PRESENT(nval)) xtb_parameter%nval = nval
297 IF (
PRESENT(lval)) xtb_parameter%lval = lval
298 IF (
PRESENT(occupation)) xtb_parameter%occupation = occupation
299 IF (
PRESENT(kpoly)) xtb_parameter%kpoly = kpoly
300 IF (
PRESENT(kappa)) xtb_parameter%kappa = kappa
301 IF (
PRESENT(hen)) xtb_parameter%hen = hen
302 IF (
PRESENT(zeta)) xtb_parameter%zeta = zeta
303 IF (
PRESENT(chmax)) xtb_parameter%chmax = chmax
314 TYPE(xtb_atom_type),
POINTER :: xtb_parameter
315 TYPE(section_vals_type),
POINTER :: subsys_section
317 CHARACTER(LEN=default_string_length) :: aname, bb
318 INTEGER :: i, io_unit, m, natorb, nshell
319 INTEGER,
DIMENSION(5) :: lval, nval, occupation
322 REAL(kind=
dp) :: alpha, en, eta, xgamma, zneff
323 REAL(kind=
dp),
DIMENSION(5) :: hen, kappa, kpoly, zeta
324 TYPE(cp_logger_type),
POINTER :: logger
328 IF (
ASSOCIATED(xtb_parameter) .AND. &
330 "PRINT%KINDS/POTENTIAL"),
cp_p_file))
THEN
335 IF (io_unit > 0)
THEN
336 CALL get_xtb_atom_param(xtb_parameter, aname=aname, defined=defined, zeff=zeff, natorb=natorb)
337 CALL get_xtb_atom_param(xtb_parameter, nshell=nshell, lval=lval, nval=nval, occupation=occupation)
339 CALL get_xtb_atom_param(xtb_parameter, electronegativity=en, xgamma=xgamma, eta=eta, alpha=alpha, zneff=zneff)
342 WRITE (unit=io_unit, fmt=
"(/,A,T67,A14)")
" xTB parameters: ", trim(aname)
345 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.2)")
"Effective core charge:", zeff
346 WRITE (unit=io_unit, fmt=
"(T16,A,T71,I10)")
"Number of orbitals:", natorb
347 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5(A4,I1,I2,A1))")
"Basis set [nl]", bb(1:8*m), &
348 (
" [", nval(i), lval(i),
"]", i=1, nshell)
349 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Slater Exponent", bb(1:8*m), (zeta(i), i=1, nshell)
350 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5I8)")
"Ref. occupation", bb(1:8*m), (occupation(i), i=1, nshell)
351 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Energy levels [au]", bb(1:8*m), (hen(i), i=1, nshell)
352 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Kpoly", bb(1:8*m), (kpoly(i), i=1, nshell)
353 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.3)")
"Electronegativity", en
354 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.3)")
"Mataga-Nishimoto constant (eta)", eta
355 WRITE (unit=io_unit, fmt=
"(T16,A,T41,A,5F8.3)")
"Mataga-Nishimoto scaling kappa", bb(1:8*m), (kappa(i), i=1, nshell)
356 WRITE (unit=io_unit, fmt=
"(T16,A,T71,F10.3)")
"3rd Order constant", xgamma
357 WRITE (unit=io_unit, fmt=
"(T16,A,T61,2F10.3)")
"Repulsion potential [Z,alpha]", zneff, alpha
359 WRITE (unit=io_unit, fmt=
"(T55,A)")
"Parameters are not 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, occupation, electronegativity, chmax)
...
subroutine, public deallocate_xtb_atom_param(xtb_parameter)
...
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, electronegativity, occupation, chmax)
...
subroutine, public write_xtb_atom_param(xtb_parameter, subsys_section)
...