(git:e5b1968)
Loading...
Searching...
No Matches
input_cp2k_dft.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 dft section of the input
10!> \par History
11!> 10.2005 moved out of input_cp2k [fawzi]
12!> \author fawzi
13! **************************************************************************************************
17 USE bibliography, ONLY: &
27 USE cp_spline_utils, ONLY: pw_interp,&
30 USE cp_units, ONLY: cp_unit_to_cp2k
31 USE input_constants, ONLY: &
86 USE input_val_types, ONLY: char_t,&
87 integer_t,&
88 lchar_t,&
89 real_t
90 USE kinds, ONLY: dp
91 USE physcon, ONLY: evolt,&
93 USE pw_spline_utils, ONLY: no_precond,&
99 USE string_utilities, ONLY: s2a
100#include "./base/base_uses.f90"
101
102 IMPLICIT NONE
103 PRIVATE
104
105 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_dft'
106
107 PUBLIC :: create_dft_section
108 PUBLIC :: create_bsse_section
109 PUBLIC :: create_interp_section
110 PUBLIC :: create_mgrid_section
111
112CONTAINS
113
114! **************************************************************************************************
115!> \brief creates the dft section
116!> \param section the section to be created
117!> \author fawzi
118! **************************************************************************************************
119 SUBROUTINE create_dft_section(section)
120 TYPE(section_type), POINTER :: section
121
122 TYPE(keyword_type), POINTER :: keyword
123 TYPE(section_type), POINTER :: subsection
124
125 cpassert(.NOT. ASSOCIATED(section))
126 CALL section_create(section, __location__, name="DFT", &
127 description="Parameter needed by LCAO DFT programs", &
128 n_keywords=3, n_subsections=4, repeats=.false.)
129
130 NULLIFY (keyword)
131 CALL keyword_create(keyword, __location__, name="BASIS_SET_FILE_NAME", &
132 description="Name of the basis set file, may include a path", &
133 usage="BASIS_SET_FILE_NAME <FILENAME>", &
134 type_of_var=lchar_t, repeats=.true., &
135 default_lc_val="BASIS_SET", n_var=1)
136 CALL section_add_keyword(section, keyword)
137 CALL keyword_release(keyword)
138
139 CALL keyword_create(keyword, __location__, name="POTENTIAL_FILE_NAME", &
140 description="Name of the pseudo potential file, may include a path", &
141 usage="POTENTIAL_FILE_NAME <FILENAME>", &
142 default_lc_val="POTENTIAL")
143 CALL section_add_keyword(section, keyword)
144 CALL keyword_release(keyword)
145
146 CALL keyword_create(keyword, __location__, name="WFN_RESTART_FILE_NAME", &
147 variants=(/"RESTART_FILE_NAME"/), &
148 description="Name of the wavefunction restart file, may include a path."// &
149 " If no file is specified, the default is to open the file as generated by the wfn restart print key.", &
150 usage="WFN_RESTART_FILE_NAME <FILENAME>", &
151 type_of_var=lchar_t)
152 CALL section_add_keyword(section, keyword)
153 CALL keyword_release(keyword)
154
155 CALL keyword_create(keyword, __location__, &
156 name="UKS", &
157 variants=s2a("UNRESTRICTED_KOHN_SHAM", &
158 "LSD", &
159 "SPIN_POLARIZED"), &
160 description="Requests a spin-polarized calculation using alpha "// &
161 "and beta orbitals, i.e. no spin restriction is applied", &
162 usage="LSD", &
163 default_l_val=.false., &
164 lone_keyword_l_val=.true.)
165 CALL section_add_keyword(section, keyword)
166 CALL keyword_release(keyword)
167 CALL keyword_create(keyword, __location__, &
168 name="ROKS", &
169 variants=(/"RESTRICTED_OPEN_KOHN_SHAM"/), &
170 description="Requests a restricted open Kohn-Sham calculation", &
171 usage="ROKS", &
172 default_l_val=.false., &
173 lone_keyword_l_val=.true.)
174 CALL section_add_keyword(section, keyword)
175 CALL keyword_release(keyword)
176 CALL keyword_create(keyword, __location__, &
177 name="MULTIPLICITY", &
178 variants=(/"MULTIP"/), &
179 description="Two times the total spin plus one. "// &
180 "Specify 3 for a triplet, 4 for a quartet, "// &
181 "and so on. Default is 1 (singlet) for an "// &
182 "even number and 2 (doublet) for an odd number "// &
183 "of electrons.", &
184 usage="MULTIPLICITY 3", &
185 default_i_val=0) ! this default value is just a flag to get the above
186 CALL section_add_keyword(section, keyword)
187 CALL keyword_release(keyword)
188 CALL keyword_create(keyword, __location__, name="CHARGE", &
189 description="The total charge of the system", &
190 usage="CHARGE -1", &
191 default_i_val=0)
192 CALL section_add_keyword(section, keyword)
193 CALL keyword_release(keyword)
194
195 CALL keyword_create(keyword, __location__, &
196 name="PLUS_U_METHOD", &
197 description="Method employed for the calculation of the DFT+U contribution", &
198 repeats=.false., &
199 enum_c_vals=s2a("LOWDIN", "MULLIKEN", "MULLIKEN_CHARGES"), &
201 enum_desc=s2a("Method based on Lowdin population analysis "// &
202 "(computationally expensive, since the diagonalization of the "// &
203 "overlap matrix is required, but possibly more robust than Mulliken)", &
204 "Method based on Mulliken population analysis using the net AO and "// &
205 "overlap populations (computationally cheap method)", &
206 "Method based on Mulliken gross orbital populations (GOP)"), &
207 n_var=1, &
208 default_i_val=plus_u_mulliken, &
209 usage="PLUS_U_METHOD Lowdin")
210 CALL section_add_keyword(section, keyword)
211 CALL keyword_release(keyword)
212
213 CALL keyword_create(keyword, __location__, &
214 name="RELAX_MULTIPLICITY", &
215 variants=(/"RELAX_MULTIP"/), &
216 description="Tolerance in Hartrees. Do not enforce the occupation "// &
217 "of alpha and beta MOs due to the initially "// &
218 "defined multiplicity, but rather follow the Aufbau principle. "// &
219 "A value greater than zero activates this option. "// &
220 "Larger tolerance values increase the probability for a spin flip. "// &
221 "This option is only valid for unrestricted (i.e. spin polarised) "// &
222 "Kohn-Sham (UKS) calculations.", &
223 usage="RELAX_MULTIPLICITY 0.00001", &
224 repeats=.false., &
225 default_r_val=0.0_dp)
226 CALL section_add_keyword(section, keyword)
227 CALL keyword_release(keyword)
228
229 CALL keyword_create(keyword, __location__, name="SUBCELLS", &
230 description="Read the grid size for subcell generation in the construction of "// &
231 "neighbor lists.", usage="SUBCELLS 1.5", &
232 n_var=1, default_r_val=2.0_dp)
233 CALL section_add_keyword(section, keyword)
234 CALL keyword_release(keyword)
235
236 CALL keyword_create(keyword, __location__, name="AUTO_BASIS", &
237 description="Specify size of automatically generated auxiliary (RI) basis sets: "// &
238 "Options={small,medium,large,huge}", &
239 usage="AUTO_BASIS {basis_type} {basis_size}", &
240 type_of_var=char_t, repeats=.true., n_var=-1, default_c_vals=(/"X", "X"/))
241 CALL section_add_keyword(section, keyword)
242 CALL keyword_release(keyword)
243
244 CALL keyword_create(keyword, __location__, &
245 name="SURFACE_DIPOLE_CORRECTION", &
246 variants=s2a("SURFACE_DIPOLE", &
247 "SURF_DIP"), &
248 description="For slab calculations with asymmetric geometries, activate the correction of "// &
249 "the electrostatic potential with "// &
250 "by compensating for the surface dipole. Implemented only for slabs with normal "// &
251 "parallel to one Cartesian axis. The normal direction is given by the keyword SURF_DIP_DIR", &
252 usage="SURF_DIP", &
253 default_l_val=.false., &
254 lone_keyword_l_val=.true., &
255 citations=(/bengtsson1999/))
256 CALL section_add_keyword(section, keyword)
257 CALL keyword_release(keyword)
258
259 CALL keyword_create(keyword, __location__, &
260 name="SURF_DIP_DIR", &
261 description="Cartesian axis parallel to surface normal.", &
262 enum_c_vals=s2a("X", "Y", "Z"), &
263 enum_i_vals=(/1, 2, 3/), &
264 enum_desc=s2a("Along x", "Along y", "Along z"), &
265 n_var=1, &
266 default_i_val=3, &
267 usage="SURF_DIP_DIR Z")
268 CALL section_add_keyword(section, keyword)
269 CALL keyword_release(keyword)
270
271 CALL keyword_create(keyword, __location__, &
272 name="SURF_DIP_POS", &
273 description="This keyword assigns an user defined position in Angstroms "// &
274 "in the direction normal to the surface (given by SURF_DIP_DIR). "// &
275 "The default value is -1.0_dp which appplies the correction at a position "// &
276 "that has minimum electron density on the grid.", &
277 usage="SURF_DIP_POS -1.0_dp", &
278 default_r_val=-1.0_dp)
279 CALL section_add_keyword(section, keyword)
280 CALL keyword_release(keyword)
281
282 CALL keyword_create(keyword, __location__, &
283 name="SURF_DIP_SWITCH", &
284 description="WARNING: Experimental feature under development that will help the "// &
285 "user to switch parameters to facilitate SCF convergence. In its current form the "// &
286 "surface dipole correction is switched off if the calculation does not converge in "// &
287 "(0.5*MAX_SCF + 1) outer_scf steps. "// &
288 "The default value is .FALSE.", &
289 usage="SURF_DIP_SWITCH .TRUE.", &
290 default_l_val=.false., &
291 lone_keyword_l_val=.true.)
292 CALL section_add_keyword(section, keyword)
293 CALL keyword_release(keyword)
294
295 CALL keyword_create(keyword, __location__, &
296 name="CORE_CORR_DIP", &
297 description="If the total CORE_CORRECTION is non-zero and surface dipole "// &
298 "correction is switched on, presence of this keyword will adjust electron "// &
299 "density via MO occupation to reflect the total CORE_CORRECTION. "// &
300 "The default value is .FALSE.", &
301 usage="CORE_CORR_DIP .TRUE.", &
302 default_l_val=.false., &
303 lone_keyword_l_val=.true.)
304 CALL section_add_keyword(section, keyword)
305 CALL keyword_release(keyword)
306
307 CALL keyword_create(keyword, __location__, &
308 name="SORT_BASIS", &
309 description="Sort basis sets according to a certain criterion. ", &
310 enum_c_vals=s2a("DEFAULT", "EXP"), &
311 enum_i_vals=(/basis_sort_default, basis_sort_zet/), &
312 enum_desc=s2a("don't sort", "sort w.r.t. exponent"), &
313 default_i_val=basis_sort_default, &
314 usage="SORT_BASIS EXP")
315 CALL section_add_keyword(section, keyword)
316 CALL keyword_release(keyword)
317
318 NULLIFY (subsection)
319 CALL create_scf_section(subsection)
320 CALL section_add_subsection(section, subsection)
321 CALL section_release(subsection)
322
323 CALL create_ls_scf_section(subsection)
324 CALL section_add_subsection(section, subsection)
325 CALL section_release(subsection)
326
327 CALL create_almo_scf_section(subsection)
328 CALL section_add_subsection(section, subsection)
329 CALL section_release(subsection)
330
331 CALL create_kg_section(subsection)
332 CALL section_add_subsection(section, subsection)
333 CALL section_release(subsection)
334
335 CALL create_harris_section(subsection)
336 CALL section_add_subsection(section, subsection)
337 CALL section_release(subsection)
338
339 CALL create_ec_section(subsection)
340 CALL section_add_subsection(section, subsection)
341 CALL section_release(subsection)
342
343 CALL create_exstate_section(subsection)
344 CALL section_add_subsection(section, subsection)
345 CALL section_release(subsection)
346
347 CALL create_admm_section(subsection)
348 CALL section_add_subsection(section, subsection)
349 CALL section_release(subsection)
350
351 CALL create_qs_section(subsection)
352 CALL section_add_subsection(section, subsection)
353 CALL section_release(subsection)
354
355 CALL create_mgrid_section(subsection, create_subsections=.true.)
356 CALL section_add_subsection(section, subsection)
357 CALL section_release(subsection)
358
359 CALL create_xc_section(subsection)
360 CALL section_add_subsection(section, subsection)
361 CALL section_release(subsection)
362
363 CALL create_relativistic_section(subsection)
364 CALL section_add_subsection(section, subsection)
365 CALL section_release(subsection)
366
367 CALL create_sic_section(subsection)
368 CALL section_add_subsection(section, subsection)
369 CALL section_release(subsection)
370
371 CALL create_low_spin_roks_section(subsection)
372 CALL section_add_subsection(section, subsection)
373 CALL section_release(subsection)
374
375 CALL create_efield_section(subsection)
376 CALL section_add_subsection(section, subsection)
377 CALL section_release(subsection)
378
379 CALL create_per_efield_section(subsection)
380 CALL section_add_subsection(section, subsection)
381 CALL section_release(subsection)
382
383 CALL create_ext_pot_section(subsection)
384 CALL section_add_subsection(section, subsection)
385 CALL section_release(subsection)
386
387 CALL create_transport_section(subsection)
388 CALL section_add_subsection(section, subsection)
389 CALL section_release(subsection)
390
391 ! ZMP sections to include the external density or v_xc potential
392 CALL create_ext_den_section(subsection)
393 CALL section_add_subsection(section, subsection)
394 CALL section_release(subsection)
395
396 CALL create_ext_vxc_section(subsection)
397 CALL section_add_subsection(section, subsection)
398 CALL section_release(subsection)
399
400 CALL create_poisson_section(subsection)
401 CALL section_add_subsection(section, subsection)
402 CALL section_release(subsection)
403
404 CALL create_kpoints_section(subsection)
405 CALL section_add_subsection(section, subsection)
406 CALL section_release(subsection)
407
408 CALL create_implicit_solv_section(subsection)
409 CALL section_add_subsection(section, subsection)
410 CALL section_release(subsection)
411
412 CALL create_density_fitting_section(subsection)
413 CALL section_add_subsection(section, subsection)
414 CALL section_release(subsection)
415
416 CALL create_xas_section(subsection)
417 CALL section_add_subsection(section, subsection)
418 CALL section_release(subsection)
419
420 CALL create_xas_tdp_section(subsection)
421 CALL section_add_subsection(section, subsection)
422 CALL section_release(subsection)
423
424 CALL create_localize_section(subsection)
425 CALL section_add_subsection(section, subsection)
426 CALL section_release(subsection)
427
428 CALL create_rtp_section(subsection)
429 CALL section_add_subsection(section, subsection)
430 CALL section_release(subsection)
431
432 CALL create_print_dft_section(subsection)
433 CALL section_add_subsection(section, subsection)
434 CALL section_release(subsection)
435
436 CALL create_sccs_section(subsection)
437 CALL section_add_subsection(section, subsection)
438 CALL section_release(subsection)
439
440 CALL create_active_space_section(subsection)
441 CALL section_add_subsection(section, subsection)
442 CALL section_release(subsection)
443
444 CALL create_dft_smeagol_section(subsection)
445 CALL section_add_subsection(section, subsection)
446 CALL section_release(subsection)
447
448 CALL create_hairy_probes_section(subsection)
449 CALL section_add_subsection(section, subsection)
450 CALL section_release(subsection)
451
452 END SUBROUTINE create_dft_section
453
454! **************************************************************************************************
455!> \brief Hairy Probe DFT Model
456!> \param section ...
457!> \author Margherita Buraschi
458! **************************************************************************************************
459
460 SUBROUTINE create_hairy_probes_section(section)
461 TYPE(section_type), POINTER :: section
462
463 TYPE(keyword_type), POINTER :: keyword
464
465 NULLIFY (keyword)
466 cpassert(.NOT. ASSOCIATED(section))
467 CALL section_create(section, __location__, &
468 name="HAIRY_PROBES", &
469 description="Sets up a Hairy Probe calculation. ", &
470 n_keywords=0, n_subsections=0, repeats=.true.)
471
472 CALL keyword_create(keyword, __location__, &
473 name="_SECTION_PARAMETERS_", &
474 description="Controls the activation of hairy probe", &
475 usage="&HAIRY_PROBES ON", &
476 default_l_val=.false., &
477 lone_keyword_l_val=.true.)
478 CALL section_add_keyword(section, keyword)
479 CALL keyword_release(keyword)
480
481 CALL keyword_create(keyword, __location__, name="ATOM_IDS", &
482 description="Indexes of the atoms to which the probes are attached.", &
483 usage="ATOM_IDS <INTEGER> .. <INTEGER>", &
484 type_of_var=integer_t, n_var=-1)
485 CALL section_add_keyword(section, keyword)
486 CALL keyword_release(keyword)
487
488 CALL keyword_create(keyword, __location__, name="T", &
489 description="Electronic temperature [K]", &
490 usage="T <REAL>", &
491 default_r_val=cp_unit_to_cp2k(value=300.0_dp, unit_str="K"), &
492 unit_str="K")
493 CALL section_add_keyword(section, keyword)
494 CALL keyword_release(keyword)
495
496 CALL keyword_create(keyword, __location__, name="MU", &
497 description="Chemical potential of the electrons in the probes [eV] ", &
498 usage="MU <REAL>", &
499 default_r_val=cp_unit_to_cp2k(value=0.0_dp, unit_str="eV"), &
500 unit_str="eV")
501 CALL section_add_keyword(section, keyword)
502 CALL keyword_release(keyword)
503
504 CALL keyword_create(keyword, __location__, name="ALPHA", &
505 description="Parameter for solution probes ", &
506 usage="ALPHA <REAL>", &
507 default_r_val=1.0_dp)
508 CALL section_add_keyword(section, keyword)
509 CALL keyword_release(keyword)
510
511 CALL keyword_create(keyword, __location__, name="EPS_HP", &
512 description=" Tolerance for accuracy checks on occupation numbers "// &
513 "calculated using hair-probes. ", &
514 usage="EPS_HP <REAL>", &
515 default_r_val=1.0e-5_dp)
516 CALL section_add_keyword(section, keyword)
517 CALL keyword_release(keyword)
518 END SUBROUTINE create_hairy_probes_section
519!####################################################################################
520
521! **************************************************************************************************
522!> \brief Implicit Solvation Model
523!> \param section ...
524!> \author tlaino
525! **************************************************************************************************
526 SUBROUTINE create_implicit_solv_section(section)
527 TYPE(section_type), POINTER :: section
528
529 TYPE(keyword_type), POINTER :: keyword
530 TYPE(section_type), POINTER :: print_key, subsection
531
532 NULLIFY (keyword, subsection, print_key)
533 cpassert(.NOT. ASSOCIATED(section))
534 CALL section_create(section, __location__, name="SCRF", &
535 description="Adds an implicit solvation model to the DFT calculation."// &
536 " Know also as Self Consistent Reaction Field.", &
537 n_keywords=0, n_subsections=0, repeats=.false.)
538
539 CALL keyword_create(keyword, __location__, name="EPS_OUT", &
540 description="Value of the dielectric constant outside the sphere", &
541 usage="EPS_OUT <REAL>", &
542 default_r_val=1.0_dp)
543 CALL section_add_keyword(section, keyword)
544 CALL keyword_release(keyword)
545
546 CALL keyword_create(keyword, __location__, name="LMAX", &
547 description="Maximum value of L used in the multipole expansion", &
548 usage="LMAX <INTEGER>", &
549 default_i_val=3)
550 CALL section_add_keyword(section, keyword)
551 CALL keyword_release(keyword)
552
553 CALL create_sphere_section(subsection)
554 CALL section_add_subsection(section, subsection)
555 CALL section_release(subsection)
556
557 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
558 description="Controls the printing basic info about the method", &
559 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
560 CALL section_add_subsection(section, print_key)
561 CALL section_release(print_key)
562
563 END SUBROUTINE create_implicit_solv_section
564
565! **************************************************************************************************
566!> \brief Create Sphere cavity
567!> \param section ...
568!> \author tlaino
569! **************************************************************************************************
570 SUBROUTINE create_sphere_section(section)
571 TYPE(section_type), POINTER :: section
572
573 TYPE(keyword_type), POINTER :: keyword
574 TYPE(section_type), POINTER :: subsection
575
576 NULLIFY (keyword, subsection)
577 cpassert(.NOT. ASSOCIATED(section))
578 CALL section_create(section, __location__, name="SPHERE", &
579 description="Treats the implicit solvent environment like a sphere", &
580 n_keywords=0, n_subsections=0, repeats=.false.)
581
582 CALL keyword_create(keyword, __location__, name="RADIUS", &
583 description="Value of the spherical cavity in the dielectric medium", &
584 usage="RADIUS <REAL>", &
585 unit_str="angstrom", &
586 type_of_var=real_t)
587 CALL section_add_keyword(section, keyword)
588 CALL keyword_release(keyword)
589
590 CALL create_center_section(subsection)
591 CALL section_add_subsection(section, subsection)
592 CALL section_release(subsection)
593
594 END SUBROUTINE create_sphere_section
595
596! **************************************************************************************************
597!> \brief ...
598!> \param section ...
599!> \author tlaino
600! **************************************************************************************************
601 SUBROUTINE create_center_section(section)
602 TYPE(section_type), POINTER :: section
603
604 TYPE(keyword_type), POINTER :: keyword
605
606 NULLIFY (keyword)
607 cpassert(.NOT. ASSOCIATED(section))
608 CALL section_create(section, __location__, name="CENTER", &
609 description="Defines the center of the sphere.", &
610 n_keywords=0, n_subsections=0, repeats=.false.)
611 CALL keyword_create(keyword, __location__, name="XYZ", &
612 description="Coordinates of the center of the sphere", &
613 usage="XYZ <REAL> <REAL> <REAL>", &
614 unit_str="angstrom", &
615 type_of_var=real_t, n_var=3)
616 CALL section_add_keyword(section, keyword)
617 CALL keyword_release(keyword)
618
619 CALL keyword_create(keyword, __location__, name="ATOM_LIST", &
620 description="Defines a list of atoms to define the center of the sphere", &
621 usage="ATOM_LIST <INTEGER> .. <INTEGER>", &
622 type_of_var=integer_t, n_var=-1)
623 CALL section_add_keyword(section, keyword)
624 CALL keyword_release(keyword)
625
626 CALL keyword_create(keyword, __location__, name="WEIGHT_TYPE", &
627 description="Defines the weight used to define the center of the sphere"// &
628 " (if ATOM_LIST is provided)", &
629 usage="WEIGHT_TYPE (UNIT|MASS)", &
630 enum_c_vals=(/"UNIT", "MASS"/), &
631 enum_i_vals=(/weight_type_unit, weight_type_mass/), &
632 default_i_val=weight_type_unit)
633 CALL section_add_keyword(section, keyword)
634 CALL keyword_release(keyword)
635
636 CALL keyword_create(keyword, __location__, name="FIXED", &
637 description="Specify if the center of the sphere should be fixed or"// &
638 " allowed to move", &
639 usage="FIXED <LOGICAL>", &
640 default_l_val=.true.)
641 CALL section_add_keyword(section, keyword)
642 CALL keyword_release(keyword)
643
644 END SUBROUTINE create_center_section
645
646! **************************************************************************************************
647!> \brief ...
648!> \param section ...
649! **************************************************************************************************
650 SUBROUTINE create_admm_section(section)
651 TYPE(section_type), POINTER :: section
652
653 TYPE(keyword_type), POINTER :: keyword
654
655 NULLIFY (keyword)
656 cpassert(.NOT. ASSOCIATED(section))
657 CALL section_create(section, __location__, name="AUXILIARY_DENSITY_MATRIX_METHOD", &
658 description="Parameters needed for the ADMM method.", &
659 n_keywords=1, n_subsections=1, repeats=.false., &
660 citations=(/guidon2010/))
661
662 CALL keyword_create( &
663 keyword, __location__, &
664 name="ADMM_TYPE", &
665 description="Type of ADMM (sort name) as refered in literature. "// &
666 "This sets values for METHOD, ADMM_PURIFICATION_METHOD, and EXCH_SCALING_MODEL", &
667 enum_c_vals=s2a("NONE", "ADMM1", "ADMM2", "ADMMS", "ADMMP", "ADMMQ"), &
668 enum_desc=s2a("No short name is used, use specific definitions (default)", &
669 "ADMM1 method from Guidon2010", &
670 "ADMM2 method from Guidon2010", &
671 "ADMMS method from Merlot2014", &
672 "ADMMP method from Merlot2014", &
673 "ADMMQ method from Merlot2014"), &
675 default_i_val=no_admm_type, &
676 citations=(/guidon2010, merlot2014/))
677 CALL section_add_keyword(section, keyword)
678 CALL keyword_release(keyword)
679
680 CALL keyword_create( &
681 keyword, __location__, &
682 name="ADMM_PURIFICATION_METHOD", &
683 description="Method that shall be used for wavefunction fitting. Use MO_DIAG for MD.", &
684 enum_c_vals=s2a("NONE", "CAUCHY", "CAUCHY_SUBSPACE", "MO_DIAG", "MO_NO_DIAG", "MCWEENY", "NONE_DM"), &
688 enum_desc=s2a("Do not apply any purification", &
689 "Perform purification via general Cauchy representation", &
690 "Perform purification via Cauchy representation in occupied subspace", &
691 "Calculate MO derivatives via Cauchy representation by diagonalization", &
692 "Calculate MO derivatives via Cauchy representation by inversion", &
693 "Perform original McWeeny purification via matrix multiplications", &
694 "Do not apply any purification, works directly with density matrix"), &
695 default_i_val=do_admm_purify_mo_diag)
696 CALL section_add_keyword(section, keyword)
697 CALL keyword_release(keyword)
698
699 CALL keyword_create( &
700 keyword, __location__, &
701 name="METHOD", &
702 description="Method that shall be used for wavefunction fitting. Use BASIS_PROJECTION for MD.", &
703 enum_c_vals=s2a("BASIS_PROJECTION", "BLOCKED_PROJECTION_PURIFY_FULL", "BLOCKED_PROJECTION", &
704 "CHARGE_CONSTRAINED_PROJECTION"), &
707 enum_desc=s2a("Construct auxiliary density matrix from auxiliary basis.", &
708 "Construct auxiliary density from a blocked Fock matrix,"// &
709 " but use the original matrix for purification.", &
710 "Construct auxiliary density from a blocked Fock matrix.", &
711 "Construct auxiliary density from auxiliary basis enforcing charge constrain."), &
712 default_i_val=do_admm_basis_projection)
713 CALL section_add_keyword(section, keyword)
714 CALL keyword_release(keyword)
715
716 CALL keyword_create( &
717 keyword, __location__, &
718 name="EXCH_SCALING_MODEL", &
719 description="Scaling of the exchange correction calculated by the auxiliary density matrix.", &
720 enum_c_vals=s2a("NONE", "MERLOT"), &
722 enum_desc=s2a("No scaling is enabled, refers to methods ADMM1, ADMM2 or ADMMQ.", &
723 "Exchange scaling according to Merlot (2014)"), &
724 default_i_val=do_admm_exch_scaling_none)
725 CALL section_add_keyword(section, keyword)
726 CALL keyword_release(keyword)
727
728 CALL keyword_create( &
729 keyword, __location__, &
730 name="EXCH_CORRECTION_FUNC", &
731 description="Exchange functional which is used for the ADMM correction. "// &
732 "LibXC implementations require linking with LibXC", &
733 enum_c_vals=s2a("DEFAULT", "PBEX", "NONE", "OPTX", "BECKE88X", &
734 "PBEX_LIBXC", "BECKE88X_LIBXC", "OPTX_LIBXC", "DEFAULT_LIBXC", "LDA_X_LIBXC"), &
740 enum_desc=s2a("Use PBE-based corrections according to the chosen interaction operator.", &
741 "Use PBEX functional for exchange correction.", &
742 "No correction: X(D)-x(d)-> 0.", &
743 "Use OPTX functional for exchange correction.", &
744 "Use Becke88X functional for exchange correction.", &
745 "Use PBEX functional (LibXC implementation) for exchange correction.", &
746 "Use Becke88X functional (LibXC implementation) for exchange correction.", &
747 "Use OPTX functional (LibXC implementation) for exchange correction.", &
748 "Use PBE-based corrections (LibXC where possible) to the chosen interaction operator.", &
749 "Use Slater X functional (LibXC where possible) for exchange correction."), &
750 default_i_val=do_admm_aux_exch_func_default)
751 CALL section_add_keyword(section, keyword)
752 CALL keyword_release(keyword)
753
754 CALL keyword_create(keyword, __location__, name="optx_a1", &
755 description="OPTX a1 coefficient", &
756 default_r_val=1.05151_dp)
757 CALL section_add_keyword(section, keyword)
758 CALL keyword_release(keyword)
759 CALL keyword_create(keyword, __location__, name="optx_a2", &
760 description="OPTX a2 coefficient", &
761 default_r_val=1.43169_dp)
762 CALL section_add_keyword(section, keyword)
763 CALL keyword_release(keyword)
764 CALL keyword_create(keyword, __location__, name="optx_gamma", &
765 description="OPTX gamma coefficient", &
766 default_r_val=0.006_dp)
767 CALL section_add_keyword(section, keyword)
768 CALL keyword_release(keyword)
769
770 CALL keyword_create(keyword, __location__, name="BLOCK_LIST", &
771 description="Specifies a list of atoms.", &
772 usage="BLOCK_LIST {integer} {integer} .. {integer}", &
773 n_var=-1, type_of_var=integer_t, repeats=.true.)
774 CALL section_add_keyword(section, keyword)
775 CALL keyword_release(keyword)
776
777 CALL keyword_create(keyword, __location__, name="EPS_FILTER", &
778 description="Define accuracy of DBCSR operations", &
779 usage="EPS_FILTER", default_r_val=0.0_dp)
780 CALL section_add_keyword(section, keyword)
781 CALL keyword_release(keyword)
782
783 END SUBROUTINE create_admm_section
784
785! **************************************************************************************************
786!> \brief ...
787!> \param section ...
788! **************************************************************************************************
789 SUBROUTINE create_density_fitting_section(section)
790 TYPE(section_type), POINTER :: section
791
792 TYPE(keyword_type), POINTER :: keyword
793 TYPE(section_type), POINTER :: print_key
794
795 NULLIFY (keyword, print_key)
796 cpassert(.NOT. ASSOCIATED(section))
797 CALL section_create(section, __location__, name="DENSITY_FITTING", &
798 description="Setup parameters for density fitting (Bloechl charges or density derived "// &
799 "atomic point charges (DDAPC) charges)", &
800 n_keywords=7, n_subsections=0, repeats=.false., &
801 citations=(/blochl1995/))
802
803 CALL keyword_create(keyword, __location__, name="NUM_GAUSS", &
804 description="Specifies the numbers of gaussian used to fit the QM density for each atomic site.", &
805 usage="NUM_GAUSS {integer}", &
806 n_var=1, type_of_var=integer_t, default_i_val=3)
807 CALL section_add_keyword(section, keyword)
808 CALL keyword_release(keyword)
809
810 CALL keyword_create(keyword, __location__, name="PFACTOR", &
811 description="Specifies the progression factor for the gaussian exponent for each atomic site.", &
812 usage="PFACTOR {real}", &
813 n_var=1, type_of_var=real_t, default_r_val=1.5_dp)
814 CALL section_add_keyword(section, keyword)
815 CALL keyword_release(keyword)
816
817 CALL keyword_create(keyword, __location__, name="MIN_RADIUS", &
818 description="Specifies the smallest radius of the gaussian used in the fit. All other radius are"// &
819 " obtained with the progression factor.", &
820 usage="MIN_RADIUS {real}", &
821 unit_str="angstrom", n_var=1, type_of_var=real_t, default_r_val=0.5_dp)
822 CALL section_add_keyword(section, keyword)
823 CALL keyword_release(keyword)
824
825 CALL keyword_create(keyword, __location__, name="RADII", &
826 description="Specifies all the radius of the gaussian used in the fit for each atomic site. The use"// &
827 " of this keyword disables all other keywords of this section.", &
828 usage="RADII {real} {real} .. {real}", &
829 unit_str="angstrom", n_var=-1, type_of_var=real_t)
830 CALL section_add_keyword(section, keyword)
831 CALL keyword_release(keyword)
832
833 CALL keyword_create(keyword, __location__, name="GCUT", &
834 description="Cutoff for charge fit in G-space.", &
835 usage="GCUT {real}", &
836 n_var=1, type_of_var=real_t, default_r_val=sqrt(6.0_dp))
837 CALL section_add_keyword(section, keyword)
838 CALL keyword_release(keyword)
839
840 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
841 description="Controls the printing of basic information during the run", &
842 print_level=high_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
843
844 CALL keyword_create(keyword, __location__, name="CONDITION_NUMBER", &
845 description="Prints information regarding the condition numbers of the A matrix (to be inverted)", &
846 usage="CONDITION_NUMBER <LOGICAL>", &
847 default_l_val=.false., lone_keyword_l_val=.true.)
848 CALL section_add_keyword(print_key, keyword)
849 CALL keyword_release(keyword)
850
851 CALL section_add_subsection(section, print_key)
852 CALL section_release(print_key)
853
854 END SUBROUTINE create_density_fitting_section
855
856! **************************************************************************************************
857!> \brief creates the input section for the relativistic part
858!> \param section the section to create
859!> \author jens
860! **************************************************************************************************
861 SUBROUTINE create_relativistic_section(section)
862 TYPE(section_type), POINTER :: section
863
864 TYPE(keyword_type), POINTER :: keyword
865
866 cpassert(.NOT. ASSOCIATED(section))
867 CALL section_create(section, __location__, name="relativistic", &
868 description="parameters needed and setup for relativistic calculations", &
869 n_keywords=5, n_subsections=0, repeats=.false.)
870
871 NULLIFY (keyword)
872
873 CALL keyword_create(keyword, __location__, name="method", &
874 description="type of relativistic correction used", &
875 usage="method (NONE|DKH|ZORA)", default_i_val=rel_none, &
876 enum_c_vals=s2a("NONE", "DKH", "ZORA"), &
877 enum_i_vals=(/rel_none, rel_dkh, rel_zora/), &
878 enum_desc=s2a("Use no relativistic correction", &
879 "Use Douglas-Kroll-Hess method", &
880 "Use ZORA method"))
881 CALL section_add_keyword(section, keyword)
882 CALL keyword_release(keyword)
883
884 CALL keyword_create(keyword, __location__, name="DKH_order", &
885 description="The order of the DKH transformation ", &
886 usage="DKH_order 2", default_i_val=2)
887 CALL section_add_keyword(section, keyword)
888 CALL keyword_release(keyword)
889
890 CALL keyword_create(keyword, __location__, name="ZORA_type", &
891 description="Type of ZORA method to be used", &
892 usage="ZORA_type scMP", default_i_val=rel_zora_full, &
893 enum_c_vals=s2a("FULL", "MP", "scMP"), &
894 enum_desc=s2a("Full ZORA method (not implemented)", &
895 "ZORA with atomic model potential", &
896 "Scaled ZORA with atomic model potential"), &
897 enum_i_vals=(/rel_zora_full, rel_zora_mp, rel_sczora_mp/))
898 CALL section_add_keyword(section, keyword)
899 CALL keyword_release(keyword)
900
901 CALL keyword_create(keyword, __location__, name="transformation", &
902 description="Type of DKH transformation", &
903 usage="transformation (FULL|MOLECULE|ATOM)", default_i_val=rel_trans_atom, &
904 enum_c_vals=s2a("FULL", "MOLECULE", "ATOM"), &
906 enum_desc=s2a("Use full matrix transformation", &
907 "Use transformation blocked by molecule", &
908 "Use atomic blocks"))
909 CALL section_add_keyword(section, keyword)
910 CALL keyword_release(keyword)
911
912 CALL keyword_create(keyword, __location__, name="z_cutoff", &
913 description="The minimal atomic number considered for atom transformation", &
914 usage="z_cutoff 50", default_i_val=1)
915 CALL section_add_keyword(section, keyword)
916 CALL keyword_release(keyword)
917
918 CALL keyword_create(keyword, __location__, name="potential", &
919 description="External potential used in DKH transformation, full 1/r or erfc(r)/r", &
920 usage="POTENTIAL {FULL,ERFC}", default_i_val=rel_pot_erfc, &
921 enum_c_vals=s2a("FULL", "ERFC"), &
922 enum_i_vals=(/rel_pot_full, rel_pot_erfc/))
923 CALL section_add_keyword(section, keyword)
924 CALL keyword_release(keyword)
925
926 END SUBROUTINE create_relativistic_section
927
928! **************************************************************************************************
929!> \brief creates the KG section
930!> \param section ...
931!> \author Martin Haeufel [2012.07]
932! **************************************************************************************************
933 SUBROUTINE create_kg_section(section)
934 TYPE(section_type), POINTER :: section
935
936 TYPE(keyword_type), POINTER :: keyword
937 TYPE(section_type), POINTER :: print_key, subsection
938
939 cpassert(.NOT. ASSOCIATED(section))
940 CALL section_create(section, __location__, name="KG_METHOD", &
941 description="Specifies the parameters for a Kim-Gordon-like partitioning"// &
942 " into molecular subunits", &
943 n_keywords=0, n_subsections=1, repeats=.false., &
944 citations=(/iannuzzi2006, brelaz1979, andermatt2016/))
945
946 NULLIFY (keyword, subsection, print_key)
947
948 ! add a XC section
949 CALL create_xc_section(subsection)
950 CALL section_add_subsection(section, subsection)
951 CALL section_release(subsection)
952
953 ! add LRI section
954 CALL create_lrigpw_section(subsection)
955 CALL section_add_subsection(section, subsection)
956 CALL section_release(subsection)
957
958 CALL keyword_create(keyword, __location__, name="COLORING_METHOD", &
959 description="Which algorithm to use for coloring.", &
960 usage="COLORING_METHOD GREEDY", &
961 default_i_val=kg_color_dsatur, &
962 enum_c_vals=s2a("DSATUR", "GREEDY"), &
963 enum_desc=s2a("Maximum degree of saturation, relatively accurate", &
964 "Greedy, fast coloring, less accurate"), &
965 enum_i_vals=(/kg_color_dsatur, kg_color_greedy/))
966 CALL section_add_keyword(section, keyword)
967 CALL keyword_release(keyword)
968
969 CALL keyword_create(keyword, __location__, name="TNADD_METHOD", &
970 description="Algorithm to use for the calculation of the nonadditive kinetic energy.", &
971 usage="TNADD_METHOD ATOMIC", &
972 default_i_val=kg_tnadd_embed, &
973 enum_c_vals=s2a("EMBEDDING", "RI_EMBEDDING", "ATOMIC", "NONE"), &
974 enum_desc=s2a("Use full embedding potential (see Iannuzzi et al)", &
975 "Use full embedding potential with RI density fitting", &
976 "Use sum of atomic model potentials", &
977 "Do not use kinetic energy embedding"), &
979 CALL section_add_keyword(section, keyword)
980 CALL keyword_release(keyword)
981
982 CALL keyword_create(keyword, __location__, name="INTEGRATION_GRID", &
983 description="Grid [small,medium,large,huge]to be used for the TNADD integration.", &
984 usage="INTEGRATION_GRID MEDIUM", &
985 default_c_val="MEDIUM")
986 CALL section_add_keyword(section, keyword)
987 CALL keyword_release(keyword)
988
989 CALL section_create(subsection, __location__, name="PRINT", &
990 description="Print section", &
991 n_keywords=0, n_subsections=1, repeats=.false.)
992
993 CALL cp_print_key_section_create(print_key, __location__, "NEIGHBOR_LISTS", &
994 description="Controls the printing of the neighbor lists.", &
995 print_level=low_print_level, filename="__STD_OUT__", unit_str="angstrom")
996
997 CALL keyword_create(keyword, __location__, &
998 name="SAB_ORB_FULL", &
999 description="Activates the printing of the full orbital "// &
1000 "orbital neighbor lists.", &
1001 default_l_val=.false., &
1002 lone_keyword_l_val=.true.)
1003 CALL section_add_keyword(print_key, keyword)
1004 CALL keyword_release(keyword)
1005
1006 CALL keyword_create(keyword, __location__, &
1007 name="SAB_ORB_MOLECULAR", &
1008 description="Activates the printing of the orbital "// &
1009 "orbital neighbor lists for molecular subsets.", &
1010 default_l_val=.false., &
1011 lone_keyword_l_val=.true.)
1012 CALL section_add_keyword(print_key, keyword)
1013 CALL keyword_release(keyword)
1014
1015 CALL keyword_create(keyword, __location__, &
1016 name="SAC_KIN", &
1017 description="Activates the printing of the orbital "// &
1018 "atomic potential neighbor list.", &
1019 default_l_val=.false., &
1020 lone_keyword_l_val=.true.)
1021 CALL section_add_keyword(print_key, keyword)
1022 CALL keyword_release(keyword)
1023
1024 CALL section_add_subsection(subsection, print_key)
1025 CALL section_release(print_key)
1026
1027 CALL section_add_subsection(section, subsection)
1028 CALL section_release(subsection)
1029
1030 END SUBROUTINE create_kg_section
1031
1032! **************************************************************************************************
1033!> \brief Create the BSSE section for counterpoise correction
1034!> \param section the section to create
1035!> \author teo
1036! **************************************************************************************************
1037 SUBROUTINE create_bsse_section(section)
1038 TYPE(section_type), POINTER :: section
1039
1040 TYPE(keyword_type), POINTER :: keyword
1041 TYPE(section_type), POINTER :: subsection
1042
1043 cpassert(.NOT. ASSOCIATED(section))
1044 CALL section_create(section, __location__, name="BSSE", &
1045 description="This section is used to set up the BSSE calculation. "// &
1046 "It also requires that for each atomic kind X a kind X_ghost is present, "// &
1047 "with the GHOST keyword specified, in addition to the other required fields.", &
1048 n_keywords=3, n_subsections=1, repeats=.false.)
1049
1050 NULLIFY (keyword, subsection)
1051 ! FRAGMENT SECTION
1052 CALL section_create(subsection, __location__, name="FRAGMENT", &
1053 description="Specify the atom number belonging to this fragment.", &
1054 n_keywords=2, n_subsections=0, repeats=.true.)
1055
1056 CALL keyword_create(keyword, __location__, name="LIST", &
1057 description="Specifies a list of atoms.", &
1058 usage="LIST {integer} {integer} .. {integer}", &
1059 repeats=.true., n_var=-1, type_of_var=integer_t)
1060 CALL section_add_keyword(subsection, keyword)
1061 CALL keyword_release(keyword)
1062
1063 CALL section_add_subsection(section, subsection)
1064 CALL section_release(subsection)
1065
1066 ! CONFIGURATION SECTION
1067 CALL section_create(subsection, __location__, name="CONFIGURATION", &
1068 description="Specify additional parameters for the combinatorial configurations. "// &
1069 "Use this section to manually specify charge and multiplicity of the fragments "// &
1070 "and their combinations.", &
1071 n_keywords=2, n_subsections=0, repeats=.true.)
1072
1073 CALL keyword_create(keyword, __location__, name="GLB_CONF", &
1074 description="Specifies the global configuration using 1 or 0 for each fragment. "// &
1075 "1 specifies the respective fragment as used, 0 as unused.", &
1076 usage="GLB_CONF {integer} {integer} .. {integer}", &
1077 n_var=-1, type_of_var=integer_t)
1078 CALL section_add_keyword(subsection, keyword)
1079 CALL keyword_release(keyword)
1080
1081 CALL keyword_create(keyword, __location__, name="SUB_CONF", &
1082 description="Specifies the subconfiguration using 1 or 0 belonging to the global configuration. "// &
1083 "1 specifies the respective fragment as real, 0 as ghost.", &
1084 usage="SUB_CONF {integer} {integer} .. {integer}", &
1085 n_var=-1, type_of_var=integer_t)
1086 CALL section_add_keyword(subsection, keyword)
1087 CALL keyword_release(keyword)
1088
1089 CALL keyword_create(keyword, __location__, &
1090 name="MULTIPLICITY", &
1091 variants=(/"MULTIP"/), &
1092 description="Specify for each fragment the multiplicity. Two times the total spin plus one. "// &
1093 "Specify 3 for a triplet, 4 for a quartet,and so on. Default is 1 (singlet) for an "// &
1094 "even number and 2 (doublet) for an odd number of electrons.", &
1095 usage="MULTIPLICITY 3", &
1096 default_i_val=0) ! this default value is just a flag to get the above
1097 CALL section_add_keyword(subsection, keyword)
1098 CALL keyword_release(keyword)
1099
1100 CALL keyword_create(keyword, __location__, name="CHARGE", &
1101 description="The total charge for each fragment.", &
1102 usage="CHARGE -1", &
1103 default_i_val=0)
1104 CALL section_add_keyword(subsection, keyword)
1105 CALL keyword_release(keyword)
1106 CALL section_add_subsection(section, subsection)
1107 CALL section_release(subsection)
1108
1109 CALL section_create(subsection, __location__, name="FRAGMENT_ENERGIES", &
1110 description="This section contains the energies of the fragments already"// &
1111 " computed. It is useful as a summary and specifically for restarting BSSE runs.", &
1112 n_keywords=2, n_subsections=0, repeats=.true.)
1113 CALL keyword_create(keyword, __location__, name="_DEFAULT_KEYWORD_", &
1114 description="The energy computed for each fragment", repeats=.true., &
1115 usage="{REAL}", type_of_var=real_t)
1116 CALL section_add_keyword(subsection, keyword)
1117 CALL keyword_release(keyword)
1118 CALL section_add_subsection(section, subsection)
1119 CALL section_release(subsection)
1120
1121 CALL create_print_bsse_section(subsection)
1122 CALL section_add_subsection(section, subsection)
1123 CALL section_release(subsection)
1124
1125 END SUBROUTINE create_bsse_section
1126
1127! **************************************************************************************************
1128!> \brief Create the print bsse section
1129!> \param section the section to create
1130!> \author teo
1131! **************************************************************************************************
1132 SUBROUTINE create_print_bsse_section(section)
1133 TYPE(section_type), POINTER :: section
1134
1135 TYPE(section_type), POINTER :: print_key
1136
1137 cpassert(.NOT. ASSOCIATED(section))
1138 CALL section_create(section, __location__, name="print", &
1139 description="Section of possible print options in BSSE code.", &
1140 n_keywords=0, n_subsections=1, repeats=.false.)
1141
1142 NULLIFY (print_key)
1143 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_RUN_INFO", &
1144 description="Controls the printing of information regarding the run.", &
1145 print_level=low_print_level, filename="__STD_OUT__")
1146 CALL section_add_subsection(section, print_key)
1147 CALL section_release(print_key)
1148
1149 CALL cp_print_key_section_create(print_key, __location__, "RESTART", &
1150 description="Controls the dumping of the restart file during BSSE runs. "// &
1151 "By default the restart is updated after each configuration calculation is "// &
1152 "completed.", &
1153 print_level=silent_print_level, common_iter_levels=0, &
1154 add_last=add_last_numeric, filename="")
1155 CALL section_add_subsection(section, print_key)
1156 CALL section_release(print_key)
1157
1158 END SUBROUTINE create_print_bsse_section
1159
1160! **************************************************************************************************
1161!> \brief input section for optional parameters for RIGPW
1162!> \param section the section to create
1163!> \author JGH [06.2017]
1164! **************************************************************************************************
1165 SUBROUTINE create_rigpw_section(section)
1166 TYPE(section_type), POINTER :: section
1167
1168 cpassert(.NOT. ASSOCIATED(section))
1169 CALL section_create(section, __location__, name="RIGPW", &
1170 description="This section specifies optional parameters for RIGPW.", &
1171 n_keywords=1, n_subsections=0, repeats=.false.)
1172
1173! CALL keyword_create(keyword, __LOCATION__, name="RI_OVERLAP_MATRIX", &
1174! description="Specifies whether to calculate the inverse or the "// &
1175! "pseudoinverse of the overlap matrix of the auxiliary "// &
1176! "basis set. Calculating the pseudoinverse is necessary "// &
1177! "for very large auxiliary basis sets, but more expensive. "// &
1178! "Using the pseudoinverse, consistent forces are not "// &
1179! "guaranteed yet.", &
1180! usage="RI_OVERLAP_MATRIX INVERSE", &
1181! enum_c_vals=s2a("INVERSE", "PSEUDO_INVERSE_SVD", "PSEUDO_INVERSE_DIAG", &
1182! "AUTOSELECT"), &
1183! enum_desc=s2a("Calculate inverse of the overlap matrix.", &
1184! "Calculate the pseuodinverse of the overlap matrix "// &
1185! "using singular value decomposition.", &
1186! "Calculate the pseudoinverse of the overlap matrix "// &
1187! "by prior diagonalization.", &
1188! "Choose automatically for each pair whether to "// &
1189! "calculate the inverse or pseudoinverse based on the "// &
1190! "condition number of the overlap matrix for each pair. "// &
1191! "Calculating the pseudoinverse is much more expensive."), &
1192! enum_i_vals=(/do_lri_inv, do_lri_pseudoinv_svd, &
1193! do_lri_pseudoinv_diag, do_lri_inv_auto/), &
1194! default_i_val=do_lri_inv)
1195! CALL section_add_keyword(section, keyword)
1196! CALL keyword_release(keyword)
1197
1198 END SUBROUTINE create_rigpw_section
1199
1200! **************************************************************************************************
1201!> \brief creates the multigrid
1202!> \param section input section to create
1203!> \param create_subsections indicates whether or not subsections INTERPOLATOR and RS_GRID
1204!> should be created
1205!> \author fawzi
1206! **************************************************************************************************
1207 SUBROUTINE create_mgrid_section(section, create_subsections)
1208 TYPE(section_type), POINTER :: section
1209 LOGICAL, INTENT(in) :: create_subsections
1210
1211 TYPE(keyword_type), POINTER :: keyword
1212 TYPE(section_type), POINTER :: subsection
1213
1214 cpassert(.NOT. ASSOCIATED(section))
1215 CALL section_create(section, __location__, name="mgrid", &
1216 description="multigrid information", &
1217 n_keywords=5, n_subsections=1, repeats=.false.)
1218 NULLIFY (keyword)
1219 CALL keyword_create(keyword, __location__, name="NGRIDS", &
1220 description="The number of multigrids to use", &
1221 usage="ngrids 1", default_i_val=4)
1222 CALL section_add_keyword(section, keyword)
1223 CALL keyword_release(keyword)
1224
1225 CALL keyword_create(keyword, __location__, name="cutoff", &
1226 description="The cutoff of the finest grid level. Default value for "// &
1227 "SE or DFTB calculation is 1.0 [Ry].", &
1228 usage="cutoff 300", default_r_val=cp_unit_to_cp2k(value=280.0_dp, &
1229 unit_str="Ry"), n_var=1, unit_str="Ry")
1230 CALL section_add_keyword(section, keyword)
1231 CALL keyword_release(keyword)
1232
1233 CALL keyword_create(keyword, __location__, name="progression_factor", &
1234 description="Factor used to find the cutoff of the multigrids that"// &
1235 " where not given explicitly", &
1236 usage="progression_factor <integer>", default_r_val=3._dp)
1237 CALL section_add_keyword(section, keyword)
1238 CALL keyword_release(keyword)
1239
1240 CALL keyword_create(keyword, __location__, name="commensurate", &
1241 description="If the grids should be commensurate. If true overrides "// &
1242 "the progression factor and the cutoffs of the sub grids", &
1243 usage="commensurate", default_l_val=.false., &
1244 lone_keyword_l_val=.true.)
1245 CALL section_add_keyword(section, keyword)
1246 CALL keyword_release(keyword)
1247
1248 CALL keyword_create(keyword, __location__, name="realspace", &
1249 description="If both rho and rho_gspace are needed ", &
1250 usage="realspace", default_l_val=.false., &
1251 lone_keyword_l_val=.true.)
1252 CALL section_add_keyword(section, keyword)
1253 CALL keyword_release(keyword)
1254
1255 CALL keyword_create(keyword, __location__, name="REL_CUTOFF", &
1256 variants=(/"RELATIVE_CUTOFF"/), &
1257 description="Determines the grid at which a Gaussian is mapped,"// &
1258 " giving the cutoff used for a gaussian with alpha=1."// &
1259 " A value 50+-10Ry might be required for highly accurate results,"// &
1260 " Or for simulations with a variable cell."// &
1261 " Versions prior to 2.3 used a default of 30Ry.", &
1262 usage="RELATIVE_CUTOFF real", default_r_val=20.0_dp, &
1263 unit_str="Ry")
1264 CALL section_add_keyword(section, keyword)
1265 CALL keyword_release(keyword)
1266
1267 CALL keyword_create(keyword, __location__, name="MULTIGRID_SET", &
1268 description="Activate a manual setting of the multigrids", &
1269 usage="MULTIGRID_SET", default_l_val=.false.)
1270 CALL section_add_keyword(section, keyword)
1271 CALL keyword_release(keyword)
1272
1273 CALL keyword_create(keyword, __location__, &
1274 name="SKIP_LOAD_BALANCE_DISTRIBUTED", &
1275 description="Skips load balancing on distributed multigrids. "// &
1276 "Memory usage is O(p) so may be used "// &
1277 "for all but the very largest runs.", &
1278 usage="SKIP_LOAD_BALANCE_DISTRIBUTED", &
1279 default_l_val=.false., &
1280 lone_keyword_l_val=.true.)
1281! CALL keyword_create(keyword, __LOCATION__, name="SKIP_LOAD_BALANCE_DISTRIBUTED",&
1282! description="Skip load balancing on distributed multigrids, which might be memory intensive."//&
1283! "If not explicitly specified, runs using more than 1024 MPI tasks will default to .TRUE.",&
1284! usage="SKIP_LOAD_BALANCE_DISTRIBUTED", default_l_val=.FALSE., lone_keyword_l_val=.TRUE.)
1285
1286 CALL section_add_keyword(section, keyword)
1287 CALL keyword_release(keyword)
1288
1289 CALL keyword_create(keyword, __location__, name="MULTIGRID_CUTOFF", &
1290 variants=(/"CUTOFF_LIST"/), &
1291 description="List of cutoff values to set up multigrids manually", &
1292 usage="MULTIGRID_CUTOFF 200.0 100.0 ", &
1293 n_var=-1, &
1294 type_of_var=real_t, &
1295 unit_str="Ry")
1296 CALL section_add_keyword(section, keyword)
1297 CALL keyword_release(keyword)
1298
1299 IF (create_subsections) THEN
1300 NULLIFY (subsection)
1301 CALL create_rsgrid_section(subsection)
1302 CALL section_add_subsection(section, subsection)
1303 CALL section_release(subsection)
1304
1305 NULLIFY (subsection)
1306 CALL create_interp_section(subsection)
1307 CALL section_add_subsection(section, subsection)
1308 CALL section_release(subsection)
1309 END IF
1310 END SUBROUTINE create_mgrid_section
1311
1312! **************************************************************************************************
1313!> \brief creates the interpolation section
1314!> \param section ...
1315!> \author tlaino
1316! **************************************************************************************************
1317 SUBROUTINE create_interp_section(section)
1318 TYPE(section_type), POINTER :: section
1319
1320 TYPE(keyword_type), POINTER :: keyword
1321 TYPE(section_type), POINTER :: print_key
1322
1323 cpassert(.NOT. ASSOCIATED(section))
1324 CALL section_create(section, __location__, name="interpolator", &
1325 description="kind of interpolation used between the multigrids", &
1326 n_keywords=5, n_subsections=0, repeats=.false.)
1327
1328 NULLIFY (keyword, print_key)
1329
1330 CALL keyword_create(keyword, __location__, name="kind", &
1331 description="the interpolator to use", &
1332 usage="kind spline3", &
1333 default_i_val=pw_interp, &
1334 enum_c_vals=s2a("pw", "spline3_nopbc", "spline3"), &
1335 enum_i_vals=(/pw_interp, &
1337 CALL section_add_keyword(section, keyword)
1338 CALL keyword_release(keyword)
1339
1340 CALL keyword_create(keyword, __location__, name="safe_computation", &
1341 description="if a non unrolled calculation is to be performed in parallel", &
1342 usage="safe_computation OFF", &
1343 default_l_val=.false., &
1344 lone_keyword_l_val=.true.)
1345 CALL section_add_keyword(section, keyword)
1346 CALL keyword_release(keyword)
1347
1348 CALL keyword_create(keyword, __location__, name="aint_precond", &
1349 description="the approximate inverse to use to get the starting point"// &
1350 " for the linear solver of the spline3 methods", &
1351 usage="aint_precond copy", &
1352 default_i_val=precond_spl3_aint, &
1353 enum_c_vals=s2a("copy", "spl3_nopbc_aint1", "spl3_nopbc_aint2", &
1354 "spl3_nopbc_precond1", "spl3_nopbc_precond2", "spl3_nopbc_precond3"), &
1357 CALL section_add_keyword(section, keyword)
1358 CALL keyword_release(keyword)
1359
1360 CALL keyword_create(keyword, __location__, name="precond", &
1361 description="The preconditioner used"// &
1362 " for the linear solver of the spline3 methods", &
1363 usage="PRECOND copy", &
1364 default_i_val=precond_spl3_3, &
1365 enum_c_vals=s2a("copy", "spl3_nopbc_aint1", "spl3_nopbc_aint2", &
1366 "spl3_nopbc_precond1", "spl3_nopbc_precond2", "spl3_nopbc_precond3"), &
1369 CALL section_add_keyword(section, keyword)
1370 CALL keyword_release(keyword)
1371
1372 CALL keyword_create(keyword, __location__, name="eps_x", &
1373 description="accuracy on the solution for spline3 the interpolators", &
1374 usage="eps_x 1.e-15", default_r_val=1.e-10_dp)
1375 CALL section_add_keyword(section, keyword)
1376 CALL keyword_release(keyword)
1377
1378 CALL keyword_create(keyword, __location__, name="eps_r", &
1379 description="accuracy on the residual for spline3 the interpolators", &
1380 usage="eps_r 1.e-15", default_r_val=1.e-10_dp)
1381 CALL section_add_keyword(section, keyword)
1382 CALL keyword_release(keyword)
1383
1384 CALL keyword_create(keyword, __location__, name="max_iter", &
1385 variants=(/'maxiter'/), &
1386 description="the maximum number of iterations", &
1387 usage="max_iter 200", default_i_val=100)
1388 CALL section_add_keyword(section, keyword)
1389 CALL keyword_release(keyword)
1390
1391 NULLIFY (print_key)
1392 CALL cp_print_key_section_create(print_key, __location__, "conv_info", &
1393 description="if convergence information about the linear solver"// &
1394 " of the spline methods should be printed", &
1395 print_level=medium_print_level, each_iter_names=s2a("SPLINE_FIND_COEFFS"), &
1396 each_iter_values=(/10/), filename="__STD_OUT__", &
1397 add_last=add_last_numeric)
1398 CALL section_add_subsection(section, print_key)
1399 CALL section_release(print_key)
1400
1401 END SUBROUTINE create_interp_section
1402
1403! **************************************************************************************************
1404!> \brief creates the sic (self interaction correction) section
1405!> \param section ...
1406!> \author fawzi
1407! **************************************************************************************************
1408 SUBROUTINE create_sic_section(section)
1409 TYPE(section_type), POINTER :: section
1410
1411 TYPE(keyword_type), POINTER :: keyword
1412
1413 cpassert(.NOT. ASSOCIATED(section))
1414 CALL section_create(section, __location__, name="sic", &
1415 description="parameters for the self interaction correction", &
1416 n_keywords=6, n_subsections=0, repeats=.false., &
1417 citations=(/vandevondele2005b, perdew1981, avezac2005/))
1418
1419 NULLIFY (keyword)
1420
1421 CALL keyword_create(keyword, __location__, name="SIC_SCALING_A", &
1422 description="Scaling of the coulomb term in sic [experimental]", &
1423 usage="SIC_SCALING_A 0.5", &
1424 citations=(/vandevondele2005b/), &
1425 default_r_val=1.0_dp)
1426 CALL section_add_keyword(section, keyword)
1427 CALL keyword_release(keyword)
1428
1429 CALL keyword_create(keyword, __location__, name="SIC_SCALING_B", &
1430 description="Scaling of the xc term in sic [experimental]", &
1431 usage="SIC_SCALING_B 0.5", &
1432 citations=(/vandevondele2005b/), &
1433 default_r_val=1.0_dp)
1434 CALL section_add_keyword(section, keyword)
1435 CALL keyword_release(keyword)
1436
1437 CALL keyword_create(keyword, __location__, name="SIC_METHOD", &
1438 description="Method used to remove the self interaction", &
1439 usage="SIC_METHOD MAURI_US", &
1440 default_i_val=sic_none, &
1441 enum_c_vals=s2a("NONE", "MAURI_US", "MAURI_SPZ", "AD", "EXPLICIT_ORBITALS"), &
1442 enum_i_vals=(/sic_none, sic_mauri_us, sic_mauri_spz, sic_ad, sic_eo/), &
1443 enum_desc=s2a("Do not apply a sic correction", &
1444 "Employ a (scaled) correction proposed by Mauri and co-workers"// &
1445 " on the spin density / doublet unpaired orbital", &
1446 "Employ a (scaled) Perdew-Zunger expression"// &
1447 " on the spin density / doublet unpaired orbital", &
1448 "The average density correction", &
1449 "(scaled) Perdew-Zunger correction explicitly on a set of orbitals."), &
1450 citations=(/vandevondele2005b, perdew1981, avezac2005/))
1451 CALL section_add_keyword(section, keyword)
1452 CALL keyword_release(keyword)
1453
1454 CALL keyword_create(keyword, __location__, name="ORBITAL_SET", &
1455 description="Type of orbitals treated with the SIC", &
1456 usage="ORBITAL_SET ALL", &
1457 default_i_val=sic_list_unpaired, &
1458 enum_c_vals=s2a("UNPAIRED", "ALL"), &
1459 enum_desc=s2a("correction for the unpaired orbitals only, requires a restricted open shell calculation", &
1460 "correction for all orbitals, requires a LSD or ROKS calculation"), &
1461 enum_i_vals=(/sic_list_unpaired, sic_list_all/))
1462 CALL section_add_keyword(section, keyword)
1463 CALL keyword_release(keyword)
1464
1465 END SUBROUTINE create_sic_section
1466
1467! **************************************************************************************************
1468!> \brief creates the low spin roks section
1469!> \param section ...
1470!> \author Joost VandeVondele
1471! **************************************************************************************************
1472 SUBROUTINE create_low_spin_roks_section(section)
1473 TYPE(section_type), POINTER :: section
1474
1475 TYPE(keyword_type), POINTER :: keyword
1476
1477 cpassert(.NOT. ASSOCIATED(section))
1478 CALL section_create(section, __location__, name="LOW_SPIN_ROKS", &
1479 description="Specify the details of the low spin ROKS method. "// &
1480 "In particular, one can specify various terms added to the energy of the high spin roks configuration"// &
1481 " with a energy scaling factor, and a prescription of the spin state.", &
1482 n_keywords=6, n_subsections=0, repeats=.false.)
1483
1484 NULLIFY (keyword)
1485 CALL keyword_create(keyword, __location__, name="ENERGY_SCALING", &
1486 description="The scaling factors for each term added to the total energy. "// &
1487 "This list should contain one number for each term added to the total energy.", &
1488 usage="ENERGY_SCALING 1.0 -1.0 ", &
1489 n_var=-1, type_of_var=real_t, repeats=.false.)
1490 CALL section_add_keyword(section, keyword)
1491 CALL keyword_release(keyword)
1492 CALL keyword_create( &
1493 keyword, __location__, name="SPIN_CONFIGURATION", &
1494 description="For each singly occupied orbital, specify if this should be an alpha (=1) or a beta (=2) orbital. "// &
1495 "This keyword should be repeated, each repetition corresponding to an additional term.", &
1496 usage="SPIN_CONFIGURATION 1 2", &
1497 n_var=-1, type_of_var=integer_t, repeats=.true.)
1498 CALL section_add_keyword(section, keyword)
1499 CALL keyword_release(keyword)
1500
1501 END SUBROUTINE create_low_spin_roks_section
1502
1503! **************************************************************************************************
1504!> \brief ...
1505!> \param section ...
1506! **************************************************************************************************
1507 SUBROUTINE create_rtp_section(section)
1508 TYPE(section_type), POINTER :: section
1509
1510 TYPE(keyword_type), POINTER :: keyword
1511 TYPE(section_type), POINTER :: print_key, print_section, subsection
1512
1513 NULLIFY (keyword)
1514 cpassert(.NOT. ASSOCIATED(section))
1515 CALL section_create(section, __location__, name="REAL_TIME_PROPAGATION", &
1516 description="Parameters needed to set up the real time propagation"// &
1517 " for the electron dynamics. This currently works only in the NVE ensemble.", &
1518 n_keywords=4, n_subsections=4, repeats=.false., &
1519 citations=(/kunert2003, andermatt2016/))
1520
1521 CALL keyword_create(keyword, __location__, name="MAX_ITER", &
1522 description="Maximal number of iterations for the self consistent propagator loop.", &
1523 usage="MAX_ITER 10", &
1524 default_i_val=10)
1525 CALL section_add_keyword(section, keyword)
1526 CALL keyword_release(keyword)
1527
1528 CALL keyword_create(keyword, __location__, name="EPS_ITER", &
1529 description="Convergence criterion for the self consistent propagator loop.", &
1530 usage="EPS_ITER 1.0E-5", &
1531 default_r_val=1.0e-7_dp)
1532 CALL section_add_keyword(section, keyword)
1533 CALL keyword_release(keyword)
1534
1535 CALL keyword_create(keyword, __location__, name="ASPC_ORDER", &
1536 description="Speciefies how many steps will be used for extrapolation. "// &
1537 "One will be always used which is means X(t+dt)=X(t)", &
1538 usage="ASPC_ORDER 3", &
1539 default_i_val=3)
1540 CALL section_add_keyword(section, keyword)
1541 CALL keyword_release(keyword)
1542
1543 CALL keyword_create(keyword, __location__, name="MAT_EXP", &
1544 description="Which method should be used to calculate the exponential"// &
1545 " in the propagator. It is recommended to use BCH when employing density_propagation "// &
1546 "and ARNOLDI otherwise.", &
1547 usage="MAT_EXP TAYLOR", default_i_val=do_arnoldi, &
1548 enum_c_vals=s2a("TAYLOR", "PADE", "ARNOLDI", "BCH", "EXACT"), &
1549 enum_i_vals=(/do_taylor, do_pade, do_arnoldi, do_bch, do_exact/), &
1550 enum_desc=s2a("exponential is evaluated using scaling and squaring in combination"// &
1551 " with a taylor expansion of the exponential.", &
1552 "uses scaling and squaring together with the pade approximation", &
1553 "uses arnoldi subspace algorithm to compute exp(H)*MO directly, can't be used in "// &
1554 "combination with Crank Nicholson or density propagation", &
1555 "Uses a Baker-Campbell-Hausdorff expansion to propagate the density matrix,"// &
1556 " only works for density propagation", &
1557 "Uses diagonalisation of the exponent matrices to determine the "// &
1558 "matrix exponential exactly. Only implemented for GWBSE."))
1559 CALL section_add_keyword(section, keyword)
1560 CALL keyword_release(keyword)
1561
1562 CALL keyword_create(keyword, __location__, name="DENSITY_PROPAGATION", &
1563 description="The density matrix is propagated instead of the molecular orbitals. "// &
1564 "This can allow a linear scaling simulation. The density matrix is filtered with "// &
1565 "the threshold based on the EPS_FILTER keyword from the LS_SCF section", &
1566 usage="DENSITY_PROPAGATION .TRUE.", &
1567 default_l_val=.false., lone_keyword_l_val=.true.)
1568 CALL section_add_keyword(section, keyword)
1569 CALL keyword_release(keyword)
1570
1571 CALL keyword_create(keyword, __location__, name="SC_CHECK_START", &
1572 description="Speciefies how many iteration steps will be done without "// &
1573 "a check for self consistency. Can save some time in big calculations.", &
1574 usage="SC_CHECK_START 3", &
1575 default_i_val=0)
1576 CALL section_add_keyword(section, keyword)
1577 CALL keyword_release(keyword)
1578
1579 CALL keyword_create(keyword, __location__, name="EXP_ACCURACY", &
1580 description="Accuracy for the taylor and pade approximation. "// &
1581 "This is only an upper bound bound since the norm used for the guess "// &
1582 "is an upper bound for the needed one.", &
1583 usage="EXP_ACCURACY 1.0E-6", &
1584 default_r_val=1.0e-9_dp)
1585 CALL section_add_keyword(section, keyword)
1586 CALL keyword_release(keyword)
1587
1588 CALL keyword_create(keyword, __location__, name="PROPAGATOR", &
1589 description="Which propagator should be used for the orbitals", &
1590 usage="PROPAGATOR ETRS", default_i_val=do_etrs, &
1591 enum_c_vals=s2a("ETRS", "CN", "EM"), &
1592 enum_i_vals=(/do_etrs, do_cn, do_em/), &
1593 enum_desc=s2a("enforced time reversible symmetry", &
1594 "Crank Nicholson propagator", &
1595 "Exponential midpoint propagator"))
1596 CALL section_add_keyword(section, keyword)
1597 CALL keyword_release(keyword)
1598
1599 CALL keyword_create(keyword, __location__, name="INITIAL_WFN", &
1600 description="Controls the initial WFN used for propagation. "// &
1601 "Note that some energy contributions may not be "// &
1602 "initialized in the restart cases, for instance "// &
1603 "electronic entropy energy in the case of smearing.", &
1604 usage="INITIAL_WFN SCF_WFN", default_i_val=use_scf_wfn, &
1605 enum_c_vals=s2a("SCF_WFN", "RESTART_WFN", "RT_RESTART"), &
1606 enum_i_vals=(/use_scf_wfn, use_restart_wfn, use_rt_restart/), &
1607 enum_desc=s2a("An SCF run is performed to get the initial state.", &
1608 "A wavefunction from a previous SCF is propagated. Especially useful,"// &
1609 " if electronic constraints or restraints are used in the previous calculation, "// &
1610 "since these do not work in the rtp scheme.", &
1611 "use the wavefunction of a real time propagation/ehrenfest run"))
1612 CALL section_add_keyword(section, keyword)
1613 CALL keyword_release(keyword)
1614
1615 CALL keyword_create(keyword, __location__, name="APPLY_WFN_MIX_INIT_RESTART", &
1616 description="If set to True and in the case of INITIAL_WFN=RESTART_WFN, call the "// &
1617 "DFT%PRINT%WFN_MIX section to mix the read initial wfn. The starting wave-function of the "// &
1618 "RTP will be the mixed one. Setting this to True without a defined WFN_MIX section will "// &
1619 "not do anything as defining a WFN_MIX section without this keyword for RTP run with "// &
1620 "INITIAL_WFN=RESTART_WFN. Note that if INITIAL_WFN=SCF_WFN, this keyword is not needed to "// &
1621 "apply the mixing defined in the WFN_MIX section. Default is False.", &
1622 usage="APPLY_WFN_MIX_INIT_RESTART", &
1623 default_l_val=.false., lone_keyword_l_val=.true.)
1624 CALL section_add_keyword(section, keyword)
1625 CALL keyword_release(keyword)
1626
1627 CALL keyword_create(keyword, __location__, name="APPLY_DELTA_PULSE", &
1628 description="Applies a delta kick to the initial wfn (only RTP for now - the EMD"// &
1629 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1630 usage="APPLY_DELTA_PULSE", &
1631 default_l_val=.false., lone_keyword_l_val=.true.)
1632 CALL section_add_keyword(section, keyword)
1633 CALL keyword_release(keyword)
1634
1635 CALL keyword_create(keyword, __location__, name="APPLY_DELTA_PULSE_MAG", &
1636 description="Applies a magnetic delta kick to the initial wfn (only RTP for now - the EMD"// &
1637 " case is not yet implemented). Only work for INITIAL_WFN=SCF_WFN", &
1638 usage="APPLY_DELTA_PULSE_MAG", &
1639 default_l_val=.false., lone_keyword_l_val=.true.)
1640 CALL section_add_keyword(section, keyword)
1641 CALL keyword_release(keyword)
1642
1643 CALL keyword_create(keyword, __location__, name="VELOCITY_GAUGE", &
1644 description="Perform propagation in the velocity gauge using the explicit vector potential"// &
1645 " only a constant vector potential as of now (corresonding to a delta-pulse)."// &
1646 " uses DELTA_PULSE_SCALE and DELTA_PULSE_DIRECTION to define the vector potential", &
1647 usage="VELOCITY_GAUGE T", &
1648 default_l_val=.false., lone_keyword_l_val=.true.)
1649 CALL section_add_keyword(section, keyword)
1650 CALL keyword_release(keyword)
1651
1652 CALL keyword_create(keyword, __location__, name="GAUGE_ORIG", &
1653 description="Define gauge origin for magnetic perturbation", &
1654 usage="GAUGE_ORIG COM", &
1655 enum_c_vals=s2a("COM", "COAC", "USER_DEFINED", "ZERO"), &
1656 enum_desc=s2a("Use Center of Mass", &
1657 "Use Center of Atomic Charges", &
1658 "Use User Defined Point (Keyword:REF_POINT)", &
1659 "Use Origin of Coordinate System"), &
1660 enum_i_vals=(/use_mom_ref_com, &
1663 use_mom_ref_zero/), &
1664 default_i_val=use_mom_ref_com)
1665 CALL section_add_keyword(section, keyword)
1666 CALL keyword_release(keyword)
1667
1668 CALL keyword_create(keyword, __location__, name="GAUGE_ORIG_MANUAL", &
1669 description="Manually defined gauge origin for magnetic perturbation [in Bohr!]", &
1670 usage="GAUGE_ORIG_MANUAL x y z", &
1671 repeats=.false., &
1672 n_var=3, default_r_vals=(/0._dp, 0._dp, 0._dp/), &
1673 type_of_var=real_t, &
1674 unit_str='bohr')
1675 CALL section_add_keyword(section, keyword)
1676 CALL keyword_release(keyword)
1677
1678 CALL keyword_create(keyword, __location__, name="VG_COM_NL", &
1679 description="apply gauge transformed non-local potential term"// &
1680 " only affects VELOCITY_GAUGE=.TRUE.", &
1681 usage="VG_COM_NL T", &
1682 default_l_val=.true., lone_keyword_l_val=.true.)
1683 CALL section_add_keyword(section, keyword)
1684 CALL keyword_release(keyword)
1685
1686 CALL keyword_create(keyword, __location__, name="COM_NL", &
1687 description="Include non-local commutator for periodic delta pulse."// &
1688 " only affects PERIODIC=.TRUE.", &
1689 usage="COM_NL", &
1690 default_l_val=.true., lone_keyword_l_val=.true.)
1691 CALL section_add_keyword(section, keyword)
1692 CALL keyword_release(keyword)
1693
1694 CALL keyword_create(keyword, __location__, name="LEN_REP", &
1695 description="Use length representation delta pulse (in conjunction with PERIODIC T)."// &
1696 " This corresponds to a 1st order perturbation in the length gauge."// &
1697 " Note that this is NOT compatible with a periodic calculation!"// &
1698 " Uses the reference point defined in DFT%PRINT%MOMENTS ", &
1699 usage="LEN_REP T", &
1700 default_l_val=.false., lone_keyword_l_val=.true.)
1701 CALL section_add_keyword(section, keyword)
1702 CALL keyword_release(keyword)
1703
1704 CALL keyword_create(keyword, __location__, name="PERIODIC", &
1705 description="Apply a delta-kick that is compatible with periodic boundary conditions"// &
1706 " for any value of DELTA_PULSE_SCALE. Uses perturbation theory for the preparation of"// &
1707 " the initial wfn with the velocity operator as perturbation."// &
1708 " If LEN_REP is .FALSE. this corresponds to a first order velocity gauge."// &
1709 " Note that the pulse is only applied when INITIAL_WFN is set to SCF_WFN,"// &
1710 " and not for restarts (RT_RESTART).", &
1711 usage="PERIODIC", &
1712 default_l_val=.true., lone_keyword_l_val=.true.)
1713 CALL section_add_keyword(section, keyword)
1714 CALL keyword_release(keyword)
1715
1716 CALL keyword_create(keyword, __location__, name="DELTA_PULSE_DIRECTION", &
1717 description="Direction of the applied electric field. The k vector is given as"// &
1718 " 2*Pi*[i,j,k]*inv(h_mat), which for PERIODIC .FALSE. yields exp(ikr) periodic with"// &
1719 " the unit cell, only if DELTA_PULSE_SCALE is set to unity. For an orthorhombic cell"// &
1720 " [1,0,0] yields [2*Pi/L_x,0,0]. For small cells, this results in a very large kick.", &
1721 usage="DELTA_PULSE_DIRECTION 1 1 1", n_var=3, default_i_vals=(/1, 0, 0/), &
1722 type_of_var=integer_t)
1723 CALL section_add_keyword(section, keyword)
1724 CALL keyword_release(keyword)
1725
1726 CALL keyword_create(keyword, __location__, name="DELTA_PULSE_SCALE", &
1727 description="Scale the k vector, which for PERIODIC .FALSE. results in exp(ikr) no"// &
1728 " longer being periodic with the unit cell. The norm of k is the strength of the"// &
1729 " applied electric field in atomic units.", &
1730 usage="DELTA_PULSE_SCALE 0.01 ", n_var=1, default_r_val=0.001_dp)
1731 CALL section_add_keyword(section, keyword)
1732 CALL keyword_release(keyword)
1733
1734 CALL keyword_create(keyword, __location__, name="HFX_BALANCE_IN_CORE", &
1735 description="If HFX is used, this keyword forces a redistribution/recalculation"// &
1736 " of the integrals, balanced with respect to the in core steps.", &
1737 usage="HFX_BALANCE_IN_CORE", &
1738 default_l_val=.false., lone_keyword_l_val=.true.)
1739 CALL section_add_keyword(section, keyword)
1740 CALL keyword_release(keyword)
1741
1742 CALL keyword_create(keyword, __location__, name="MCWEENY_MAX_ITER", &
1743 description="Determines the maximum amount of McWeeny steps used after each converged"// &
1744 " step in density propagation", &
1745 usage="MCWEENY_MAX_ITER 2", default_i_val=1)
1746 CALL section_add_keyword(section, keyword)
1747 CALL keyword_release(keyword)
1748
1749 CALL keyword_create( &
1750 keyword, __location__, name="ACCURACY_REFINEMENT", &
1751 description="If using density propagation some parts should be calculated with a higher accuracy than the rest"// &
1752 " to reduce numerical noise. This factor determines by how much the filtering threshold is"// &
1753 " reduced for these calculations.", &
1754 usage="ACCURACY_REFINEMENT", default_i_val=100)
1755 CALL section_add_keyword(section, keyword)
1756 CALL keyword_release(keyword)
1757
1758 CALL keyword_create(keyword, __location__, name="MCWEENY_EPS", &
1759 description="Threshold after which McWeeny is terminated", &
1760 usage="MCWEENY_EPS 0.00001", &
1761 default_r_val=0.0_dp)
1762 CALL section_add_keyword(section, keyword)
1763 CALL keyword_release(keyword)
1764
1765 NULLIFY (print_section)
1766 CALL section_create(print_section, __location__, name="PRINT", &
1767 description="Section of possible print options for an RTP runs", &
1768 repeats=.false.)
1769
1770 NULLIFY (print_key)
1771 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_RUN_INFO", &
1772 description="Controls the printing within real time propagation and Eherenfest dynamics", &
1773 print_level=low_print_level, filename="__STD_OUT__")
1774 CALL section_add_subsection(print_section, print_key)
1775 CALL section_release(print_key)
1776
1777 CALL cp_print_key_section_create(print_key, __location__, "RESTART", &
1778 description="Controls the dumping of the MO restart file during rtp. "// &
1779 "By default keeps a short history of three restarts. "// &
1780 "See also RESTART_HISTORY. In density propagation this controls the printing of "// &
1781 "density matrix.", &
1782 print_level=low_print_level, common_iter_levels=3, &
1783 each_iter_names=s2a("MD"), each_iter_values=(/20/), &
1784 add_last=add_last_numeric, filename="RESTART")
1785 CALL keyword_create(keyword, __location__, name="BACKUP_COPIES", &
1786 description="Specifies the maximum number of backup copies.", &
1787 usage="BACKUP_COPIES {int}", &
1788 default_i_val=1)
1789 CALL section_add_keyword(print_key, keyword)
1790 CALL keyword_release(keyword)
1791 CALL section_add_subsection(print_section, print_key)
1792 CALL section_release(print_key)
1793
1794 CALL cp_print_key_section_create(print_key, __location__, "RESTART_HISTORY", &
1795 description="Dumps unique MO restart files during the run keeping all of them. "// &
1796 "In density propagation it dumps the density matrix instead", &
1797 print_level=low_print_level, common_iter_levels=0, &
1798 each_iter_names=s2a("MD"), &
1799 each_iter_values=(/500/), &
1800 filename="RESTART")
1801 CALL keyword_create(keyword, __location__, name="BACKUP_COPIES", &
1802 description="Specifies the maximum number of backup copies.", &
1803 usage="BACKUP_COPIES {int}", &
1804 default_i_val=1)
1805 CALL section_add_keyword(print_key, keyword)
1806 CALL keyword_release(keyword)
1807 CALL section_add_subsection(print_section, print_key)
1808 CALL section_release(print_key)
1809
1810 CALL cp_print_key_section_create(print_key, __location__, "FIELD", &
1811 description="Print the time-dependent field applied during an EMD simulation in "// &
1812 "atomic unit.", &
1813 print_level=high_print_level, common_iter_levels=-1, &
1814 each_iter_names=s2a("MD"), &
1815 each_iter_values=(/1/), &
1816 filename="applied_field")
1817 CALL section_add_subsection(print_section, print_key)
1818 CALL section_release(print_key)
1819
1820 CALL create_projection_rtp_section(print_key)
1821 CALL section_add_subsection(print_section, print_key)
1822 CALL section_release(print_key)
1823
1824 CALL cp_print_key_section_create(print_key, __location__, "CURRENT_INT", &
1825 description="Print the integral of the current density (only if the"// &
1826 " imaginary part of the density is NOT zero.", &
1827 print_level=high_print_level, common_iter_levels=1, &
1828 each_iter_names=s2a("MD"), &
1829 each_iter_values=(/1/), &
1830 filename="rtp_j_int")
1831 CALL section_add_subsection(print_section, print_key)
1832 CALL section_release(print_key)
1833
1834 CALL cp_print_key_section_create(print_key, __location__, "CURRENT", &
1835 description="Print the current during an EMD simulation to cube files.", &
1836 print_level=high_print_level, common_iter_levels=0, &
1837 each_iter_names=s2a("MD"), &
1838 each_iter_values=(/20/), &
1839 filename="current")
1840 CALL keyword_create(keyword, __location__, name="BACKUP_COPIES", &
1841 description="Specifies the maximum number of backup copies.", &
1842 usage="BACKUP_COPIES {int}", &
1843 default_i_val=1)
1844 CALL section_add_keyword(print_key, keyword)
1845 CALL keyword_release(keyword)
1846 CALL keyword_create(keyword, __location__, name="STRIDE", &
1847 description="The stride (X,Y,Z) used to write the cube file "// &
1848 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1849 " 1 number valid for all components.", &
1850 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=integer_t)
1851 CALL section_add_keyword(print_key, keyword)
1852 CALL keyword_release(keyword)
1853
1854 CALL section_add_subsection(print_section, print_key)
1855 CALL section_release(print_key)
1856
1857 ! Marek : Add print option for ASCII density files - DEVELPMENT ONLY?
1858 CALL cp_print_key_section_create(print_key, __location__, "DENSITY_MATRIX", &
1859 description="Prints the density matrix at iterations in clear text to a file", &
1860 print_level=high_print_level, common_iter_levels=0, &
1861 each_iter_names=s2a("MD"), &
1862 each_iter_values=(/1/), &
1863 filename="rho")
1864 CALL section_add_subsection(print_section, print_key)
1865 CALL section_release(print_key)
1866 ! Marek : Moments ASCII print
1867 CALL cp_print_key_section_create(print_key, __location__, "MOMENTS", &
1868 description="Prints the time-dependent electronic moments at "// &
1869 "iterations in clear text to a file.", &
1870 print_level=high_print_level, common_iter_levels=0, &
1871 each_iter_names=s2a("MD"), &
1872 each_iter_values=(/1/), &
1873 filename="__STD_OUT__")
1874 CALL section_add_subsection(print_section, print_key)
1875 CALL section_release(print_key)
1876 ! Marek : Fourier transform of MOMENTS ASCII print
1877 CALL cp_print_key_section_create(print_key, __location__, "MOMENTS_FT", &
1878 description="Prints the calculated Fourier transform of "// &
1879 "time-dependent moments. For calculations with real time pulse (not delta kick) "// &
1880 "can be supplied with starting time.", &
1881 print_level=medium_print_level, common_iter_levels=0, &
1882 each_iter_names=s2a("MD"), &
1883 each_iter_values=(/1/), &
1884 filename="MOMENTS_FT")
1885 CALL section_add_subsection(print_section, print_key)
1886 CALL section_release(print_key)
1887 ! Marek : Chosen element of (Fourier transformed) polarizability tensor (energy dependent) - text format
1888 CALL cp_print_key_section_create(print_key, __location__, "POLARIZABILITY", &
1889 description="Prints the chosen element of the energy dependent polarizability tensor "// &
1890 "to a specified file. The tensor is calculated as ratio of "// &
1891 "Fourier transform of the dipole "// &
1892 "moment trace and Fourier transform of the applied field "// &
1893 "(for delta kick, constant real field is applied.", &
1894 print_level=medium_print_level, common_iter_levels=0, &
1895 each_iter_names=s2a("MD"), &
1896 each_iter_values=(/1/), &
1897 filename="POLARIZABILITY")
1898 CALL keyword_create(keyword, __location__, "ELEMENT", &
1899 description="Specifies the element of polarizability which is to be printed out "// &
1900 "(indexing starts at 1). If not explicitly provided, RTBSE code tries to guess "// &
1901 "the optimal values - for applied electric field (both delta pulse and RT field) "// &
1902 "with only a single non-zero cartesian component, prints the 3 trivially available elements.", &
1903 type_of_var=integer_t, default_i_vals=(/1, 1/), n_var=2, usage="ELEMENT 1 1", repeats=.true.)
1904 CALL section_add_keyword(print_key, keyword)
1905 CALL keyword_release(keyword)
1906 CALL section_add_subsection(print_section, print_key)
1907 CALL section_release(print_key)
1908
1909 CALL cp_print_key_section_create(print_key, __location__, "E_CONSTITUENTS", &
1910 description="Print the energy constituents (relevant to RTP) which make up "// &
1911 "the Total Energy", &
1912 print_level=high_print_level, common_iter_levels=1, &
1913 each_iter_names=s2a("MD"), &
1914 each_iter_values=(/1/), &
1915 filename="rtp")
1916 CALL section_add_subsection(print_section, print_key)
1917 CALL section_release(print_key)
1918
1919 CALL section_add_subsection(section, print_section)
1920 CALL section_release(print_section)
1921
1922 NULLIFY (subsection)
1923 CALL create_rtbse_section(subsection)
1924 CALL section_add_subsection(section, subsection)
1925 CALL section_release(subsection)
1926
1927 END SUBROUTINE create_rtp_section
1928! **************************************************************************************************
1929!> \brief Creates the subsection for specialized options of RTBSE code
1930!> \param section The created RTBSE section
1931!> \author Stepan Marek
1932! **************************************************************************************************
1933 SUBROUTINE create_rtbse_section(section)
1934 TYPE(section_type), POINTER :: section
1935
1936 TYPE(keyword_type), POINTER :: keyword
1937 TYPE(section_type), POINTER :: subsection
1938
1939 NULLIFY (keyword)
1940 NULLIFY (subsection)
1941 cpassert(.NOT. ASSOCIATED(section))
1942
1943 CALL section_create(section, __location__, name="RTBSE", &
1944 description="Controls options for the real-time Bethe-Salpeter (RTBSE) propagation. "// &
1945 "Note that running RTBSE requires previous low-scaling "// &
1946 "[GW](#CP2K_INPUT.FORCE_EVAL.PROPERTIES.BANDSTRUCTURE.GW) calculation. Also note that "// &
1947 "designating this section as RTBSE run but choosing run type ENERGY leads to potential "// &
1948 "deallocation errors.", &
1949 repeats=.false.)
1950
1951 ! Marek : Controlling flow to RTBSE
1952 CALL keyword_create(keyword, __location__, name="_SECTION_PARAMETERS_", &
1953 description="Which method is used for the time propagation of electronic structure. "// &
1954 "By default, use the TDDFT method. Can also choose RT-BSE method, which propagates the lesser "// &
1955 "Green's function instead of density matrix/molecular orbitals.", &
1956 usage="&RTBSE TDDFT", &
1957 default_i_val=rtp_method_tddft, &
1958 lone_keyword_i_val=rtp_method_bse, &
1959 enum_c_vals=s2a("TDDFT", "RTBSE"), &
1960 enum_i_vals=(/rtp_method_tddft, rtp_method_bse/), &
1961 enum_desc=s2a("Use TDDFT for density matrix/MO propagation.", &
1962 "Use RT-BSE for Green's function propagation"))
1963 CALL section_add_keyword(section, keyword)
1964 CALL keyword_release(keyword)
1965
1966 ! Marek : Development option - run GWBSE starting from the KS Hamiltonian
1967 CALL keyword_create(keyword, __location__, name="RTBSE_HAMILTONIAN", &
1968 description="Which Hamiltonian to use as the single-particle Hamiltonian"// &
1969 " in the Green's propagator.", &
1970 usage="RTBSE_HAMILTONIAN G0W0", &
1971 default_i_val=rtp_bse_ham_g0w0, &
1972 enum_c_vals=s2a("KS", "G0W0"), &
1973 enum_i_vals=(/rtp_bse_ham_ks, rtp_bse_ham_g0w0/), &
1974 enum_desc=s2a("Use Kohn-Sham Hamiltonian for Green's propagation.", &
1975 "Use G0W0 Hamiltonian for Green's function propagation"))
1976 CALL section_add_keyword(section, keyword)
1977 CALL keyword_release(keyword)
1978 ! Marek : Options for the Fourier transform
1979 CALL keyword_create(keyword, __location__, "FT_DAMPING", &
1980 description="Numerical Fourier transform (required for calculation of "// &
1981 "MOMENTS_FT and POLARIZABILITY) can oscillate "// &
1982 "when the final values are far away from zero. "// &
1983 "This keyword controls the exponential damping in the Fourier transform "// &
1984 "(Fourier transform is used for calculation of MOMENTS_FT and POLARIZABILITY). "// &
1985 "For negative values (the default), calculates the damping at the run time so that the last point "// &
1986 "in the time trace is reduced by factor e^(-4). When set manually, determines the time in which "// &
1987 "the moments trace is reduced by factor of e^(-1), except when set to zero, in which case "// &
1988 "the damping is not applied.", &
1989 type_of_var=real_t, &
1990 unit_str="fs", &
1991 default_r_val=-1.0_dp/femtoseconds)
1992 CALL section_add_keyword(section, keyword)
1993 CALL keyword_release(keyword)
1994 CALL keyword_create(keyword, __location__, "FT_START_TIME", &
1995 description="The starting time from which damping is applied and from which on the trace is "// &
1996 "considered for the Fourier transform (Fourier transform is used for the calculation of "// &
1997 "MOMENTS_FT and POLARIZABILITY). Useful for real-time pulse - "// &
1998 "one can specify the center of the pulse as the starting point.", &
1999 type_of_var=real_t, &
2000 unit_str="fs", &
2001 default_r_val=0.0_dp)
2002 CALL section_add_keyword(section, keyword)
2003 CALL keyword_release(keyword)
2004
2005 ! Padé FT refinement
2006 ! TODO : Link MOMENTS_FT in documentation.
2007 CALL section_create(subsection, __location__, name="PADE_FT", &
2008 description=é"Options for the Pad approximant refinement of the Fourier transform. Uses GreenX "// &
2009 "library to perform the analytic continuation and interpolation of the Fourier transform of "// &
2010 "dipole moments. The resulting moments are printed into the MOMENTS_FT file.", &
2011 repeats=.false.)
2012
2013 CALL keyword_create(keyword, __location__, name="E_MIN", &
2014 description="Minimal energy of the interpolated values.", &
2015 unit_str="eV", &
2016 type_of_var=real_t, &
2017 default_r_val=0.0_dp)
2018 CALL section_add_keyword(subsection, keyword)
2019 CALL keyword_release(keyword)
2020
2021 CALL keyword_create(keyword, __location__, name="E_MAX", &
2022 description="Maximal energy of the interpolated values.", &
2023 unit_str="eV", &
2024 type_of_var=real_t, &
2025 default_r_val=100.0_dp/evolt)
2026 CALL section_add_keyword(subsection, keyword)
2027 CALL keyword_release(keyword)
2028
2029 CALL keyword_create(keyword, __location__, name="E_STEP", &
2030 description="Energy resolution of the interpolated values.", &
2031 unit_str="eV", &
2032 type_of_var=real_t, &
2033 default_r_val=0.02_dp/evolt)
2034 CALL section_add_keyword(subsection, keyword)
2035 CALL keyword_release(keyword)
2036
2037 CALL keyword_create(keyword, __location__, name="FIT_E_MIN", &
2038 description=é"Minimum energy to be used in the fitting of Pad approximants. "// &
2039 é"Can be used to restrict the number of Pad parameters. "// &
2040 "When not present, takes the value of E_MIN.", &
2041 unit_str="eV", &
2042 type_of_var=real_t, &
2043 default_r_val=0.0_dp)
2044 CALL section_add_keyword(subsection, keyword)
2045 CALL keyword_release(keyword)
2046
2047 CALL keyword_create(keyword, __location__, name="FIT_E_MAX", &
2048 description=é"Maximum energy to be used in the fitting of Pad approximants. "// &
2049 é"Can be used to restrict the number of Pad parameters. Negative energy is interpreted "// &
2050 "as maximum available energy from the original Fourier transform. "// &
2051 "When not present, takes the value of E_MAX.", &
2052 unit_str="eV", &
2053 type_of_var=real_t, &
2054 default_r_val=-1.0_dp/evolt)
2055 CALL section_add_keyword(subsection, keyword)
2056 CALL keyword_release(keyword)
2057
2058 CALL section_add_subsection(section, subsection)
2059 CALL section_release(subsection)
2060
2061 END SUBROUTINE create_rtbse_section
2062
2063! **************************************************************************************************
2064!> \brief Create CP2K input section for the SCCS model
2065!> \param section ...
2066!> \par History:
2067!> - Creation (10.10.2013,MK)
2068!> \author Matthias Krack (MK)
2069!> \version 1.0
2070! **************************************************************************************************
2071 SUBROUTINE create_sccs_section(section)
2072
2073 TYPE(section_type), POINTER :: section
2074
2075 TYPE(keyword_type), POINTER :: keyword
2076 TYPE(section_type), POINTER :: subsection
2077
2078 cpassert(.NOT. ASSOCIATED(section))
2079
2080 CALL section_create(section, __location__, &
2081 name="SCCS", &
2082 description="Define the parameters for self-consistent continuum solvation (SCCS) model", &
2083 citations=(/fattebert2002, andreussi2012, yin2017/), &
2084 n_keywords=8, &
2085 n_subsections=2, &
2086 repeats=.false.)
2087
2088 NULLIFY (keyword)
2089
2090 CALL keyword_create(keyword, __location__, &
2091 name="_SECTION_PARAMETERS_", &
2092 description="Controls the activation of the SCCS section", &
2093 usage="&SCCS ON", &
2094 default_l_val=.false., &
2095 lone_keyword_l_val=.true.)
2096 CALL section_add_keyword(section, keyword)
2097 CALL keyword_release(keyword)
2098
2099 CALL keyword_create(keyword, __location__, &
2100 name="ALPHA", &
2101 description="Solvent specific tunable parameter for the calculation of "// &
2102 "the repulsion term $G^\text{rep} = \alpha S$ "// &
2103 "where $S$ is the (quantum) surface of the cavity", &
2104 repeats=.false., &
2105 n_var=1, &
2106 type_of_var=real_t, &
2107 default_r_val=0.0_dp, &
2108 unit_str="mN/m")
2109 CALL section_add_keyword(section, keyword)
2110 CALL keyword_release(keyword)
2111
2112 CALL keyword_create(keyword, __location__, &
2113 name="BETA", &
2114 description="Solvent specific tunable parameter for the calculation of "// &
2115 "the dispersion term $G^\text{dis} = \beta V$ "// &
2116 "where $V$ is the (quantum) volume of the cavity", &
2117 repeats=.false., &
2118 n_var=1, &
2119 type_of_var=real_t, &
2120 default_r_val=0.0_dp, &
2121 unit_str="GPa")
2122 CALL section_add_keyword(section, keyword)
2123 CALL keyword_release(keyword)
2124
2125 CALL keyword_create(keyword, __location__, &
2126 name="DELTA_RHO", &
2127 description="Numerical increment for the calculation of the (quantum) "// &
2128 "surface of the solute cavity", &
2129 repeats=.false., &
2130 n_var=1, &
2131 type_of_var=real_t, &
2132 default_r_val=2.0e-5_dp)
2133 CALL section_add_keyword(section, keyword)
2134 CALL keyword_release(keyword)
2135
2136 CALL keyword_create(keyword, __location__, &
2137 name="DERIVATIVE_METHOD", &
2138 description="Method for the calculation of the numerical derivatives on the real-space grids", &
2139 usage="DERIVATIVE_METHOD cd5", &
2140 repeats=.false., &
2141 n_var=1, &
2142 default_i_val=sccs_derivative_fft, &
2143 enum_c_vals=s2a("FFT", "CD3", "CD5", "CD7"), &
2144 enum_i_vals=(/sccs_derivative_fft, &
2148 enum_desc=s2a("Fast Fourier transformation", &
2149 "3-point stencil central differences", &
2150 "5-point stencil central differences", &
2151 "7-point stencil central differences"))
2152 CALL section_add_keyword(section, keyword)
2153 CALL keyword_release(keyword)
2154
2155 CALL keyword_create(keyword, __location__, &
2156 name="RELATIVE_PERMITTIVITY", &
2157 variants=s2a("DIELECTRIC_CONSTANT", "EPSILON_RELATIVE", "EPSILON_SOLVENT"), &
2158 description="Relative permittivity (dielectric constant) of the solvent (medium)", &
2159 repeats=.false., &
2160 n_var=1, &
2161 type_of_var=real_t, &
2162 default_r_val=80.0_dp, &
2163 usage="RELATIVE_PERMITTIVITY 78.36")
2164 CALL section_add_keyword(section, keyword)
2165 CALL keyword_release(keyword)
2166
2167 CALL keyword_create(keyword, __location__, &
2168 name="EPS_SCCS", &
2169 variants=s2a("EPS_ITER", "TAU_POL"), &
2170 description="Tolerance for the convergence of the polarisation density, "// &
2171 "i.e. requested accuracy for the SCCS iteration cycle", &
2172 repeats=.false., &
2173 n_var=1, &
2174 type_of_var=real_t, &
2175 default_r_val=1.0e-6_dp, &
2176 usage="EPS_ITER 1.0E-7")
2177 CALL section_add_keyword(section, keyword)
2178 CALL keyword_release(keyword)
2179
2180 CALL keyword_create(keyword, __location__, &
2181 name="EPS_SCF", &
2182 description="The SCCS iteration cycle is activated only if the SCF iteration cycle "// &
2183 "is converged to this threshold value", &
2184 repeats=.false., &
2185 n_var=1, &
2186 type_of_var=real_t, &
2187 default_r_val=0.5_dp, &
2188 usage="EPS_SCF 1.0E-2")
2189 CALL section_add_keyword(section, keyword)
2190 CALL keyword_release(keyword)
2191
2192 CALL keyword_create(keyword, __location__, &
2193 name="GAMMA", &
2194 variants=s2a("SURFACE_TENSION"), &
2195 description="Surface tension of the solvent used for the calculation of "// &
2196 "the cavitation term $G^\text{cav} = \gamma S$ "// &
2197 "where $S$ is the (quantum) surface of the cavity", &
2198 repeats=.false., &
2199 n_var=1, &
2200 type_of_var=real_t, &
2201 default_r_val=0.0_dp, &
2202 unit_str="mN/m")
2203 CALL section_add_keyword(section, keyword)
2204 CALL keyword_release(keyword)
2205
2206 CALL keyword_create(keyword, __location__, &
2207 name="MAX_ITER", &
2208 description="Maximum number of SCCS iteration steps performed to converge "// &
2209 "within the given tolerance", &
2210 repeats=.false., &
2211 n_var=1, &
2212 type_of_var=integer_t, &
2213 default_i_val=100, &
2214 usage="MAX_ITER 50")
2215 CALL section_add_keyword(section, keyword)
2216 CALL keyword_release(keyword)
2217
2218 CALL keyword_create(keyword, __location__, &
2219 name="METHOD", &
2220 description="Method used for the smoothing of the dielectric function", &
2221 usage="METHOD Fattebert-Gygi", &
2222 default_i_val=sccs_andreussi, &
2223 enum_c_vals=s2a("ANDREUSSI", "FATTEBERT-GYGI"), &
2224 enum_i_vals=(/sccs_andreussi, sccs_fattebert_gygi/), &
2225 enum_desc=s2a("Smoothing function proposed by Andreussi et al.", &
2226 "Smoothing function proposed by Fattebert and Gygi"))
2227 CALL section_add_keyword(section, keyword)
2228 CALL keyword_release(keyword)
2229
2230 CALL keyword_create(keyword, __location__, &
2231 name="MIXING", &
2232 variants=(/"ETA"/), &
2233 description="Mixing parameter (Hartree damping) employed during the iteration procedure", &
2234 repeats=.false., &
2235 n_var=1, &
2236 type_of_var=real_t, &
2237 default_r_val=0.6_dp, &
2238 usage="MIXING 0.2")
2239 CALL section_add_keyword(section, keyword)
2240 CALL keyword_release(keyword)
2241
2242 NULLIFY (subsection)
2243
2244 CALL section_create(subsection, __location__, &
2245 name="ANDREUSSI", &
2246 description="Define the parameters of the dielectric smoothing function proposed by "// &
2247 "Andreussi et al.", &
2248 citations=(/andreussi2012/), &
2249 n_keywords=2, &
2250 n_subsections=0, &
2251 repeats=.false.)
2252
2253 CALL keyword_create(keyword, __location__, &
2254 name="RHO_MAX", &
2255 description="Maximum density value used for the smoothing of the dielectric function", &
2256 repeats=.false., &
2257 n_var=1, &
2258 type_of_var=real_t, &
2259 default_r_val=0.0035_dp, &
2260 usage="RHO_MAX 0.01")
2261 CALL section_add_keyword(subsection, keyword)
2262 CALL keyword_release(keyword)
2263
2264 CALL keyword_create(keyword, __location__, &
2265 name="RHO_MIN", &
2266 description="Minimum density value used for the smoothing of the dielectric function", &
2267 repeats=.false., &
2268 n_var=1, &
2269 type_of_var=real_t, &
2270 default_r_val=0.0001_dp, &
2271 usage="RHO_MIN 0.0003")
2272 CALL section_add_keyword(subsection, keyword)
2273 CALL keyword_release(keyword)
2274
2275 CALL section_add_subsection(section, subsection)
2276 CALL section_release(subsection)
2277
2278 CALL section_create(subsection, __location__, &
2279 name="FATTEBERT-GYGI", &
2280 description="Define the parameters of the dielectric smoothing function proposed by "// &
2281 "Fattebert and Gygi", &
2282 citations=(/fattebert2002/), &
2283 n_keywords=2, &
2284 n_subsections=0, &
2285 repeats=.false.)
2286
2287 CALL keyword_create(keyword, __location__, &
2288 name="BETA", &
2289 description="Parameter &beta; changes the width of the interface solute-solvent", &
2290 repeats=.false., &
2291 n_var=1, &
2292 type_of_var=real_t, &
2293 default_r_val=1.7_dp, &
2294 usage="BETA 1.3")
2295 CALL section_add_keyword(subsection, keyword)
2296 CALL keyword_release(keyword)
2297
2298 CALL keyword_create(keyword, __location__, &
2299 name="RHO_ZERO", &
2300 variants=(/"RHO0"/), &
2301 description="Parameter $\rho_0$ defines the critical density in the middle "// &
2302 "of the interface solute-solvent", &
2303 repeats=.false., &
2304 n_var=1, &
2305 type_of_var=real_t, &
2306 default_r_val=0.0006_dp, &
2307 usage="RHO_ZERO 0.0004")
2308 CALL section_add_keyword(subsection, keyword)
2309 CALL keyword_release(keyword)
2310
2311 CALL section_add_subsection(section, subsection)
2312 CALL section_release(subsection)
2313
2314 END SUBROUTINE create_sccs_section
2315
2316END MODULE input_cp2k_dft
integer, parameter, public basis_sort_zet
integer, parameter, public basis_sort_default
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public vandevondele2005b
integer, save, public blochl1995
integer, save, public guidon2010
integer, save, public bengtsson1999
integer, save, public kunert2003
integer, save, public yin2017
integer, save, public avezac2005
integer, save, public andreussi2012
integer, save, public iannuzzi2006
integer, save, public fattebert2002
integer, save, public andermatt2016
integer, save, public merlot2014
integer, save, public perdew1981
integer, save, public brelaz1979
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 medium_print_level
integer, parameter, public high_print_level
integer, parameter, public add_last_numeric
integer, parameter, public silent_print_level
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
utils to manipulate splines on the regular grid of a pw
integer, parameter, public pw_interp
integer, parameter, public spline3_nopbc_interp
integer, parameter, public spline3_pbc_interp
unit conversion facility
Definition cp_units.F:30
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Definition cp_units.F:1150
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public use_mom_ref_coac
integer, parameter, public sic_list_unpaired
integer, parameter, public sic_mauri_spz
integer, parameter, public do_bch
integer, parameter, public do_admm_purify_mo_no_diag
integer, parameter, public do_etrs
integer, parameter, public do_admm_aux_exch_func_opt_libxc
integer, parameter, public rel_zora_full
integer, parameter, public do_pade
integer, parameter, public do_admm_purify_none
integer, parameter, public use_mom_ref_user
integer, parameter, public rel_pot_full
integer, parameter, public do_admm_purify_none_dm
integer, parameter, public use_mom_ref_com
integer, parameter, public ehrenfest
integer, parameter, public use_restart_wfn
integer, parameter, public do_admm_purify_mcweeny
integer, parameter, public do_admm_blocking_purify_full
integer, parameter, public plus_u_lowdin
integer, parameter, public kg_tnadd_none
integer, parameter, public do_admm_aux_exch_func_sx_libxc
integer, parameter, public admm2_type
integer, parameter, public sic_list_all
integer, parameter, public do_cn
integer, parameter, public kg_tnadd_embed_ri
integer, parameter, public kg_tnadd_embed
integer, parameter, public sic_eo
integer, parameter, public sccs_derivative_cd5
integer, parameter, public do_admm_aux_exch_func_bee
integer, parameter, public rel_zora_mp
integer, parameter, public plus_u_mulliken_charges
integer, parameter, public use_scf_wfn
integer, parameter, public no_admm_type
integer, parameter, public rel_zora
integer, parameter, public do_admm_blocked_projection
integer, parameter, public kg_tnadd_atomic
integer, parameter, public do_admm_basis_projection
integer, parameter, public do_admm_aux_exch_func_default_libxc
integer, parameter, public do_admm_aux_exch_func_opt
integer, parameter, public do_admm_aux_exch_func_none
integer, parameter, public do_admm_purify_cauchy_subspace
integer, parameter, public plus_u_mulliken
integer, parameter, public kg_color_greedy
integer, parameter, public do_admm_aux_exch_func_bee_libxc
integer, parameter, public admm1_type
integer, parameter, public do_admm_aux_exch_func_pbex_libxc
integer, parameter, public kg_color_dsatur
integer, parameter, public do_admm_aux_exch_func_default
integer, parameter, public weight_type_unit
integer, parameter, public rtp_method_bse
integer, parameter, public admms_type
integer, parameter, public do_admm_charge_constrained_projection
integer, parameter, public rel_dkh
integer, parameter, public do_admm_purify_cauchy
integer, parameter, public sccs_fattebert_gygi
integer, parameter, public rel_trans_full
integer, parameter, public sccs_derivative_cd7
integer, parameter, public rel_trans_molecule
integer, parameter, public rel_trans_atom
integer, parameter, public weight_type_mass
integer, parameter, public use_rt_restart
integer, parameter, public do_exact
integer, parameter, public sccs_derivative_fft
integer, parameter, public use_mom_ref_zero
integer, parameter, public gaussian
integer, parameter, public rel_pot_erfc
integer, parameter, public rtp_method_tddft
integer, parameter, public rel_none
integer, parameter, public rtp_bse_ham_g0w0
integer, parameter, public do_taylor
integer, parameter, public do_admm_purify_mo_diag
integer, parameter, public do_em
integer, parameter, public sic_mauri_us
integer, parameter, public sic_none
integer, parameter, public rtp_bse_ham_ks
integer, parameter, public sccs_derivative_cd3
integer, parameter, public rel_sczora_mp
integer, parameter, public admmq_type
integer, parameter, public sccs_andreussi
integer, parameter, public sic_ad
integer, parameter, public do_admm_exch_scaling_none
integer, parameter, public do_arnoldi
integer, parameter, public admmp_type
integer, parameter, public do_admm_exch_scaling_merlot
integer, parameter, public real_time_propagation
integer, parameter, public numerical
integer, parameter, public do_admm_aux_exch_func_pbex
integer, parameter, public slater
input for the ALMO SCF section
subroutine, public create_almo_scf_section(section)
create the almo scf section
function that build the active space section of the input
subroutine, public create_active_space_section(section)
Create CP2K input section for the calculation of an active space Hamiltonian.
function that build the dft section of the input
subroutine, public create_bsse_section(section)
Create the BSSE section for counterpoise correction.
subroutine, public create_mgrid_section(section, create_subsections)
creates the multigrid
subroutine, public create_dft_section(section)
creates the dft section
subroutine, public create_interp_section(section)
creates the interpolation section
function that build the dft section of the input
subroutine, public create_ec_section(section)
creates the ENERGY CORRECTION section
Excited state input section.
subroutine, public create_exstate_section(section)
creates the EXCITED ENERGY section
function that build the input sections for external [potential, density VXC]
subroutine, public create_ext_pot_section(section)
Creates the section for applying an electrostatic external potential.
subroutine, public create_ext_vxc_section(section)
ZMP Creates the section for creating the external v_xc.
subroutine, public create_ext_den_section(section)
ZMP Creates the section for reading user supplied external density.
function that build the field section of the input
subroutine, public create_efield_section(section)
creates the section for time dependent nonperiodic fields
subroutine, public create_per_efield_section(section)
creates the section for static periodic fields
Harris input section.
subroutine, public create_harris_section(section)
creates the HARRIS_METHOD section
function that build the kpoints section of the input
subroutine, public create_kpoints_section(section)
Creates the Kpoints section SECTION: &kpoint... &end SCHEME [None, Gamma, Monkhorst-Pack,...
subroutine, public create_localize_section(section)
parameters fo the localization of wavefunctions
input for the linear scaling (LS) section
subroutine, public create_ls_scf_section(section)
creates the linear scaling scf section
function that build the poisson section of the input
subroutine, public create_poisson_section(section)
Creates the Poisson section.
function that build the print section of the dft input
subroutine, public create_print_dft_section(section)
Create the print dft section.
function that builds the projection of MO in RTP section of the input
subroutine, public create_projection_rtp_section(section)
creates the section for time dependent projection of the MOs
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_rsgrid_section(section)
...
function that build the scf section of the input
subroutine, public create_scf_section(section)
creates the structure of the section with the DFT SCF parameters
Functions that build SMEAGOL input section.
subroutine, public create_dft_smeagol_section(section)
Create SMEAGOL input section.
input section for NEGF based quantum transport calculations (integration with the quantum transport c...
subroutine, public create_transport_section(section)
creates the TRANSPORT section
function that build the XAS section of the input
subroutine, public create_xas_section(section)
makes the input section for core-level spectroscopy simulations
subroutine, public create_xas_tdp_section(section)
makes the input section for core-level spectroscopy simulations using linear response TDDFT
function that build the xc section of the input
subroutine, public create_xc_section(section)
creates the input section for the xc part
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 char_t
integer, parameter, public integer_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Definition of physical constants:
Definition physcon.F:68
real(kind=dp), parameter, public femtoseconds
Definition physcon.F:153
real(kind=dp), parameter, public evolt
Definition physcon.F:183
different utils that are useful to manipulate splines on the regular grid of a pw
integer, parameter, public precond_spl3_3
integer, parameter, public precond_spl3_aint
integer, parameter, public no_precond
integer, parameter, public precond_spl3_2
integer, parameter, public precond_spl3_aint2
integer, parameter, public precond_spl3_1
Utilities for string manipulations.
represent a keyword in the input
represent a section of the input file