(git:b77b4be)
Loading...
Searching...
No Matches
input_cp2k_qs.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 function that build the QS section of the input
10!> \par History
11!> 10.2005 moved out of input_cp2k [fawzi]
12!> 07.2024 moved out of input_cp2k_dft [JGH]
13!> \author fawzi
14! **************************************************************************************************
16 USE bibliography, ONLY: &
24 USE input_constants, ONLY: &
53 USE input_val_types, ONLY: integer_t,&
54 lchar_t,&
55 real_t
56 USE kinds, ONLY: dp
60 USE string_utilities, ONLY: s2a
61#include "./base/base_uses.f90"
62
63 IMPLICIT NONE
64 PRIVATE
65
66 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_qs'
67
69
70CONTAINS
71
72! **************************************************************************************************
73!> \brief creates the input section for the qs part
74!> \param section the section to create
75!> \author teo
76! **************************************************************************************************
77 SUBROUTINE create_qs_section(section)
78 TYPE(section_type), POINTER :: section
79
80 TYPE(keyword_type), POINTER :: keyword
81 TYPE(section_type), POINTER :: subsection
82
83 cpassert(.NOT. ASSOCIATED(section))
84 CALL section_create(section, __location__, name="qs", &
85 description="parameters needed to set up the Quickstep framework", &
86 n_keywords=1, n_subsections=0, repeats=.false.)
87
88 NULLIFY (keyword, subsection)
89
90 ! Reals
91 CALL keyword_create(keyword, __location__, name="EPS_DEFAULT", &
92 description="Try setting all EPS_xxx to values leading to an energy correct up to EPS_DEFAULT", &
93 usage="EPS_DEFAULT real", default_r_val=1.0e-10_dp)
94 CALL section_add_keyword(section, keyword)
95 CALL keyword_release(keyword)
96
97 CALL keyword_create(keyword, __location__, name="EPS_CORE_CHARGE", &
98 description="Precision for mapping the core charges.Overrides EPS_DEFAULT/100.0 value", &
99 usage="EPS_CORE_CHARGE real", type_of_var=real_t)
100 CALL section_add_keyword(section, keyword)
101 CALL keyword_release(keyword)
102
103 CALL keyword_create( &
104 keyword, __location__, name="EPS_GVG_RSPACE", &
105 variants=(/"EPS_GVG"/), &
106 description="Sets precision of the realspace KS matrix element integration. Overrides SQRT(EPS_DEFAULT) value", &
107 usage="EPS_GVG_RSPACE real", type_of_var=real_t)
108 CALL section_add_keyword(section, keyword)
109 CALL keyword_release(keyword)
110
111 CALL keyword_create(keyword, __location__, name="EPS_PGF_ORB", &
112 description="Sets precision of the overlap matrix elements. Overrides SQRT(EPS_DEFAULT) value", &
113 usage="EPS_PGF_ORB real", type_of_var=real_t)
114 CALL section_add_keyword(section, keyword)
115 CALL keyword_release(keyword)
116
117 CALL keyword_create( &
118 keyword, __location__, name="EPS_KG_ORB", &
119 description="Sets precision used in coloring the subsets for the Kim-Gordon method. Overrides SQRT(EPS_DEFAULT) value", &
120 usage="EPS_KG_ORB 1.0E-8", &
121 type_of_var=real_t)
122 CALL section_add_keyword(section, keyword)
123 CALL keyword_release(keyword)
124
125 CALL keyword_create(keyword, __location__, name="EPS_PPL", &
126 description="Adjusts the precision for the local part of the pseudo potential. ", &
127 usage="EPS_PPL real", type_of_var=real_t, default_r_val=1.0e-2_dp)
128 CALL section_add_keyword(section, keyword)
129 CALL keyword_release(keyword)
130
131 CALL keyword_create( &
132 keyword, __location__, name="EPS_PPNL", &
133 description="Sets precision of the non-local part of the pseudo potential. Overrides sqrt(EPS_DEFAULT) value", &
134 usage="EPS_PPNL real", type_of_var=real_t)
135 CALL section_add_keyword(section, keyword)
136 CALL keyword_release(keyword)
137
138 CALL keyword_create(keyword, __location__, name="EPS_CPC", &
139 description="Sets precision of the GAPW projection. Overrides EPS_DEFAULT value", &
140 usage="EPS_CPC real", type_of_var=real_t)
141 CALL section_add_keyword(section, keyword)
142 CALL keyword_release(keyword)
143
144 CALL keyword_create(keyword, __location__, name="EPS_RHO", &
145 description="Sets precision of the density mapping on the grids.Overrides EPS_DEFAULT value", &
146 usage="EPS_RHO real", type_of_var=real_t)
147 CALL section_add_keyword(section, keyword)
148 CALL keyword_release(keyword)
149
150 CALL keyword_create(keyword, __location__, name="EPS_RHO_RSPACE", &
151 description="Sets precision of the density mapping in rspace.Overrides EPS_DEFAULT value."// &
152 " Overrides EPS_RHO value", &
153 usage="EPS_RHO_RSPACE real", type_of_var=real_t)
154 CALL section_add_keyword(section, keyword)
155 CALL keyword_release(keyword)
156
157 CALL keyword_create(keyword, __location__, name="EPS_RHO_GSPACE", &
158 description="Sets precision of the density mapping in gspace.Overrides EPS_DEFAULT value."// &
159 " Overrides EPS_RHO value", &
160 usage="EPS_RHO_GSPACE real", type_of_var=real_t)
161 CALL section_add_keyword(section, keyword)
162 CALL keyword_release(keyword)
163
164 CALL keyword_create(keyword, __location__, name="EPS_FILTER_MATRIX", &
165 description="Sets the threshold for filtering matrix elements.", &
166 usage="EPS_FILTER_MATRIX 1.0E-6", type_of_var=real_t, default_r_val=0.0e0_dp)
167 CALL section_add_keyword(section, keyword)
168 CALL keyword_release(keyword)
169
170 CALL keyword_create(keyword, __location__, name="EPSFIT", &
171 variants=(/"EPS_FIT"/), &
172 description="GAPW: precision to give the extension of a hard gaussian ", &
173 usage="EPSFIT real", default_r_val=1.0e-4_dp)
174 CALL section_add_keyword(section, keyword)
175 CALL keyword_release(keyword)
176
177 CALL keyword_create(keyword, __location__, name="EPSISO", &
178 variants=(/"EPS_ISO"/), &
179 description="GAPW: precision to determine an isolated projector", &
180 usage="EPSISO real", default_r_val=1.0e-12_dp)
181 CALL section_add_keyword(section, keyword)
182 CALL keyword_release(keyword)
183
184 CALL keyword_create(keyword, __location__, name="EPSSVD", &
185 variants=(/"EPS_SVD"/), &
186 description="GAPW: tolerance used in the singular value decomposition of the projector matrix", &
187 usage="EPS_SVD real", default_r_val=1.0e-8_dp)
188 CALL section_add_keyword(section, keyword)
189 CALL keyword_release(keyword)
190
191 CALL keyword_create(keyword, __location__, name="EPSRHO0", &
192 variants=s2a("EPSVRHO0", "EPS_VRHO0"), &
193 description="GAPW : precision to determine the range of V(rho0-rho0soft)", &
194 usage="EPSRHO0 real", default_r_val=1.0e-6_dp)
195 CALL section_add_keyword(section, keyword)
196 CALL keyword_release(keyword)
197
198 CALL keyword_create(keyword, __location__, name="ALPHA0_HARD", &
199 variants=s2a("ALPHA0_H", "ALPHA0"), &
200 description="GAPW: Exponent for hard compensation charge", &
201 usage="ALPHA0_HARD real", default_r_val=0.0_dp)
202 CALL section_add_keyword(section, keyword)
203 CALL keyword_release(keyword)
204
205 CALL keyword_create( &
206 keyword, __location__, name="FORCE_PAW", &
207 description="Use the GAPW scheme also for atoms with soft basis sets, i.e. "// &
208 "the local densities are computed even if hard and soft should be equal. "// &
209 "If this keyword is not set to true, those atoms with soft basis sets are treated by a GPW scheme, i.e. "// &
210 "the corresponding density contribution goes on the global grid and is expanded in PW. "// &
211 "This option nullifies the effect of the GPW_TYPE in the atomic KIND", &
212 usage="FORCE_PAW", &
213 default_l_val=.false., lone_keyword_l_val=.true.)
214 CALL section_add_keyword(section, keyword)
215 CALL keyword_release(keyword)
216
217 CALL keyword_create(keyword, __location__, name="MAX_RAD_LOCAL", &
218 description="GAPW : maximum radius of gaussian functions"// &
219 " included in the generation of projectors", &
220 usage="MAX_RAD_LOCAL real", default_r_val=25.0_dp)
221 CALL section_add_keyword(section, keyword)
222 CALL keyword_release(keyword)
223
224 CALL keyword_create(keyword, __location__, name="GAPW_1C_BASIS", &
225 description="Specifies how to construct the GAPW one center basis set. "// &
226 "Default is to use the primitives from the orbital basis.", &
227 usage="GAPW_1C_BASIS MEDIUM", &
228 enum_c_vals=s2a("ORB", "EXT_SMALL", "EXT_MEDIUM", "EXT_LARGE", "EXT_VERY_LARGE"), &
229 enum_desc=s2a("Use orbital basis set.", &
230 "Extension using Small number of primitive Gaussians.", &
231 "Extension using Medium number of primitive Gaussians.", &
232 "Extension using Large number of primitive Gaussians.", &
233 "Extension using Very Large number of primitive Gaussians."), &
234 enum_i_vals=(/gapw_1c_orb, gapw_1c_small, gapw_1c_medium, &
236 default_i_val=gapw_1c_orb)
237 CALL section_add_keyword(section, keyword)
238 CALL keyword_release(keyword)
239
240 CALL keyword_create(keyword, __location__, name="MIN_PAIR_LIST_RADIUS", &
241 description="Set the minimum value [Bohr] for the overlap pair list radius."// &
242 " Default is 0.0 Bohr, negative values are changed to the cell size."// &
243 " This allows to control the sparsity of the KS matrix for HFX calculations.", &
244 usage="MIN_PAIR_LIST_RADIUS real", default_r_val=0.0_dp)
245 CALL section_add_keyword(section, keyword)
246 CALL keyword_release(keyword)
247
248 ! Logicals
249 CALL keyword_create(keyword, __location__, name="LS_SCF", &
250 description="Perform a linear scaling SCF", &
251 usage="LS_SCF", lone_keyword_l_val=.true., &
252 default_l_val=.false.)
253 CALL section_add_keyword(section, keyword)
254 CALL keyword_release(keyword)
255
256 CALL keyword_create(keyword, __location__, name="ALMO_SCF", &
257 description="Perform ALMO SCF", &
258 usage="ALMO_SCF", lone_keyword_l_val=.true., &
259 default_l_val=.false.)
260 CALL section_add_keyword(section, keyword)
261 CALL keyword_release(keyword)
262
263 CALL keyword_create(keyword, __location__, name="TRANSPORT", &
264 description="Perform transport calculations (coupling CP2K and OMEN)", &
265 usage="TRANSPORT", lone_keyword_l_val=.true., &
266 default_l_val=.false.)
267 CALL section_add_keyword(section, keyword)
268 CALL keyword_release(keyword)
269
270 CALL keyword_create(keyword, __location__, name="KG_METHOD", &
271 description="Use a Kim-Gordon-like scheme.", &
272 usage="KG_METHOD", lone_keyword_l_val=.true., &
273 default_l_val=.false., citations=(/iannuzzi2006, brelaz1979, andermatt2016/))
274 CALL section_add_keyword(section, keyword)
275 CALL keyword_release(keyword)
276
277 CALL keyword_create(keyword, __location__, name="REF_EMBED_SUBSYS", &
278 description="A total, reference, system in DFT embedding. ", &
279 usage="REF_EMBED_SUBSYS FALSE", &
280 default_l_val=.false., lone_keyword_l_val=.true.)
281 CALL section_add_keyword(section, keyword)
282 CALL keyword_release(keyword)
283
284 CALL keyword_create(keyword, __location__, name="CLUSTER_EMBED_SUBSYS", &
285 description="A cluster treated with DFT in DFT embedding. ", &
286 usage="CLUSTER_EMBED_SUBSYS FALSE", &
287 default_l_val=.false., lone_keyword_l_val=.true.)
288 CALL section_add_keyword(section, keyword)
289 CALL keyword_release(keyword)
290
291 CALL keyword_create(keyword, __location__, name="HIGH_LEVEL_EMBED_SUBSYS", &
292 description="A cluster treated with a high-level method in DFT embedding. ", &
293 usage="HIGH_LEVEL_EMBED_SUBSYS FALSE", &
294 default_l_val=.false., lone_keyword_l_val=.true.)
295 CALL section_add_keyword(section, keyword)
296 CALL keyword_release(keyword)
297
298 CALL keyword_create(keyword, __location__, name="DFET_EMBEDDED", &
299 description="Calculation with DFT-embedding potential. ", &
300 usage="DFET_EMBEDDED FALSE", &
301 default_l_val=.false., lone_keyword_l_val=.true.)
302 CALL section_add_keyword(section, keyword)
303 CALL keyword_release(keyword)
304
305 CALL keyword_create(keyword, __location__, name="DMFET_EMBEDDED", &
306 description="Calculation with DM embedding potential. ", &
307 usage="DMFET_EMBEDDED FALSE", &
308 default_l_val=.false., lone_keyword_l_val=.true.)
309 CALL section_add_keyword(section, keyword)
310 CALL keyword_release(keyword)
311
312 ! Integers
313 CALL keyword_create(keyword, __location__, name="STO_NG", &
314 description="Order of Gaussian type expansion of Slater orbital basis sets.", &
315 usage="STO_NG", default_i_val=6)
316 CALL section_add_keyword(section, keyword)
317 CALL keyword_release(keyword)
318
319 CALL keyword_create(keyword, __location__, name="LMAXN1", &
320 variants=(/"LMAXRHO1"/), &
321 description="GAPW : max L number for expansion of the atomic densities in spherical gaussians", &
322 usage="LMAXN1 integer", &
323 default_i_val=-1)
324 CALL section_add_keyword(section, keyword)
325 CALL keyword_release(keyword)
326
327 CALL keyword_create(keyword, __location__, name="LMAXN0", &
328 variants=(/"LMAXRHO0"/), &
329 description="GAPW : max L number for the expansion compensation densities in spherical gaussians", &
330 usage="LMAXN0 integer", &
331 default_i_val=2)
332 CALL section_add_keyword(section, keyword)
333 CALL keyword_release(keyword)
334
335 CALL keyword_create(keyword, __location__, name="LADDN0", &
336 description="GAPW : integer added to the max L of the basis set, used to determine the "// &
337 "maximum value of L for the compensation charge density.", &
338 usage="LADDN0 integer", &
339 default_i_val=99)
340 CALL section_add_keyword(section, keyword)
341 CALL keyword_release(keyword)
342
343 ! Characters
344 CALL keyword_create(keyword, __location__, name="QUADRATURE", &
345 description="GAPW: algorithm to construct the atomic radial grids", &
346 usage="QUADRATURE GC_SIMPLE", &
347 enum_c_vals=s2a("GC_SIMPLE", "GC_TRANSFORMED", "GC_LOG"), &
348 enum_i_vals=(/do_gapw_gcs, do_gapw_gct, do_gapw_log/), &
349 enum_desc=s2a("Gauss-Chebyshev quadrature", &
350 "Transformed Gauss-Chebyshev quadrature", &
351 "Logarithmic transformed Gauss-Chebyshev quadrature"), &
352 default_i_val=do_gapw_log)
353 CALL section_add_keyword(section, keyword)
354 CALL keyword_release(keyword)
355
356 CALL keyword_create(keyword, __location__, name="PW_GRID", &
357 description="What kind of PW_GRID should be employed", &
358 usage="PW_GRID NS-FULLSPACE", &
359 enum_c_vals=s2a("SPHERICAL", "NS-FULLSPACE", "NS-HALFSPACE"), &
360 enum_desc=s2a("- not tested", " tested", " - not tested"), &
362 default_i_val=do_pwgrid_ns_fullspace)
363 CALL section_add_keyword(section, keyword)
364 CALL keyword_release(keyword)
365
366 CALL keyword_create(keyword, __location__, name="PW_GRID_LAYOUT", &
367 description="Force a particular real-space layout for the plane waves grids. "// &
368 "Numbers &le; 0 mean that this dimension is free, incorrect layouts will be ignored. "// &
369 "The default (/-1,-1/) causes CP2K to select a good value, "// &
370 "i.e. plane distributed for large grids, more general distribution for small grids.", &
371 usage="PW_GRID_LAYOUT 4 16", &
372 repeats=.false., n_var=2, &
373 default_i_vals=(/-1, -1/))
374 CALL section_add_keyword(section, keyword)
375 CALL keyword_release(keyword)
376
377 CALL keyword_create(keyword, __location__, name="PW_GRID_BLOCKED", &
378 description="Can be used to set the distribution in g-space for the pw grids and their FFT.", &
379 usage="PW_GRID_BLOCKED FREE", &
380 enum_c_vals=s2a("FREE", "TRUE", "FALSE"), &
381 enum_desc=s2a("CP2K will select an appropriate value", "blocked", "not blocked"), &
383 default_i_val=do_pw_grid_blocked_free)
384 CALL section_add_keyword(section, keyword)
385 CALL keyword_release(keyword)
386
387 CALL keyword_create( &
388 keyword, __location__, name="EXTRAPOLATION", &
389 variants=s2a("INTERPOLATION", "WF_INTERPOLATION"), &
390 description="Extrapolation strategy for the wavefunction during e.g. MD. "// &
391 "Not all options are available for all simulation methods. "// &
392 "PS and ASPC are recommended, see also EXTRAPOLATION_ORDER.", &
393 citations=(/kolafa2004, vandevondele2005a, kuhne2007/), &
394 usage="EXTRAPOLATION PS", &
395 enum_c_vals=s2a("USE_GUESS", "USE_PREV_P", "USE_PREV_RHO_R", "LINEAR_WF", &
396 "LINEAR_P", "LINEAR_PS", "USE_PREV_WF", "PS", "FROZEN", "ASPC"), &
397 enum_desc=s2a( &
398 "Use the method specified with SCF_GUESS, i.e. no extrapolation", &
399 "Use the previous density matrix", &
400 "Use the previous density in real space", &
401 "Linear extrapolation of the wavefunction (not available for K-points)", &
402 "Linear extrapolation of the density matrix", &
403 "Linear extrapolation of the density matrix times the overlap matrix (not available for K-points)", &
404 "Use the previous wavefunction (not available for K-points)", &
405 "Higher order extrapolation of the density matrix times the overlap matrix (not available for K-points)", &
406 "Frozen ...", &
407 "Always stable predictor corrector, similar to PS, but going for MD stability instead of initial guess accuracy. "// &
408 "(not available for K-points)"), &
409 enum_i_vals=(/ &
419 wfi_aspc_nr/), &
420 default_i_val=wfi_aspc_nr)
421 CALL section_add_keyword(section, keyword)
422 CALL keyword_release(keyword)
423
424 CALL keyword_create(keyword, __location__, name="EXTRAPOLATION_ORDER", &
425 description="Order for the PS or ASPC extrapolation (typically 2-4). "// &
426 "Higher order might bring more accuracy, but comes, "// &
427 "for large systems, also at some cost. "// &
428 "In some cases, a high order extrapolation is not stable,"// &
429 " and the order needs to be reduced.", &
430 usage="EXTRAPOLATION_ORDER {integer}", default_i_val=3)
431 CALL section_add_keyword(section, keyword)
432 CALL keyword_release(keyword)
433
434 CALL keyword_create(keyword, __location__, name="METHOD", &
435 description="Specifies the electronic structure method that should be employed", &
436 usage="METHOD GAPW", &
437 enum_c_vals=s2a("GAPW", "GAPW_XC", "GPW", "LRIGPW", "RIGPW", &
438 "MNDO", "MNDOD", "AM1", "PM3", "PM6", "PM6-FM", "PDG", "RM1", "PNNL", "DFTB", "xTB", "OFGPW"), &
439 enum_desc=s2a("Gaussian and augmented plane waves method", &
440 "Gaussian and augmented plane waves method only for XC", &
441 "Gaussian and plane waves method", &
442 "Local resolution of identity method", &
443 "Resolution of identity method for HXC terms", &
444 "MNDO semiempirical", "MNDO-d semiempirical", "AM1 semiempirical", &
445 "PM3 semiempirical", "PM6 semiempirical", "PM6-FM semiempirical", "PDG semiempirical", &
446 "RM1 semiempirical", &
447 "PNNL semiempirical", &
448 "DFTB Density Functional based Tight-Binding", &
449 "GFN-xTB Extended Tight-Binding", &
450 "OFGPW Orbital-free GPW method"), &
458 default_i_val=do_method_gpw)
459 CALL section_add_keyword(section, keyword)
460 CALL keyword_release(keyword)
461
462 CALL keyword_create(keyword, __location__, name="CORE_PPL", &
463 description="Specifies the method used to calculate the local pseudopotential contribution.", &
464 usage="CORE_PPL ANALYTIC", &
465 enum_c_vals=s2a("ANALYTIC", "GRID"), &
466 enum_desc=s2a("Analytic integration of integrals", &
467 "Numerical integration on real space grid. Lumped together with core charge"), &
468 enum_i_vals=(/do_ppl_analytic, do_ppl_grid/), &
469 default_i_val=do_ppl_analytic)
470 CALL section_add_keyword(section, keyword)
471 CALL keyword_release(keyword)
472
473 CALL keyword_create(keyword, __location__, name="EMBED_RESTART_FILE_NAME", &
474 description="Root of the file name where to read the embedding "// &
475 "potential guess.", &
476 usage="EMBED_RESTART_FILE_NAME <FILENAME>", &
477 type_of_var=lchar_t)
478 CALL section_add_keyword(section, keyword)
479 CALL keyword_release(keyword)
480
481 CALL keyword_create(keyword, __location__, name="EMBED_CUBE_FILE_NAME", &
482 description="Root of the file name where to read the embedding "// &
483 "potential (guess) as a cube.", &
484 usage="EMBED_CUBE_FILE_NAME <FILENAME>", &
485 type_of_var=lchar_t)
486 CALL section_add_keyword(section, keyword)
487 CALL keyword_release(keyword)
488
489 CALL keyword_create(keyword, __location__, name="EMBED_SPIN_CUBE_FILE_NAME", &
490 description="Root of the file name where to read the spin part "// &
491 "of the embedding potential (guess) as a cube.", &
492 usage="EMBED_SPIN_CUBE_FILE_NAME <FILENAME>", &
493 type_of_var=lchar_t)
494 CALL section_add_keyword(section, keyword)
495 CALL keyword_release(keyword)
496
497 CALL create_distribution_section(subsection)
498 CALL section_add_subsection(section, subsection)
499 CALL section_release(subsection)
500
501 CALL create_dftb_control_section(subsection)
502 CALL section_add_subsection(section, subsection)
503 CALL section_release(subsection)
504
505 CALL create_xtb_control_section(subsection)
506 CALL section_add_subsection(section, subsection)
507 CALL section_release(subsection)
508
509 CALL create_se_control_section(subsection)
510 CALL section_add_subsection(section, subsection)
511 CALL section_release(subsection)
512
513 CALL create_mulliken_section(subsection)
514 CALL section_add_subsection(section, subsection)
515 CALL section_release(subsection)
516
517 CALL create_ddapc_restraint_section(subsection, "DDAPC_RESTRAINT")
518 CALL section_add_subsection(section, subsection)
519 CALL section_release(subsection)
520
521 CALL create_cdft_control_section(subsection)
522 CALL section_add_subsection(section, subsection)
523 CALL section_release(subsection)
524
525 CALL create_s2_restraint_section(subsection)
526 CALL section_add_subsection(section, subsection)
527 CALL section_release(subsection)
528
529 CALL create_lrigpw_section(subsection)
530 CALL section_add_subsection(section, subsection)
531 CALL section_release(subsection)
532
533 CALL create_optimize_lri_basis_section(subsection)
534 CALL section_add_subsection(section, subsection)
535 CALL section_release(subsection)
536
537 ! Embedding subsections: DFET and DMFET
538 CALL create_optimize_embed(subsection)
539 CALL section_add_subsection(section, subsection)
540 CALL section_release(subsection)
541
542 CALL create_optimize_dmfet(subsection)
543 CALL section_add_subsection(section, subsection)
544 CALL section_release(subsection)
545
546 END SUBROUTINE create_qs_section
547
548! **************************************************************************************************
549!> \brief ...
550!> \param section ...
551! **************************************************************************************************
552 SUBROUTINE create_mulliken_section(section)
553 TYPE(section_type), POINTER :: section
554
555 TYPE(keyword_type), POINTER :: keyword
556
557 NULLIFY (keyword)
558 cpassert(.NOT. ASSOCIATED(section))
559 CALL section_create(section, __location__, name="MULLIKEN_RESTRAINT", &
560 description="Use mulliken charges in a restraint (check code for details)", &
561 n_keywords=7, n_subsections=0, repeats=.false.)
562
563 CALL keyword_create(keyword, __location__, name="STRENGTH", &
564 description="force constant of the restraint", &
565 usage="STRENGTH {real} ", default_r_val=0.1_dp)
566 CALL section_add_keyword(section, keyword)
567 CALL keyword_release(keyword)
568
569 CALL keyword_create(keyword, __location__, name="TARGET", &
570 description="target value of the restraint", &
571 usage="TARGET {real} ", default_r_val=1._dp)
572 CALL section_add_keyword(section, keyword)
573 CALL keyword_release(keyword)
574
575 CALL keyword_create(keyword, __location__, name="ATOMS", &
576 description="Specifies the list of atoms that is summed in the restraint", &
577 usage="ATOMS {integer} {integer} .. {integer}", &
578 n_var=-1, type_of_var=integer_t)
579 CALL section_add_keyword(section, keyword)
580 CALL keyword_release(keyword)
581
582 END SUBROUTINE create_mulliken_section
583
584! **************************************************************************************************
585!> \brief ...
586!> \param section ...
587!> \param section_name ...
588! **************************************************************************************************
589 SUBROUTINE create_ddapc_restraint_section(section, section_name)
590 TYPE(section_type), POINTER :: section
591 CHARACTER(len=*), INTENT(in) :: section_name
592
593 TYPE(keyword_type), POINTER :: keyword
594 TYPE(section_type), POINTER :: print_key
595
596 NULLIFY (keyword, print_key)
597 cpassert(.NOT. ASSOCIATED(section))
598 CALL section_create(section, __location__, name=trim(adjustl(section_name)), &
599 description="Use DDAPC charges in a restraint (check code for details)", &
600 n_keywords=7, n_subsections=0, repeats=.true.)
601
602 CALL keyword_create(keyword, __location__, name="TYPE_OF_DENSITY", &
603 description="Specifies the type of density used for the fitting", &
604 usage="TYPE_OF_DENSITY (FULL|SPIN)", &
605 enum_c_vals=s2a("FULL", "SPIN"), &
606 enum_i_vals=(/do_full_density, do_spin_density/), &
607 enum_desc=s2a("Full density", "Spin density"), &
608 default_i_val=do_full_density)
609 CALL section_add_keyword(section, keyword)
610 CALL keyword_release(keyword)
611
612 CALL keyword_create(keyword, __location__, name="STRENGTH", &
613 description="force constant of the restraint", &
614 usage="STRENGTH {real} ", default_r_val=0.1_dp)
615 CALL section_add_keyword(section, keyword)
616 CALL keyword_release(keyword)
617
618 CALL keyword_create(keyword, __location__, name="TARGET", &
619 description="target value of the restraint", &
620 usage="TARGET {real} ", default_r_val=1._dp)
621 CALL section_add_keyword(section, keyword)
622 CALL keyword_release(keyword)
623
624 CALL keyword_create(keyword, __location__, name="ATOMS", &
625 description="Specifies the list of atoms that is summed in the restraint", &
626 usage="ATOMS {integer} {integer} .. {integer}", &
627 n_var=-1, type_of_var=integer_t)
628 CALL section_add_keyword(section, keyword)
629 CALL keyword_release(keyword)
630
631 CALL keyword_create(keyword, __location__, name="COEFF", &
632 description="Defines the the coefficient of the atom in the atom list (default is one) ", &
633 usage="COEFF 1.0 -1.0", &
634 type_of_var=real_t, n_var=-1)
635 CALL section_add_keyword(section, keyword)
636 CALL keyword_release(keyword)
637
638 CALL keyword_create(keyword, __location__, name="FUNCTIONAL_FORM", &
639 description="Specifies the functional form of the term added", &
640 usage="FUNCTIONAL_FORM RESTRAINT", &
641 enum_c_vals=s2a("RESTRAINT", "CONSTRAINT"), &
642 enum_i_vals=(/do_ddapc_restraint, do_ddapc_constraint/), &
643 enum_desc=s2a("Harmonic potential: s*(q-t)**2", "Constraint form: s*(q-t)"), &
644 default_i_val=do_ddapc_restraint)
645 CALL section_add_keyword(section, keyword)
646 CALL keyword_release(keyword)
647
648 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
649 description="Controls the printing basic info about the method", &
650 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
651 CALL section_add_subsection(section, print_key)
652 CALL section_release(print_key)
653
654 END SUBROUTINE create_ddapc_restraint_section
655
656! **************************************************************************************************
657!> \brief ...
658!> \param section ...
659! **************************************************************************************************
660 SUBROUTINE create_s2_restraint_section(section)
661 TYPE(section_type), POINTER :: section
662
663 TYPE(keyword_type), POINTER :: keyword
664
665 NULLIFY (keyword)
666 cpassert(.NOT. ASSOCIATED(section))
667
668 CALL section_create(section, __location__, name="S2_RESTRAINT", &
669 description="Use S2 in a re/constraint (OT only)", &
670 n_keywords=7, n_subsections=0, repeats=.false.)
671
672 CALL keyword_create(keyword, __location__, name="STRENGTH", &
673 description="force constant of the restraint", &
674 usage="STRENGTH {real} ", default_r_val=0.1_dp)
675 CALL section_add_keyword(section, keyword)
676 CALL keyword_release(keyword)
677
678 CALL keyword_create(keyword, __location__, name="TARGET", &
679 description="target value of the restraint", &
680 usage="TARGET {real} ", default_r_val=1._dp)
681 CALL section_add_keyword(section, keyword)
682 CALL keyword_release(keyword)
683
684 CALL keyword_create(keyword, __location__, name="FUNCTIONAL_FORM", &
685 description="Specifies the functional form of the term added", &
686 usage="FUNCTIONAL_FORM RESTRAINT", &
687 enum_c_vals=s2a("RESTRAINT", "CONSTRAINT"), &
688 enum_i_vals=(/do_s2_restraint, do_s2_constraint/), &
689 enum_desc=s2a("Harmonic potential: s*(q-t)**2", "Constraint form: s*(q-t)"), &
690 default_i_val=do_s2_restraint)
691 CALL section_add_keyword(section, keyword)
692 CALL keyword_release(keyword)
693
694 END SUBROUTINE create_s2_restraint_section
695
696! **************************************************************************************************
697!> \brief input section for optional parameters for LRIGPW
698!> LRI: local resolution of identity
699!> \param section the section to create
700!> \author Dorothea Golze [02.2015]
701! **************************************************************************************************
702 SUBROUTINE create_lrigpw_section(section)
703 TYPE(section_type), POINTER :: section
704
705 TYPE(keyword_type), POINTER :: keyword
706
707 cpassert(.NOT. ASSOCIATED(section))
708 CALL section_create(section, __location__, name="LRIGPW", &
709 description="This section specifies optional parameters for LRIGPW.", &
710 n_keywords=3, n_subsections=0, repeats=.false., citations=(/golze2017b/))
711
712 NULLIFY (keyword)
713
714 CALL keyword_create(keyword, __location__, name="LRI_OVERLAP_MATRIX", &
715 description="Specifies whether to calculate the inverse or the "// &
716 "pseudoinverse of the overlap matrix of the auxiliary "// &
717 "basis set. Calculating the pseudoinverse is necessary "// &
718 "for very large auxiliary basis sets, but more expensive. "// &
719 "Using the pseudoinverse, consistent forces are not "// &
720 "guaranteed yet.", &
721 usage="LRI_OVERLAP_MATRIX INVERSE", &
722 enum_c_vals=s2a("INVERSE", "PSEUDO_INVERSE_SVD", "PSEUDO_INVERSE_DIAG", &
723 "AUTOSELECT"), &
724 enum_desc=s2a("Calculate inverse of the overlap matrix.", &
725 "Calculate the pseuodinverse of the overlap matrix "// &
726 "using singular value decomposition.", &
727 "Calculate the pseudoinverse of the overlap matrix "// &
728 "by prior diagonalization.", &
729 "Choose automatically for each pair whether to "// &
730 "calculate the inverse or pseudoinverse based on the "// &
731 "condition number of the overlap matrix for each pair. "// &
732 "Calculating the pseudoinverse is much more expensive."), &
733 enum_i_vals=(/do_lri_inv, do_lri_pseudoinv_svd, &
735 default_i_val=do_lri_inv)
736 CALL section_add_keyword(section, keyword)
737 CALL keyword_release(keyword)
738
739 CALL keyword_create(keyword, __location__, name="MAX_CONDITION_NUM", &
740 description="If AUTOSELECT is chosen for LRI_OVERLAP_MATRIX, this "// &
741 "keyword specifies that the pseudoinverse is calculated "// &
742 "only if the LOG of the condition number of the lri "// &
743 "overlap matrix is larger than the given value.", &
744 usage="MAX_CONDITION_NUM 20.0", default_r_val=20.0_dp)
745 CALL section_add_keyword(section, keyword)
746 CALL keyword_release(keyword)
747
748 CALL keyword_create(keyword, __location__, name="EPS_O3_INT", &
749 description="Threshold for ABA and ABB integrals in LRI. "// &
750 "This is used for screening in the KS and "// &
751 "force calculations (tensor contractions).", &
752 usage="EPS_O3_INT 1.e-10", default_r_val=1.0e-14_dp)
753 CALL section_add_keyword(section, keyword)
754 CALL keyword_release(keyword)
755
756 CALL keyword_create(keyword, __location__, name="DEBUG_LRI_INTEGRALS", &
757 description="Debug the integrals needed for LRIGPW.", &
758 usage="DEBUG_LRI_INTEGRALS TRUE", &
759 default_l_val=.false., lone_keyword_l_val=.true.)
760 CALL section_add_keyword(section, keyword)
761 CALL keyword_release(keyword)
762
763 CALL keyword_create(keyword, __location__, name="EXACT_1C_TERMS", &
764 description="Don't use LRI for one center densities.", &
765 usage="EXACT_1C_TERMS TRUE", &
766 default_l_val=.false., lone_keyword_l_val=.true.)
767 CALL section_add_keyword(section, keyword)
768 CALL keyword_release(keyword)
769
770 CALL keyword_create(keyword, __location__, name="PPL_RI", &
771 description="Use LRI/RI for local pseudopotential.", &
772 usage="PPL_RI TRUE", &
773 default_l_val=.false., lone_keyword_l_val=.true.)
774 CALL section_add_keyword(section, keyword)
775 CALL keyword_release(keyword)
776
777 CALL keyword_create(keyword, __location__, name="RI_STATISTIC", &
778 description="Print statistical information on the RI calculation.", &
779 usage="RI_STATISTIC TRUE", &
780 default_l_val=.false., lone_keyword_l_val=.true.)
781 CALL section_add_keyword(section, keyword)
782 CALL keyword_release(keyword)
783
784 CALL keyword_create(keyword, __location__, name="DISTANT_PAIR_APPROXIMATION", &
785 description="Calculate distant pairs using an independent atom approximation.", &
786 usage="DISTANT_PAIR_APPROXIMATION TRUE", &
787 default_l_val=.false., lone_keyword_l_val=.true.)
788 CALL section_add_keyword(section, keyword)
789 CALL keyword_release(keyword)
790
791 CALL keyword_create(keyword, __location__, name="DISTANT_PAIR_METHOD", &
792 description="Method used to separate pair density for distant pairs. "// &
793 "Options: EW (equal weights); AW (atomic weights); SW (set weights); "// &
794 "LW (shell function weights)", &
795 usage="DISTANT_PAIR_METHOD {method}", &
796 default_c_val="LW")
797 CALL section_add_keyword(section, keyword)
798 CALL keyword_release(keyword)
799
800 CALL keyword_create(keyword, __location__, name="DISTANT_PAIR_RADII", &
801 description="Inner and outer radii used in distant "// &
802 "pair separation. Smooth interpolation between inner and outer "// &
803 "radius is used.", &
804 usage="DISTANT_PAIR_RADII r_inner {real} r_outer {real} ", &
805 n_var=2, default_r_vals=(/8._dp, 12._dp/), unit_str='bohr', &
806 type_of_var=real_t)
807 CALL section_add_keyword(section, keyword)
808 CALL keyword_release(keyword)
809
810 CALL keyword_create(keyword, __location__, name="SHG_LRI_INTEGRALS", &
811 description="Uses the SHG (solid harmonic Gaussian) integral "// &
812 "scheme instead of Obara-Saika", &
813 usage="SHG_LRI_INTEGRALS TRUE", &
814 default_l_val=.true., lone_keyword_l_val=.true., &
815 citations=(/golze2017a/))
816 CALL section_add_keyword(section, keyword)
817 CALL keyword_release(keyword)
818
819 CALL keyword_create(keyword, __location__, name="RI_SINV", &
820 description="Approximation to be used for the inverse of the "// &
821 "RI overlap matrix. INVF, INVS: exact inverse, apply directly "// &
822 "for solver (F:full matrix, S:sparsematrix). AINV approximate inverse, use with PCG. "// &
823 "NONE: no approximation used with CG solver.", &
824 usage="RI_SINV NONE", default_c_val="INVF")
825 CALL section_add_keyword(section, keyword)
826 CALL keyword_release(keyword)
827
828 END SUBROUTINE create_lrigpw_section
829
830END MODULE input_cp2k_qs
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public stewart2007
integer, save, public vandevondele2006
integer, save, public golze2017b
integer, save, public vandevondele2005a
integer, save, public kuhne2007
integer, save, public golze2017a
integer, save, public lippert1999
integer, save, public dewar1977
integer, save, public vanvoorhis2015
integer, save, public repasky2002
integer, save, public iannuzzi2006
integer, save, public rocha2006
integer, save, public lippert1997
integer, save, public andermatt2016
integer, save, public thiel1992
integer, save, public schenter2008
integer, save, public brelaz1979
integer, save, public krack2000
integer, save, public dewar1985
integer, save, public stewart1989
integer, save, public kolafa2004
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public low_print_level
integer, parameter, public add_last_numeric
subroutine, public cp_print_key_section_create(print_key_section, location, name, description, print_level, each_iter_names, each_iter_values, add_last, filename, common_iter_levels, citations, unit_str)
creates a print_key section
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_method_ofgpw
integer, parameter, public do_gapw_gct
integer, parameter, public do_gapw_gcs
integer, parameter, public do_s2_restraint
integer, parameter, public do_method_rigpw
integer, parameter, public do_s2_constraint
integer, parameter, public wfi_frozen_method_nr
integer, parameter, public do_method_gpw
integer, parameter, public gapw_1c_large
integer, parameter, public do_method_pdg
integer, parameter, public wfi_linear_wf_method_nr
integer, parameter, public wfi_linear_p_method_nr
integer, parameter, public wfi_linear_ps_method_nr
integer, parameter, public do_method_pnnl
integer, parameter, public do_ddapc_constraint
integer, parameter, public wfi_use_prev_rho_r_method_nr
integer, parameter, public do_lri_inv_auto
integer, parameter, public gapw_1c_medium
integer, parameter, public wfi_use_guess_method_nr
integer, parameter, public do_ppl_grid
integer, parameter, public do_method_rm1
integer, parameter, public gapw_1c_small
integer, parameter, public do_method_pm3
integer, parameter, public do_method_mndo
integer, parameter, public gapw_1c_orb
integer, parameter, public do_pwgrid_ns_fullspace
integer, parameter, public gapw_1c_very_large
integer, parameter, public do_method_gapw
integer, parameter, public do_lri_pseudoinv_svd
integer, parameter, public do_method_mndod
integer, parameter, public do_gapw_log
integer, parameter, public do_method_am1
integer, parameter, public do_method_dftb
integer, parameter, public wfi_use_prev_wf_method_nr
integer, parameter, public do_spin_density
integer, parameter, public gaussian
integer, parameter, public wfi_ps_method_nr
integer, parameter, public do_pwgrid_spherical
integer, parameter, public do_method_lrigpw
integer, parameter, public do_ppl_analytic
integer, parameter, public wfi_aspc_nr
integer, parameter, public do_lri_inv
integer, parameter, public do_method_xtb
integer, parameter, public do_ddapc_restraint
integer, parameter, public do_pwgrid_ns_halfspace
integer, parameter, public do_method_pm6fm
integer, parameter, public do_full_density
integer, parameter, public do_method_gapw_xc
integer, parameter, public numerical
integer, parameter, public do_method_pm6
integer, parameter, public wfi_use_prev_p_method_nr
integer, parameter, public do_lri_pseudoinv_diag
integer, parameter, public slater
function that builds the distribution section of the input
subroutine, public create_distribution_section(section)
Creates the distribution section.
function that build the dft section of the input
subroutine, public create_optimize_lri_basis_section(section)
input section for optimization of the auxililary basis for LRIGPW
subroutine, public create_optimize_dmfet(section)
Input for density matrix functional embedding, DMFET.
subroutine, public create_optimize_embed(section)
Input for DFT embedding.
function that build the QS section of the input
subroutine, public create_qs_section(section)
creates the input section for the qs part
subroutine, public create_lrigpw_section(section)
input section for optional parameters for LRIGPW LRI: local resolution of identity
subroutine, public create_ddapc_restraint_section(section, section_name)
...
function that build the scf section of the input
subroutine, public create_cdft_control_section(section)
Creates the input section for defining CDFT constraints.
function that build the semi empirical section of the input
subroutine, public create_se_control_section(section)
...
function that build the dft section of the input
subroutine, public create_dftb_control_section(section)
...
subroutine, public create_xtb_control_section(section)
...
represents keywords in an input
subroutine, public keyword_release(keyword)
releases the given keyword (see doc/ReferenceCounting.html)
subroutine, public keyword_create(keyword, location, name, description, usage, type_of_var, n_var, repeats, variants, default_val, default_l_val, default_r_val, default_lc_val, default_c_val, default_i_val, default_l_vals, default_r_vals, default_c_vals, default_i_vals, lone_keyword_val, lone_keyword_l_val, lone_keyword_r_val, lone_keyword_c_val, lone_keyword_i_val, lone_keyword_l_vals, lone_keyword_r_vals, lone_keyword_c_vals, lone_keyword_i_vals, enum_c_vals, enum_i_vals, enum, enum_strict, enum_desc, unit_str, citations, deprecation_notice, removed)
creates a keyword object
objects that represent the structure of input sections and the data contained in an input section
subroutine, public section_create(section, location, name, description, n_keywords, n_subsections, repeats, citations, deprecation_notice)
creates a list of keywords
subroutine, public section_add_keyword(section, keyword)
adds a keyword to the given section
subroutine, public section_add_subsection(section, subsection)
adds a subsection to the given section
recursive subroutine, public section_release(section)
releases the given keyword list (see doc/ReferenceCounting.html)
a wrapper for basic fortran types.
integer, parameter, public real_t
integer, parameter, public lchar_t
integer, parameter, public integer_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
This module defines the grid data type and some basic operations on it.
Definition pw_grids.F:36
integer, parameter, public do_pw_grid_blocked_false
Definition pw_grids.F:77
integer, parameter, public do_pw_grid_blocked_true
Definition pw_grids.F:77
integer, parameter, public do_pw_grid_blocked_free
Definition pw_grids.F:77
Utilities for string manipulations.
represent a keyword in the input
represent a section of the input file