39#include "./base/base_uses.f90"
44 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_tb'
60 cpassert(.NOT.
ASSOCIATED(section))
62 description=
"Parameters needed to set up the DFTB methods", &
63 n_keywords=1, n_subsections=1, repeats=.false., &
67 CALL create_dftb_parameter_section(subsection)
72 CALL keyword_create(keyword, __location__, name=
"self_consistent", &
73 description=
"Use self-consistent method", &
75 usage=
"SELF_CONSISTENT", default_l_val=.true.)
79 CALL keyword_create(keyword, __location__, name=
"orthogonal_basis", &
80 description=
"Assume orthogonal basis set", &
81 usage=
"ORTHOGONAL_BASIS", default_l_val=.false.)
86 description=
"Use Ewald type method instead of direct sum for Coulomb interaction", &
87 usage=
"DO_EWALD", default_l_val=.false., lone_keyword_l_val=.true.)
92 description=
"Use dispersion correction", &
94 usage=
"DISPERSION", default_l_val=.false.)
98 CALL keyword_create(keyword, __location__, name=
"DIAGONAL_DFTB3", &
99 description=
"Use a diagonal version of the 3rd order energy correction (DFTB3) ", &
100 lone_keyword_l_val=.true., &
101 usage=
"DIAGONAL_DFTB3", default_l_val=.false.)
106 description=
"Uses a modified version for the GAMMA within the SCC-DFTB scheme, "// &
107 "specifically tuned for hydrogen bonds.", &
108 citations=(/
hu2007/), lone_keyword_l_val=.true., &
109 usage=
"HB_SR_GAMMA", default_l_val=.false.)
114 description=
"Define accuracy of dispersion interaction", &
115 usage=
"EPS_DISP", default_r_val=0.0001_dp)
131 cpassert(.NOT.
ASSOCIATED(section))
133 description=
"Parameters needed to set up the xTB methods", &
134 n_keywords=1, n_subsections=1, repeats=.false., &
138 CALL create_xtb_parameter_section(subsection)
142 CALL create_xtb_nonbonded_section(subsection)
152 description=
"Which GFN xTB method should be used.", &
153 usage=
"GFN_TYPE 1", default_i_val=1)
158 description=
"Use Ewald type method instead of direct sum for Coulomb interaction", &
159 usage=
"DO_EWALD", default_l_val=.false., lone_keyword_l_val=.true.)
164 description=
"Provides the order of the Slater orbital expansion in GTOs.", &
165 usage=
"STO_NG 3", default_i_val=6)
169 CALL keyword_create(keyword, __location__, name=
"HYDROGEN_STO_NG", &
170 description=
"Number of GTOs for Hydrogen basis expansion.", &
171 usage=
"HYDROGEN_STO_NG 3", default_i_val=4)
175 CALL keyword_create(keyword, __location__, name=
"USE_HALOGEN_CORRECTION", &
176 description=
"Use XB interaction term", &
177 usage=
"USE_HALOGEN_CORRECTION T", default_l_val=.true., lone_keyword_l_val=.true.)
182 description=
"Controls the computation of real-space "// &
183 "(short-range) nonbonded interactions as correction to xTB.", &
184 usage=
"DO_NONBONDED T", default_l_val=.false., lone_keyword_l_val=.true.)
188 CALL keyword_create(keyword, __location__, name=
"VDW_POTENTIAL", &
189 description=
"vdW potential to be used: NONE, DFTD3, DFTD4. "// &
190 "Defaults: DFTD3(gfn1), DFTD4(gfn0, gfn2).", &
191 usage=
"VDW_POTENTIAL type", default_c_val=
"")
195 CALL keyword_create(keyword, __location__, name=
"COULOMB_INTERACTION", &
196 description=
"Use Coulomb interaction terms (electrostatics + TB3); for debug only", &
197 usage=
"COULOMB_INTERACTION T", default_l_val=.true., lone_keyword_l_val=.true.)
202 description=
"Use Coulomb LR (1/r) interaction terms; for debug only", &
203 usage=
"COULOMB_LR T", default_l_val=.true., lone_keyword_l_val=.true.)
207 CALL keyword_create(keyword, __location__, name=
"TB3_INTERACTION", &
208 description=
"Use TB3 interaction terms; for debug only", &
209 usage=
"TB3_INTERACTION T", default_l_val=.true., lone_keyword_l_val=.true.)
213 CALL keyword_create(keyword, __location__, name=
"CHECK_ATOMIC_CHARGES", &
214 description=
"Stop calculation if atomic charges are outside chemical range.", &
215 usage=
"CHECK_ATOMIC_CHARGES T", default_l_val=.true., lone_keyword_l_val=.true.)
219 CALL keyword_create(keyword, __location__, name=
"VARIATIONAL_DIPOLE", &
220 description=
"gfn0-xTB use dipole definition from energy derivative.", &
221 usage=
"VARIATIONAL_DIPOLE T", default_l_val=.false., lone_keyword_l_val=.true.)
225 CALL keyword_create(keyword, __location__, name=
"EPS_PAIRPOTENTIAL", &
226 description=
"Accuracy for the repulsive pair potential.", &
227 usage=
"EPS_PAIRPOTENTIAL 1.0E-8", default_r_val=1.0e-10_dp)
231 CALL keyword_create(keyword, __location__, name=
"EN_SHIFT_TYPE", &
232 description=
"Shift function for electronegativity in EEQ method. "// &
233 "[Select/Molecule/Crystal] Default Select from periodicity.", &
234 usage=
"EN_SHIFT_TYPE [Select/Molecule/Crystal]", &
235 n_var=1, type_of_var=
char_t, default_c_val=
"Molecule")
245 SUBROUTINE create_dftb_parameter_section(section)
251 cpassert(.NOT.
ASSOCIATED(section))
254 description=
"Information on where to find DFTB parameters", &
255 n_keywords=1, n_subsections=0, repeats=.false.)
259 description=
"Define parameter file for atom pair", &
260 usage=
"SK_FILE a1 a2 filename", &
261 n_var=3, type_of_var=
char_t, repeats=.true.)
265 CALL keyword_create(keyword, __location__, name=
"PARAM_FILE_PATH", &
266 description=
"Specify the directory with the DFTB parameter files. "// &
267 "Used in combination with the filenames specified in the file "// &
268 "given in PARAM_FILE_NAME.", usage=
"PARAM_FILE_PATH pathname", &
269 n_var=1, type_of_var=
char_t, default_c_val=
"./")
273 CALL keyword_create(keyword, __location__, name=
"PARAM_FILE_NAME", &
274 description=
"Specify file that contains the names of "// &
275 "Slater-Koster tables: A plain text file, each line has the "// &
276 'format "ATOM1 ATOM2 filename.spl".', &
277 usage=
"PARAM_FILE_NAME filename", &
278 n_var=1, type_of_var=
char_t, default_c_val=
"")
282 CALL keyword_create(keyword, __location__, name=
"DISPERSION_TYPE", &
283 description=
"Use dispersion correction of the specified type."// &
284 " Dispersion correction has to be switched on in the DFTB section.", &
285 usage=
"DISPERSION_TYPE (UFF|D3|D3(BJ)|D2)", &
286 enum_c_vals=
s2a(
"UFF",
"D3",
"D3(BJ)",
"D2"), &
288 enum_desc=
s2a(
"Uses the UFF force field for a pair potential dispersion correction.", &
289 "Uses the Grimme D3 method (simplified) for a pair potential dispersion correction.", &
290 "Uses the Grimme D3 method (simplified) with Becke-Johnson attenuation.", &
291 "Uses the Grimme D2 method for pair potential dispersion correction."), &
296 CALL keyword_create(keyword, __location__, name=
"UFF_FORCE_FIELD", &
297 description=
"Name of file with UFF parameters that will be used "// &
298 "for the dispersion correction. Needs to be specified when "// &
299 "DISPERSION==.TRUE., otherwise cp2k crashes with a Segmentation "// &
300 "Fault.", usage=
"UFF_FORCE_FIELD filename", &
301 n_var=1, type_of_var=
char_t, default_c_val=
"")
305 CALL keyword_create(keyword, __location__, name=
"DISPERSION_PARAMETER_FILE", &
306 description=
"Specify file that contains the atomic dispersion "// &
307 "parameters for the D3 method", &
308 usage=
"DISPERSION_PARAMETER_FILE filename", &
309 n_var=1, type_of_var=
char_t, default_c_val=
"")
313 CALL keyword_create(keyword, __location__, name=
"DISPERSION_RADIUS", &
314 description=
"Define radius of dispersion interaction", &
315 usage=
"DISPERSION_RADIUS", default_r_val=15._dp)
319 CALL keyword_create(keyword, __location__, name=
"COORDINATION_CUTOFF", &
320 description=
"Define cutoff for coordination number calculation", &
321 usage=
"COORDINATION_CUTOFF", default_r_val=1.e-6_dp)
326 description=
"Scaling parameters (s6,sr6,s8) for the D3 dispersion method,", &
327 usage=
"D3_SCALING 1.0 1.0 1.0", n_var=3, default_r_vals=(/0.0_dp, 0.0_dp, 0.0_dp/))
332 description=
"Scaling parameters (s6,a1,s8,a2) for the D3(BJ) dispersion method,", &
333 usage=
"D3BJ_SCALING 1.0 1.0 1.0 1.0", n_var=4, &
334 default_r_vals=(/0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp/))
339 description=
"Scaling parameter for the D2 dispersion method,", &
340 usage=
"D2_SCALING 1.0", default_r_val=1.0_dp)
345 description=
"Exp prefactor for damping for the D2 dispersion method,", &
346 usage=
"D2_EXP_PRE 2.0", default_r_val=2.0_dp)
351 description=
"Uses a modified version for the GAMMA within the SCC-DFTB scheme, "// &
352 "specifically tuned for hydrogen bonds. Specify the exponent used in the exponential.", &
353 usage=
"HB_SR_PARAM {real}", default_r_val=4.0_dp)
357 END SUBROUTINE create_dftb_parameter_section
363 SUBROUTINE create_xtb_parameter_section(section)
369 cpassert(.NOT.
ASSOCIATED(section))
372 description=
"Information on and where to find xTB parameters", &
373 n_keywords=1, n_subsections=0, repeats=.false.)
376 CALL keyword_create(keyword, __location__, name=
"PARAM_FILE_PATH", &
377 description=
"Specify the directory with the xTB parameter file. ", &
378 usage=
"PARAM_FILE_PATH pathname", &
379 n_var=1, type_of_var=
char_t, default_c_val=
"")
383 CALL keyword_create(keyword, __location__, name=
"PARAM_FILE_NAME", &
384 description=
"Specify file that contains all xTB default parameters. ", &
385 usage=
"PARAM_FILE_NAME filename", &
386 n_var=1, type_of_var=
char_t, default_c_val=
"xTB_parameters")
390 CALL keyword_create(keyword, __location__, name=
"DISPERSION_PARAMETER_FILE", &
391 description=
"Specify file that contains the atomic dispersion "// &
392 "parameters for the D3 method", &
393 usage=
"DISPERSION_PARAMETER_FILE filename", &
394 n_var=1, type_of_var=
char_t, default_c_val=
"dftd3.dat")
398 CALL keyword_create(keyword, __location__, name=
"DISPERSION_RADIUS", &
399 description=
"Define radius of dispersion interaction", &
400 usage=
"DISPERSION_RADIUS", default_r_val=15._dp)
404 CALL keyword_create(keyword, __location__, name=
"COORDINATION_CUTOFF", &
405 description=
"Define cutoff for coordination number calculation", &
406 usage=
"COORDINATION_CUTOFF", default_r_val=1.e-6_dp)
411 description=
"Scaling parameters (s6,s8) for the D3 dispersion method.", &
412 usage=
"D3BJ_SCALING 1.0 2.4", n_var=2, default_r_vals=(/1.0_dp, 2.4_dp/))
417 description=
"Becke-Johnson parameters (a1, a2 for the D3 dispersion method.", &
418 usage=
"D3BJ_PARAM 0.63 5.0", n_var=2, default_r_vals=(/0.63_dp, 5.0_dp/))
422 CALL keyword_create(keyword, __location__, name=
"HUCKEL_CONSTANTS", &
423 description=
"Huckel parameters (s, p, d, sp, 2sH).", &
424 usage=
"HUCKEL_CONSTANTS 1.85 2.25 2.00 2.08 2.85", n_var=5, &
425 default_r_vals=(/1.85_dp, 2.25_dp, 2.00_dp, 2.08_dp, 2.85_dp/))
429 CALL keyword_create(keyword, __location__, name=
"COULOMB_CONSTANTS", &
430 description=
"Scaling parameters for Coulomb interactions (electrons, nuclei).", &
431 usage=
"COULOMB_CONSTANTS 2.00 1.50", n_var=2, &
432 default_r_vals=(/2.00_dp, 1.50_dp/))
437 description=
"Scaling parameters for Coordination number correction term.", &
438 usage=
"CN_CONSTANTS 0.006 -0.003 -0.005", n_var=3, &
439 default_r_vals=(/0.006_dp, -0.003_dp, -0.005_dp/))
444 description=
"Scaling parameters for electronegativity correction term.", &
445 usage=
"EN_CONSTANTS -0.007 0.000 0.000", n_var=3, &
446 default_r_vals=(/-0.007_dp, 0.000_dp, 0.000_dp/))
451 description=
"Scaling parameter for electronegativity correction term.", &
452 usage=
"BEN_CONSTANT 4.0", n_var=1, &
453 default_r_val=4.0_dp)
458 description=
"Scaling parameter repulsive energy (dEN in exponential).", &
459 usage=
"ENSCALE 0.01", n_var=1, &
460 default_r_val=0.0_dp)
464 CALL keyword_create(keyword, __location__, name=
"HALOGEN_BINDING", &
465 description=
"Scaling parameters for electronegativity correction term.", &
466 usage=
"HALOGEN_BINDING 1.30 0.44", n_var=2, default_r_vals=(/1.30_dp, 0.44_dp/))
471 description=
"Specifies the specific Kab value for types A and B.", &
472 usage=
"KAB_PARAM kind1 kind2 value ", repeats=.true., &
473 n_var=-1, type_of_var=
char_t)
478 description=
"Specifies the radius [Bohr] of the XB pair interaction in xTB.", &
479 usage=
"XB_RADIUS 20.0 ", repeats=.false., &
480 n_var=1, default_r_val=20.0_dp)
484 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_CUT", &
485 description=
"Maximum range of short range part of Coulomb interaction.", &
486 usage=
"COULOMB_SR_CUT 20.0 ", repeats=.false., &
487 n_var=1, default_r_val=20.0_dp)
491 CALL keyword_create(keyword, __location__, name=
"COULOMB_SR_EPS", &
492 description=
"Cutoff for short range part of Coulomb interaction.", &
493 usage=
"COULOMB_SR_EPS 1.E-3 ", repeats=.false., &
494 n_var=1, default_r_val=1.0e-03_dp)
498 CALL keyword_create(keyword, __location__, name=
"SRB_PARAMETER", &
499 description=
"SRB parameters (ksrb, esrb, gscal, c1, c2, shift).", &
500 usage=
"SRB_PARAMETER -0.0129 3.48 0.51 -1.71 2.11 0.0537", n_var=6, &
501 default_r_vals=(/-0.0129_dp, 3.4847_dp, 0.5097_dp, &
502 -1.70549806_dp, 2.10878369_dp, 0.0537_dp/))
506 END SUBROUTINE create_xtb_parameter_section
511 SUBROUTINE create_xtb_nonbonded_section(section)
517 cpassert(.NOT.
ASSOCIATED(section))
519 description=
"This section specifies the input parameters for NON-BONDED interactions.", &
520 n_keywords=1, n_subsections=0, repeats=.false.)
529 description=
"Parameter used for computing the derivative with the Ridders' method.", &
530 usage=
"DX <REAL>", default_r_val=0.1_dp, unit_str=
"bohr")
535 description=
"Checks that the error in computing the derivative is not larger than "// &
536 "the value set; in case error is larger a warning message is printed.", &
537 usage=
"ERROR_LIMIT <REAL>", default_r_val=1.0e-12_dp)
541 END SUBROUTINE create_xtb_nonbonded_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public grimme2017
integer, save, public elstner1998
integer, save, public hu2007
integer, save, public porezag1995
integer, save, public seifert1996
integer, save, public zhechkov2005
Defines the basic variable types.
integer, parameter, public dp
Utilities for string manipulations.