(git:e8f5963)
Loading...
Searching...
No Matches
input_cp2k_print_dft.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2026 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 print section of the dft input
10!> \par History
11!> 10.2005 moved out of input_cp2k [fawzi]
12!> 07.2024 moved out of input_cp2k_dft [JGH]
13!> \author fawzi
14! **************************************************************************************************
18 USE bibliography, ONLY: &
35 USE cp_spline_utils, ONLY: pw_interp, &
38 USE cp_units, ONLY: cp_unit_to_cp2k
39 USE input_constants, ONLY: &
147 USE input_val_types, ONLY: char_t, &
148 enum_t, &
149 integer_t, &
150 lchar_t, &
151 logical_t, &
152 real_t
153 USE kinds, ONLY: dp
158 USE pw_spline_utils, ONLY: no_precond, &
167 USE string_utilities, ONLY: s2a
168
170
171#include "./base/base_uses.f90"
172
173 IMPLICIT NONE
174 PRIVATE
175
176 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_print_dft'
177
179
180CONTAINS
181
182! **************************************************************************************************
183!> \brief Create the print dft section
184!> \param section the section to create
185!> \author teo
186! **************************************************************************************************
187 SUBROUTINE create_print_dft_section(section)
188 TYPE(section_type), POINTER :: section
189
190 TYPE(keyword_type), POINTER :: keyword
191 TYPE(section_type), POINTER :: print_key, sub_print_key, subsection
192
193 cpassert(.NOT. ASSOCIATED(section))
194 CALL section_create(section, __location__, name="PRINT", &
195 description="Section of possible print options in DFT code.", &
196 n_keywords=0, n_subsections=1, repeats=.false.)
197
198 NULLIFY (print_key, keyword, subsection)
199
200 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_BANNER", &
201 description="Controls the printing of the banner of the MM program", &
202 print_level=silent_print_level, filename="__STD_OUT__")
203 CALL section_add_subsection(section, print_key)
204 CALL section_release(print_key)
205
206 CALL cp_print_key_section_create(print_key, __location__, "BASIS_SET_FILE", &
207 description="Controls the printing of a file with all basis sets used.", &
208 print_level=high_print_level, filename="LOCAL_BASIS_SETS")
209 CALL section_add_subsection(section, print_key)
210 CALL section_release(print_key)
211
212 CALL cp_print_key_section_create(print_key, __location__, "KINETIC_ENERGY", &
213 description="Controls the printing of the kinetic energy", &
214 print_level=high_print_level, filename="__STD_OUT__")
215 CALL section_add_subsection(section, print_key)
216 CALL section_release(print_key)
217
218 CALL cp_print_key_section_create(print_key, __location__, "DERIVATIVES", &
219 description="Print all derivatives after the DFT calculation", &
220 print_level=high_print_level, filename="__STD_OUT__")
221 CALL keyword_create(keyword, __location__, &
222 name="ndigits", &
223 description="Specify the number of digits used to print derivatives", &
224 default_i_val=6)
225 CALL section_add_keyword(print_key, keyword)
226 CALL keyword_release(keyword)
227
228 CALL section_add_subsection(section, print_key)
229 CALL section_release(print_key)
230
231 CALL cp_print_key_section_create(print_key, __location__, name="neighbor_lists", &
232 description="Controls the printing of the neighbor lists", &
233 print_level=debug_print_level, filename="", unit_str="angstrom")
234 CALL keyword_create(keyword, __location__, &
235 name="sab_orb", &
236 description="Activates the printing of the orbital "// &
237 "orbital neighbor lists, "// &
238 "i.e. the overlap neighbor lists", &
239 default_l_val=.false., &
240 lone_keyword_l_val=.true.)
241 CALL section_add_keyword(print_key, keyword)
242 CALL keyword_release(keyword)
243
244 CALL keyword_create(keyword, __location__, &
245 name="sab_aux_fit", &
246 description="Activates the printing of the orbital "// &
247 "orbital neighbor lists wavefunction fitting basis, "// &
248 "i.e. the overlap neighbor lists", &
249 default_l_val=.false., &
250 lone_keyword_l_val=.true.)
251 CALL section_add_keyword(print_key, keyword)
252 CALL keyword_release(keyword)
253
254 CALL keyword_create(keyword, __location__, &
255 name="sab_aux_fit_vs_orb", &
256 description="Activates the printing of the orbital "// &
257 "orbital mixed neighbor lists of wavefunction fitting basis, "// &
258 "and the orbital basis, i.e. the overlap neighbor lists", &
259 default_l_val=.false., &
260 lone_keyword_l_val=.true.)
261 CALL section_add_keyword(print_key, keyword)
262 CALL keyword_release(keyword)
263
264 CALL keyword_create(keyword, __location__, &
265 name="sab_scp", &
266 description="Activates the printing of the vdW SCP "// &
267 "neighbor lists ", &
268 default_l_val=.false., &
269 lone_keyword_l_val=.true.)
270 CALL section_add_keyword(print_key, keyword)
271 CALL keyword_release(keyword)
272
273 CALL keyword_create(keyword, __location__, &
274 name="sab_vdw", &
275 description="Activates the printing of the vdW "// &
276 "neighbor lists (from DFT, DFTB, SE), "// &
277 "i.e. the dispersion neighbor lists", &
278 default_l_val=.false., &
279 lone_keyword_l_val=.true.)
280 CALL section_add_keyword(print_key, keyword)
281 CALL keyword_release(keyword)
282
283 CALL keyword_create(keyword, __location__, &
284 name="sab_cn", &
285 description="Activates the printing of the "// &
286 "neighbor lists used for coordination numbers in vdW DFT-D3", &
287 default_l_val=.false., &
288 lone_keyword_l_val=.true.)
289 CALL section_add_keyword(print_key, keyword)
290 CALL keyword_release(keyword)
291
292 CALL keyword_create(keyword, __location__, &
293 name="sac_ae", &
294 description="Activates the printing of the orbital "// &
295 "nuclear attraction neighbor lists (erfc potential)", &
296 default_l_val=.false., &
297 lone_keyword_l_val=.true.)
298 CALL section_add_keyword(print_key, keyword)
299 CALL keyword_release(keyword)
300
301 CALL keyword_create(keyword, __location__, &
302 name="sac_ppl", &
303 description="Activates the printing of the orbital "// &
304 "GTH-PPL neighbor lists (local part of the "// &
305 "Goedecker-Teter-Hutter pseudo potentials)", &
306 default_l_val=.false., &
307 lone_keyword_l_val=.true.)
308 CALL section_add_keyword(print_key, keyword)
309 CALL keyword_release(keyword)
310
311 CALL keyword_create(keyword, __location__, &
312 name="sap_ppnl", &
313 description="Activates the printing of the orbital "// &
314 "GTH-PPNL neighbor lists (non-local part of the "// &
315 "Goedecker-Teter-Hutter pseudo potentials)", &
316 default_l_val=.false., &
317 lone_keyword_l_val=.true.)
318 CALL section_add_keyword(print_key, keyword)
319 CALL keyword_release(keyword)
320
321 CALL keyword_create(keyword, __location__, &
322 name="sap_oce", &
323 description="Activates the printing of the orbital "// &
324 "PAW-projector neighbor lists (only GAPW)", &
325 default_l_val=.false., &
326 lone_keyword_l_val=.true.)
327 CALL section_add_keyword(print_key, keyword)
328 CALL keyword_release(keyword)
329
330 CALL keyword_create(keyword, __location__, &
331 name="sab_se", &
332 description="Activates the printing of the two-center "// &
333 "neighbor lists for Coulomb type interactions in NDDO ", &
334 default_l_val=.false., &
335 lone_keyword_l_val=.true.)
336 CALL section_add_keyword(print_key, keyword)
337 CALL keyword_release(keyword)
338
339 CALL keyword_create(keyword, __location__, &
340 name="sab_lrc", &
341 description="Activates the printing of the long-range SE correction "// &
342 "neighbor lists (only when doing long-range SE with integral scheme KDSO and KDSO-d)", &
343 default_l_val=.false., lone_keyword_l_val=.true.)
344 CALL section_add_keyword(print_key, keyword)
345 CALL keyword_release(keyword)
346
347 CALL keyword_create(keyword, __location__, &
348 name="sab_tbe", &
349 description="Activates the printing of the DFTB Ewald "// &
350 "neighbor lists ", &
351 default_l_val=.false., &
352 lone_keyword_l_val=.true.)
353 CALL section_add_keyword(print_key, keyword)
354 CALL keyword_release(keyword)
355
356 CALL keyword_create(keyword, __location__, &
357 name="sab_xtbe", &
358 description="Activates the printing of the xTB sr-Coulomb "// &
359 "neighbor lists ", &
360 default_l_val=.false., &
361 lone_keyword_l_val=.true.)
362 CALL section_add_keyword(print_key, keyword)
363 CALL keyword_release(keyword)
364
365 CALL keyword_create(keyword, __location__, &
366 name="sab_core", &
367 description="Activates the printing of core interaction "// &
368 "neighbor lists ", &
369 default_l_val=.false., &
370 lone_keyword_l_val=.true.)
371 CALL section_add_keyword(print_key, keyword)
372 CALL keyword_release(keyword)
373
374 CALL keyword_create(keyword, __location__, &
375 name="sab_xb", &
376 description="Activates the printing of XB interaction from (xTB) "// &
377 "neighbor lists ", &
378 default_l_val=.false., &
379 lone_keyword_l_val=.true.)
380 CALL section_add_keyword(print_key, keyword)
381 CALL keyword_release(keyword)
382
383 CALL keyword_create(keyword, __location__, &
384 name="sab_xtb_nonbond", &
385 description="Activates the printing of nonbonded interaction from (xTB) "// &
386 "neighbor lists ", &
387 default_l_val=.false., &
388 lone_keyword_l_val=.true.)
389 CALL section_add_keyword(print_key, keyword)
390 CALL keyword_release(keyword)
391
392 CALL keyword_create(keyword, __location__, &
393 name="soo_list", &
394 description="Activates the printing of RI orbital-orbital "// &
395 "neighbor lists ", &
396 default_l_val=.false., &
397 lone_keyword_l_val=.true.)
398 CALL section_add_keyword(print_key, keyword)
399 CALL keyword_release(keyword)
400
401 CALL keyword_create(keyword, __location__, &
402 name="sip_list", &
403 description="Activates the printing of RI basis-projector interaction "// &
404 "neighbor lists ", &
405 default_l_val=.false., &
406 lone_keyword_l_val=.true.)
407 CALL section_add_keyword(print_key, keyword)
408 CALL keyword_release(keyword)
409
410 CALL keyword_create(keyword, __location__, &
411 name="sab_cneo", &
412 description="Activates the printing of the nuclear orbital "// &
413 "nuclear repulsion neighbor lists (erfc potential)", &
414 default_l_val=.false., &
415 lone_keyword_l_val=.true.)
416 CALL section_add_keyword(print_key, keyword)
417 CALL keyword_release(keyword)
418
419 CALL section_add_subsection(section, print_key)
420 CALL section_release(print_key)
421
422 CALL cp_print_key_section_create(print_key, __location__, "SUBCELL", &
423 description="Activates the printing of the subcells used for the "// &
424 "generation of neighbor lists.", unit_str="angstrom", &
425 print_level=high_print_level, filename="__STD_OUT__")
426 CALL section_add_subsection(section, print_key)
427 CALL section_release(print_key)
428
429 CALL cp_print_key_section_create(print_key, __location__, "AO_MATRICES", &
430 description="Controls the printing of the ao (i.e. contracted gaussian) matrices (debug).", &
431 print_level=debug_print_level, filename="__STD_OUT__")
432 CALL keyword_create(keyword, __location__, name="OMIT_HEADERS", &
433 description="Print only the matrix data, not the row and column headers", &
434 default_l_val=.false., lone_keyword_l_val=.true.)
435 CALL section_add_keyword(print_key, keyword)
436 CALL keyword_release(keyword)
437
438 CALL keyword_create(keyword, __location__, name="NDIGITS", &
439 description="Specify the number of digits used to print the AO matrices", &
440 default_i_val=6)
441 CALL section_add_keyword(print_key, keyword)
442 CALL keyword_release(keyword)
443 CALL keyword_create(keyword, __location__, name="CORE_HAMILTONIAN", &
444 description="If the printkey is activated controls the printing of the hamiltonian matrix", &
445 default_l_val=.false., lone_keyword_l_val=.true.)
446 CALL section_add_keyword(print_key, keyword)
447 CALL keyword_release(keyword)
448 CALL keyword_create(keyword, __location__, name="DENSITY", &
449 description="If the printkey is activated controls the printing of the density (P) matrix", &
450 default_l_val=.false., lone_keyword_l_val=.true.)
451 CALL section_add_keyword(print_key, keyword)
452 CALL keyword_release(keyword)
453
454 CALL keyword_create(keyword, __location__, name="KINETIC_ENERGY", &
455 description="If the printkey is activated controls the printing of the kinetic energy matrix", &
456 default_l_val=.false., lone_keyword_l_val=.true.)
457 CALL section_add_keyword(print_key, keyword)
458 CALL keyword_release(keyword)
459 CALL keyword_create(keyword, __location__, name="KOHN_SHAM_MATRIX", &
460 description="If the printkey is activated controls the printing of the Kohn-Sham matrix", &
461 default_l_val=.false., lone_keyword_l_val=.true.)
462 CALL section_add_keyword(print_key, keyword)
463 CALL keyword_release(keyword)
464 CALL keyword_create( &
465 keyword, __location__, name="MATRIX_VXC", &
466 description="If the printkey is activated compute and print the matrix of the exchange and correlation potential. "// &
467 "Only the GGA part for GPW is printed", &
468 default_l_val=.false., lone_keyword_l_val=.true.)
469 CALL section_add_keyword(print_key, keyword)
470 CALL keyword_release(keyword)
471 CALL keyword_create(keyword, __location__, name="ORTHO", &
472 description="If the printkey is activated controls the printing of the orthogonalization matrix", &
473 default_l_val=.false., lone_keyword_l_val=.true.)
474 CALL section_add_keyword(print_key, keyword)
475 CALL keyword_release(keyword)
476 CALL keyword_create(keyword, __location__, name="OVERLAP", &
477 description="If the printkey is activated controls the printing of the overlap matrix", &
478 default_l_val=.false., lone_keyword_l_val=.true.)
479 CALL section_add_keyword(print_key, keyword)
480 CALL keyword_release(keyword)
481
482 CALL keyword_create(keyword, __location__, name="COMMUTATOR_HR", &
483 description="Controls the printing of the [H,r] commutator matrix", &
484 default_l_val=.false., lone_keyword_l_val=.true.)
485 CALL section_add_keyword(print_key, keyword)
486 CALL keyword_release(keyword)
487
488 CALL keyword_create(keyword, __location__, name="FERMI_CONTACT", &
489 description="If the printkey is activated controls the printing of the Fermi contact matrix", &
490 default_l_val=.false., lone_keyword_l_val=.true.)
491 CALL section_add_keyword(print_key, keyword)
492 CALL keyword_release(keyword)
493 CALL keyword_create( &
494 keyword, __location__, name="PSO", &
495 description="If the printkey is activated controls the printing of the paramagnetic spin-orbit matrices", &
496 default_l_val=.false., lone_keyword_l_val=.true.)
497 CALL section_add_keyword(print_key, keyword)
498 CALL keyword_release(keyword)
499 CALL keyword_create( &
500 keyword, __location__, name="EFG", &
501 description="If the printkey is activated controls the printing of the electric field gradient matrices", &
502 default_l_val=.false., lone_keyword_l_val=.true.)
503 CALL section_add_keyword(print_key, keyword)
504 CALL keyword_release(keyword)
505 CALL keyword_create(keyword, __location__, name="POTENTIAL_ENERGY", &
506 description="If the printkey is activated controls the printing of the potential energy matrix", &
507 default_l_val=.false., lone_keyword_l_val=.true.)
508 CALL section_add_keyword(print_key, keyword)
509 CALL keyword_release(keyword)
510 CALL keyword_create(keyword, __location__, name="OCE_HARD", &
511 description="If the printkey is activated controls the printing of the OCE HARD matrix", &
512 default_l_val=.false., lone_keyword_l_val=.true.)
513 CALL section_add_keyword(print_key, keyword)
514 CALL keyword_release(keyword)
515 CALL keyword_create(keyword, __location__, name="OCE_SOFT", &
516 description="If the printkey is activated controls the printing of the OCE SOFT matrix", &
517 default_l_val=.false., lone_keyword_l_val=.true.)
518 CALL section_add_keyword(print_key, keyword)
519 CALL keyword_release(keyword)
520 CALL keyword_create(keyword, __location__, name="W_MATRIX", &
521 description="If the printkey is activated controls the printing of the w matrix", &
522 default_l_val=.false., lone_keyword_l_val=.true.)
523 CALL section_add_keyword(print_key, keyword)
524 CALL keyword_release(keyword)
525 CALL keyword_create(keyword, __location__, name="W_MATRIX_AUX_FIT", &
526 description="If the printkey is activated controls the printing of the w matrix", &
527 default_l_val=.false., lone_keyword_l_val=.true.)
528 CALL section_add_keyword(print_key, keyword)
529 CALL keyword_release(keyword)
530 CALL keyword_create(keyword, __location__, name="DERIVATIVES", &
531 description="If the printkey is activated controls the printing "// &
532 "of derivatives (for the matrixes that support this)", &
533 default_l_val=.false., lone_keyword_l_val=.true.)
534 CALL section_add_keyword(print_key, keyword)
535 CALL keyword_release(keyword)
536 CALL section_add_subsection(section, print_key)
537 CALL section_release(print_key)
538
540 print_key, __location__, "MO", &
541 description="Controls the printing of the molecular orbital (MO) information. The requested MO information "// &
542 "is printed for all occupied MOs by default. Use the MO_INDEX_RANGE keyword to restrict the number "// &
543 "of the MOs or to print the MO information for unoccupied MOs. With diagonalization, additional MOs "// &
544 "have to be made available for printout using the ADDED_MOS keyword in the SCF section. With OT, "// &
545 "it is sufficient to specify the desired MO_INDEX_RANGE. The OT eigensolver can be controlled with "// &
546 "the EPS_LUMO and MAX_ITER_LUMO keywords in the SCF section.", &
547 print_level=high_print_level, filename="__STD_OUT__")
548 CALL keyword_create(keyword, __location__, name="CARTESIAN", &
549 description="Print the MOs in the Cartesian basis instead of the default spherical basis.", &
550 default_l_val=.false., lone_keyword_l_val=.true.)
551 CALL section_add_keyword(print_key, keyword)
552 CALL keyword_release(keyword)
553 CALL keyword_create(keyword, __location__, name="CARTESIAN_OVERLAP", &
554 description="Print the Cartesian overlap matrix in line with Cartesian MO coefficients.", &
555 default_l_val=.false., lone_keyword_l_val=.true.)
556 CALL section_add_keyword(print_key, keyword)
557 CALL keyword_release(keyword)
558 CALL keyword_create(keyword, __location__, name="ENERGIES", &
559 variants=s2a("EIGENVALUES", "EIGVALS"), &
560 description="Print the MO energies (eigenvalues).", &
561 default_l_val=.false., lone_keyword_l_val=.true.)
562 CALL section_add_keyword(print_key, keyword)
563 CALL keyword_release(keyword)
564 CALL keyword_create(keyword, __location__, name="COEFFICIENTS", &
565 variants=s2a("EIGENVECTORS", "EIGVECS"), &
566 description="Print the MO coefficients (eigenvectors).", &
567 default_l_val=.false., lone_keyword_l_val=.true.)
568 CALL section_add_keyword(print_key, keyword)
569 CALL keyword_release(keyword)
570 CALL keyword_create(keyword, __location__, name="OCCUPATION_NUMBERS", &
571 variants=s2a("OCCNUMS"), &
572 description="Print the MO occupation numbers.", &
573 default_l_val=.false., lone_keyword_l_val=.true.)
574 CALL section_add_keyword(print_key, keyword)
575 CALL keyword_release(keyword)
576 CALL keyword_create(keyword, __location__, name="OCCUPATION_NUMBERS_STATS", &
577 variants=s2a("OCCNUMSTATS"), &
578 description="Print some stats (max number of occupied MOs, etc.) of the MO occupation numbers."// &
579 " First logical toggles stats printing, first real is the occupied threshold.", &
580 type_of_var=char_t, n_var=-1, &
581 default_c_vals=[".FALSE.", "1.0E-6 "], &
582 lone_keyword_c_vals=[".TRUE."], &
583 usage="OCCUPATION_NUMBERS_STATS {Logical} [{Real}]")
584 CALL section_add_keyword(print_key, keyword)
585 CALL keyword_release(keyword)
586 CALL keyword_create(keyword, __location__, name="NDIGITS", &
587 description="Specify the number of digits used to print the MO information.", &
588 default_i_val=6)
589 CALL section_add_keyword(print_key, keyword)
590 CALL keyword_release(keyword)
591 CALL keyword_create(keyword, __location__, &
592 name="MO_INDEX_RANGE", &
593 variants=s2a("MO_RANGE", "RANGE"), &
594 description="Print only the requested subset of MOs. The indices of the first and "// &
595 "the last MO have to be specified to define the range. -1 as the last MO index "// &
596 "prints all available orbitals with diagonalisation (ADDED_MOS) and all orbitals with OT.", &
597 repeats=.false., &
598 n_var=2, &
599 type_of_var=integer_t, &
600 default_i_vals=[0, 0], &
601 usage="MO_INDEX_RANGE 10 15")
602 CALL section_add_keyword(print_key, keyword)
603 CALL keyword_release(keyword)
604 CALL section_add_subsection(section, print_key)
605 CALL section_release(print_key)
606
607 CALL cp_print_key_section_create(print_key, __location__, "MO_MOLDEN", &
608 description="Write the molecular orbitals in Molden file format, for visualisation.", &
609 print_level=debug_print_level + 1, add_last=add_last_numeric, filename="MOS")
610 CALL keyword_create(keyword, __location__, name="UNIT", &
611 description="Unit for coordinates and cell in the MOLDEN file.", &
612 usage="UNIT ANGSTROM", &
613 enum_c_vals=s2a("BOHR", "ANGSTROM"), &
614 enum_desc=s2a("Write in Bohr (AU)", "Write in Angstrom"), &
615 enum_i_vals=[1, 2], &
616 default_i_val=1)
617 CALL section_add_keyword(print_key, keyword)
618 CALL keyword_release(keyword)
619 CALL keyword_create(keyword, __location__, name="WRITE_CELL", &
620 description="Controls whether the [Cell] block is written to the MOLDEN file.", &
621 usage="WRITE_CELL T", &
622 default_l_val=.false., lone_keyword_l_val=.true.)
623 CALL section_add_keyword(print_key, keyword)
624 CALL keyword_release(keyword)
625 CALL keyword_create(keyword, __location__, name="WRITE_PSEUDO", &
626 description="Controls whether the [Pseudo] block is written to the MOLDEN file.", &
627 usage="WRITE_PSEUDO T", &
628 default_l_val=.false., lone_keyword_l_val=.true.)
629 CALL section_add_keyword(print_key, keyword)
630 CALL keyword_release(keyword)
631 CALL keyword_create(keyword, __location__, name="MARK_GHOST", &
632 description="Controls whether ghost atoms are marked in the [Atoms] block by "// &
633 "setting their atomic number to zero.", &
634 usage="MARK_GHOST T", &
635 default_l_val=.false., lone_keyword_l_val=.true.)
636 CALL section_add_keyword(print_key, keyword)
637 CALL keyword_release(keyword)
638 CALL keyword_create(keyword, __location__, name="NDIGITS", &
639 description="Specifies the number of significant digits retained. 3 is OK for visualization.", &
640 usage="NDIGITS {int}", &
641 default_i_val=3)
642 CALL section_add_keyword(print_key, keyword)
643 CALL keyword_release(keyword)
644 CALL keyword_create(keyword, __location__, name="GTO_KIND", &
645 description="Representation of Gaussian-type orbitals", &
646 default_i_val=gto_spherical, &
647 enum_c_vals=s2a("CARTESIAN", "SPHERICAL"), &
648 enum_desc=s2a( &
649 "Cartesian Gaussian orbitals. Use with caution", &
650 "Spherical Gaussian orbitals. Incompatible with VMD"), &
651 enum_i_vals=[gto_cartesian, gto_spherical])
652 CALL section_add_keyword(print_key, keyword)
653 CALL keyword_release(keyword)
654 CALL keyword_create(keyword, __location__, name="NLUMO", &
655 description="Number of unoccupied orbitals to include in the Molden file. "// &
656 "For OT calculations, the requested virtual orbitals are generated after "// &
657 "SCF using the OT eigensolver. For diagonalization calculations, "// &
658 "SCF%ADDED_MOS is increased if needed to make the requested unoccupied "// &
659 "orbitals available. 0 means no virtual orbitals, -1 means all available.", &
660 usage="NLUMO integer", &
661 default_i_val=0)
662 CALL section_add_keyword(print_key, keyword)
663 CALL keyword_release(keyword)
664 CALL section_add_subsection(section, print_key)
665 CALL section_release(print_key)
666
667 CALL cp_print_key_section_create(print_key, __location__, "MO_KP", &
668 description="Write k-point MO information to `.mokp` file. "// &
669 "The information of cell and k-points is given at first. Then, "// &
670 "the coefficients of molecular orbitals are always written, "// &
671 "while users can choose whether to write GTO basis information "// &
672 "or explicit overlap matrices through the `AO_EXPORT_TYPE` keyword.", &
673 print_level=debug_print_level + 1, add_last=add_last_numeric, filename="")
674 CALL keyword_create(keyword, __location__, name="UNIT", &
675 description="Unit for coordinates and cell in the .mokp file.", &
676 usage="UNIT ANGSTROM", &
677 enum_c_vals=s2a("BOHR", "ANGSTROM"), &
678 enum_desc=s2a("Write in Bohr (AU)", "Write in Angstrom"), &
679 enum_i_vals=[1, 2], &
680 default_i_val=1)
681 CALL section_add_keyword(print_key, keyword)
682 CALL keyword_release(keyword)
683 CALL keyword_create(keyword, __location__, name="NDIGITS", &
684 description="Specifies the number of significant digits retained.", &
685 usage="NDIGITS {int}", &
686 default_i_val=9)
687 CALL section_add_keyword(print_key, keyword)
688 CALL keyword_release(keyword)
689 CALL keyword_create(keyword, __location__, name="AO_EXPORT_TYPE", &
690 description="How AO information is provided for interpreting MO coefficients. "// &
691 "GTO_BASIS writes basis set exponents/coefficients (compact, post-processing reconstructs S(k)). "// &
692 "OVERLAP_MATRIX writes S(k) directly (larger file, ready to use).", &
693 default_i_val=mokp_ao_gto_basis, &
694 enum_c_vals=s2a("GTO_BASIS", "OVERLAP_MATRIX"), &
695 enum_desc=s2a("Write GTO basis set definition (MOLDEN denormalization convention)", &
696 "Write explicit overlap matrices S(k) for all k-points"), &
698 CALL section_add_keyword(print_key, keyword)
699 CALL keyword_release(keyword)
700 CALL section_add_subsection(section, print_key)
701 CALL section_release(print_key)
702
703 CALL create_mo_section(print_key, "MO_CUBES", "cube", [2, 2, 2], "STRIDE 1 1 1", high_print_level, "write_cube")
704 CALL keyword_create(keyword, __location__, name="APPEND", &
705 description="append the cube files when they already exist", &
706 default_l_val=.false., lone_keyword_l_val=.true.)
707 CALL section_add_keyword(print_key, keyword)
708 CALL keyword_release(keyword)
709 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
710 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
711 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
712 CALL section_add_keyword(print_key, keyword)
713 CALL keyword_release(keyword)
714 CALL section_add_subsection(section, print_key)
715 CALL section_release(print_key)
716
717 CALL create_mo_section( &
718 print_key, "MO_OPENPMD", "openPMD", [1, 1, 1], "STRIDE 2 2 2", debug_print_level + 1, "write_openpmd")
719 CALL add_generic_openpmd_arguments(print_key)
720 CALL section_add_subsection(section, print_key)
721 CALL section_release(print_key)
722
723 CALL create_stm_section(print_key)
724 CALL section_add_subsection(section, print_key)
725 CALL section_release(print_key)
726
727 CALL create_wfn_mix_section(subsection)
728 CALL section_add_subsection(section, subsection)
729 CALL section_release(subsection)
730
731 CALL section_create(subsection, __location__, name="TREXIO", &
732 description="Write a TREXIO file to disk.", &
733 n_keywords=4, n_subsections=0, repeats=.false.)
734 CALL keyword_create(keyword, __location__, name="FILENAME", &
735 description="Body of Filename for the trexio file.", &
736 usage="FILENAME {name}", default_c_val="TREXIO", &
737 type_of_var=char_t)
738 CALL section_add_keyword(subsection, keyword)
739 CALL keyword_release(keyword)
740 CALL keyword_create(keyword, __location__, name="CARTESIAN", &
741 description="Store the MOs in the Cartesian basis instead of the default spherical basis.", &
742 default_l_val=.false., lone_keyword_l_val=.true.)
743 CALL section_add_keyword(subsection, keyword)
744 CALL keyword_release(keyword)
745 CALL keyword_create(keyword, __location__, name="FULL_KPOINT_GRID", &
746 description="For symmetry-reduced k-point SCF calculations, export MOs on the "// &
747 "full unreduced k-point grid instead of the irreducible grid.", &
748 usage="FULL_KPOINT_GRID <LOGICAL>", default_l_val=.false., &
749 lone_keyword_l_val=.true.)
750 CALL section_add_keyword(subsection, keyword)
751 CALL keyword_release(keyword)
752 CALL keyword_create(keyword, __location__, name="REUSE_SCF_MOS", &
753 description="When FULL_KPOINT_GRID is active, try to reconstruct the full-grid "// &
754 "MO coefficients from the symmetry-reduced SCF orbitals before falling back to "// &
755 "a full-grid diagonalization.", &
756 usage="REUSE_SCF_MOS T", default_l_val=.true.)
757 CALL section_add_keyword(subsection, keyword)
758 CALL keyword_release(keyword)
759 CALL section_add_subsection(section, subsection)
760 CALL section_release(subsection)
761
762 CALL section_create(subsection, __location__, name="CASINO", &
763 description="Write a CASINO gwfn.data file to disk.", &
764 n_keywords=5, n_subsections=0, repeats=.false.)
765 CALL keyword_create(keyword, __location__, name="FILENAME", &
766 description="Filename for the CASINO gwfn.data file.", &
767 usage="FILENAME {name}", default_c_val="gwfn.data", &
768 type_of_var=char_t)
769 CALL section_add_keyword(subsection, keyword)
770 CALL keyword_release(keyword)
771 CALL keyword_create(keyword, __location__, name="EPS_KPOINT_REAL", &
772 description="Tolerance for detecting Gamma/BZ-edge k-points with real orbitals.", &
773 usage="EPS_KPOINT_REAL 1.0E-10", default_r_val=1.0e-10_dp)
774 CALL section_add_keyword(subsection, keyword)
775 CALL keyword_release(keyword)
776 CALL keyword_create(keyword, __location__, name="FULL_KPOINT_GRID", &
777 description="For symmetry-reduced k-point SCF calculations, export orbitals on the "// &
778 "full unreduced k-point grid required by CASINO.", &
779 usage="FULL_KPOINT_GRID <LOGICAL>", default_l_val=.true., &
780 lone_keyword_l_val=.true.)
781 CALL section_add_keyword(subsection, keyword)
782 CALL keyword_release(keyword)
783 CALL keyword_create(keyword, __location__, name="REUSE_SCF_MOS", &
784 description="When FULL_KPOINT_GRID is active, try to reconstruct the full-grid "// &
785 "MO coefficients from the symmetry-reduced SCF orbitals before falling back to "// &
786 "a full-grid diagonalization.", &
787 usage="REUSE_SCF_MOS T", default_l_val=.true.)
788 CALL section_add_keyword(subsection, keyword)
789 CALL keyword_release(keyword)
790 CALL keyword_create(keyword, __location__, name="WRITE_PSEUDOPOTENTIALS", &
791 description="Write CASINO *_pp.data files for CP2K semilocal ECP potentials. "// &
792 "GTH pseudopotentials are marked in gwfn.data, but require externally supplied "// &
793 "CASINO pseudopotential files.", &
794 usage="WRITE_PSEUDOPOTENTIALS T", default_l_val=.true., &
795 lone_keyword_l_val=.true.)
796 CALL section_add_keyword(subsection, keyword)
797 CALL keyword_release(keyword)
798 CALL section_add_subsection(section, subsection)
799 CALL section_release(subsection)
800
801 CALL section_create(subsection, __location__, name="GAPW", &
802 description="Controls the printing of some gapw related information (debug).", &
803 n_keywords=0, n_subsections=1, repeats=.false.)
804 CALL cp_print_key_section_create(print_key, __location__, "projectors", &
805 description="If the printkey is activated controls if information on"// &
806 " the projectors is printed.", &
807 print_level=debug_print_level, filename="__STD_OUT__")
808 CALL section_add_subsection(subsection, print_key)
809 CALL section_release(print_key)
810 CALL cp_print_key_section_create(print_key, __location__, "rho0_information", &
811 description="If the printkey is activated controls if information on rho0 is printed.", &
812 print_level=debug_print_level, filename="__STD_OUT__", unit_str="angstrom")
813 CALL section_add_subsection(subsection, print_key)
814 CALL section_release(print_key)
815 CALL section_add_subsection(section, subsection)
816 CALL section_release(subsection)
817
818 CALL cp_print_key_section_create(print_key, __location__, "dft_control_parameters", &
819 description="Controls the printing of dft control parameters.", &
820 print_level=medium_print_level, filename="__STD_OUT__")
821 CALL section_add_subsection(section, print_key)
822 CALL section_release(print_key)
823
824 CALL cp_print_key_section_create(print_key, __location__, "KPOINTS", &
825 description="Controls the printing of kpoint information.", &
826 print_level=medium_print_level, filename="__STD_OUT__")
827 CALL section_add_subsection(section, print_key)
828 CALL section_release(print_key)
829
830 NULLIFY (subsection)
831 CALL create_bandstructure_section(subsection)
832 CALL section_add_subsection(section, subsection)
833 CALL section_release(subsection)
834
835 CALL cp_print_key_section_create(print_key, __location__, "OVERLAP_CONDITION", &
836 description="Controls the checking and printing of an estimate "// &
837 "of the overlap matrix condition number", &
838 print_level=debug_print_level, filename="__STD_OUT__")
839 CALL keyword_create(keyword, __location__, name="1-NORM", &
840 description="Calculate an estimate of the 1-norm condition number", &
841 default_l_val=.true., lone_keyword_l_val=.true.)
842 CALL section_add_keyword(print_key, keyword)
843 CALL keyword_release(keyword)
844 CALL keyword_create(keyword, __location__, name="DIAGONALIZATION", &
845 description="Calculate the 1- and 2-norm condition numbers using diagonalization", &
846 default_l_val=.false., lone_keyword_l_val=.true.)
847 CALL section_add_keyword(print_key, keyword)
848 CALL keyword_release(keyword)
849 CALL keyword_create(keyword, __location__, name="ARNOLDI", &
850 description="Calculate the 2-norm condition number using the Arnoldi code (may not be reliable)", &
851 default_l_val=.false., lone_keyword_l_val=.true.)
852 CALL section_add_keyword(print_key, keyword)
853 CALL keyword_release(keyword)
854 CALL section_add_subsection(section, print_key)
855 CALL section_release(print_key)
856
857 CALL create_e_density_section( &
858 print_key, &
859 "E_DENSITY_OPENPMD", &
860 "openPMD", &
861 [1, 1, 1], &
862 "STRIDE 1 1 1", &
864 CALL add_generic_openpmd_arguments(print_key)
865 CALL section_add_subsection(section, print_key)
866 CALL section_release(print_key)
867
868 CALL create_e_density_section(print_key, "E_DENSITY_CUBE", "cube", [2, 2, 2], "STRIDE 2 2 2", high_print_level)
869 CALL keyword_create(keyword, __location__, name="APPEND", &
870 description="append the cube files when they already exist", &
871 default_l_val=.false., lone_keyword_l_val=.true.)
872 CALL section_add_keyword(print_key, keyword)
873 CALL keyword_release(keyword)
874
875 CALL keyword_create(keyword, __location__, name="XRD_INTERFACE", &
876 description="It activates the print out of exponents and coefficients for the"// &
877 " Gaussian expansion of the core densities, based on atom calculations for each kind."// &
878 " The resulting core dansities are needed to compute the form factors."// &
879 " If GAPW the local densities are also given in terms of a Gaussian expansion,"// &
880 " by fitting the difference between local-fhard and local-soft density for each atom."// &
881 " In this case the keyword SOFT_DENSITY is enabled.", &
882 default_l_val=.false., lone_keyword_l_val=.true.)
883 CALL section_add_keyword(print_key, keyword)
884 CALL keyword_release(keyword)
885
886 CALL keyword_create(keyword, __location__, name="NGAUSS", &
887 description="Number of Gaussian functions used in the expansion of atomic (core) density", &
888 usage="NGAUSS 10", n_var=1, default_i_val=12, type_of_var=integer_t)
889 CALL section_add_keyword(print_key, keyword)
890 CALL keyword_release(keyword)
891
892 CALL section_add_subsection(section, print_key)
893 CALL section_release(print_key)
894
895 CALL cp_print_key_section_create(print_key, __location__, "tot_density_cube", &
896 description="Controls printing of cube files with "// &
897 "the total density (electrons+atomic core). Note that "// &
898 "the value of the total density is positive where the "// &
899 "electron density dominates and negative where the core is. "// &
900 "When GPW is enabled this will simply print the combined density "// &
901 "of the valence electrons and charge-balanced core. In GAPW the "// &
902 "electronic density (hard+soft plus a correction term) is printed "// &
903 "together with the charge-balanced core density to produce a complete "// &
904 "representation of the total density.", &
905 print_level=high_print_level, filename="")
906 CALL keyword_create(keyword, __location__, name="stride", &
907 description="The stride (X,Y,Z) used to write the cube file "// &
908 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
909 " 1 number valid for all components.", &
910 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
911 CALL section_add_keyword(print_key, keyword)
912 CALL keyword_release(keyword)
913
914 CALL keyword_create(keyword, __location__, name="APPEND", &
915 description="append the cube files when they already exist", &
916 default_l_val=.false., lone_keyword_l_val=.true.)
917 CALL section_add_keyword(print_key, keyword)
918 CALL keyword_release(keyword)
919
920 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
921 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
922 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
923 CALL section_add_keyword(print_key, keyword)
924 CALL keyword_release(keyword)
925
926 CALL section_add_subsection(section, print_key)
927 CALL section_release(print_key)
928
929 CALL cp_print_key_section_create(print_key, __location__, "v_hartree_cube", &
930 description="Controls the printing of a cube file with eletrostatic"// &
931 " potential generated by the total density (electrons+ions). It is"// &
932 " valid only for QS with GPW formalism."// &
933 " Note that by convention the potential has opposite sign than the expected physical one.", &
934 print_level=high_print_level, filename="")
935 CALL keyword_create(keyword, __location__, name="stride", &
936 description="The stride (X,Y,Z) used to write the cube file "// &
937 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
938 " 1 number valid for all components.", &
939 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
940 CALL section_add_keyword(print_key, keyword)
941 CALL keyword_release(keyword)
942 CALL keyword_create(keyword, __location__, name="APPEND", &
943 description="append the cube files when they already exist", &
944 default_l_val=.false., lone_keyword_l_val=.true.)
945 CALL section_add_keyword(print_key, keyword)
946 CALL keyword_release(keyword)
947 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
948 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
949 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
950 CALL section_add_keyword(print_key, keyword)
951 CALL keyword_release(keyword)
952
953 CALL section_add_subsection(section, print_key)
954 CALL section_release(print_key)
955
956 CALL cp_print_key_section_create(print_key, __location__, "external_potential_cube", &
957 description="Controls the printing of a cube file with external"// &
958 " potential from the DFT%EXTERNAL_POTENTIAL section only.", &
959 print_level=high_print_level, filename="")
960 CALL keyword_create(keyword, __location__, name="stride", &
961 description="The stride (X,Y,Z) used to write the cube file "// &
962 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
963 " 1 number valid for all components.", &
964 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
965 CALL section_add_keyword(print_key, keyword)
966 CALL keyword_release(keyword)
967 CALL keyword_create(keyword, __location__, name="APPEND", &
968 description="append the cube files when they already exist", &
969 default_l_val=.false., lone_keyword_l_val=.true.)
970 CALL section_add_keyword(print_key, keyword)
971 CALL keyword_release(keyword)
972 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
973 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
974 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
975 CALL section_add_keyword(print_key, keyword)
976 CALL keyword_release(keyword)
977 CALL section_add_subsection(section, print_key)
978 CALL section_release(print_key)
979
980 ! Output of BQB volumetric files
981 CALL cp_print_key_section_create(print_key, __location__, name="E_DENSITY_BQB", &
982 description="Controls the output of the electron density to the losslessly"// &
983 " compressed BQB file format, see [Brehm2018]"// &
984 " (via LibBQB see <https://brehm-research.de/bqb>)."// &
985 " Currently does not work with changing cell vector (NpT ensemble).", &
986 print_level=debug_print_level + 1, filename="", &
987 citations=[brehm2018])
988
989 CALL keyword_create(keyword, __location__, name="SKIP_FIRST", &
990 description="Skips the first step of a MD run (avoids duplicate step if restarted).", &
991 usage="SKIP_FIRST T", default_l_val=.false., lone_keyword_l_val=.true.)
992 CALL section_add_keyword(print_key, keyword)
993 CALL keyword_release(keyword)
994
995 CALL keyword_create(keyword, __location__, name="STORE_STEP_NUMBER", &
996 description="Stores the step number and simulation time in the comment line of each BQB"// &
997 " frame. Switch it off for binary compatibility with original CP2k CUBE files.", &
998 usage="STORE_STEP_NUMBER F", default_l_val=.true., lone_keyword_l_val=.true.)
999 CALL section_add_keyword(print_key, keyword)
1000 CALL keyword_release(keyword)
1001
1002 CALL keyword_create(keyword, __location__, name="CHECK", &
1003 description="Performs an on-the-fly decompression of each compressed BQB frame to check"// &
1004 " whether the volumetric data exactly matches, and aborts the run if not so.", &
1005 usage="CHECK T", default_l_val=.false., lone_keyword_l_val=.true.)
1006 CALL section_add_keyword(print_key, keyword)
1007 CALL keyword_release(keyword)
1008
1009 CALL keyword_create(keyword, __location__, name="OVERWRITE", &
1010 description="Specify this keyword to overwrite the output BQB file if"// &
1011 " it already exists. By default, the data is appended to an existing file.", &
1012 usage="OVERWRITE T", default_l_val=.false., lone_keyword_l_val=.true.)
1013 CALL section_add_keyword(print_key, keyword)
1014 CALL keyword_release(keyword)
1015
1016 CALL keyword_create(keyword, __location__, name="HISTORY", &
1017 description="Controls how many previous steps are taken into account for extrapolation in"// &
1018 " compression. Use a value of 1 to compress the frames independently.", &
1019 usage="HISTORY 10", n_var=1, default_i_val=10, type_of_var=integer_t)
1020 CALL section_add_keyword(print_key, keyword)
1021 CALL keyword_release(keyword)
1022
1023 CALL keyword_create(keyword, __location__, name="PARAMETER_KEY", &
1024 description="Allows to supply previously optimized compression parameters via a"// &
1025 " parameter key (alphanumeric character sequence starting with 'at')."// &
1026 " Just leave away the 'at' sign here, because CP2k will otherwise"// &
1027 " assume it is a variable name in the input", &
1028 usage="PARAMETER_KEY <KEY>", n_var=1, default_c_val="", type_of_var=char_t)
1029 CALL section_add_keyword(print_key, keyword)
1030 CALL keyword_release(keyword)
1031
1032 CALL keyword_create(keyword, __location__, name="OPTIMIZE", &
1033 description="Controls the time spent to optimize the parameters for compression efficiency.", &
1034 usage="OPTIMIZE {OFF,QUICK,NORMAL,PATIENT,EXHAUSTIVE}", repeats=.false., n_var=1, &
1035 default_i_val=bqb_opt_quick, &
1036 enum_c_vals=s2a("OFF", "QUICK", "NORMAL", "PATIENT", "EXHAUSTIVE"), &
1037 enum_desc=s2a("No optimization (use defaults)", "Quick optimization", &
1038 "Standard optimization", "Precise optimization", "Exhaustive optimization"), &
1040 CALL section_add_keyword(print_key, keyword)
1041 CALL keyword_release(keyword)
1042
1043 CALL section_add_subsection(section, print_key)
1044 CALL section_release(print_key)
1045
1046 ! Voronoi Integration via LibVori
1047 CALL create_print_voronoi_section(print_key)
1048 CALL section_add_subsection(section, print_key)
1049 CALL section_release(print_key)
1050
1051 ! cube files for data generated by the implicit (generalized) Poisson solver
1052 CALL create_implicit_psolver_section(subsection)
1053 CALL section_add_subsection(section, subsection)
1054 CALL section_release(subsection)
1055
1056 ! ZMP adding the print section for the v_xc cube
1057 CALL cp_print_key_section_create(print_key, __location__, "v_xc_cube", &
1058 description="Controls the printing of a cube file with xc"// &
1059 " potential generated by the ZMP method (for the moment). It is"// &
1060 " valid only for QS with GPW formalism .", &
1061 print_level=high_print_level, filename="")
1062 CALL keyword_create(keyword, __location__, name="stride", &
1063 description="The stride (X,Y,Z) used to write the cube file "// &
1064 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1065 " 1 number valid for all components.", &
1066 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1067 CALL section_add_keyword(print_key, keyword)
1068 CALL keyword_release(keyword)
1069 CALL keyword_create(keyword, __location__, name="APPEND", &
1070 description="append the cube files when they already exist", &
1071 default_l_val=.false., lone_keyword_l_val=.true.)
1072 CALL section_add_keyword(print_key, keyword)
1073 CALL keyword_release(keyword)
1074
1075 CALL section_add_subsection(section, print_key)
1076 CALL section_release(print_key)
1077
1078 CALL cp_print_key_section_create(print_key, __location__, "efield_cube", &
1079 description="Controls the printing of cube files with electric"// &
1080 " field generated by the total density (electrons+ions). It is"// &
1081 " valid only for QS with GPW formalism.", &
1082 print_level=high_print_level, filename="")
1083 CALL keyword_create(keyword, __location__, name="stride", &
1084 description="The stride (X,Y,Z) used to write the cube file "// &
1085 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1086 " 1 number valid for all components.", &
1087 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1088 CALL section_add_keyword(print_key, keyword)
1089 CALL keyword_release(keyword)
1090 CALL keyword_create(keyword, __location__, name="APPEND", &
1091 description="append the cube files when they already exist", &
1092 default_l_val=.false., lone_keyword_l_val=.true.)
1093 CALL section_add_keyword(print_key, keyword)
1094 CALL keyword_release(keyword)
1095 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
1096 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1097 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1098 CALL section_add_keyword(print_key, keyword)
1099 CALL keyword_release(keyword)
1100
1101 CALL section_add_subsection(section, print_key)
1102 CALL section_release(print_key)
1103
1104 CALL create_elf_print_section(print_key, "ELF_CUBE", &
1105 "cube", &
1106 [2, 2, 2], "STRIDE 2 2 2", high_print_level, "")
1107 CALL keyword_create(keyword, __location__, name="APPEND", &
1108 description="append the cube files when they already exist", &
1109 default_l_val=.false., lone_keyword_l_val=.true.)
1110 CALL section_add_keyword(print_key, keyword)
1111 CALL keyword_release(keyword)
1112
1113 CALL section_add_subsection(section, print_key)
1114 CALL section_release(print_key)
1115
1116 CALL create_elf_print_section(print_key, "ELF_OPENPMD", &
1117 "openPMD", &
1118 [1, 1, 1], "STRIDE 1 1 1", debug_print_level + 1, "")
1119 CALL add_generic_openpmd_arguments(print_key)
1120 CALL section_add_subsection(section, print_key)
1121 CALL section_release(print_key)
1122
1123 CALL cp_print_key_section_create(print_key, __location__, "LOCAL_ENERGY_CUBE", &
1124 description="Controls the printing of cube files with the local"// &
1125 " energy. It is valid only for QS with GPW/GAPW formalism."// &
1126 " Meta and hybrid functionals are not possible. For GAPW/GAPW_XC"// &
1127 " and ADMM-GAPW this regular-grid cube keeps the existing soft-grid"// &
1128 " semantics; atom-centered hard one-center terms are not projected"// &
1129 " onto the cube grid.", &
1130 print_level=debug_print_level, filename="")
1131 CALL keyword_create(keyword, __location__, name="stride", &
1132 description="The stride (X,Y,Z) used to write the cube file "// &
1133 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1134 " 1 number valid for all components.", &
1135 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1136 CALL section_add_keyword(print_key, keyword)
1137 CALL keyword_release(keyword)
1138 CALL keyword_create(keyword, __location__, name="APPEND", &
1139 description="append the cube files when they already exist", &
1140 default_l_val=.false., lone_keyword_l_val=.true.)
1141 CALL section_add_keyword(print_key, keyword)
1142 CALL keyword_release(keyword)
1143 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
1144 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1145 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1146 CALL section_add_keyword(print_key, keyword)
1147 CALL keyword_release(keyword)
1148
1149 CALL section_add_subsection(section, print_key)
1150 CALL section_release(print_key)
1151
1152 CALL cp_print_key_section_create(print_key, __location__, "LOCAL_STRESS_CUBE", &
1153 description="Controls the printing of cube files with the local"// &
1154 " stress. It is valid only for QS with GPW/GAPW formalism."// &
1155 " Meta and hybrid functionals are not possible. For GAPW/GAPW_XC"// &
1156 " and ADMM-GAPW this regular-grid cube keeps the existing soft-grid"// &
1157 " semantics; atom-centered hard one-center terms are not projected"// &
1158 " onto the cube grid.", &
1159 print_level=debug_print_level, filename="")
1160 CALL keyword_create(keyword, __location__, name="stride", &
1161 description="The stride (X,Y,Z) used to write the cube file "// &
1162 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1163 " 1 number valid for all components.", &
1164 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1165 CALL section_add_keyword(print_key, keyword)
1166 CALL keyword_release(keyword)
1167 CALL keyword_create(keyword, __location__, name="APPEND", &
1168 description="append the cube files when they already exist", &
1169 default_l_val=.false., lone_keyword_l_val=.true.)
1170 CALL section_add_keyword(print_key, keyword)
1171 CALL keyword_release(keyword)
1172 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
1173 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1174 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1175 CALL section_add_keyword(print_key, keyword)
1176 CALL keyword_release(keyword)
1177
1178 CALL section_add_subsection(section, print_key)
1179 CALL section_release(print_key)
1180
1181 CALL cp_print_key_section_create(print_key, __location__, "DOS", &
1182 description="Print density of states (DOS). "// &
1183 "Projected DOS output can be enabled with PDOS.", &
1184 print_level=debug_print_level, common_iter_levels=1, filename="")
1185
1186 CALL add_dos_keywords(print_key, xas_mode=.false.)
1187
1188 CALL keyword_create(keyword, __location__, name="MP_GRID", &
1189 description="Specify a Monkhorst-Pack grid with which to compute the density of states. "// &
1190 "Works only for a k-point calculation", &
1191 usage="MP_GRID {integer} {integer} {integer}", default_i_vals=[-1], &
1192 n_var=3, type_of_var=integer_t)
1193 CALL section_add_keyword(print_key, keyword)
1194 CALL keyword_release(keyword)
1195
1196 CALL section_add_subsection(section, print_key)
1197 CALL section_release(print_key)
1198
1199 CALL create_wannier_section(print_key)
1200 CALL section_add_subsection(section, print_key)
1201 CALL section_release(print_key)
1202
1203 !Printing of Moments
1204 CALL create_dipoles_section(print_key, "MOMENTS", high_print_level)
1205 CALL keyword_create( &
1206 keyword, __location__, &
1207 name="MAX_MOMENT", &
1208 description="Maximum moment to be calculated. Values higher than 1 not implemented under periodic boundaries.", &
1209 usage="MAX_MOMENT {integer}", &
1210 repeats=.false., &
1211 n_var=1, &
1212 type_of_var=integer_t, &
1213 default_i_val=1)
1214 CALL section_add_keyword(print_key, keyword)
1215 CALL keyword_release(keyword)
1216 CALL keyword_create(keyword, __location__, &
1217 name="MAGNETIC", &
1218 description="Calculate also magnetic moments, only implemented without periodic boundaries", &
1219 usage="MAGNETIC yes", &
1220 repeats=.false., &
1221 n_var=1, &
1222 default_l_val=.false., &
1223 lone_keyword_l_val=.true.)
1224 CALL section_add_keyword(print_key, keyword)
1225 CALL keyword_release(keyword)
1226 CALL keyword_create(keyword, __location__, &
1227 name="VEL_REPRS", &
1228 description="Calculate expectation values of the el. multipole moments in their velocity "// &
1229 "representation during RTP. Implemented up to el. quadrupole moment.", &
1230 usage="VEL_REPRS yes", &
1231 repeats=.false., &
1232 n_var=1, &
1233 default_l_val=.false., &
1234 lone_keyword_l_val=.true.)
1235 CALL section_add_keyword(print_key, keyword)
1236 CALL keyword_release(keyword)
1237 CALL keyword_create(keyword, __location__, &
1238 name="COM_NL", &
1239 description="Include non local commutator for velocity representations. "// &
1240 "Necessary for origin independent results.", &
1241 usage="COM_NL yes", &
1242 repeats=.false., &
1243 n_var=1, &
1244 default_l_val=.false., &
1245 lone_keyword_l_val=.true.)
1246 CALL section_add_keyword(print_key, keyword)
1247 CALL keyword_release(keyword)
1248 CALL keyword_create(keyword, __location__, &
1249 name="SECOND_REFERENCE_POINT", &
1250 description="Use second reference point", &
1251 usage="SECOND_REFERENCE_POINT .TRUE.", &
1252 repeats=.false., &
1253 n_var=1, &
1254 default_l_val=.false., &
1255 lone_keyword_l_val=.true.)
1256 CALL section_add_keyword(print_key, keyword)
1257 CALL keyword_release(keyword)
1258 CALL keyword_create(keyword, __location__, name="REFERENCE_2", &
1259 variants=s2a("REF_2"), &
1260 description="Define a second reference point for the calculation of the electrostatic moment.", &
1261 usage="REFERENCE_2 COM", &
1262 enum_c_vals=s2a("COM", "COAC", "USER_DEFINED", "ZERO"), &
1263 enum_desc=s2a("Use Center of Mass", &
1264 "Use Center of Atomic Charges", &
1265 "Use User Defined Point (Keyword:REF_POINT)", &
1266 "Use Origin of Coordinate System"), &
1267 enum_i_vals=[use_mom_ref_com, &
1271 default_i_val=use_mom_ref_zero)
1272 CALL section_add_keyword(print_key, keyword)
1273 CALL keyword_release(keyword)
1274 CALL keyword_create(keyword, __location__, name="REFERENCE_POINT_2", &
1275 variants=s2a("REF_POINT_2"), &
1276 description="Fixed second reference point for the calculations of the electrostatic moment.", &
1277 usage="REFERENCE_POINT_2 x y z", &
1278 repeats=.false., &
1279 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1280 type_of_var=real_t, &
1281 unit_str='bohr')
1282 CALL section_add_keyword(print_key, keyword)
1283 CALL keyword_release(keyword)
1284 CALL keyword_create(keyword, __location__, name="MAX_NMO", &
1285 description="Maximum number of molecular orbitals closest to the Fermi "// &
1286 "level for which dipole matrix elements and Berry curvatures are printed "// &
1287 "per k-point. 0 for all orbitals. Ignored if not a KPOINT calculation.", &
1288 usage="MAX_NMO {integer}", &
1289 repeats=.false., &
1290 n_var=1, default_i_val=10, &
1291 type_of_var=integer_t)
1292 CALL section_add_keyword(print_key, keyword)
1293 CALL keyword_release(keyword)
1294 CALL create_kpoint_set_section(subsection)
1295 CALL section_add_subsection(print_key, subsection)
1296 CALL section_release(subsection)
1297 CALL create_kpoints_section(subsection)
1298 CALL section_add_subsection(print_key, subsection)
1299 CALL section_release(subsection)
1300 CALL keyword_create(keyword, __location__, name="KG", &
1301 description="Print the electronic moments separately for KG subsystems", &
1302 usage="KG .TRUE.", &
1303 repeats=.false., &
1304 n_var=1, &
1305 default_l_val=.false., &
1306 lone_keyword_l_val=.true.)
1307 CALL section_add_keyword(print_key, keyword)
1308 CALL keyword_release(keyword)
1309 CALL section_add_subsection(section, print_key)
1310 CALL section_release(print_key)
1311
1312 ! Mulliken population analysis
1313 CALL cp_print_key_section_create(print_key, __location__, "MULLIKEN", &
1314 description="Controls the printing of the Mulliken (spin) population analysis", &
1315 print_level=medium_print_level, filename="__STD_OUT__", &
1316 common_iter_levels=1)
1317 CALL keyword_create( &
1318 keyword, __location__, &
1319 name="PRINT_GOP", &
1320 description="Print the gross orbital populations (GOP) in addition to the gross atomic populations (GAP) "// &
1321 "and net charges", &
1322 usage="PRINT_GOP yes", &
1323 repeats=.false., &
1324 n_var=1, &
1325 default_l_val=.false., &
1326 lone_keyword_l_val=.true.)
1327 CALL section_add_keyword(print_key, keyword)
1328 CALL keyword_release(keyword)
1329 CALL keyword_create( &
1330 keyword, __location__, &
1331 name="PRINT_ALL", &
1332 description="Print all information including the full net AO and overlap population matrix", &
1333 usage="PRINT_ALL yes", &
1334 repeats=.false., &
1335 n_var=1, &
1336 default_l_val=.false., &
1337 lone_keyword_l_val=.true.)
1338 CALL section_add_keyword(print_key, keyword)
1339 CALL keyword_release(keyword)
1340 CALL section_add_subsection(section, print_key)
1341 CALL section_release(print_key)
1342
1343 ! Lowdin population analysis (fairly expensive to compute, so only at high)
1344 CALL cp_print_key_section_create(print_key, __location__, "LOWDIN", &
1345 description="Controls the printing of the Lowdin (spin) population analysis", &
1346 print_level=high_print_level, filename="__STD_OUT__", &
1347 common_iter_levels=1)
1348 CALL keyword_create( &
1349 keyword, __location__, &
1350 name="PRINT_GOP", &
1351 description="Print the orbital populations in addition to the atomic populations and net charges", &
1352 usage="PRINT_GOP yes", &
1353 repeats=.false., &
1354 n_var=1, &
1355 default_l_val=.false., &
1356 lone_keyword_l_val=.true.)
1357 CALL section_add_keyword(print_key, keyword)
1358 CALL keyword_release(keyword)
1359 CALL keyword_create( &
1360 keyword, __location__, &
1361 name="PRINT_ALL", &
1362 description="Print all information including the full symmetrically orthogonalised density matrix", &
1363 usage="PRINT_ALL yes", &
1364 repeats=.false., &
1365 n_var=1, &
1366 default_l_val=.false., &
1367 lone_keyword_l_val=.true.)
1368 CALL section_add_keyword(print_key, keyword)
1369 CALL keyword_release(keyword)
1370 CALL section_add_subsection(section, print_key)
1371 CALL section_release(print_key)
1372
1373 ! Hirshfeld population analysis
1374 CALL cp_print_key_section_create(print_key, __location__, "HIRSHFELD", &
1375 description="Controls the printing of the Hirshfeld (spin) population analysis", &
1376 print_level=medium_print_level, filename="__STD_OUT__", &
1377 common_iter_levels=1)
1378 CALL keyword_create(keyword, __location__, name="SELF_CONSISTENT", &
1379 description="Calculate charges from the Hirscheld-I (self_consistent) method."// &
1380 " This scales only the full shape function, not the added charge as in the original scheme.", &
1381 usage="SELF_CONSISTENT yes", repeats=.false., n_var=1, &
1382 default_l_val=.false., lone_keyword_l_val=.true.)
1383 CALL section_add_keyword(print_key, keyword)
1384 CALL keyword_release(keyword)
1385 CALL keyword_create(keyword, __location__, name="SHAPE_FUNCTION", &
1386 description="Type of shape function used for Hirshfeld partitioning.", &
1387 usage="SHAPE_FUNCTION {Gaussian,Density}", repeats=.false., n_var=1, &
1388 default_i_val=shape_function_gaussian, &
1389 enum_c_vals=s2a("GAUSSIAN", "DENSITY"), &
1390 enum_desc=s2a("Single Gaussian with Colvalent radius", &
1391 "Atomic density expanded in multiple Gaussians"), &
1393 CALL section_add_keyword(print_key, keyword)
1394 CALL keyword_release(keyword)
1395 CALL keyword_create(keyword, __location__, name="REFERENCE_CHARGE", &
1396 description="Charge of atomic partitioning function for Hirshfeld method.", &
1397 usage="REFERENCE_CHARGE {Atomic,Mulliken}", repeats=.false., n_var=1, &
1398 default_i_val=ref_charge_atomic, &
1399 enum_c_vals=s2a("ATOMIC", "MULLIKEN"), &
1400 enum_desc=s2a("Use atomic core charges", "Calculate Mulliken charges"), &
1402 CALL section_add_keyword(print_key, keyword)
1403 CALL keyword_release(keyword)
1404 CALL keyword_create(keyword, __location__, name="USER_RADIUS", &
1405 description="Use user defined radii to generate Gaussians."// &
1406 " These radii are defined by the keyword ATOMIC_RADII", &
1407 usage="USER_RADIUS yes", repeats=.false., n_var=1, &
1408 default_l_val=.false., lone_keyword_l_val=.true.)
1409 CALL section_add_keyword(print_key, keyword)
1410 CALL keyword_release(keyword)
1411 CALL keyword_create(keyword, __location__, name="ATOMIC_RADII", &
1412 description="Defines custom radii to setup the spherical Gaussians.", &
1413 usage="ATOMIC_RADII {real} {real} {real}", repeats=.false., &
1414 unit_str="angstrom", &
1415 type_of_var=real_t, n_var=-1)
1416 CALL section_add_keyword(print_key, keyword)
1417 CALL keyword_release(keyword)
1418 CALL section_add_subsection(section, print_key)
1419 CALL section_release(print_key)
1420
1421 ! Print EEQ Charges
1422 CALL cp_print_key_section_create(print_key, __location__, "EEQ_CHARGES", &
1423 description="Controls the printing of the EEQ charges", &
1424 print_level=debug_print_level, filename="__STD_OUT__", &
1425 common_iter_levels=1, &
1427 CALL section_add_subsection(section, print_key)
1428 CALL section_release(print_key)
1429
1430 ! MAO (modified atomic orbital) analysis
1431 CALL cp_print_key_section_create(print_key, __location__, "MAO_ANALYSIS", &
1432 description="Controls the printing of the MAO (modified atomic orbital) analysis", &
1433 print_level=debug_print_level, filename="__STD_OUT__", &
1434 common_iter_levels=1, &
1435 citations=[heinzmann1976, ehrhardt1985])
1436 CALL keyword_create(keyword, __location__, name="EPS_FILTER", &
1437 description="Threshold for matrix elements in MAO determination.", &
1438 usage="EPS_FILTER reps", repeats=.false., n_var=1, &
1439 default_r_val=1.e-8_dp, type_of_var=real_t)
1440 CALL section_add_keyword(print_key, keyword)
1441 CALL keyword_release(keyword)
1442 CALL keyword_create(keyword, __location__, name="REFERENCE_BASIS", &
1443 description="Basis set used to construct MAO's.", &
1444 usage="REFERENCE_BASIS {ORBITAL,PRIMITIVE,EXTERNAL}", repeats=.false., n_var=1, &
1445 default_i_val=mao_basis_orb, &
1446 enum_c_vals=s2a("ORBITAL", "PRIMITIVE", "EXTERNAL"), &
1447 enum_desc=s2a("Use standard orbital basis set", "Construct basis from primitives of the orbital basis", &
1448 "Read external basis (MAO)"), &
1450 CALL section_add_keyword(print_key, keyword)
1451 CALL keyword_release(keyword)
1452 CALL keyword_create(keyword, __location__, name="PRINT_BASIS", &
1453 description="Print out MAO reference basis.", &
1454 usage="PRINT_BASIS {logical}", repeats=.false., n_var=1, &
1455 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1456 CALL section_add_keyword(print_key, keyword)
1457 CALL keyword_release(keyword)
1458 CALL keyword_create(keyword, __location__, name="PRINT_PAO", &
1459 description="Print out MAO in PAO format to be used for optimization or learning.", &
1460 usage="PRINT_PAO {logical}", repeats=.false., n_var=1, &
1461 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1462 CALL section_add_keyword(print_key, keyword)
1463 CALL keyword_release(keyword)
1464 CALL keyword_create(keyword, __location__, name="EPS_GRAD", &
1465 description="Threshold for gradient in MAO optimization.", &
1466 usage="EPS_GRAD reps", repeats=.false., n_var=1, &
1467 default_r_val=1.e-4_dp, type_of_var=real_t)
1468 CALL section_add_keyword(print_key, keyword)
1469 CALL keyword_release(keyword)
1470 CALL keyword_create(keyword, __location__, name="EPS_FUNCTION", &
1471 description="Threshold for electron defect in MAO optimization.", &
1472 usage="EPS_FUNCTION feps", repeats=.false., n_var=1, &
1473 default_r_val=1.e-3_dp, type_of_var=real_t)
1474 CALL section_add_keyword(print_key, keyword)
1475 CALL keyword_release(keyword)
1476 CALL keyword_create(keyword, __location__, name="MAX_ITER", &
1477 description="Maximum allowed iterations for MAO optimization.", &
1478 usage="MAX_ITER iter", repeats=.false., n_var=1, &
1479 default_i_val=0, type_of_var=integer_t)
1480 CALL section_add_keyword(print_key, keyword)
1481 CALL keyword_release(keyword)
1482 CALL keyword_create(keyword, __location__, name="NEGLECT_ABC", &
1483 description="Neglect 3 atom terms in MAO analysis.", &
1484 usage="NEGLECT_ABC {logical}", repeats=.false., n_var=1, &
1485 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=logical_t)
1486 CALL section_add_keyword(print_key, keyword)
1487 CALL keyword_release(keyword)
1488 CALL keyword_create(keyword, __location__, name="AB_THRESHOLD", &
1489 description="Threshold for printing of AB shared electron numbers.", &
1490 usage="AB_THRESHOLD thr", repeats=.false., n_var=1, &
1491 default_r_val=1.e-2_dp, type_of_var=real_t)
1492 CALL section_add_keyword(print_key, keyword)
1493 CALL keyword_release(keyword)
1494 CALL keyword_create(keyword, __location__, name="ABC_THRESHOLD", &
1495 description="Threshold for printing of ABC shared electron numbers.", &
1496 usage="ABC_THRESHOLD thr", repeats=.false., n_var=1, &
1497 default_r_val=1.e-5_dp, type_of_var=real_t)
1498 CALL section_add_keyword(print_key, keyword)
1499 CALL keyword_release(keyword)
1500 CALL keyword_create(keyword, __location__, name="ANALYZE_UNASSIGNED_CHARGE", &
1501 description="Calculate atomic contributions to the unassigned charge.", &
1502 usage="ANALYZE_UNASSIGNED_CHARGE {logical}", repeats=.false., n_var=1, &
1503 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1504 CALL section_add_keyword(print_key, keyword)
1505 CALL keyword_release(keyword)
1506 CALL section_add_subsection(section, print_key)
1507 CALL section_release(print_key)
1508
1509 !Minimal localized basis analysis
1510 CALL cp_print_key_section_create(print_key, __location__, "MINBAS_ANALYSIS", &
1511 description="Controls the printing of the minimal localized basis analysis", &
1512 print_level=debug_print_level, filename="__STD_OUT__", &
1513 common_iter_levels=1, &
1514 citations=[lu2004])
1515 CALL keyword_create(keyword, __location__, name="EPS_FILTER", &
1516 description="Threshold for matrix elements in basis determination.", &
1517 usage="EPS_FILTER reps", repeats=.false., n_var=1, &
1518 default_r_val=1.e-8_dp, type_of_var=real_t)
1519 CALL section_add_keyword(print_key, keyword)
1520 CALL keyword_release(keyword)
1521 CALL keyword_create(keyword, __location__, name="FULL_ORTHOGONALIZATION", &
1522 description="Orthogonalize the localized minimal basis.", &
1523 usage="FULL_ORTHOGONALIZATION {logical}", repeats=.false., n_var=1, &
1524 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1525 CALL section_add_keyword(print_key, keyword)
1526 CALL keyword_release(keyword)
1527 CALL keyword_create(keyword, __location__, name="BOND_ORDER", &
1528 description="Calculate Mayer Bond Orders.", &
1529 usage="BOND_ORDER {logical}", repeats=.false., n_var=1, &
1530 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1531 CALL section_add_keyword(print_key, keyword)
1532 CALL keyword_release(keyword)
1533
1534 NULLIFY (sub_print_key)
1535 CALL cp_print_key_section_create(sub_print_key, __location__, "MINBAS_CUBE", &
1536 description="Write the minimal basis on Cube files.", &
1537 print_level=debug_print_level + 1, add_last=add_last_numeric, filename="MINBAS")
1538 CALL keyword_create(keyword, __location__, name="STRIDE", &
1539 description="The stride (X,Y,Z) used to write the cube file "// &
1540 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1541 " 1 number valid for all components.", &
1542 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1543 CALL section_add_keyword(sub_print_key, keyword)
1544 CALL keyword_release(keyword)
1545 CALL keyword_create(keyword, __location__, name="ATOM_LIST", &
1546 description="Indexes of the atoms minimal basis to be printed as cube files "// &
1547 "This keyword can be repeated several times "// &
1548 "(useful if you have to specify many indexes).", &
1549 usage="ATOM_LIST 1 2", &
1550 n_var=-1, type_of_var=integer_t, repeats=.true.)
1551 CALL section_add_keyword(sub_print_key, keyword)
1552 CALL keyword_release(keyword)
1553 CALL section_add_subsection(print_key, sub_print_key)
1554 CALL section_release(sub_print_key)
1555
1556 NULLIFY (sub_print_key)
1557 CALL cp_print_key_section_create(sub_print_key, __location__, "MINBAS_MOLDEN", &
1558 description="Write the minimal basis in Molden file format, for visualisation.", &
1559 print_level=debug_print_level + 1, add_last=add_last_numeric, filename="MINBAS")
1560 CALL keyword_create(keyword, __location__, name="UNIT", &
1561 description="Unit for coordinates and cell in the MOLDEN file.", &
1562 usage="UNIT ANGSTROM", &
1563 enum_c_vals=s2a("BOHR", "ANGSTROM"), &
1564 enum_desc=s2a("Write in Bohr (AU)", "Write in Angstrom"), &
1565 enum_i_vals=[1, 2], &
1566 default_i_val=1)
1567 CALL section_add_keyword(sub_print_key, keyword)
1568 CALL keyword_release(keyword)
1569 CALL keyword_create(keyword, __location__, name="WRITE_CELL", &
1570 description="Controls whether the [Cell] block is written to the MOLDEN file.", &
1571 usage="WRITE_CELL T", &
1572 default_l_val=.false., lone_keyword_l_val=.true.)
1573 CALL section_add_keyword(sub_print_key, keyword)
1574 CALL keyword_release(keyword)
1575 CALL keyword_create(keyword, __location__, name="WRITE_PSEUDO", &
1576 description="Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1577 usage="WRITE_PSEUDO T", &
1578 default_l_val=.false., lone_keyword_l_val=.true.)
1579 CALL section_add_keyword(sub_print_key, keyword)
1580 CALL keyword_release(keyword)
1581 CALL keyword_create(keyword, __location__, name="MARK_GHOST", &
1582 description="Controls whether ghost atoms are marked in the [Atoms] block by "// &
1583 "setting their atomic number to zero.", &
1584 usage="MARK_GHOST T", &
1585 default_l_val=.false., lone_keyword_l_val=.true.)
1586 CALL section_add_keyword(sub_print_key, keyword)
1587 CALL keyword_release(keyword)
1588 CALL keyword_create(keyword, __location__, name="NDIGITS", &
1589 description="Specifies the number of significant digits retained. 3 is OK for visualization.", &
1590 usage="NDIGITS {int}", &
1591 default_i_val=3)
1592 CALL section_add_keyword(sub_print_key, keyword)
1593 CALL keyword_release(keyword)
1594 CALL keyword_create(keyword, __location__, name="GTO_KIND", &
1595 description="Representation of Gaussian-type orbitals", &
1596 default_i_val=gto_spherical, &
1597 enum_c_vals=s2a("CARTESIAN", "SPHERICAL"), &
1598 enum_desc=s2a( &
1599 "Cartesian Gaussian orbitals. Use with caution", &
1600 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1601 enum_i_vals=[gto_cartesian, gto_spherical])
1602 CALL section_add_keyword(sub_print_key, keyword)
1603 CALL keyword_release(keyword)
1604 CALL section_add_subsection(print_key, sub_print_key)
1605 CALL section_release(sub_print_key)
1606
1607 CALL section_add_subsection(section, print_key)
1608 CALL section_release(print_key)
1609
1610 !Energy Decomposition Analysis
1611 CALL cp_print_key_section_create(print_key, __location__, "ENERGY_DECOMPOSITION_ANALYSIS", &
1612 description="Controls energy decomposition analysis", &
1613 print_level=debug_print_level, filename="__STD_OUT__", &
1614 common_iter_levels=1, &
1615 citations=[eriksen2020])
1616 CALL keyword_create(keyword, __location__, name="REFERENCE_ORB_CANONICAL", &
1617 description="Use reference orbitals in canonical form.", &
1618 usage="REFERENCE_ORB_CANONICAL {logical}", repeats=.false., n_var=1, &
1619 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=logical_t)
1620 CALL section_add_keyword(print_key, keyword)
1621 CALL keyword_release(keyword)
1622 CALL keyword_create(keyword, __location__, name="SKIP_LOCALIZATION", &
1623 description="Don't localize the MOs.", &
1624 usage="SKIP_LOCALIZATION {logical}", repeats=.false., n_var=1, &
1625 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1626 CALL section_add_keyword(print_key, keyword)
1627 CALL keyword_release(keyword)
1628 CALL keyword_create(keyword, __location__, name="DETAILED_ENERGY", &
1629 description="Calculate detailed atomic decomposition energies.", &
1630 usage="DETAILED_ENERGY {logical}", repeats=.false., n_var=1, &
1631 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=logical_t)
1632 CALL section_add_keyword(print_key, keyword)
1633 CALL keyword_release(keyword)
1634 CALL keyword_create(keyword, __location__, name="EWALD_ALPHA_PARAMETER", &
1635 description="Calculate Energy Decomposition for a specific alpha value. "// &
1636 "alpha = 1/(2*rc**2), see GTH pseudopotentials.", &
1637 usage="EWALD_ALPHA_PARAMETER alpha", repeats=.false., n_var=1, &
1638 default_r_val=0.0_dp, type_of_var=real_t)
1639 CALL section_add_keyword(print_key, keyword)
1640 CALL keyword_release(keyword)
1641
1642 CALL section_add_subsection(section, print_key)
1643 CALL section_release(print_key)
1644
1645 ! IAO (Intrinsic atomic orbital) analysis
1646 CALL cp_print_key_section_create(print_key, __location__, "IAO_ANALYSIS", &
1647 description="Controls the printing of the IAO (intrinsic atomic orbital) analysis", &
1648 print_level=debug_print_level, filename="__STD_OUT__", &
1649 common_iter_levels=1, &
1650 citations=[knizia2013])
1651 CALL keyword_create(keyword, __location__, name="EPS_SVD", &
1652 description="Threshold for matrix inversion eigenvalues.", &
1653 usage="EPS_SVD reps", repeats=.false., n_var=1, &
1654 default_r_val=0.0_dp, type_of_var=real_t)
1655 CALL section_add_keyword(print_key, keyword)
1656 CALL keyword_release(keyword)
1657 CALL keyword_create(keyword, __location__, name="EPS_OCC", &
1658 description="Threshold in occupation for vectors included.", &
1659 usage="EPS_OCC reps", repeats=.false., n_var=1, &
1660 default_r_val=0.0_dp, type_of_var=real_t)
1661 CALL section_add_keyword(print_key, keyword)
1662 CALL keyword_release(keyword)
1663 CALL keyword_create(keyword, __location__, name="ATOMIC_CHARGES", &
1664 description="Calculate atomic charges from IAO.", &
1665 usage="ATOMIC_CHARGES {logical}", repeats=.false., n_var=1, &
1666 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=logical_t)
1667 CALL section_add_keyword(print_key, keyword)
1668 CALL keyword_release(keyword)
1669 ! IAO_MOLDEN
1670 NULLIFY (sub_print_key)
1671 CALL cp_print_key_section_create(sub_print_key, __location__, "IAO_MOLDEN", &
1672 description="Write the IAO basis in Molden file format, for visualisation.", &
1673 print_level=debug_print_level + 1, add_last=add_last_numeric, filename="IAOBAS")
1674 CALL keyword_create(keyword, __location__, name="UNIT", &
1675 description="Unit for coordinates and cell in the MOLDEN file.", &
1676 usage="UNIT ANGSTROM", &
1677 enum_c_vals=s2a("BOHR", "ANGSTROM"), &
1678 enum_desc=s2a("Write in Bohr (AU)", "Write in Angstrom"), &
1679 enum_i_vals=[1, 2], &
1680 default_i_val=1)
1681 CALL section_add_keyword(sub_print_key, keyword)
1682 CALL keyword_release(keyword)
1683 CALL keyword_create(keyword, __location__, name="WRITE_CELL", &
1684 description="Controls whether the [Cell] block is written to the MOLDEN file.", &
1685 usage="WRITE_CELL T", &
1686 default_l_val=.false., lone_keyword_l_val=.true.)
1687 CALL section_add_keyword(sub_print_key, keyword)
1688 CALL keyword_release(keyword)
1689 CALL keyword_create(keyword, __location__, name="WRITE_PSEUDO", &
1690 description="Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1691 usage="WRITE_PSEUDO T", &
1692 default_l_val=.false., lone_keyword_l_val=.true.)
1693 CALL section_add_keyword(sub_print_key, keyword)
1694 CALL keyword_release(keyword)
1695 CALL keyword_create(keyword, __location__, name="MARK_GHOST", &
1696 description="Controls whether ghost atoms are marked in the [Atoms] block by "// &
1697 "setting their atomic number to zero.", &
1698 usage="MARK_GHOST T", &
1699 default_l_val=.false., lone_keyword_l_val=.true.)
1700 CALL section_add_keyword(sub_print_key, keyword)
1701 CALL keyword_release(keyword)
1702 CALL keyword_create(keyword, __location__, name="NDIGITS", &
1703 description="Specifies the number of significant digits retained. 3 is OK for visualization.", &
1704 usage="NDIGITS {int}", &
1705 default_i_val=3)
1706 CALL section_add_keyword(sub_print_key, keyword)
1707 CALL keyword_release(keyword)
1708 CALL keyword_create(keyword, __location__, name="GTO_KIND", &
1709 description="Representation of Gaussian-type orbitals", &
1710 default_i_val=gto_spherical, &
1711 enum_c_vals=s2a("CARTESIAN", "SPHERICAL"), &
1712 enum_desc=s2a( &
1713 "Cartesian Gaussian orbitals. Use with caution", &
1714 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1715 enum_i_vals=[gto_cartesian, gto_spherical])
1716 CALL section_add_keyword(sub_print_key, keyword)
1717 CALL keyword_release(keyword)
1718 CALL section_add_subsection(print_key, sub_print_key)
1719 CALL section_release(sub_print_key)
1720 ! IAO_CUBES
1721 NULLIFY (sub_print_key)
1722 CALL cp_print_key_section_create(sub_print_key, __location__, "IAO_CUBES", &
1723 description="Controls the printing of the IAO basis "// &
1724 "as *.cube files.", &
1725 print_level=high_print_level, common_iter_levels=1, &
1726 add_last=add_last_numeric, filename="")
1727 CALL keyword_create(keyword, __location__, name="STRIDE", &
1728 description="The stride (X,Y,Z) used to write the cube file "// &
1729 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1730 " 1 number valid for all components.", &
1731 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1732 CALL section_add_keyword(sub_print_key, keyword)
1733 CALL keyword_release(keyword)
1734 CALL keyword_create(keyword, __location__, name="APPEND", &
1735 description="append the cube files when they already exist", &
1736 default_l_val=.false., lone_keyword_l_val=.true.)
1737 CALL section_add_keyword(sub_print_key, keyword)
1738 CALL keyword_release(keyword)
1739 CALL keyword_create(keyword, __location__, name="ATOM_LIST", &
1740 description="Indices of the atoms to be included in basis CUBE file printing. ", &
1741 usage="ATOM_LIST {integer} {integer} .. {integer} ", &
1742 n_var=-1, type_of_var=integer_t, repeats=.true.)
1743 CALL section_add_keyword(sub_print_key, keyword)
1744 CALL keyword_release(keyword)
1745 CALL section_add_subsection(print_key, sub_print_key)
1746 CALL section_release(sub_print_key)
1747 ! One Center Expansion of IAO
1748 NULLIFY (sub_print_key)
1749 CALL cp_print_key_section_create(sub_print_key, __location__, "ONE_CENTER_EXPANSION", &
1750 description="Calculates single center expansion of IAOs ", &
1751 print_level=high_print_level, common_iter_levels=1, &
1752 add_last=add_last_numeric, filename="")
1753 CALL keyword_create(keyword, __location__, name="LMAX", &
1754 description="Maximum l quantum number used in the expansion.", &
1755 usage="LMAX 2", n_var=1, default_i_val=3, type_of_var=integer_t)
1756 CALL section_add_keyword(sub_print_key, keyword)
1757 CALL keyword_release(keyword)
1758 CALL keyword_create(keyword, __location__, name="NBAS", &
1759 description="Max number of basis functions used in the expansion."// &
1760 " Default is determined by the orbital basis set.", &
1761 usage="NBAS 10", n_var=1, default_i_val=-1, type_of_var=integer_t)
1762 CALL section_add_keyword(sub_print_key, keyword)
1763 CALL keyword_release(keyword)
1764 CALL keyword_create(keyword, __location__, name="APPEND", &
1765 description="Append the OCE basis files when it already exists", &
1766 default_l_val=.false., lone_keyword_l_val=.true.)
1767 CALL section_add_keyword(sub_print_key, keyword)
1768 CALL keyword_release(keyword)
1769 CALL section_add_subsection(print_key, sub_print_key)
1770 CALL section_release(sub_print_key)
1771 ! Intrinsic Bond orbitals
1772 NULLIFY (sub_print_key)
1773 CALL cp_print_key_section_create(sub_print_key, __location__, "BOND_ORBITALS", &
1774 description="Calculate intrinsic bond orbitals using "// &
1775 "localized MOs in IAO basis.", &
1776 print_level=high_print_level, common_iter_levels=1, &
1777 add_last=add_last_numeric, filename="")
1778
1779 CALL keyword_create(keyword, __location__, name="LOCALIZATION_OPERATOR", &
1780 description="Operator to be optimized for orbital localization", &
1781 enum_c_vals=s2a("PIPEK_MEZEY", "PIPEK_MEZEY_4", "L1NORM"), &
1782 enum_i_vals=[do_iaoloc_pm2, do_iaoloc_pm4, do_iaoloc_l1], &
1783 enum_desc=s2a("Use Pipek-Mezey operator (order 2)", &
1784 "Use Pipek-Mezey operator (order 4)", &
1785 "Use L1 norm"), &
1786 default_i_val=do_iaoloc_pm2)
1787 CALL section_add_keyword(sub_print_key, keyword)
1788 CALL keyword_release(keyword)
1789 CALL keyword_create(keyword, __location__, name="ENERGY_LOCALIZATION_FUNCTION", &
1790 description="Function for energy localization: f(e_i), e_i orbital energy", &
1791 enum_c_vals=s2a("NONE", "ENERGY", "OCCUPATION"), &
1793 enum_desc=s2a("Don't use energy localization.", &
1794 "Use orbital energies for localization.", &
1795 "Use occupation numbers for localization."), &
1796 default_i_val=do_iaoloc_enone)
1797 CALL section_add_keyword(sub_print_key, keyword)
1798 CALL keyword_release(keyword)
1799 CALL keyword_create(keyword, __location__, name="ENERGY_LOCALIZATION_WEIGHT", &
1800 description="Weight given to energy localization, using f(e_i) function", &
1801 usage="ENERGY_LOCALIZATION_WEIGHT 0.1", n_var=1, &
1802 default_r_val=0.0_dp, type_of_var=real_t)
1803 CALL section_add_keyword(sub_print_key, keyword)
1804 CALL keyword_release(keyword)
1805
1806 ! CHARGE CENTER AND SPREAD
1807 NULLIFY (subsection)
1808 CALL cp_print_key_section_create(subsection, __location__, "CHARGE_CENTER", &
1809 description="Calculation and printing of centers and spreads "// &
1810 "of localized orbitals.", &
1811 print_level=high_print_level, common_iter_levels=1, &
1812 add_last=add_last_numeric, filename="")
1813 CALL keyword_create(keyword, __location__, name="POSITION_OPERATOR_BERRY", &
1814 description="Use Berry phase position operator.", &
1815 usage="POSITION_OPERATOR_BERRY T", n_var=1, &
1816 default_l_val=.true., lone_keyword_l_val=.true.)
1817 CALL section_add_keyword(subsection, keyword)
1818 CALL keyword_release(keyword)
1819 CALL section_add_subsection(sub_print_key, subsection)
1820 CALL section_release(subsection)
1821 ! IBO_MOLDEN
1822 NULLIFY (subsection)
1823 CALL cp_print_key_section_create(subsection, __location__, "IBO_MOLDEN", &
1824 description="Write the IBO orbitals in Molden file format, for visualisation.", &
1825 print_level=debug_print_level + 1, add_last=add_last_numeric, filename="IBOBAS")
1826 CALL keyword_create(keyword, __location__, name="UNIT", &
1827 description="Unit for coordinates and cell in the MOLDEN file.", &
1828 usage="UNIT ANGSTROM", &
1829 enum_c_vals=s2a("BOHR", "ANGSTROM"), &
1830 enum_desc=s2a("Write in Bohr (AU)", "Write in Angstrom"), &
1831 enum_i_vals=[1, 2], &
1832 default_i_val=1)
1833 CALL section_add_keyword(subsection, keyword)
1834 CALL keyword_release(keyword)
1835 CALL keyword_create(keyword, __location__, name="WRITE_CELL", &
1836 description="Controls whether the [Cell] block is written to the MOLDEN file.", &
1837 usage="WRITE_CELL T", &
1838 default_l_val=.false., lone_keyword_l_val=.true.)
1839 CALL section_add_keyword(subsection, keyword)
1840 CALL keyword_release(keyword)
1841 CALL keyword_create(keyword, __location__, name="WRITE_PSEUDO", &
1842 description="Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1843 usage="WRITE_PSEUDO T", &
1844 default_l_val=.false., lone_keyword_l_val=.true.)
1845 CALL section_add_keyword(subsection, keyword)
1846 CALL keyword_release(keyword)
1847 CALL keyword_create(keyword, __location__, name="MARK_GHOST", &
1848 description="Controls whether ghost atoms are marked in the [Atoms] block by "// &
1849 "setting their atomic number to zero.", &
1850 usage="MARK_GHOST T", &
1851 default_l_val=.false., lone_keyword_l_val=.true.)
1852 CALL section_add_keyword(subsection, keyword)
1853 CALL keyword_release(keyword)
1854 CALL keyword_create(keyword, __location__, name="NDIGITS", &
1855 description="Specifies the number of significant digits retained. 3 is OK for visualization.", &
1856 usage="NDIGITS {int}", &
1857 default_i_val=3)
1858 CALL section_add_keyword(subsection, keyword)
1859 CALL keyword_release(keyword)
1860 CALL keyword_create(keyword, __location__, name="GTO_KIND", &
1861 description="Representation of Gaussian-type orbitals", &
1862 default_i_val=gto_spherical, &
1863 enum_c_vals=s2a("CARTESIAN", "SPHERICAL"), &
1864 enum_desc=s2a( &
1865 "Cartesian Gaussian orbitals. Use with caution", &
1866 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1867 enum_i_vals=[gto_cartesian, gto_spherical])
1868 CALL section_add_keyword(subsection, keyword)
1869 CALL keyword_release(keyword)
1870 CALL section_add_subsection(sub_print_key, subsection)
1871 CALL section_release(subsection)
1872 ! IAO_CUBES
1873 NULLIFY (subsection)
1874 CALL cp_print_key_section_create(subsection, __location__, "IBO_CUBES", &
1875 description="Controls the printing of the IBO orbitals "// &
1876 "as *.cube files.", &
1877 print_level=high_print_level, common_iter_levels=1, &
1878 add_last=add_last_numeric, filename="")
1879 CALL keyword_create(keyword, __location__, name="STRIDE", &
1880 description="The stride (X,Y,Z) used to write the cube file "// &
1881 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1882 " 1 number valid for all components.", &
1883 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1884 CALL section_add_keyword(subsection, keyword)
1885 CALL keyword_release(keyword)
1886 CALL keyword_create(keyword, __location__, name="APPEND", &
1887 description="append the cube files when they already exist", &
1888 default_l_val=.false., lone_keyword_l_val=.true.)
1889 CALL section_add_keyword(subsection, keyword)
1890 CALL keyword_release(keyword)
1891 CALL keyword_create(keyword, __location__, name="STATE_LIST", &
1892 description="Indices of the orbitals to be included in IBO CUBE file printing. ", &
1893 usage="STATE_LIST {integer} {integer} .. {integer} ", &
1894 n_var=-1, type_of_var=integer_t, repeats=.true.)
1895 CALL section_add_keyword(subsection, keyword)
1896 CALL keyword_release(keyword)
1897
1898 CALL section_add_subsection(sub_print_key, subsection)
1899 CALL section_release(subsection)
1900 CALL section_add_subsection(print_key, sub_print_key)
1901 CALL section_release(sub_print_key)
1902
1903 NULLIFY (sub_print_key)
1904 CALL cp_print_key_section_create(sub_print_key, __location__, name="IAO_OVERLAP", &
1905 description="Controls the printout required for ROSE.", &
1906 print_level=debug_print_level, filename="CP2K_ROSE")
1907 CALL keyword_create(keyword, __location__, name="NDIGITS", &
1908 description="Specify the number of digits used to print the MO information.", &
1909 default_i_val=6)
1910 CALL section_add_keyword(sub_print_key, keyword)
1911 CALL keyword_release(keyword)
1912 CALL section_add_subsection(print_key, sub_print_key)
1913 CALL section_release(sub_print_key)
1914
1915 CALL section_add_subsection(section, print_key)
1916 CALL section_release(print_key)
1917 ! END OF IAO_ANALYSIS SECTION
1918
1919 !DOS from density matrix
1920 CALL cp_print_key_section_create(print_key, __location__, "ENERGY_WINDOWS", &
1921 description="Controls the printing of the DOS from the density matrix. "// &
1922 "This allows the calculation of the DOS even in density matrix based "// &
1923 "REAL_TIME_PROPAGATION and LS_SCF. "// &
1924 "However, it requires a cubically scaling diagonalization of the Hamiltonian. "// &
1925 "Hartree-Fock NYI, values will be wrong. "// &
1926 "Careful, the orbitals in rtp/emd are not actually eigenstates of the Hamiltonian. "// &
1927 "Assumes absence of spin polarization (so far).", &
1928 print_level=high_print_level, common_iter_levels=3, &
1929 each_iter_names=s2a("MD"), each_iter_values=[100], &
1930 add_last=add_last_numeric, filename="energy-windows")
1931 CALL keyword_create(keyword, __location__, name="N_WINDOWS", &
1932 description="The number of energy windows.", &
1933 usage="N_WINDOWS 200", &
1934 default_i_val=100)
1935 CALL section_add_keyword(print_key, keyword)
1936 CALL keyword_release(keyword)
1937 CALL keyword_create(keyword, __location__, name="EPS_FILTER", &
1938 description="Filtering threshold for sparse matrix operations.", &
1939 usage="EPS_FILTER 1.0E-6", &
1940 default_r_val=1.0e-14_dp)
1941 CALL section_add_keyword(print_key, keyword)
1942 CALL keyword_release(keyword)
1943 CALL keyword_create(keyword, __location__, name="RESTRICT_RANGE", &
1944 description="Restricts the energy windows to states close to the fermi level", &
1945 usage="RESTRICT_RANGE .TRUE.", &
1946 default_l_val=.false., lone_keyword_l_val=.true.)
1947 CALL section_add_keyword(print_key, keyword)
1948 CALL keyword_release(keyword)
1949 CALL keyword_create(keyword, __location__, name="RANGE", &
1950 description="If the RESTRICT_RANGE keyword is set, then all energy widnows will"// &
1951 " be placed in an interval from from the fermi level minus to the fermi level plus this keyword", &
1952 usage="RANGE 1", &
1953 default_r_val=1.0_dp)
1954 CALL section_add_keyword(print_key, keyword)
1955 CALL keyword_release(keyword)
1956 CALL keyword_create(keyword, __location__, name="PRINT_CUBES", &
1957 description="Print the energy windows to cube files", &
1958 usage="PRINT_CUBES .TRUE.", &
1959 default_l_val=.false., lone_keyword_l_val=.true.)
1960 CALL section_add_keyword(print_key, keyword)
1961 CALL keyword_release(keyword)
1962 CALL keyword_create(keyword, __location__, name="STRIDE", &
1963 description="The stride (X,Y,Z) used to write the energy windows cube files (if enabled) "// &
1964 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1965 " 1 number valid for all components.", &
1966 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
1967 CALL section_add_keyword(print_key, keyword)
1968 CALL keyword_release(keyword)
1969 CALL section_add_subsection(section, print_key)
1970 CALL section_release(print_key)
1971
1972 ! Hamiltonian in CSR format
1973 CALL cp_print_key_section_create(print_key, __location__, "KS_CSR_WRITE", &
1974 description="Write the KS matrix in CSR format into a file.", &
1975 print_level=debug_print_level, filename="")
1976 CALL keyword_create(keyword, __location__, name="Threshold", &
1977 description="Threshold on the absolute value of the elements to be printed out. "// &
1978 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
1979 "if the block contains at least one non-zero element.", &
1980 usage="THRESHOLD {real}", &
1981 repeats=.false., &
1982 default_r_val=0.0_dp)
1983 CALL section_add_keyword(print_key, keyword)
1984 CALL keyword_release(keyword)
1985 CALL keyword_create(keyword, __location__, name="Upper_triangular", &
1986 description="Print only the upper triangular part of the matrix. ", &
1987 usage="UPPER_TRIANGULAR {logical}", &
1988 repeats=.false., &
1989 default_l_val=.false., &
1990 lone_keyword_l_val=.true.)
1991 CALL section_add_keyword(print_key, keyword)
1992 CALL keyword_release(keyword)
1993 CALL keyword_create(keyword, __location__, name="Binary", &
1994 description="Whether or not to generate the file in a binary format. ", &
1995 usage="BINARY {logical}", &
1996 repeats=.false., &
1997 default_l_val=.false., &
1998 lone_keyword_l_val=.true.)
1999 CALL section_add_keyword(print_key, keyword)
2000 CALL keyword_release(keyword)
2001 CALL keyword_create(keyword, __location__, name="Real_space", &
2002 description="Print the KS matrix in real-space instead of k-space.. ", &
2003 usage="REAL_SPACE {logical}", &
2004 repeats=.false., &
2005 default_l_val=.false., &
2006 lone_keyword_l_val=.true.)
2007 CALL section_add_keyword(print_key, keyword)
2008 CALL keyword_release(keyword)
2009 CALL section_add_subsection(section, print_key)
2010 CALL section_release(print_key)
2011
2012 ! Overlap in CSR format
2013 CALL cp_print_key_section_create(print_key, __location__, "S_CSR_WRITE", &
2014 description="Write the overlap matrix in CSR format into a file.", &
2015 print_level=debug_print_level, filename="")
2016 CALL keyword_create(keyword, __location__, name="Threshold", &
2017 description="Threshold on the absolute value of the elements to be printed out. "// &
2018 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2019 "if the block contains at least one non-zero element.", &
2020 usage="THRESHOLD {real}", &
2021 repeats=.false., &
2022 default_r_val=0.0_dp)
2023 CALL section_add_keyword(print_key, keyword)
2024 CALL keyword_release(keyword)
2025 CALL keyword_create(keyword, __location__, name="Upper_triangular", &
2026 description="Print only the upper triangular part of the matrix. ", &
2027 usage="UPPER_TRIANGULAR {logical}", &
2028 repeats=.false., &
2029 default_l_val=.false., &
2030 lone_keyword_l_val=.true.)
2031 CALL section_add_keyword(print_key, keyword)
2032 CALL keyword_release(keyword)
2033 CALL keyword_create(keyword, __location__, name="Binary", &
2034 description="Whether or not to generate the file in a binary format. ", &
2035 usage="BINARY {logical}", &
2036 repeats=.false., &
2037 default_l_val=.false., &
2038 lone_keyword_l_val=.true.)
2039 CALL section_add_keyword(print_key, keyword)
2040 CALL keyword_release(keyword)
2041 CALL keyword_create(keyword, __location__, name="Real_space", &
2042 description="Print the overlap matrix in real-space instead of k-space.. ", &
2043 usage="REAL_SPACE {logical}", &
2044 repeats=.false., &
2045 default_l_val=.false., &
2046 lone_keyword_l_val=.true.)
2047 CALL section_add_keyword(print_key, keyword)
2048 CALL keyword_release(keyword)
2049 CALL section_add_subsection(section, print_key)
2050 CALL section_release(print_key)
2051
2052 ! Core Hamiltonian in CSR format
2053 CALL cp_print_key_section_create(print_key, __location__, "HCORE_CSR_WRITE", &
2054 description="Write the core Hamiltonian matrix in CSR format into a file.", &
2055 print_level=debug_print_level, filename="")
2056 CALL keyword_create(keyword, __location__, name="Threshold", &
2057 description="Threshold on the absolute value of the elements to be printed out. "// &
2058 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2059 "if the block contains at least one non-zero element.", &
2060 usage="THRESHOLD {real}", &
2061 repeats=.false., &
2062 default_r_val=0.0_dp)
2063 CALL section_add_keyword(print_key, keyword)
2064 CALL keyword_release(keyword)
2065 CALL keyword_create(keyword, __location__, name="Upper_triangular", &
2066 description="Print only the upper triangular part of the matrix. ", &
2067 usage="UPPER_TRIANGULAR {logical}", &
2068 repeats=.false., &
2069 default_l_val=.false., &
2070 lone_keyword_l_val=.true.)
2071 CALL section_add_keyword(print_key, keyword)
2072 CALL keyword_release(keyword)
2073 CALL keyword_create(keyword, __location__, name="Binary", &
2074 description="Whether or not to generate the file in a binary format. ", &
2075 usage="BINARY {logical}", &
2076 repeats=.false., &
2077 default_l_val=.false., &
2078 lone_keyword_l_val=.true.)
2079 CALL section_add_keyword(print_key, keyword)
2080 CALL keyword_release(keyword)
2081 CALL keyword_create(keyword, __location__, name="Real_space", &
2082 description="Print the core Hamiltonian matrix in real-space instead of k-space.. ", &
2083 usage="REAL_SPACE {logical}", &
2084 repeats=.false., &
2085 default_l_val=.false., &
2086 lone_keyword_l_val=.true.)
2087 CALL section_add_keyword(print_key, keyword)
2088 CALL keyword_release(keyword)
2089 CALL section_add_subsection(section, print_key)
2090 CALL section_release(print_key)
2091
2092 ! Density Matrix in CSR format
2093 CALL cp_print_key_section_create(print_key, __location__, "P_CSR_WRITE", &
2094 description="Write the density matrix in CSR format into a file.", &
2095 print_level=debug_print_level, filename="")
2096 CALL keyword_create(keyword, __location__, name="Threshold", &
2097 description="Threshold on the absolute value of the elements to be printed out. "// &
2098 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2099 "if the block contains at least one non-zero element.", &
2100 usage="THRESHOLD {real}", &
2101 repeats=.false., &
2102 default_r_val=0.0_dp)
2103 CALL section_add_keyword(print_key, keyword)
2104 CALL keyword_release(keyword)
2105 CALL keyword_create(keyword, __location__, name="Upper_triangular", &
2106 description="Print only the upper triangular part of the matrix. ", &
2107 usage="UPPER_TRIANGULAR {logical}", &
2108 repeats=.false., &
2109 default_l_val=.false., &
2110 lone_keyword_l_val=.true.)
2111 CALL section_add_keyword(print_key, keyword)
2112 CALL keyword_release(keyword)
2113 CALL keyword_create(keyword, __location__, name="Binary", &
2114 description="Whether or not to generate the file in a binary format. ", &
2115 usage="BINARY {logical}", &
2116 repeats=.false., &
2117 default_l_val=.false., &
2118 lone_keyword_l_val=.true.)
2119 CALL section_add_keyword(print_key, keyword)
2120 CALL keyword_release(keyword)
2121 CALL keyword_create(keyword, __location__, name="Real_space", &
2122 description="Print the density matrix in real-space instead of k-space.. ", &
2123 usage="REAL_SPACE {logical}", &
2124 repeats=.false., &
2125 default_l_val=.false., &
2126 lone_keyword_l_val=.true.)
2127 CALL section_add_keyword(print_key, keyword)
2128 CALL keyword_release(keyword)
2129 CALL section_add_subsection(section, print_key)
2130 CALL section_release(print_key)
2131
2132 ! interaction adjacency matrix
2133 CALL cp_print_key_section_create(print_key, __location__, "ADJMAT_WRITE", &
2134 description="Writes an (upper-triangular) adjacency matrix indicating the "// &
2135 "interaction between atoms (according to overlapping basis functions). The "// &
2136 "columns are: iatom, jatom, ikind, jkind; where iatom and jatom are the atom "// &
2137 "indices (based on the coordinate file), ikind and jkind are the atomic kinds "// &
2138 "(indeces as shown in the ATOMIC KIND INFORMATION section of a CP2K output). ", &
2139 print_level=debug_print_level, filename="")
2140 CALL section_add_subsection(section, print_key)
2141 CALL section_release(print_key)
2142
2143 ! Xray diffraction
2145 print_key, __location__, name="XRAY_DIFFRACTION_SPECTRUM", &
2146 description="Calculate and print the coherent X-ray "// &
2147 "diffraction spectrum", &
2148 print_level=debug_print_level, &
2149 filename="", &
2150 citations=[krack2000, krack2002])
2151 CALL keyword_create( &
2152 keyword, __location__, &
2153 name="Q_MAX", &
2154 variants=["Q_MAXIMUM"], &
2155 description="Maximum Q value calculated for the spectrum", &
2156 usage="Q_MAX {real}", &
2157 repeats=.false., &
2158 n_var=1, &
2159 type_of_var=real_t, &
2160 default_r_val=cp_unit_to_cp2k(value=20.0_dp, &
2161 unit_str="angstrom^-1"), &
2162 unit_str="angstrom^-1")
2163 CALL section_add_keyword(print_key, keyword)
2164 CALL keyword_release(keyword)
2165 CALL section_add_subsection(section, print_key)
2166 CALL section_release(print_key)
2167
2168 CALL cp_print_key_section_create(print_key, __location__, name="ELECTRIC_FIELD_GRADIENT", &
2169 description="Calculate and print the electric field gradients "// &
2170 "at atomic positions", &
2171 print_level=debug_print_level, &
2172 filename="__STD_OUT__")
2173
2174 CALL keyword_create(keyword, __location__, &
2175 name="INTERPOLATION", &
2176 description="Use interpolation method from real space grid", &
2177 usage="INTERPOLATION {logical}", &
2178 repeats=.false., &
2179 n_var=1, &
2180 default_l_val=.false., lone_keyword_l_val=.true.)
2181 CALL section_add_keyword(print_key, keyword)
2182 CALL keyword_release(keyword)
2183
2184 CALL keyword_create(keyword, __location__, &
2185 name="GSPACE_SMOOTHING", &
2186 description="Use a G-space smoothing function", &
2187 usage="GSPACE_SMOOTHING cutoff {real}, width {real}", &
2188 repeats=.false., &
2189 n_var=2, default_r_vals=[-1._dp, -1._dp], &
2190 type_of_var=real_t)
2191 CALL section_add_keyword(print_key, keyword)
2192 CALL keyword_release(keyword)
2193
2194 CALL keyword_create(keyword, __location__, &
2195 name="DEBUG", &
2196 description="Print additional debug output", &
2197 usage="DEBUG {logical}", &
2198 repeats=.false., &
2199 n_var=1, &
2200 default_l_val=.false., lone_keyword_l_val=.true.)
2201 CALL section_add_keyword(print_key, keyword)
2202 CALL keyword_release(keyword)
2203
2204 CALL create_gspace_interp_section(subsection)
2205 CALL section_add_subsection(print_key, subsection)
2206 CALL section_release(subsection)
2207
2208 CALL section_add_subsection(section, print_key)
2209 CALL section_release(print_key)
2210
2211 CALL cp_print_key_section_create(print_key, __location__, name="BASIS_MOLOPT_QUANTITIES", &
2212 description="Print the two quantities needed in the basis molopt generation:"// &
2213 " total energy and condition number of the overlap matrix (S matrix)", &
2214 print_level=debug_print_level, &
2215 filename="__STD_OUT__")
2216 CALL section_add_subsection(section, print_key)
2217 CALL section_release(print_key)
2218
2219 CALL cp_print_key_section_create(print_key, __location__, name="HYPERFINE_COUPLING_TENSOR", &
2220 description="Calculate and print the EPR hyperfine coupling tensor"// &
2221 " at atomic positions", &
2222 print_level=debug_print_level, &
2223 filename="__STD_OUT__")
2224
2225 CALL keyword_create(keyword, __location__, &
2226 name="INTERACTION_RADIUS", &
2227 description="Radius of interaction for EPR hyperfine tensor calculation", &
2228 usage="INTERACTION_RADIUS radius {real}", &
2229 repeats=.false., &
2230 n_var=1, default_r_val=10._dp, &
2231 type_of_var=real_t)
2232 CALL section_add_keyword(print_key, keyword)
2233 CALL keyword_release(keyword)
2234
2235 CALL section_add_subsection(section, print_key)
2236 CALL section_release(print_key)
2237
2238 CALL cp_print_key_section_create(print_key, __location__, name="OPTIMIZE_LRI_BASIS", &
2239 description="Optimize the exponents of the LRI basis set", &
2240 print_level=low_print_level, &
2241 filename="OPTIMIZED_LRI_BASIS")
2242 CALL section_add_subsection(section, print_key)
2243 CALL section_release(print_key)
2244
2246 print_key, __location__, name="PLUS_U", &
2247 description="Controls the printing for the DFT+U methods", &
2248 print_level=high_print_level, &
2249 filename="__STD_OUT__", &
2250 each_iter_names=s2a("QS_SCF"), &
2251 each_iter_values=[0], &
2252 citations=[dudarev1997, dudarev1998])
2253 CALL section_add_subsection(section, print_key)
2254 CALL section_release(print_key)
2255
2257 print_key, __location__, name="CHARGEMOL", &
2258 description="Write .wfx input file for Chargemol", &
2259 print_level=debug_print_level + 1, &
2260 filename="CHARGEMOL", &
2261 add_last=add_last_numeric)
2262 CALL keyword_create(keyword, __location__, name="BACKUP_COPIES", &
2263 description="Specifies the maximum number of backup copies.", &
2264 usage="BACKUP_COPIES {int}", &
2265 default_i_val=1)
2266 CALL section_add_keyword(print_key, keyword)
2267 CALL keyword_release(keyword)
2268 CALL keyword_create(keyword, __location__, name="PERIODIC", &
2269 description="Write information about cell periodicity.", &
2270 usage="PERIODIC {LOGICAL}", &
2271 default_l_val=.false., lone_keyword_l_val=.true.)
2272 CALL section_add_keyword(print_key, keyword)
2273 CALL keyword_release(keyword)
2274 CALL section_add_subsection(section, print_key)
2275 CALL section_release(print_key)
2276
2278 print_key, __location__, name="SCCS", &
2279 description="Controls the printing for the SCCS models", &
2280 print_level=high_print_level, &
2281 filename="__STD_OUT__", &
2282 each_iter_names=s2a("QS_SCF"), &
2283 each_iter_values=[0], &
2284 citations=[fattebert2002, andreussi2012, yin2017])
2285
2286 NULLIFY (sub_print_key)
2287
2289 sub_print_key, __location__, name="DENSITY_GRADIENT", &
2290 description="Controls the printing of the cube files with "// &
2291 "the norm of the density gradient |&nabla;&rho;| "// &
2292 "used by the SCCS model.", &
2293 print_level=debug_print_level, &
2294 filename="", &
2295 each_iter_names=s2a("QS_SCF"), &
2296 each_iter_values=[0])
2297 CALL keyword_create(keyword, __location__, name="STRIDE", &
2298 description="The stride (X,Y,Z) used to write the cube file "// &
2299 "(larger values result in smaller cube files). You can provide 3 "// &
2300 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2301 n_var=-1, &
2302 default_i_vals=[2, 2, 2], &
2303 type_of_var=integer_t, &
2304 repeats=.false.)
2305 CALL section_add_keyword(sub_print_key, keyword)
2306 CALL keyword_release(keyword)
2307 CALL keyword_create(keyword, __location__, name="APPEND", &
2308 description="Append the cube files when they already exist", &
2309 default_l_val=.false., &
2310 lone_keyword_l_val=.true., &
2311 repeats=.false.)
2312 CALL section_add_keyword(sub_print_key, keyword)
2313 CALL keyword_release(keyword)
2314 CALL section_add_subsection(print_key, sub_print_key)
2315 CALL section_release(sub_print_key)
2316
2318 sub_print_key, __location__, name="DIELECTRIC_FUNCTION", &
2319 description="Controls the printing of the cube files with "// &
2320 "the dielectric function used by the SCCS model. "// &
2321 "This function determines the cavity formed by a solute in "// &
2322 "a solvent and thus it can be used for the visualisaton of the cavity.", &
2323 print_level=debug_print_level, &
2324 filename="", &
2325 each_iter_names=s2a("QS_SCF"), &
2326 each_iter_values=[0], &
2327 citations=[fattebert2002, andreussi2012, yin2017])
2328 CALL keyword_create(keyword, __location__, name="STRIDE", &
2329 description="The stride (X,Y,Z) used to write the cube file "// &
2330 "(larger values result in smaller cube files). You can provide 3 "// &
2331 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2332 n_var=-1, &
2333 default_i_vals=[2, 2, 2], &
2334 type_of_var=integer_t, &
2335 repeats=.false.)
2336 CALL section_add_keyword(sub_print_key, keyword)
2337 CALL keyword_release(keyword)
2338 CALL keyword_create(keyword, __location__, name="APPEND", &
2339 description="Append the cube files when they already exist", &
2340 default_l_val=.false., &
2341 lone_keyword_l_val=.true., &
2342 repeats=.false.)
2343 CALL section_add_keyword(sub_print_key, keyword)
2344 CALL keyword_release(keyword)
2345 CALL section_add_subsection(print_key, sub_print_key)
2346 CALL section_release(sub_print_key)
2347
2349 sub_print_key, __location__, name="TOTAL_CHARGE_DENSITY", &
2350 description="Controls the printing of the cube files with the "// &
2351 "total charge density $\rho^\text{tot}$ used by the SCCS model.", &
2352 print_level=debug_print_level, &
2353 filename="", &
2354 each_iter_names=s2a("QS_SCF"), &
2355 each_iter_values=[0], &
2356 citations=[fattebert2002, andreussi2012, yin2017])
2357 CALL keyword_create(keyword, __location__, name="STRIDE", &
2358 description="The stride (X,Y,Z) used to write the cube file "// &
2359 "(larger values result in smaller cube files). You can provide 3 "// &
2360 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2361 n_var=-1, &
2362 default_i_vals=[2, 2, 2], &
2363 type_of_var=integer_t, &
2364 repeats=.false.)
2365 CALL section_add_keyword(sub_print_key, keyword)
2366 CALL keyword_release(keyword)
2367 CALL keyword_create(keyword, __location__, name="APPEND", &
2368 description="Append the cube files when they already exist", &
2369 default_l_val=.false., &
2370 lone_keyword_l_val=.true., &
2371 repeats=.false.)
2372 CALL section_add_keyword(sub_print_key, keyword)
2373 CALL keyword_release(keyword)
2374 CALL section_add_subsection(print_key, sub_print_key)
2375 CALL section_release(sub_print_key)
2376
2378 sub_print_key, __location__, name="POLARISATION_CHARGE_DENSITY", &
2379 description="Controls the printing of the cube files with the "// &
2380 "polarisation charge density $\rho^\text{pol}$ used by the SCCS model with the "// &
2381 "total charge density $\rho^\text{tot} = \rho^\text{sol} + \rho^\text{pol}", &
2382 print_level=debug_print_level, &
2383 filename="", &
2384 each_iter_names=s2a("QS_SCF"), &
2385 each_iter_values=[0], &
2386 citations=[fattebert2002, andreussi2012, yin2017])
2387 CALL keyword_create(keyword, __location__, name="STRIDE", &
2388 description="The stride (X,Y,Z) used to write the cube file "// &
2389 "(larger values result in smaller cube files). You can provide 3 "// &
2390 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2391 n_var=-1, &
2392 default_i_vals=[2, 2, 2], &
2393 type_of_var=integer_t, &
2394 repeats=.false.)
2395 CALL section_add_keyword(sub_print_key, keyword)
2396 CALL keyword_release(keyword)
2397 CALL keyword_create(keyword, __location__, name="APPEND", &
2398 description="Append the cube files when they already exist", &
2399 default_l_val=.false., &
2400 lone_keyword_l_val=.true., &
2401 repeats=.false.)
2402 CALL section_add_keyword(sub_print_key, keyword)
2403 CALL keyword_release(keyword)
2404 CALL section_add_subsection(print_key, sub_print_key)
2405 CALL section_release(sub_print_key)
2406
2408 sub_print_key, __location__, name="POLARISATION_POTENTIAL", &
2409 description="Controls the printing of the cube files with the "// &
2410 "polarisation potential $\phi^\text{pol}$ used by the SCCS model with the "// &
2411 "total potential $\phi^\text{tot} = \phi^\text{sol} + \phi^\text{pol}$", &
2412 print_level=debug_print_level, &
2413 filename="", &
2414 each_iter_names=s2a("QS_SCF"), &
2415 each_iter_values=[0], &
2416 citations=[fattebert2002, andreussi2012, yin2017])
2417 CALL keyword_create(keyword, __location__, name="STRIDE", &
2418 description="The stride (X,Y,Z) used to write the cube file "// &
2419 "(larger values result in smaller cube files). You can provide 3 "// &
2420 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2421 n_var=-1, &
2422 default_i_vals=[2, 2, 2], &
2423 type_of_var=integer_t, &
2424 repeats=.false.)
2425 CALL section_add_keyword(sub_print_key, keyword)
2426 CALL keyword_release(keyword)
2427 CALL keyword_create(keyword, __location__, name="APPEND", &
2428 description="Append the cube files when they already exist", &
2429 default_l_val=.false., &
2430 lone_keyword_l_val=.true., &
2431 repeats=.false.)
2432 CALL section_add_keyword(sub_print_key, keyword)
2433 CALL keyword_release(keyword)
2434 CALL section_add_subsection(print_key, sub_print_key)
2435 CALL section_release(sub_print_key)
2436
2437 CALL section_add_subsection(section, print_key)
2438 CALL section_release(print_key)
2439
2440 END SUBROUTINE create_print_dft_section
2441
2442! **************************************************************************************************
2443!> \brief ...
2444!> \param section ...
2445!> \author JGH
2446! **************************************************************************************************
2447 SUBROUTINE create_bandstructure_section(section)
2448 TYPE(section_type), POINTER :: section
2449
2450 TYPE(keyword_type), POINTER :: keyword
2451 TYPE(section_type), POINTER :: subsection
2452
2453 cpassert(.NOT. ASSOCIATED(section))
2454 CALL section_create(section, __location__, name="BAND_STRUCTURE", &
2455 description="Specifies the k-points used in band structure calculation.", &
2456 n_keywords=0, n_subsections=0, repeats=.false.)
2457
2458 NULLIFY (keyword)
2459 CALL keyword_create(keyword, __location__, name="FILE_NAME", &
2460 description="File name used for band structure", &
2461 usage="FILE_NAME <filename>", default_c_val="", &
2462 type_of_var=char_t, n_var=1)
2463 CALL section_add_keyword(section, keyword)
2464 CALL keyword_release(keyword)
2465
2466 CALL keyword_create(keyword, __location__, name="ADDED_MOS", &
2467 variants=["ADDED_BANDS"], &
2468 description="Number of MOs/Bands added to the Band Structure calculation.", &
2469 default_i_val=0)
2470 CALL section_add_keyword(section, keyword)
2471 CALL keyword_release(keyword)
2472
2473 NULLIFY (subsection)
2474 CALL create_kpoint_set_section(subsection)
2475 CALL section_add_subsection(section, subsection)
2476 CALL section_release(subsection)
2477
2478 END SUBROUTINE create_bandstructure_section
2479
2480 SUBROUTINE add_generic_openpmd_arguments(print_key)
2481 TYPE(section_type), POINTER :: print_key
2482
2483 TYPE(keyword_type), POINTER :: keyword
2484 NULLIFY (keyword)
2485
2486 CALL keyword_create(keyword, __location__, name="OPENPMD_EXTENSION", &
2487 description="Filename extension for openPMD files, including the dot and "// &
2488 "(for optionally activating file encoding) a file expansion pattern.", &
2489 default_c_val="_%06T."//cp_openpmd_get_default_extension(), &
2490 type_of_var=char_t)
2491 CALL section_add_keyword(print_key, keyword)
2492 CALL keyword_release(keyword)
2493
2494 CALL keyword_create(keyword, __location__, name="OPENPMD_CFG", &
2495 description="Inline runtime config for openPMD output. Note that inline "// &
2496 "specifications are subject to restrictions imposed by the input "// &
2497 "file format, making this option useful only for very simple use cases. "// &
2498 "Refer to OPENPMD_CFG_FILE for anything else.", &
2499 default_c_val="{}", type_of_var=char_t)
2500 CALL section_add_keyword(print_key, keyword)
2501 CALL keyword_release(keyword)
2502
2503 CALL keyword_create(keyword, __location__, name="OPENPMD_CFG_FILE", &
2504 description="Runtime config file for openPMD output. This parameter takes precedence over OPENPMD_CFG.", default_c_val="", &
2505 type_of_var=char_t)
2506 CALL section_add_keyword(print_key, keyword)
2507 CALL keyword_release(keyword)
2508
2509 END SUBROUTINE add_generic_openpmd_arguments
2510
2511! **************************************************************************************************
2512!> \brief creates the input section for dealing with homo lumos, including dumping cubes
2513!> \param print_key ...
2514! **************************************************************************************************
2515 SUBROUTINE create_mo_section( &
2516 print_key, section_name, description, stride_default, stride_usage, &
2517 print_level, do_write_keyname)
2518
2519 TYPE(section_type), POINTER :: print_key
2520 CHARACTER(len=*), INTENT(IN) :: section_name, description, stride_usage, do_write_keyname
2521 INTEGER, DIMENSION(3), INTENT(IN) :: stride_default
2522 INTEGER, INTENT(IN) :: print_level
2523
2524 TYPE(keyword_type), POINTER :: keyword
2525
2526 NULLIFY (keyword)
2527
2528 CALL cp_print_key_section_create(print_key, __location__, section_name, &
2529 description="Controls the printing of the molecular orbitals (MOs) as " &
2530 //trim(adjustl(description))// &
2531 " files."// &
2532 " It can be used during a Real Time calculation to print the MOs."// &
2533 " In this case, the density corresponding to the time dependent MO is printed"// &
2534 " instead of the wave-function.", &
2535 print_level=print_level, filename="")
2536
2537 CALL keyword_create(keyword, __location__, name="stride", &
2538 description="The stride (X,Y,Z) used to write the "//trim(adjustl(description))//" file "// &
2539 "(larger values result in smaller "// &
2540 trim(adjustl(description))// &
2541 " files). You can provide 3 numbers (for X,Y,Z) or"// &
2542 " 1 number valid for all components.", &
2543 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=integer_t)
2544 CALL section_add_keyword(print_key, keyword)
2545 CALL keyword_release(keyword)
2546
2547 CALL keyword_create(keyword, __location__, name=do_write_keyname, &
2548 description="If the MO " &
2549 //trim(adjustl(description)) &
2550 //" file should be written. If false, the eigenvalues are still computed."// &
2551 " Can also be useful in combination with STM calculations", &
2552 default_l_val=.true., lone_keyword_l_val=.true.)
2553 CALL section_add_keyword(print_key, keyword)
2554 CALL keyword_release(keyword)
2555
2556 CALL keyword_create(keyword, __location__, name="nlumo", &
2557 description="If the printkey is activated controls the number of lumos"// &
2558 " that are printed and dumped as "//trim(adjustl(description))//" (-1=all)", &
2559 default_i_val=0)
2560 CALL section_add_keyword(print_key, keyword)
2561 CALL keyword_release(keyword)
2562
2563 CALL keyword_create( &
2564 keyword, __location__, name="nhomo", &
2565 description="If the printkey is activated controls the number of homos that dumped as "// &
2566 trim(adjustl(description))// &
2567 " (-1=all),"// &
2568 " eigenvalues are always all dumped", &
2569 default_i_val=1)
2570 CALL section_add_keyword(print_key, keyword)
2571 CALL keyword_release(keyword)
2572
2573 CALL keyword_create( &
2574 keyword, __location__, name="homo_list", &
2575 description="If the printkey is activated controls the index of homos dumped as openPMD,"// &
2576 " eigenvalues are always all dumped. It overrides nhomo.", &
2577 usage="HOMO_LIST {integer} {integer} .. {integer} ", type_of_var=integer_t, &
2578 n_var=-1, repeats=.true.)
2579 CALL section_add_keyword(print_key, keyword)
2580 CALL keyword_release(keyword)
2581
2582 END SUBROUTINE create_mo_section
2583
2584 SUBROUTINE create_e_density_section( &
2585 print_key, section_name, description, stride_default, &
2586 stride_usage, print_level)
2587
2588 TYPE(section_type), POINTER :: print_key
2589 CHARACTER(len=*), INTENT(IN) :: section_name, description, stride_usage
2590 INTEGER, DIMENSION(3), INTENT(IN) :: stride_default
2591 INTEGER, INTENT(IN) :: print_level
2592
2593 TYPE(keyword_type), POINTER :: keyword
2594
2595 NULLIFY (keyword)
2596
2597 CALL cp_print_key_section_create(print_key, __location__, name=section_name, &
2598 description="Controls the printing of "//trim(adjustl(description))//" files with "// &
2599 "the electronic density and, for LSD calculations, the spin density.", &
2600 print_level=print_level, filename="")
2601 CALL keyword_create(keyword, __location__, name="stride", &
2602 description="The stride (X,Y,Z) used to write the "//trim(adjustl(description))//" file "// &
2603 "(larger values result in smaller "// &
2604 trim(adjustl(description))// &
2605 " files). You can provide 3 numbers (for X,Y,Z) or"// &
2606 " 1 number valid for all components.", &
2607 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=integer_t)
2608 CALL section_add_keyword(print_key, keyword)
2609 CALL keyword_release(keyword)
2610
2611 CALL keyword_create(keyword, __location__, name="DENSITY_INCLUDE", &
2612 description="Which parts of the density to include. In GAPW the electronic density "// &
2613 "is divided into a hard and a soft component, and the default (TOTAL_HARD_APPROX) "// &
2614 "is to approximate the hard density as a spherical gaussian and to print the smooth "// &
2615 "density accurately. This avoids potential artefacts originating from the hard density. "// &
2616 "If the TOTAL_DENSITY keyword is used the hard density will be computed more accurately "// &
2617 "but may introduce non-physical features. The SOFT_DENSITY keyword will lead to only the "// &
2618 "soft density being printed. In GPW these options have no effect and the cube file will "// &
2619 "only contain the valence electron density.", &
2620 usage="DENSITY_INCLUDE TOTAL_HARD_APPROX", &
2621 enum_c_vals=s2a("TOTAL_HARD_APPROX", "TOTAL_DENSITY", "SOFT_DENSITY"), &
2622 enum_desc=s2a("Print (hard+soft) density where the hard components shape is approximated", &
2623 "Print (hard+soft) density. Only has an effect "// &
2624 "if PAW atoms are present. NOTE: The total "// &
2625 "in real space might exhibit unphysical features "// &
2626 "like spikes due to the finite and thus "// &
2627 "truncated g vector", &
2628 "Print only the soft density"), &
2629 enum_i_vals=[e_dens_total_hard_approx, &
2632 default_i_val=e_dens_total_hard_approx)
2633 CALL section_add_keyword(print_key, keyword)
2634 CALL keyword_release(keyword)
2635
2636 END SUBROUTINE create_e_density_section
2637
2638 ! **************************************************************************************************
2639!> \brief Helper to create ELF print sections (cube or openPMD)
2640!> \param print_key section handle (output)
2641!> \param section_name name of the section (e.g. "ELF_CUBE" or "ELF_OPENPMD")
2642!> \param description Either "cube" or "openPMD", for the descriptions.
2643!> \param stride_default default stride values
2644!> \param stride_usage usage string for stride
2645!> \param print_level print level
2646!> \param filename output filename (empty string for default)
2647 SUBROUTINE create_elf_print_section( &
2648 print_key, section_name, description, stride_default, stride_usage, print_level, filename)
2649
2650 TYPE(section_type), POINTER :: print_key
2651 CHARACTER(len=*), INTENT(IN) :: section_name, description, stride_usage, filename
2652 INTEGER, DIMENSION(3), INTENT(IN) :: stride_default
2653 INTEGER, INTENT(IN) :: print_level
2654 TYPE(keyword_type), POINTER :: keyword
2655
2656 NULLIFY (keyword)
2657
2658 CALL cp_print_key_section_create(print_key, __location__, section_name, &
2659 description="Controls printing of "//trim(adjustl(description))// &
2660 " files with the electron localization function (ELF). "// &
2661 "Note that the value of ELF is defined between 0 and 1: "// &
2662 "Pauli kinetic energy density normalized by the kinetic energy density "// &
2663 "of a uniform el. gas of same density.", print_level=print_level, filename=filename)
2664
2665 CALL keyword_create(keyword, __location__, name="stride", &
2666 description="The stride (X,Y,Z) used to write the file (larger values result in smaller files). "// &
2667 "You can provide 3 numbers (for X,Y,Z) or 1 number valid for all components.", &
2668 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=integer_t)
2669 CALL section_add_keyword(print_key, keyword)
2670 CALL keyword_release(keyword)
2671
2672 CALL keyword_create(keyword, __location__, name="density_cutoff", &
2673 description=" ", usage="density_cutoff 0.0001", repeats=.false., n_var=1, &
2674 type_of_var=real_t, default_r_val=1.0e-10_dp)
2675 CALL section_add_keyword(print_key, keyword)
2676 CALL keyword_release(keyword)
2677 END SUBROUTINE create_elf_print_section
2678
2679! **************************************************************************************************
2680!> \brief Add projected-DOS related keywords to a DOS or XAS PDOS print section.
2681!> \param print_key print key section to add keywords to
2682!> \param xas_mode if true, add keywords for the XAS-specific standalone PDOS section
2683! **************************************************************************************************
2684 SUBROUTINE add_dos_keywords(print_key, xas_mode)
2685
2686 TYPE(section_type), POINTER :: print_key
2687 LOGICAL, INTENT(IN) :: xas_mode
2688
2689 TYPE(keyword_type), POINTER :: keyword
2690 TYPE(section_type), POINTER :: subsection
2691
2692 NULLIFY (subsection)
2693 NULLIFY (keyword)
2694
2695 CALL keyword_create(keyword, __location__, name="APPEND", &
2696 description="Append the DOS/PDOS obtained at different iterations to the output file. "// &
2697 "By default the file is overwritten", &
2698 usage="APPEND", default_l_val=.false., lone_keyword_l_val=.true.)
2699 CALL section_add_keyword(print_key, keyword)
2700 CALL keyword_release(keyword)
2701
2702 CALL keyword_create(keyword, __location__, name="DELTA_E", &
2703 description="Energy spacing of the broadened DOS/PDOS output grid.", &
2704 usage="DELTA_E 0.0005", type_of_var=real_t, default_r_val=0.001_dp)
2705 CALL section_add_keyword(print_key, keyword)
2706 CALL keyword_release(keyword)
2707
2708 CALL keyword_create(keyword, __location__, name="ENERGY_UNIT", &
2709 description="Energy unit used for the printed DOS/PDOS energy axis. "// &
2710 "For broadened spectra, intensities are converted consistently to the selected energy unit.", &
2711 usage="ENERGY_UNIT HARTREE", type_of_var=enum_t, &
2712 enum_c_vals=s2a("HARTREE", "EV"), &
2713 enum_i_vals=[1, 2], &
2714 enum_desc=s2a("Print energies in Hartree (a.u.).", &
2715 "Print energies in electronvolt."), &
2716 default_i_val=1)
2717 CALL section_add_keyword(print_key, keyword)
2718 CALL keyword_release(keyword)
2719
2720 CALL keyword_create(keyword, __location__, name="ENERGY_ZERO", &
2721 description="Reference energy used for the printed DOS/PDOS energy axis. "// &
2722 "With AUTO, the Fermi energy is used if smearing is enabled or fractional "// &
2723 "occupations are found; otherwise the highest occupied crystal orbital is used.", &
2724 usage="ENERGY_ZERO AUTO", type_of_var=enum_t, &
2725 enum_c_vals=s2a("AUTO", "ABSOLUTE", "FERMI", "HOCO"), &
2726 enum_i_vals=[1, 2, 3, 4], &
2727 enum_desc=s2a("Choose FERMI for smeared or fractionally occupied systems, otherwise HOCO.", &
2728 "Print absolute orbital energies.", &
2729 "Shift orbital energies by the Fermi energy.", &
2730 "Shift orbital energies by the highest occupied crystal orbital."), &
2731 default_i_val=1)
2732 CALL section_add_keyword(print_key, keyword)
2733 CALL keyword_release(keyword)
2734
2735 CALL keyword_create(keyword, __location__, name="BROADEN_TYPE", &
2736 description="Type of broadening function used to produce the DOS/PDOS curve.", &
2737 usage="BROADEN_TYPE GAUSSIAN", type_of_var=enum_t, &
2738 enum_c_vals=s2a("GAUSSIAN", "LORENTZIAN", "PSEUDO_VOIGT"), &
2739 enum_i_vals=[1, 2, 3], &
2740 enum_desc=s2a("Use a Gaussian broadening function.", &
2741 "Use a Lorentzian broadening function.", &
2742 "Use a pseudo-Voigt mixture of Lorentzian and Gaussian functions."), &
2743 default_i_val=1)
2744 CALL section_add_keyword(print_key, keyword)
2745 CALL keyword_release(keyword)
2746
2747 CALL keyword_create(keyword, __location__, name="BROADEN_WIDTH", &
2748 description="Full width at half maximum (FWHM) of the DOS/PDOS broadening function.", &
2749 usage="BROADEN_WIDTH [eV] 0.1", type_of_var=real_t, &
2750 default_r_val=cp_unit_to_cp2k(value=0.1_dp, unit_str="eV"), unit_str="eV")
2751 CALL section_add_keyword(print_key, keyword)
2752 CALL keyword_release(keyword)
2753
2754 CALL keyword_create(keyword, __location__, name="VOIGT_MIXING", &
2755 description="Lorentzian fraction of the pseudo-Voigt broadening function.", &
2756 usage="VOIGT_MIXING 0.5", type_of_var=real_t, default_r_val=0.5_dp)
2757 CALL section_add_keyword(print_key, keyword)
2758 CALL keyword_release(keyword)
2759
2760 CALL keyword_create(keyword, __location__, name="NDIGITS", &
2761 description="Specify the number of digits used to print DOS/PDOS values.", &
2762 default_i_val=6)
2763 CALL section_add_keyword(print_key, keyword)
2764 CALL keyword_release(keyword)
2765
2766 CALL keyword_create(keyword, __location__, name="NLUMO", &
2767 description="Number of unoccupied orbitals to include in the DOS/PDOS (-1=all). "// &
2768 "For OT calculations, the requested virtual orbitals are generated after SCF using the "// &
2769 "OT eigensolver. For diagonalization calculations, SCF%ADDED_MOS is increased if needed "// &
2770 "to make the requested unoccupied orbitals available.", &
2771 usage="NLUMO integer", default_i_val=0)
2772 CALL section_add_keyword(print_key, keyword)
2773 CALL keyword_release(keyword)
2774
2775 IF (.NOT. xas_mode) THEN
2776 CALL section_create(subsection, __location__, name="PDOS", &
2777 description="Controls the printing of kind-resolved projected DOS.", &
2778 n_keywords=2, n_subsections=0)
2779 CALL keyword_create(keyword, __location__, name="COMPONENTS", &
2780 description="Print out PDOS distinguishing all angular momentum components.", &
2781 usage="COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2782 CALL section_add_keyword(subsection, keyword)
2783 CALL keyword_release(keyword)
2784
2785 CALL keyword_create(keyword, __location__, name="RAW", &
2786 description="Print MO-resolved projected DOS weights to *.pdos_raw.", &
2787 usage="RAW", default_l_val=.false., lone_keyword_l_val=.true.)
2788 CALL section_add_keyword(subsection, keyword)
2789 CALL keyword_release(keyword)
2790 CALL section_add_subsection(print_key, subsection)
2791 CALL section_release(subsection)
2792 ELSE
2793 CALL keyword_create(keyword, __location__, name="COMPONENTS", &
2794 description="Print out PDOS distinguishing all angular momentum components.", &
2795 usage="COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2796 CALL section_add_keyword(print_key, keyword)
2797 CALL keyword_release(keyword)
2798 END IF
2799
2800 CALL keyword_create(keyword, __location__, name="OUT_EACH_STATE", &
2801 variants=["OUT_EACH_MO"], &
2802 description="Output on the status of the calculation every OUT_EACH_MO states. If -1 no output", &
2803 usage="OUT_EACH_STATE integer", default_i_val=-1)
2804 CALL section_add_keyword(print_key, keyword)
2805 CALL keyword_release(keyword)
2806
2807 CALL section_create(subsection, __location__, name="LDOS", &
2808 description="Controls the printing of local PDOS, projected on subsets"// &
2809 " of atoms given through lists", &
2810 n_keywords=4, n_subsections=0, repeats=.true.)
2811 CALL keyword_create(keyword, __location__, name="COMPONENTS", &
2812 description="Print out PDOS distinguishing all angular momentum components.", &
2813 usage="COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2814 CALL section_add_keyword(subsection, keyword)
2815 CALL keyword_release(keyword)
2816 CALL keyword_create(keyword, __location__, name="LIST", &
2817 description="Specifies a list of indexes of atoms where to project the DOS", &
2818 usage="LIST {integer} {integer} .. {integer}", type_of_var=integer_t, &
2819 n_var=-1, repeats=.true.)
2820 CALL section_add_keyword(subsection, keyword)
2821 CALL keyword_release(keyword)
2822 CALL section_add_subsection(print_key, subsection)
2823 CALL section_release(subsection)
2824
2825 CALL section_create(subsection, __location__, name="R_LDOS", &
2826 description="Controls the printing of local PDOS, projected on 3D volume in real space, "// &
2827 "the volume is defined in terms of position with respect to atoms in the lists", &
2828 n_keywords=4, n_subsections=0, repeats=.true.)
2829 CALL keyword_create(keyword, __location__, name="LIST", &
2830 description="Specifies a list of indexes of atoms used to define the real space volume", &
2831 usage="LIST {integer} {integer} .. {integer}", type_of_var=integer_t, &
2832 n_var=-1, repeats=.true.)
2833 CALL section_add_keyword(subsection, keyword)
2834 CALL keyword_release(keyword)
2835 CALL keyword_create(keyword, __location__, name="XRANGE", &
2836 description="range of positions in Cartesian direction x: all grid points within "// &
2837 "this range from at least one atom of the list are considered", &
2838 usage="XRANGE -10.0 10.0", unit_str="angstrom", n_var=2, type_of_var=real_t)
2839 CALL section_add_keyword(subsection, keyword)
2840 CALL keyword_release(keyword)
2841 CALL keyword_create(keyword, __location__, name="YRANGE", &
2842 description="range of positions in Cartesian direction y: all grid points within "// &
2843 "this range from at least one atom of the list are considered", &
2844 usage="YRANGE -10.0 10.0", unit_str="angstrom", n_var=2, type_of_var=real_t)
2845 CALL section_add_keyword(subsection, keyword)
2846 CALL keyword_release(keyword)
2847 CALL keyword_create(keyword, __location__, name="ZRANGE", &
2848 description="range of positions in Cartesian direction z: all grid points within "// &
2849 "this range from at least one atom of the list are considered", &
2850 usage="ZRANGE -10.0 10.0", unit_str="angstrom", n_var=2, type_of_var=real_t)
2851 CALL section_add_keyword(subsection, keyword)
2852 CALL keyword_release(keyword)
2853 CALL keyword_create(keyword, __location__, name="ERANGE", &
2854 description="Only project states with the energy values in the given interval. "// &
2855 "Default is all states.", &
2856 usage="ERANGE -1.0 1.0", unit_str="hartree", n_var=2, type_of_var=real_t)
2857 CALL section_add_keyword(subsection, keyword)
2858 CALL keyword_release(keyword)
2859 CALL section_add_subsection(print_key, subsection)
2860 CALL section_release(subsection)
2861
2862 END SUBROUTINE add_dos_keywords
2863
2864! **************************************************************************************************
2865!> \brief Create WANNIER90 print section.
2866!> \param print_key print key section to create
2867! **************************************************************************************************
2868 SUBROUTINE create_wannier_section(print_key)
2869
2870 TYPE(section_type), POINTER :: print_key
2871
2872 TYPE(keyword_type), POINTER :: keyword
2873
2874 NULLIFY (keyword)
2875
2876 CALL cp_print_key_section_create(print_key, __location__, "WANNIER90", &
2877 description="Interface to Wannier90 code. (EXPERIMENTAL)", &
2878 print_level=debug_print_level, common_iter_levels=1, filename="")
2879
2880 CALL keyword_create(keyword, __location__, name="SEED_NAME", &
2881 description="The seedname for the Wannier90 calculation (body of filenames).", &
2882 usage="SEED_NAME filename", default_c_val="wannier90", &
2883 n_var=1, type_of_var=char_t)
2884 CALL section_add_keyword(print_key, keyword)
2885 CALL keyword_release(keyword)
2886
2887 CALL keyword_create(keyword, __location__, name="MP_GRID", &
2888 description="The dimensions of the Monkhorst-Pack k-point grid. ", &
2889 usage="MP_GRID 6 6 6", n_var=-1, default_i_vals=[10, 10, 10], type_of_var=integer_t)
2890 CALL section_add_keyword(print_key, keyword)
2891 CALL keyword_release(keyword)
2892
2893 CALL keyword_create(keyword, __location__, name="KPOINTS_SOURCE", &
2894 description="Select the k-point source for the Wannier90 export. MP_GRID keeps "// &
2895 "the historical behavior and builds a full grid from WANNIER90%MP_GRID. SCF uses "// &
2896 "the full k-point mesh from DFT%KPOINTS for Monkhorst-Pack, MacDonald, Gamma, or "// &
2897 "explicit GENERAL k-points. If the SCF calculation uses K290 or SPGLIB symmetry "// &
2898 "reduction, the corresponding unreduced mesh is used for Wannier90 because "// &
2899 "Wannier90 requires a complete mesh.", &
2900 usage="KPOINTS_SOURCE MP_GRID", type_of_var=enum_t, &
2901 enum_c_vals=s2a("MP_GRID", "SCF"), &
2902 enum_i_vals=[0, 1], &
2903 enum_desc=s2a("Build the Wannier90 k-point mesh from WANNIER90%MP_GRID.", &
2904 "Use the full k-point mesh from DFT%KPOINTS."), &
2905 default_i_val=0)
2906 CALL section_add_keyword(print_key, keyword)
2907 CALL keyword_release(keyword)
2908
2909 CALL keyword_create(keyword, __location__, name="REUSE_SCF_MOS", &
2910 description="Try to reuse the SCF k-point MO coefficients when KPOINTS_SOURCE SCF "// &
2911 "is active. CP2K can directly reuse full SCF meshes, time-reversal partners, "// &
2912 "non-degenerate atom/AO symmetry images, and atom/AO symmetry images whose "// &
2913 "degenerate band subspaces are fully contained in the exported Wannier90 band "// &
2914 "window. If the Wannier90 band window cuts through a degenerate subspace, CP2K "// &
2915 "falls back to the historical full-mesh diagonalization.", &
2916 usage="REUSE_SCF_MOS T", default_l_val=.true.)
2917 CALL section_add_keyword(print_key, keyword)
2918 CALL keyword_release(keyword)
2919
2920 CALL keyword_create(keyword, __location__, name="VALIDATE_REUSE_SCF_MOS", &
2921 description="When KPOINTS_SOURCE SCF and REUSE_SCF_MOS are active, first build a "// &
2922 "full-mesh diagonalization reference and validate the reconstructed SCF MO "// &
2923 "subspaces against it before writing Wannier90 files. This diagnostic option is "// &
2924 "expensive and intended for development of symmetry-reconstructed Wannier90 "// &
2925 "exports.", &
2926 usage="VALIDATE_REUSE_SCF_MOS T", default_l_val=.false.)
2927 CALL section_add_keyword(print_key, keyword)
2928 CALL keyword_release(keyword)
2929
2930 CALL keyword_create(keyword, __location__, name="USE_BLOCH_PHASES", &
2931 description="Apply the CP2K Bloch-phase gauge to complete exported band subspaces "// &
2932 "and write an explicit identity .amn projection file for Wannier90. It is only "// &
2933 "valid when WANNIER_FUNCTIONS matches the number of exported bands; disentangled "// &
2934 "Wannier90 calculations still need explicit projections.", &
2935 usage="USE_BLOCH_PHASES T", default_l_val=.false.)
2936 CALL section_add_keyword(print_key, keyword)
2937 CALL keyword_release(keyword)
2938
2939 CALL keyword_create(keyword, __location__, name="ADDED_MOS", &
2940 variants=["ADDED_BANDS"], &
2941 description="Number of MOs/Bands added to the Band Structure calculation.", &
2942 default_i_val=0)
2943 CALL section_add_keyword(print_key, keyword)
2944 CALL keyword_release(keyword)
2945
2946 CALL keyword_create(keyword, __location__, name="EXCLUDE_BANDS", &
2947 description="List of Bands excluded in the Wannier calculation.", &
2948 usage="EXCLUDE_BANDS b1 b2 ...", n_var=-1, repeats=.true., &
2949 type_of_var=integer_t)
2950 CALL section_add_keyword(print_key, keyword)
2951 CALL keyword_release(keyword)
2952
2953 CALL keyword_create(keyword, __location__, name="WANNIER_FUNCTIONS", &
2954 description="Number of Wannier functions to be calculated. ", &
2955 usage="WANNIER_FUNCTIONS 6", n_var=1, default_i_val=0, &
2956 repeats=.true., type_of_var=integer_t)
2957 CALL section_add_keyword(print_key, keyword)
2958 CALL keyword_release(keyword)
2959
2960 END SUBROUTINE create_wannier_section
2961
2962! **************************************************************************************************
2963!> \brief ...
2964!> \param print_key ...
2965! **************************************************************************************************
2966 SUBROUTINE create_stm_section(print_key)
2967 TYPE(section_type), POINTER :: print_key
2968
2969 TYPE(keyword_type), POINTER :: keyword
2970
2971 NULLIFY (keyword)
2972
2973 CALL cp_print_key_section_create(print_key, __location__, "STM", &
2974 description="Controls the printing of cubes for the generation of STM images.", &
2975 print_level=debug_print_level, filename="")
2976 CALL keyword_create(keyword, __location__, name="stride", &
2977 description="The stride (X,Y,Z) used to write the cube file "// &
2978 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
2979 " 1 number valid for all components.", &
2980 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
2981 CALL section_add_keyword(print_key, keyword)
2982 CALL keyword_release(keyword)
2983
2984 CALL keyword_create(keyword, __location__, name="nlumo", &
2985 description="If the printkey is activated controls the number of additional lumos"// &
2986 " that are computed to be able to reproduce STM images obtained"// &
2987 " from positive bias (imaging unoccupied states)", &
2988 default_i_val=0)
2989 CALL section_add_keyword(print_key, keyword)
2990 CALL keyword_release(keyword)
2991
2992 CALL keyword_create(keyword, __location__, name="BIAS", &
2993 description="Bias energy for scanning tunneling microscopy (STM) image generation. "// &
2994 "Orbital densities are summed according to the bias energy. "// &
2995 "For negative values, states in the range ]EF+bias,EF] are summed, "// &
2996 "While positive values sum states in the range [EF,EF+bias[. "// &
2997 "If positive biases are used, sufficiently many unoccupied stated "// &
2998 "(see ADDED_MOS and NLUMO ) should be computed.", &
2999 n_var=-1, type_of_var=real_t, default_r_vals=[0.0_dp], unit_str='eV')
3000 CALL section_add_keyword(print_key, keyword)
3001 CALL keyword_release(keyword)
3002
3003 CALL keyword_create(keyword, __location__, name="TH_TORB", &
3004 description="Tip orbital symmetry in Tersoff-Hamann approximation to compute STM images", &
3005 repeats=.true., &
3006 default_i_val=orb_s, &
3007 usage="TH_TORB s dz2", &
3008 enum_c_vals=s2a("S", "PX", "PY", "PZ", "DXY", "DYZ", "DZX", "DX2", "DY2", "DZ2"), &
3010 enum_desc=s2a("s orbital", "px orbital", "py orbital", "pz orbital", &
3011 "dxy orbital", "dyz orbital", "dzx orbital", "x^2 orbital", "y^2 orbital", "z^2 orbital"))
3012 CALL section_add_keyword(print_key, keyword)
3013 CALL keyword_release(keyword)
3014
3015 CALL keyword_create(keyword, __location__, name="REF_ENERGY", &
3016 description="By default the reference energy is the Fermi energy. In order to compare"// &
3017 " with STS experiments, where specific energy ranges are addressed, here"// &
3018 " one can set a different reference energy."// &
3019 " The energy range is anyway controlled by the BIAS", &
3020 type_of_var=real_t, default_r_val=0.0_dp, unit_str='eV')
3021 CALL section_add_keyword(print_key, keyword)
3022 CALL keyword_release(keyword)
3023
3024 CALL keyword_create(keyword, __location__, name="APPEND", &
3025 description="append the cube files when they already exist", &
3026 default_l_val=.false., lone_keyword_l_val=.true.)
3027 CALL section_add_keyword(print_key, keyword)
3028 CALL keyword_release(keyword)
3029
3030 END SUBROUTINE create_stm_section
3031
3032! **************************************************************************************************
3033!> \brief ...
3034!> \param section ...
3035! **************************************************************************************************
3036 SUBROUTINE create_wfn_mix_section(section)
3037
3038 TYPE(section_type), POINTER :: section
3039
3040 TYPE(keyword_type), POINTER :: keyword
3041 TYPE(section_type), POINTER :: subsection
3042
3043 NULLIFY (subsection)
3044 NULLIFY (keyword)
3045
3046 cpassert(.NOT. ASSOCIATED(section))
3047
3048 CALL section_create(section, __location__, name="WFN_MIX", &
3049 description="A section that allows manipulation of the MO coeffs, "// &
3050 "e.g. for changing a ground state into an excited state. "// &
3051 "Starting from a copy of the original MOs, changes can be made "// &
3052 "by adding linear combinations of HOMO/LUMO of the original MOs to the result MOs. "// &
3053 "This method is called after an SCF optimization or before an RTP run if "// &
3054 "INITIAL_WFN=RESTART_WFN. Note that if called after an SCF optimization, a restart file "// &
3055 "with the mixed MOs is saved. This is not the case for an RTP with "// &
3056 "INITIAL_WFN=RESTART_WFN.", &
3057 n_keywords=1, n_subsections=0, repeats=.false.)
3058
3059 CALL keyword_create(keyword, __location__, name="OVERWRITE_MOS", &
3060 description="If set to True, the active molecular orbitals in memory will be replaced by the mixed wfn "// &
3061 "at the end of the wfn mixing procedure. For instance, you can then use this new set of MOs to perform "// &
3062 "RTP or EMD directly. Note that in the case of an RTP run with INITIAL_WFN=RESTART_WFN, the OVERWRITE_MOS "// &
3063 "keyword is not used.", &
3064 default_l_val=.false., lone_keyword_l_val=.true.)
3065 CALL section_add_keyword(section, keyword)
3066 CALL keyword_release(keyword)
3067
3068 CALL section_create(subsection, __location__, name="UPDATE", &
3069 description="Update a result MO with with a linear combination of original MOs."// &
3070 " This section can be repeated to build arbitrary linear combinations using repeatedly y=a*y+b*x. "// &
3071 "RESULT is (y), RESULT_SCALE is (a), ORIG is (x), ORIG_SCALE is (b)", &
3072 n_keywords=1, n_subsections=0, repeats=.true.)
3073
3074 CALL keyword_create(keyword, __location__, name="RESULT_MO_INDEX", &
3075 description="Index of the MO (y) to be modified. Counting down in energy: "// &
3076 "set to 1 for the highest MO, to 3 for the highest MO-2.", &
3077 usage="RESULT_MO_INDEX 1", type_of_var=integer_t, default_i_val=0)
3078 CALL section_add_keyword(subsection, keyword)
3079 CALL keyword_release(keyword)
3080
3081 CALL keyword_create(keyword, __location__, name="RESULT_MARKED_STATE", &
3082 description="Specifies the MO according to "// &
3083 "the marks set in MOLECULAR_STATES. The value corresponds to the repetition "// &
3084 "of MARK_STATES in MOLECULAR_STATES", &
3085 usage="RESULT_MARKED_STATE 1", type_of_var=integer_t, default_i_val=0)
3086 CALL section_add_keyword(subsection, keyword)
3087 CALL keyword_release(keyword)
3088
3089 CALL keyword_create(keyword, __location__, name="REVERSE_MO_INDEX", &
3090 description="Reverses the index order of the OCCUPIED and EXTERNAL MOs. With this keyword "// &
3091 "ORIG_MO_INDEX/RESULT_MO_INDEX 1 point to the lowest energy MO (instead of the highest) "// &
3092 "and counts up in energy. The VIRTUAL MOs indexing is unchanged.", &
3093 default_l_val=.false., lone_keyword_l_val=.true.)
3094 CALL section_add_keyword(subsection, keyword)
3095 CALL keyword_release(keyword)
3096
3097 CALL keyword_create(keyword, __location__, name="RESULT_SPIN_INDEX", &
3098 description="Spin of the MO (y) to be modified.", &
3099 enum_c_vals=s2a("Alpha", "Beta"), &
3100 enum_i_vals=[1, 2], & ! direct index in array
3101 default_i_val=1, &
3102 enum_desc=s2a("Majority spin", "Minority spin"))
3103 CALL section_add_keyword(subsection, keyword)
3104 CALL keyword_release(keyword)
3105
3106 CALL keyword_create(keyword, __location__, name="RESULT_SCALE", &
3107 description="Scaling factor of the result variable (a).", &
3108 usage="RESULT_SCALE 0.0", type_of_var=real_t)
3109 CALL section_add_keyword(subsection, keyword)
3110 CALL keyword_release(keyword)
3111
3112 CALL keyword_create(keyword, __location__, name="ORIG_MO_INDEX", &
3113 description="Index of the original MO (x). "// &
3114 "If ORIG_TYPE is OCCUPIED, it counts down in energy: set to 1 to point to "// &
3115 "the highest MO and to 3 for the highest MO-2. "// &
3116 "If ORIG_TYPE is VIRTUAL, it counts up in energy: set to 1 to point to "// &
3117 "the lowest virtual MO and to 3 for the lowest MO+2. "// &
3118 "If ORIG_TYPE is EXTERNAL, it counts down in energy for the external "// &
3119 "set of MOs: set to 1 to point to the highest MO and to 3 for the highest MO-2. "// &
3120 "Do not set to zero or negative values.", &
3121 usage="ORIG_MO_INDEX 1", type_of_var=integer_t, default_i_val=0)
3122 CALL section_add_keyword(subsection, keyword)
3123 CALL keyword_release(keyword)
3124
3125 CALL keyword_create(keyword, __location__, name="ORIG_MARKED_STATE", &
3126 description="Specifies the MO according to "// &
3127 "the marks set in MOLECULAR_STATES. The value corresponds to the repetition "// &
3128 "of MARK_STATES in MOLECULAR_STATES", &
3129 usage="ORIG_MARKED_STATE 1", type_of_var=integer_t, default_i_val=0)
3130 CALL section_add_keyword(subsection, keyword)
3131 CALL keyword_release(keyword)
3132
3133 CALL keyword_create(keyword, __location__, name="ORIG_SPIN_INDEX", &
3134 description="Spin of the MO (x) to be modified.", &
3135 enum_c_vals=s2a("Alpha", "Beta"), &
3136 enum_i_vals=[1, 2], & ! direct index in array
3137 default_i_val=1, &
3138 enum_desc=s2a("Majority spin", "Minority spin"))
3139 CALL section_add_keyword(subsection, keyword)
3140 CALL keyword_release(keyword)
3141
3142 CALL keyword_create(keyword, __location__, name="ORIG_SCALE", &
3143 description="Scaling factor of the original variable (b).", &
3144 usage="ORIG_SCALE 0.0", type_of_var=real_t)
3145 CALL section_add_keyword(subsection, keyword)
3146 CALL keyword_release(keyword)
3147
3148 CALL keyword_create(keyword, __location__, name="ORIG_TYPE", &
3149 description="Type of the original MO. Note that if ADDED_MOS was used in the "// &
3150 "SCF construction of the MO matrix, these extra MOs are also treated as OCCUPIED. ", &
3151 enum_c_vals=s2a("OCCUPIED", "VIRTUAL", 'EXTERNAL'), &
3152 usage="ORIG_TYPE OCCUPIED", &
3153 default_i_val=wfn_mix_orig_occ, &
3154 enum_desc=s2a("The original MO is the result of the SCF procedure. This can also contain "// &
3155 "unoccupied MOs if the SCF%ADDED_MOS keyword was used.", &
3156 "The original MO is taken from the result of additional MOs calculated a "// &
3157 "posteriori of the SCF by request of the user. E.g. by specifying print%mo_cubes%nlumo. ", &
3158 "The orginal MO is from an external .wfn file. Use the keyword "// &
3159 "ORIG_EXT_FILE_NAME to define its name."), &
3161 CALL section_add_keyword(subsection, keyword)
3162 CALL keyword_release(keyword)
3163
3164 CALL keyword_create(keyword, __location__, name="ORIG_EXT_FILE_NAME", &
3165 description="Name of the wavefunction file to read the original MO from. "// &
3166 "For instance, a restart wfn file from SCF calculation or an excited state from XAS_TDP calculation. "// &
3167 "If no file is specified, the run will crash. "// &
3168 "Currently, a RTP restart file (.rtpwfn) cannot be used as reference. "// &
3169 "Currently, this file SHALL have the basis set, number of MO and the same number of spin as the one "// &
3170 "from the SCF cycle.", &
3171 usage="ORIG_EXT_FILE_NAME <FILENAME>", &
3172 default_lc_val="EMPTY")
3173 CALL section_add_keyword(subsection, keyword)
3174 CALL keyword_release(keyword)
3175
3176 CALL section_add_subsection(section, subsection)
3177 CALL section_release(subsection)
3178
3179 END SUBROUTINE create_wfn_mix_section
3180
3181! **************************************************************************************************
3182!> \brief Creates the section for cube files related to the implicit Poisson solver.
3183!> \param section the section to be created
3184!> \par History
3185!> 03.2016 refactored from create_print_dft_section [Hossein Bani-Hashemian]
3186!> \author Mohammad Hossein Bani-Hashemian
3187! **************************************************************************************************
3188 SUBROUTINE create_implicit_psolver_section(section)
3189 TYPE(section_type), POINTER :: section
3190
3191 TYPE(keyword_type), POINTER :: keyword
3192 TYPE(section_type), POINTER :: print_key
3193
3194 cpassert(.NOT. ASSOCIATED(section))
3195 CALL section_create(section, __location__, name="IMPLICIT_PSOLVER", &
3196 description="Controls printing of cube files for data from the implicit "// &
3197 "(generalized) Poisson solver.", &
3198 citations=[banihashemian2016], &
3199 n_keywords=0, n_subsections=3, repeats=.false.)
3200
3201 NULLIFY (keyword, print_key)
3202
3203 ! dielectric constant function
3204 CALL cp_print_key_section_create(print_key, __location__, "DIELECTRIC_CUBE", &
3205 description="Controls the printing of a cube file with dielectric constant from "// &
3206 "the implicit (generalized) Poisson solver.", &
3207 print_level=high_print_level, filename="")
3208
3209 CALL keyword_create(keyword, __location__, name="stride", &
3210 description="The stride (X,Y,Z) used to write the cube file "// &
3211 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3212 " 1 number valid for all components.", &
3213 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
3214 CALL section_add_keyword(print_key, keyword)
3215 CALL keyword_release(keyword)
3216 CALL keyword_create(keyword, __location__, name="APPEND", &
3217 description="append the cube files when they already exist", &
3218 default_l_val=.false., lone_keyword_l_val=.true.)
3219 CALL section_add_keyword(print_key, keyword)
3220 CALL keyword_release(keyword)
3221 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
3222 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3223 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3224 CALL section_add_keyword(print_key, keyword)
3225 CALL keyword_release(keyword)
3226
3227 CALL section_add_subsection(section, print_key)
3228 CALL section_release(print_key)
3229
3230 ! dirichlet type constraints
3232 print_key, __location__, "DIRICHLET_BC_CUBE", &
3233 description="Controls the printing of cube files with unit step functions (constraints)"// &
3234 " representing Dirichlet-type (boundary) regions defined in the implicit (generalized) Poisson"// &
3235 " solver section. The regions remain unchanged throughout the calculations. If the Dirichlet"// &
3236 " regions are relatively large and/or the number of partitions is quite high, in order to save memory,"// &
3237 " generate the cube files in early steps and perform the rest of the calculations with this keyword"// &
3238 " switched off.", &
3239 print_level=high_print_level, filename="")
3240
3241 CALL keyword_create(keyword, __location__, name="TILE_CUBES", &
3242 description="Print tiles that tessellate the Dirichlet regions into cube files. If TRUE, "// &
3243 "generates cube files as many as the total number of tiles.", &
3244 usage="TILE_CUBES <logical>", &
3245 default_l_val=.false., lone_keyword_l_val=.true.)
3246 CALL section_add_keyword(print_key, keyword)
3247 CALL keyword_release(keyword)
3248 CALL keyword_create(keyword, __location__, name="stride", &
3249 description="The stride (X,Y,Z) used to write the cube file "// &
3250 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3251 " 1 number valid for all components.", &
3252 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
3253 CALL section_add_keyword(print_key, keyword)
3254 CALL keyword_release(keyword)
3255 CALL keyword_create(keyword, __location__, name="APPEND", &
3256 description="append the cube files when they already exist", &
3257 default_l_val=.false., lone_keyword_l_val=.true.)
3258 CALL section_add_keyword(print_key, keyword)
3259 CALL keyword_release(keyword)
3260 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
3261 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3262 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3263 CALL section_add_keyword(print_key, keyword)
3264 CALL keyword_release(keyword)
3265
3266 CALL section_add_subsection(section, print_key)
3267 CALL section_release(print_key)
3268
3269 ! charge introduced by Lagrange multipliers
3270 CALL cp_print_key_section_create(print_key, __location__, "DIRICHLET_CSTR_CHARGE_CUBE", &
3271 description="Controls the printing of cube files with penalty charges induced to "// &
3272 "Dirichlet regions by Lagrange multipliers (implicit Poisson solver).", &
3273 print_level=high_print_level, filename="")
3274
3275 CALL keyword_create(keyword, __location__, name="stride", &
3276 description="The stride (X,Y,Z) used to write the cube file "// &
3277 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3278 " 1 number valid for all components.", &
3279 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
3280 CALL section_add_keyword(print_key, keyword)
3281 CALL keyword_release(keyword)
3282 CALL keyword_create(keyword, __location__, name="APPEND", &
3283 description="append the cube files when they already exist", &
3284 default_l_val=.false., lone_keyword_l_val=.true.)
3285 CALL section_add_keyword(print_key, keyword)
3286 CALL keyword_release(keyword)
3287 CALL keyword_create(keyword, __location__, name="MAX_FILE_SIZE_MB", &
3288 description="Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3289 usage="MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3290 CALL section_add_keyword(print_key, keyword)
3291 CALL keyword_release(keyword)
3292
3293 CALL section_add_subsection(section, print_key)
3294 CALL section_release(print_key)
3295
3296 END SUBROUTINE create_implicit_psolver_section
3297
3298! **************************************************************************************************
3299!> \brief creates the interpolation section for the periodic QM/MM
3300!> \param section ...
3301!> \author tlaino
3302! **************************************************************************************************
3303 SUBROUTINE create_gspace_interp_section(section)
3304 TYPE(section_type), POINTER :: section
3305
3306 TYPE(keyword_type), POINTER :: keyword
3307 TYPE(section_type), POINTER :: print_key
3308
3309 cpassert(.NOT. ASSOCIATED(section))
3310 CALL section_create(section, __location__, name="interpolator", &
3311 description="controls the interpolation for the G-space term", &
3312 n_keywords=5, n_subsections=0, repeats=.false.)
3313
3314 NULLIFY (keyword, print_key)
3315
3316 CALL keyword_create(keyword, __location__, name="aint_precond", &
3317 description="the approximate inverse to use to get the starting point"// &
3318 " for the linear solver of the spline3 methods", &
3319 usage="aint_precond copy", &
3320 default_i_val=precond_spl3_aint, &
3321 enum_c_vals=s2a("copy", "spl3_nopbc_aint1", "spl3_nopbc_precond1", &
3322 "spl3_nopbc_aint2", "spl3_nopbc_precond2", "spl3_nopbc_precond3"), &
3325 CALL section_add_keyword(section, keyword)
3326 CALL keyword_release(keyword)
3327
3328 CALL keyword_create(keyword, __location__, name="precond", &
3329 description="The preconditioner used"// &
3330 " for the linear solver of the spline3 methods", &
3331 usage="precond copy", &
3332 default_i_val=precond_spl3_3, &
3333 enum_c_vals=s2a("copy", "spl3_nopbc_aint1", "spl3_nopbc_precond1", &
3334 "spl3_nopbc_aint2", "spl3_nopbc_precond2", "spl3_nopbc_precond3"), &
3337 CALL section_add_keyword(section, keyword)
3338 CALL keyword_release(keyword)
3339
3340 CALL keyword_create(keyword, __location__, name="eps_x", &
3341 description="accuracy on the solution for spline3 the interpolators", &
3342 usage="eps_x 1.e-15", default_r_val=1.e-10_dp)
3343 CALL section_add_keyword(section, keyword)
3344 CALL keyword_release(keyword)
3345
3346 CALL keyword_create(keyword, __location__, name="eps_r", &
3347 description="accuracy on the residual for spline3 the interpolators", &
3348 usage="eps_r 1.e-15", default_r_val=1.e-10_dp)
3349 CALL section_add_keyword(section, keyword)
3350 CALL keyword_release(keyword)
3351
3352 CALL keyword_create(keyword, __location__, name="max_iter", &
3353 variants=['maxiter'], &
3354 description="the maximum number of iterations", &
3355 usage="max_iter 200", default_i_val=100)
3356 CALL section_add_keyword(section, keyword)
3357 CALL keyword_release(keyword)
3358
3359 NULLIFY (print_key)
3360 CALL cp_print_key_section_create(print_key, __location__, "conv_info", &
3361 description="if convergence information about the linear solver"// &
3362 " of the spline methods should be printed", &
3363 print_level=medium_print_level, each_iter_names=s2a("SPLINE_FIND_COEFFS"), &
3364 each_iter_values=[10], filename="__STD_OUT__", &
3365 add_last=add_last_numeric)
3366 CALL section_add_subsection(section, print_key)
3367 CALL section_release(print_key)
3368
3369 END SUBROUTINE create_gspace_interp_section
3370
3371END MODULE input_cp2k_print_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 vandevondele2003
integer, save, public bengtsson1999
integer, save, public kunert2003
integer, save, public iannuzzi2007
integer, save, public yin2017
integer, save, public stewart2007
integer, save, public holmberg2017
integer, save, public vandevondele2006
integer, save, public golze2017b
integer, save, public caldeweyher2020
integer, save, public krack2002
integer, save, public vandevondele2005a
integer, save, public caldeweyher2019
integer, save, public kuhne2007
integer, save, public golze2017a
integer, save, public schiffmann2015
integer, save, public lippert1999
integer, save, public eriksen2020
integer, save, public dewar1977
integer, save, public avezac2005
integer, save, public vanvoorhis2015
integer, save, public repasky2002
integer, save, public weber2008
integer, save, public andreussi2012
integer, save, public iannuzzi2006
integer, save, public iannuzzi2005
integer, save, public rocha2006
integer, save, public lippert1997
integer, save, public holmberg2018
integer, save, public fattebert2002
integer, save, public andermatt2016
integer, save, public merlot2014
integer, save, public thiel1992
integer, save, public pracht2019
integer, save, public ehrhardt1985
integer, save, public becke1988b
integer, save, public perdew1981
integer, save, public knizia2013
integer, save, public shigeta2001
integer, save, public stewart1982
integer, save, public schenter2008
integer, save, public lu2004
integer, save, public dudarev1997
integer, save, public heinzmann1976
integer, save, public brelaz1979
integer, save, public krack2000
integer, save, public dewar1985
integer, save, public banihashemian2016
integer, save, public stewart1989
integer, save, public brehm2018
integer, save, public kolafa2004
integer, save, public dudarev1998
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
character(len=default_string_length) function, public cp_openpmd_get_default_extension()
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public debug_print_level
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:1210
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 jacobian_fd1_central
integer, parameter, public smear_fermi_dirac
integer, parameter, public e_dens_total_hard_approx
integer, parameter, public xas_1s_type
integer, parameter, public core_guess
integer, parameter, public embed_grid_angstrom
integer, parameter, public bqb_opt_quick
integer, parameter, public do_method_ofgpw
integer, parameter, public do_bch
integer, parameter, public do_admm_purify_mo_no_diag
integer, parameter, public do_etrs
integer, parameter, public do_iaoloc_energy
integer, parameter, public xas_4p_type
integer, parameter, public do_se_lr_ewald_gks
integer, parameter, public mopac_guess
integer, parameter, public oe_saop
integer, parameter, public do_admm_aux_exch_func_opt_libxc
integer, parameter, public do_gapw_gct
integer, parameter, public do_gapw_gcs
integer, parameter, public rel_zora_full
integer, parameter, public ref_charge_atomic
integer, parameter, public xas_3s_type
integer, parameter, public do_pade
integer, parameter, public embed_steep_desc
integer, parameter, public radius_vdw
integer, parameter, public eri_operator_erf
integer, parameter, public outer_scf_optimizer_sd
integer, parameter, public do_s2_restraint
integer, parameter, public do_admm_purify_none
integer, parameter, public orb_dxy
integer, parameter, public do_method_rigpw
integer, parameter, public cholesky_restore
integer, parameter, public do_s2_constraint
integer, parameter, public ot_chol_irac
integer, parameter, public cdft_beta_constraint
integer, parameter, public use_mom_ref_user
integer, parameter, public broyden_type_2_explicit_ls
integer, parameter, public rel_pot_full
integer, parameter, public cdft_magnetization_constraint
integer, parameter, public outer_scf_optimizer_bisect
integer, parameter, public outer_scf_optimizer_secant
integer, parameter, public orb_pz
integer, parameter, public wfi_frozen_method_nr
integer, parameter, public smear_energy_window
integer, parameter, public do_method_gpw
integer, parameter, public ls_3pnt
integer, parameter, public diag_block_krylov
integer, parameter, public qiskit_solver
integer, parameter, public becke_cutoff_element
integer, parameter, public gapw_1c_large
integer, parameter, public do_method_pdg
integer, parameter, public do_admm_purify_none_dm
integer, parameter, public wfi_linear_wf_method_nr
integer, parameter, public no_solver
integer, parameter, public xas_3d_type
integer, parameter, public wfi_linear_p_method_nr
integer, parameter, public outer_scf_cdft_constraint
integer, parameter, public wfi_linear_ps_method_nr
integer, parameter, public do_method_pnnl
integer, parameter, public wannier_projection
integer, parameter, public do_ddapc_constraint
integer, parameter, public mao_projection
integer, parameter, public broyden_type_1_explicit
integer, parameter, public xas_not_excited
integer, parameter, public use_mom_ref_com
integer, parameter, public do_se_lr_none
integer, parameter, public ehrenfest
integer, parameter, public no_guess
integer, parameter, public eri_method_full_gpw
integer, parameter, public wfn_mix_orig_virtual
integer, parameter, public xas_dscf
integer, parameter, public casci_canonical
integer, parameter, public wfi_use_prev_rho_r_method_nr
integer, parameter, public broyden_type_2_ls
integer, parameter, public use_restart_wfn
integer, parameter, public do_admm_purify_mcweeny
integer, parameter, public jacobian_fd2
integer, parameter, public broyden_type_1
integer, parameter, public tddfpt_singlet
integer, parameter, public xas_none
integer, parameter, public do_lri_inv_auto
integer, parameter, public radius_default
integer, parameter, public do_se_lr_ewald
integer, parameter, public outer_scf_optimizer_broyden
integer, parameter, public atomic_guess
integer, parameter, public do_admm_blocking_purify_full
integer, parameter, public plus_u_lowdin
integer, parameter, public broyden_type_1_explicit_ls
integer, parameter, public ot_algo_irac
integer, parameter, public gto_cartesian
integer, parameter, public outer_scf_basis_center_opt
integer, parameter, public gto_spherical
integer, parameter, public cholesky_dbcsr
integer, parameter, public broyden_type_2_explicit
integer, parameter, public kg_tnadd_none
integer, parameter, public do_se_is_kdso_d
integer, parameter, public gapw_1c_medium
integer, parameter, public do_admm_aux_exch_func_sx_libxc
integer, parameter, public xas_4s_type
integer, parameter, public admm2_type
integer, parameter, public xas_tp_xhh
integer, parameter, public outer_scf_s2_constraint
integer, parameter, public manual_selection
integer, parameter, public do_lri_opt_coeff
integer, parameter, public ot_algo_taylor_or_diag
integer, parameter, public sic_list_all
integer, parameter, public wfi_use_guess_method_nr
integer, parameter, public ot_poly_irac
integer, parameter, public history_guess
integer, parameter, public cholesky_off
integer, parameter, public cdft_charge_constraint
integer, parameter, public do_cn
integer, parameter, public smear_list
integer, parameter, public kg_tnadd_embed_ri
integer, parameter, public tddfpt_excitations
integer, parameter, public orb_dz2
integer, parameter, public jacobian_fd1
integer, parameter, public oe_none
integer, parameter, public broyden_type_2
integer, parameter, public kg_tnadd_embed
integer, parameter, public sic_eo
integer, parameter, public xas_2p_type
integer, parameter, public sccs_derivative_cd5
integer, parameter, public ot_mini_cg
integer, parameter, public xas_dip_len
integer, parameter, public do_admm_aux_exch_func_bee
integer, parameter, public bqb_opt_normal
integer, parameter, public ot_precond_full_kinetic
integer, parameter, public cholesky_reduce
integer, parameter, public bqb_opt_off
integer, parameter, public xas_dip_vel
integer, parameter, public rel_zora_mp
integer, parameter, public eri_operator_gaussian
integer, parameter, public mao_basis_orb
integer, parameter, public plus_u_mulliken_charges
integer, parameter, public wfi_gext_proj_qtr_nr
integer, parameter, public high_spin_roks
integer, parameter, public tddfpt_lanczos
integer, parameter, public tddfpt_triplet
integer, parameter, public use_scf_wfn
integer, parameter, public cholesky_inverse
integer, parameter, public no_admm_type
integer, parameter, public do_lri_opt_all
integer, parameter, public rel_zora
integer, parameter, public do_admm_blocked_projection
integer, parameter, public kg_tnadd_atomic
integer, parameter, public orb_s
integer, parameter, public ot_mini_diis
integer, parameter, public do_admm_basis_projection
integer, parameter, public do_ppl_grid
integer, parameter, public embed_level_shift
integer, parameter, public wfn_mix_orig_external
integer, parameter, public diag_ot
integer, parameter, public xas_2s_type
integer, parameter, public xas_tp_xfh
integer, parameter, public tddfpt_spin_flip
integer, parameter, public do_method_rm1
integer, parameter, public outer_scf_ddapc_constraint
integer, parameter, public orb_py
integer, parameter, public ot_precond_solver_default
integer, parameter, public do_admm_aux_exch_func_default_libxc
integer, parameter, public xas_tdp_by_kind
integer, parameter, public e_dens_total_density
integer, parameter, public do_admm_aux_exch_func_opt
integer, parameter, public gapw_1c_small
integer, parameter, public do_admm_aux_exch_func_none
integer, parameter, public outer_scf_becke_constraint
integer, parameter, public bqb_opt_exhaustive
integer, parameter, public do_admm_purify_cauchy_subspace
integer, parameter, public do_method_pm3
integer, parameter, public plus_u_mulliken
integer, parameter, public mao_basis_ext
integer, parameter, public radius_user
integer, parameter, public embed_resp
integer, parameter, public kg_color_greedy
integer, parameter, public random_guess
integer, parameter, public xas_3p_type
integer, parameter, public xas_tp_fh
integer, parameter, public do_admm_aux_exch_func_bee_libxc
integer, parameter, public eri_method_gpw_ht
integer, parameter, public xas_tp_flex
integer, parameter, public do_iaoloc_pm4
integer, parameter, public ot_precond_full_single
integer, parameter, public admm1_type
integer, parameter, public do_iaoloc_l1
integer, parameter, public embed_quasi_newton
integer, parameter, public do_admm_aux_exch_func_pbex_libxc
integer, parameter, public do_iaoloc_enone
integer, parameter, public xas_4f_type
integer, parameter, public ot_precond_solver_inv_chol
integer, parameter, public kg_color_dsatur
integer, parameter, public do_lri_opt_exps
integer, parameter, public shape_function_density
integer, parameter, public do_method_mndo
integer, parameter, public outer_scf_hirshfeld_constraint
integer, parameter, public radius_covalent
integer, parameter, public gapw_1c_orb
integer, parameter, public do_admm_aux_exch_func_default
integer, parameter, public do_potential_truncated
integer, parameter, public jacobian_fd1_backward
integer, parameter, public do_pwgrid_ns_fullspace
integer, parameter, public mao_basis_prim
integer, parameter, public gapw_1c_very_large
integer, parameter, public orb_dyz
integer, parameter, public weight_type_unit
integer, parameter, public do_method_gapw
integer, parameter, public ot_precond_none
integer, parameter, public admms_type
integer, parameter, public do_admm_charge_constrained_projection
integer, parameter, public jacobian_fd2_backward
integer, parameter, public eri_operator_erfc
integer, parameter, public ls_2pnt
integer, parameter, public rel_dkh
integer, parameter, public ls_none
integer, parameter, public do_admm_purify_cauchy
integer, parameter, public embed_none
integer, parameter, public do_iaoloc_pm2
integer, parameter, public embed_fa
integer, parameter, public ot_precond_full_single_inverse
integer, parameter, public sccs_fattebert_gygi
integer, parameter, public do_potential_id
integer, parameter, public rel_trans_full
integer, parameter, public sccs_derivative_cd7
integer, parameter, public rel_trans_molecule
integer, parameter, public ot_lwdn_irac
integer, parameter, public xas_4d_type
integer, parameter, public tddfpt_davidson
integer, parameter, public diag_filter_matrix
integer, parameter, public do_lri_pseudoinv_svd
integer, parameter, public do_method_mndod
integer, parameter, public rel_trans_atom
integer, parameter, public ls_gold
integer, parameter, public do_gapw_log
integer, parameter, public do_method_am1
integer, parameter, public embed_diff
integer, parameter, public weight_type_mass
integer, parameter, public use_rt_restart
integer, parameter, public xas_tdp_by_index
integer, parameter, public do_method_dftb
integer, parameter, public do_iaoloc_occ
integer, parameter, public sparse_guess
integer, parameter, public orb_px
integer, parameter, public diag_block_davidson
integer, parameter, public shape_function_gaussian
integer, parameter, public wfi_use_prev_wf_method_nr
integer, parameter, public radius_single
integer, parameter, public do_spin_density
integer, parameter, public sccs_derivative_fft
integer, parameter, public use_mom_ref_zero
integer, parameter, public outer_scf_optimizer_newton_ls
integer, parameter, public do_potential_coulomb
integer, parameter, public gaussian
integer, parameter, public outer_scf_optimizer_none
integer, parameter, public outer_scf_optimizer_newton
integer, parameter, public oe_lb
integer, parameter, public rel_pot_erfc
integer, parameter, public wfi_ps_method_nr
integer, parameter, public rel_none
integer, parameter, public do_pwgrid_spherical
integer, parameter, public ref_charge_mulliken
integer, parameter, public general_roks
integer, parameter, public orb_dzx
integer, parameter, public wfi_gext_proj_nr
integer, parameter, public xas_tp_hh
integer, parameter, public do_se_lr_ewald_r3
integer, parameter, public do_taylor
integer, parameter, public eri_operator_trunc
integer, parameter, public do_se_is_kdso
integer, parameter, public embed_grid_bohr
integer, parameter, public outer_scf_none
integer, parameter, public do_admm_purify_mo_diag
integer, parameter, public do_method_lrigpw
integer, parameter, public diag_standard
integer, parameter, public do_em
integer, parameter, public sic_mauri_us
integer, parameter, public orb_dy2
integer, parameter, public do_potential_short
integer, parameter, public sic_none
integer, parameter, public do_ppl_analytic
integer, parameter, public do_se_is_slater
integer, parameter, public eri_operator_coulomb
integer, parameter, public becke_cutoff_global
integer, parameter, public wfi_aspc_nr
integer, parameter, public cdft_alpha_constraint
integer, parameter, public do_lri_inv
integer, parameter, public do_method_xtb
integer, parameter, public broyden_type_1_ls
integer, parameter, public do_ddapc_restraint
integer, parameter, public wfn_mix_orig_occ
integer, parameter, public restart_guess
integer, parameter, public oe_sic
integer, parameter, public bqb_opt_patient
integer, parameter, public do_pwgrid_ns_halfspace
integer, parameter, public eri_operator_yukawa
integer, parameter, public sccs_derivative_cd3
integer, parameter, public do_method_pm6fm
integer, parameter, public rel_sczora_mp
integer, parameter, public tddfpt_spin_cons
integer, parameter, public admmq_type
integer, parameter, public e_dens_soft_density
integer, parameter, public sccs_andreussi
integer, parameter, public ot_precond_s_inverse
integer, parameter, public sic_ad
integer, parameter, public ot_mini_broyden
integer, parameter, public do_admm_exch_scaling_none
integer, parameter, public orb_dx2
integer, parameter, public do_arnoldi
integer, parameter, public ot_precond_solver_update
integer, parameter, public xes_tp_val
integer, parameter, public do_full_density
integer, parameter, public admmp_type
integer, parameter, public do_method_gapw_xc
integer, parameter, public outer_scf_optimizer_diis
integer, parameter, public ot_mini_sd
integer, parameter, public do_admm_exch_scaling_merlot
integer, parameter, public real_time_propagation
integer, parameter, public numerical
integer, parameter, public do_method_pm6
integer, parameter, public oe_gllb
integer, parameter, public ot_precond_full_all
integer, parameter, public ot_precond_solver_direct
integer, parameter, public wfi_use_prev_p_method_nr
integer, parameter, public no_excitations
integer, parameter, public do_lri_pseudoinv_diag
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 builds the distribution section of the input
subroutine, public create_distribution_section(section)
Creates the distribution section.
function that build the dft section of the input
subroutine, public create_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
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_kpoint_set_section(section, section_name)
...
subroutine, public create_localize_section(section)
parameters fo the localization of wavefunctions
subroutine, public print_wanniers(section)
Controls the printing of the basic info coming from the LOCALIZE section.
input for the linear scaling (LS) section
subroutine, public create_ls_scf_section(section)
creates the linear scaling scf section
creates the mm section of the input
subroutine, public create_dipoles_section(print_key, label, print_level)
creates the input section for the qs part
subroutine, public create_neighbor_lists_section(section)
This section specifies the input parameters for generation of neighbor lists.
function that build the poisson section of the input
subroutine, public create_poisson_section(section)
Creates the Poisson section.
subroutine, public create_gspace_interp_section(section)
creates the interpolation section for the periodic QM/MM
function that build the print section of the dft input
subroutine, public add_dos_keywords(print_key, xas_mode)
Add projected-DOS related keywords to a DOS or XAS PDOS print section.
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
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
subroutine, public create_cdft_control_section(section)
Creates the input section for defining CDFT constraints.
function that build the dft section of the input
subroutine, public create_dftb_control_section(section)
...
subroutine, public create_xtb_control_section(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 dft section of the input
subroutine, public create_print_voronoi_section(print_key)
Create the print voronoi section.
function that build the xc section of the input
subroutine, public create_xc_section(section)
creates the input section for the xc part
subroutine, public create_xc_fun_section(section)
creates the structure of the section needed to select the xc functional
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 logical_t
integer, parameter, public char_t
integer, parameter, public integer_t
integer, parameter, public enum_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
K-point MO wavefunction dump to TEXT file for post-processing (PDOS, etc.)
integer, parameter, public mokp_ao_gto_basis
integer, parameter, public mokp_ao_overlap_matrix
This module defines the grid data type and some basic operations on it.
Definition pw_grids.F:36
integer, parameter, public do_pw_grid_blocked_false
Definition pw_grids.F:77
integer, parameter, public do_pw_grid_blocked_true
Definition pw_grids.F:77
integer, parameter, public do_pw_grid_blocked_free
Definition pw_grids.F:77
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
module that contains the definitions of the scf types
subroutine, public create_mixing_section(section, ls_scf)
Create CP2K input section for the mixing of the density matrix to be used only with diagonalization m...
subroutine, public create_filtermatrix_section(section)
Input section for filter matrix diagonalisation method.
Definition qs_fb_input.F:37
manage control variables for the maximum overlap method
subroutine, public create_mom_section(section)
Create CP2K input section for variable occupancy using the Maximum Overlap Method....
Utilities for string manipulations.
represent a keyword in the input
represent a section of the input file