79 numerical,
oe_gllb,
oe_lb,
oe_none,
oe_saop,
oe_sic,
orb_dx2,
orb_dxy,
orb_dy2,
orb_dyz, &
172#include "./base/base_uses.f90"
177 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_print_dft'
192 TYPE(
section_type),
POINTER :: print_key, sub_print_key, subsection
194 cpassert(.NOT.
ASSOCIATED(section))
196 description=
"Section of possible print options in DFT code.", &
197 n_keywords=0, n_subsections=1, repeats=.false.)
199 NULLIFY (print_key, keyword, subsection)
202 description=
"Controls the printing of the banner of the MM program", &
208 description=
"Controls the printing of a file with all basis sets used.", &
214 description=
"Controls the printing of the kinetic energy", &
220 description=
"Print all derivatives after the DFT calculation", &
224 description=
"Specify the number of digits used to print derivatives", &
233 description=
"Controls the printing of the neighbor lists", &
237 description=
"Activates the printing of the orbital "// &
238 "orbital neighbor lists, "// &
239 "i.e. the overlap neighbor lists", &
240 default_l_val=.false., &
241 lone_keyword_l_val=.true.)
246 name=
"sab_aux_fit", &
247 description=
"Activates the printing of the orbital "// &
248 "orbital neighbor lists wavefunction fitting basis, "// &
249 "i.e. the overlap neighbor lists", &
250 default_l_val=.false., &
251 lone_keyword_l_val=.true.)
256 name=
"sab_aux_fit_vs_orb", &
257 description=
"Activates the printing of the orbital "// &
258 "orbital mixed neighbor lists of wavefunction fitting basis, "// &
259 "and the orbital basis, i.e. the overlap neighbor lists", &
260 default_l_val=.false., &
261 lone_keyword_l_val=.true.)
267 description=
"Activates the printing of the vdW SCP "// &
269 default_l_val=.false., &
270 lone_keyword_l_val=.true.)
276 description=
"Activates the printing of the vdW "// &
277 "neighbor lists (from DFT, DFTB, SE), "// &
278 "i.e. the dispersion neighbor lists", &
279 default_l_val=.false., &
280 lone_keyword_l_val=.true.)
286 description=
"Activates the printing of the "// &
287 "neighbor lists used for coordination numbers in vdW DFT-D3", &
288 default_l_val=.false., &
289 lone_keyword_l_val=.true.)
295 description=
"Activates the printing of the orbital "// &
296 "nuclear attraction neighbor lists (erfc potential)", &
297 default_l_val=.false., &
298 lone_keyword_l_val=.true.)
304 description=
"Activates the printing of the orbital "// &
305 "GTH-PPL neighbor lists (local part of the "// &
306 "Goedecker-Teter-Hutter pseudo potentials)", &
307 default_l_val=.false., &
308 lone_keyword_l_val=.true.)
314 description=
"Activates the printing of the orbital "// &
315 "GTH-PPNL neighbor lists (non-local part of the "// &
316 "Goedecker-Teter-Hutter pseudo potentials)", &
317 default_l_val=.false., &
318 lone_keyword_l_val=.true.)
324 description=
"Activates the printing of the orbital "// &
325 "PAW-projector neighbor lists (only GAPW)", &
326 default_l_val=.false., &
327 lone_keyword_l_val=.true.)
333 description=
"Activates the printing of the two-center "// &
334 "neighbor lists for Coulomb type interactions in NDDO ", &
335 default_l_val=.false., &
336 lone_keyword_l_val=.true.)
342 description=
"Activates the printing of the long-range SE correction "// &
343 "neighbor lists (only when doing long-range SE with integral scheme KDSO and KDSO-d)", &
344 default_l_val=.false., lone_keyword_l_val=.true.)
350 description=
"Activates the printing of the DFTB Ewald "// &
352 default_l_val=.false., &
353 lone_keyword_l_val=.true.)
359 description=
"Activates the printing of the xTB sr-Coulomb "// &
361 default_l_val=.false., &
362 lone_keyword_l_val=.true.)
368 description=
"Activates the printing of core interaction "// &
370 default_l_val=.false., &
371 lone_keyword_l_val=.true.)
377 description=
"Activates the printing of XB interaction from (xTB) "// &
379 default_l_val=.false., &
380 lone_keyword_l_val=.true.)
385 name=
"sab_xtb_nonbond", &
386 description=
"Activates the printing of nonbonded interaction from (xTB) "// &
388 default_l_val=.false., &
389 lone_keyword_l_val=.true.)
395 description=
"Activates the printing of RI orbital-orbital "// &
397 default_l_val=.false., &
398 lone_keyword_l_val=.true.)
404 description=
"Activates the printing of RI basis-projector interaction "// &
406 default_l_val=.false., &
407 lone_keyword_l_val=.true.)
413 description=
"Activates the printing of the nuclear orbital "// &
414 "nuclear repulsion neighbor lists (erfc potential)", &
415 default_l_val=.false., &
416 lone_keyword_l_val=.true.)
424 description=
"Activates the printing of the subcells used for the "// &
425 "generation of neighbor lists.", unit_str=
"angstrom", &
431 description=
"Controls the printing of the ao (i.e. contracted gaussian) matrices (debug).", &
434 description=
"Print only the matrix data, not the row and column headers", &
435 default_l_val=.false., lone_keyword_l_val=.true.)
440 description=
"Specify the number of digits used to print the AO matrices", &
444 CALL keyword_create(keyword, __location__, name=
"CORE_HAMILTONIAN", &
445 description=
"If the printkey is activated controls the printing of the hamiltonian matrix", &
446 default_l_val=.false., lone_keyword_l_val=.true.)
450 description=
"If the printkey is activated controls the printing of the density (P) matrix", &
451 default_l_val=.false., lone_keyword_l_val=.true.)
455 CALL keyword_create(keyword, __location__, name=
"KINETIC_ENERGY", &
456 description=
"If the printkey is activated controls the printing of the kinetic energy matrix", &
457 default_l_val=.false., lone_keyword_l_val=.true.)
460 CALL keyword_create(keyword, __location__, name=
"KOHN_SHAM_MATRIX", &
461 description=
"If the printkey is activated controls the printing of the Kohn-Sham matrix", &
462 default_l_val=.false., lone_keyword_l_val=.true.)
466 keyword, __location__, name=
"MATRIX_VXC", &
467 description=
"If the printkey is activated compute and print the matrix of the exchange and correlation potential. "// &
468 "Only the GGA part for GPW is printed", &
469 default_l_val=.false., lone_keyword_l_val=.true.)
473 description=
"If the printkey is activated controls the printing of the orthogonalization matrix", &
474 default_l_val=.false., lone_keyword_l_val=.true.)
478 description=
"If the printkey is activated controls the printing of the overlap matrix", &
479 default_l_val=.false., lone_keyword_l_val=.true.)
483 CALL keyword_create(keyword, __location__, name=
"COMMUTATOR_HR", &
484 description=
"Controls the printing of the [H,r] commutator matrix", &
485 default_l_val=.false., lone_keyword_l_val=.true.)
489 CALL keyword_create(keyword, __location__, name=
"FERMI_CONTACT", &
490 description=
"If the printkey is activated controls the printing of the Fermi contact matrix", &
491 default_l_val=.false., lone_keyword_l_val=.true.)
495 keyword, __location__, name=
"PSO", &
496 description=
"If the printkey is activated controls the printing of the paramagnetic spin-orbit matrices", &
497 default_l_val=.false., lone_keyword_l_val=.true.)
501 keyword, __location__, name=
"EFG", &
502 description=
"If the printkey is activated controls the printing of the electric field gradient matrices", &
503 default_l_val=.false., lone_keyword_l_val=.true.)
506 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_ENERGY", &
507 description=
"If the printkey is activated controls the printing of the potential energy matrix", &
508 default_l_val=.false., lone_keyword_l_val=.true.)
512 description=
"If the printkey is activated controls the printing of the OCE HARD matrix", &
513 default_l_val=.false., lone_keyword_l_val=.true.)
517 description=
"If the printkey is activated controls the printing of the OCE SOFT matrix", &
518 default_l_val=.false., lone_keyword_l_val=.true.)
522 description=
"If the printkey is activated controls the printing of the w matrix", &
523 default_l_val=.false., lone_keyword_l_val=.true.)
526 CALL keyword_create(keyword, __location__, name=
"W_MATRIX_AUX_FIT", &
527 description=
"If the printkey is activated controls the printing of the w matrix", &
528 default_l_val=.false., lone_keyword_l_val=.true.)
532 description=
"If the printkey is activated controls the printing "// &
533 "of derivatives (for the matrixes that support this)", &
534 default_l_val=.false., lone_keyword_l_val=.true.)
541 print_key, __location__,
"MO", &
542 description=
"Controls the printing of the molecular orbital (MO) information. The requested MO information "// &
543 "is printed for all occupied MOs by default. Use the MO_INDEX_RANGE keyword to restrict the number "// &
544 "of the MOs or to print the MO information for unoccupied MOs. With diagonalization, an explicit "// &
545 "positive range or -1 as its last index makes the requested MOs available automatically, up to the "// &
546 "AO basis size. ADDED_MOS can make extra MOs available independently of this print request. With OT, "// &
547 "it is sufficient to specify the desired MO_INDEX_RANGE. The OT eigensolver can be controlled with "// &
548 "the EPS_LUMO and MAX_ITER_LUMO keywords in the SCF section.", &
551 description=
"Print the MOs in the Cartesian basis instead of the default spherical basis.", &
552 default_l_val=.false., lone_keyword_l_val=.true.)
555 CALL keyword_create(keyword, __location__, name=
"CARTESIAN_OVERLAP", &
556 description=
"Print the Cartesian overlap matrix in line with Cartesian MO coefficients.", &
557 default_l_val=.false., lone_keyword_l_val=.true.)
561 variants=
s2a(
"EIGENVALUES",
"EIGVALS"), &
562 description=
"Print the MO energies (eigenvalues).", &
563 default_l_val=.false., lone_keyword_l_val=.true.)
567 variants=
s2a(
"EIGENVECTORS",
"EIGVECS"), &
568 description=
"Print the MO coefficients (eigenvectors).", &
569 default_l_val=.false., lone_keyword_l_val=.true.)
572 CALL keyword_create(keyword, __location__, name=
"OCCUPATION_NUMBERS", &
573 variants=
s2a(
"OCCNUMS"), &
574 description=
"Print the MO occupation numbers.", &
575 default_l_val=.false., lone_keyword_l_val=.true.)
578 CALL keyword_create(keyword, __location__, name=
"OCCUPATION_NUMBERS_STATS", &
579 variants=
s2a(
"OCCNUMSTATS"), &
580 description=
"Print some stats (max number of occupied MOs, etc.) of the MO occupation numbers."// &
581 " First logical toggles stats printing, first real is the occupied threshold.", &
582 type_of_var=
char_t, n_var=-1, &
583 default_c_vals=[
".FALSE.",
"1.0E-6 "], &
584 lone_keyword_c_vals=[
".TRUE."], &
585 usage=
"OCCUPATION_NUMBERS_STATS {Logical} [{Real}]")
589 description=
"Specify the number of digits used to print the MO information.", &
594 name=
"MO_INDEX_RANGE", &
595 variants=
s2a(
"MO_RANGE",
"RANGE"), &
596 description=
"Print only the requested subset of MOs. The indices of the first and "// &
597 "the last MO have to be specified to define the range. A positive range makes the "// &
598 "requested MOs available automatically. -1 as the last MO index makes and prints all "// &
599 "available orbitals with diagonalization and all orbitals with OT.", &
603 default_i_vals=[0, 0], &
604 usage=
"MO_INDEX_RANGE 10 15")
611 description=
"Write the molecular orbitals in Molden file format, for visualisation.", &
614 description=
"Unit for coordinates and cell in the MOLDEN file.", &
615 usage=
"UNIT ANGSTROM", &
616 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
617 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
618 enum_i_vals=[1, 2], &
623 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
624 usage=
"WRITE_CELL T", &
625 default_l_val=.false., lone_keyword_l_val=.true.)
629 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
630 usage=
"WRITE_PSEUDO T", &
631 default_l_val=.false., lone_keyword_l_val=.true.)
635 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
636 "setting their atomic number to zero.", &
637 usage=
"MARK_GHOST T", &
638 default_l_val=.false., lone_keyword_l_val=.true.)
642 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
643 usage=
"NDIGITS {int}", &
648 description=
"Representation of Gaussian-type orbitals", &
650 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
652 "Cartesian Gaussian orbitals. Use with caution", &
653 "Spherical Gaussian orbitals. Incompatible with VMD"), &
658 description=
"Number of unoccupied orbitals to include in the Molden file. "// &
659 "For OT calculations, the requested virtual orbitals are generated after "// &
660 "SCF using the OT eigensolver. For diagonalization calculations, "// &
661 "SCF%ADDED_MOS is increased if needed to make the requested unoccupied "// &
662 "orbitals available. 0 means no virtual orbitals, -1 means all available.", &
663 usage=
"NLUMO integer", &
671 description=
"Write k-point MO information to `.mokp` file. "// &
672 "The information of cell and k-points is given at first. Then, "// &
673 "the coefficients of molecular orbitals are always written, "// &
674 "while users can choose whether to write GTO basis information "// &
675 "or explicit overlap matrices through the `AO_EXPORT_TYPE` keyword.", &
678 description=
"Unit for coordinates and cell in the .mokp file.", &
679 usage=
"UNIT ANGSTROM", &
680 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
681 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
682 enum_i_vals=[1, 2], &
687 description=
"Specifies the number of significant digits retained.", &
688 usage=
"NDIGITS {int}", &
692 CALL keyword_create(keyword, __location__, name=
"AO_EXPORT_TYPE", &
693 description=
"How AO information is provided for interpreting MO coefficients. "// &
694 "GTO_BASIS writes basis set exponents/coefficients (compact, post-processing reconstructs S(k)). "// &
695 "OVERLAP_MATRIX writes S(k) directly (larger file, ready to use).", &
697 enum_c_vals=
s2a(
"GTO_BASIS",
"OVERLAP_MATRIX"), &
698 enum_desc=
s2a(
"Write GTO basis set definition (MOLDEN denormalization convention)", &
699 "Write explicit overlap matrices S(k) for all k-points"), &
706 CALL create_mo_section(print_key,
"MO_CUBES",
"cube", [2, 2, 2],
"STRIDE 1 1 1",
high_print_level,
"write_cube")
708 description=
"append the cube files when they already exist", &
709 default_l_val=.false., lone_keyword_l_val=.true.)
712 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
713 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
714 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
720 CALL create_mo_section( &
721 print_key,
"MO_OPENPMD",
"openPMD", [1, 1, 1],
"STRIDE 2 2 2",
debug_print_level + 1,
"write_openpmd")
722 CALL add_generic_openpmd_arguments(print_key)
726 CALL create_stm_section(print_key)
730 CALL create_wfn_mix_section(subsection)
735 description=
"Write a TREXIO file to disk.", &
736 n_keywords=4, n_subsections=0, repeats=.false.)
738 description=
"Body of Filename for the trexio file.", &
739 usage=
"FILENAME {name}", default_c_val=
"TREXIO", &
744 description=
"Store the MOs in the Cartesian basis instead of the default spherical basis.", &
745 default_l_val=.false., lone_keyword_l_val=.true.)
748 CALL keyword_create(keyword, __location__, name=
"FULL_KPOINT_GRID", &
749 description=
"For symmetry-reduced k-point SCF calculations, export MOs on the "// &
750 "full unreduced k-point grid instead of the irreducible grid.", &
751 usage=
"FULL_KPOINT_GRID <LOGICAL>", default_l_val=.false., &
752 lone_keyword_l_val=.true.)
755 CALL keyword_create(keyword, __location__, name=
"REUSE_SCF_MOS", &
756 description=
"When FULL_KPOINT_GRID is active, try to reconstruct the full-grid "// &
757 "MO coefficients from the symmetry-reduced SCF orbitals before falling back to "// &
758 "a full-grid diagonalization.", &
759 usage=
"REUSE_SCF_MOS T", default_l_val=.true.)
766 description=
"Write a CASINO gwfn.data file to disk.", &
767 n_keywords=5, n_subsections=0, repeats=.false.)
769 description=
"Filename for the CASINO gwfn.data file.", &
770 usage=
"FILENAME {name}", default_c_val=
"gwfn.data", &
774 CALL keyword_create(keyword, __location__, name=
"EPS_KPOINT_REAL", &
775 description=
"Tolerance for detecting Gamma/BZ-edge k-points with real orbitals.", &
776 usage=
"EPS_KPOINT_REAL 1.0E-10", default_r_val=1.0e-10_dp)
779 CALL keyword_create(keyword, __location__, name=
"FULL_KPOINT_GRID", &
780 description=
"For symmetry-reduced k-point SCF calculations, export orbitals on the "// &
781 "full unreduced k-point grid required by CASINO.", &
782 usage=
"FULL_KPOINT_GRID <LOGICAL>", default_l_val=.true., &
783 lone_keyword_l_val=.true.)
786 CALL keyword_create(keyword, __location__, name=
"REUSE_SCF_MOS", &
787 description=
"When FULL_KPOINT_GRID is active, try to reconstruct the full-grid "// &
788 "MO coefficients from the symmetry-reduced SCF orbitals before falling back to "// &
789 "a full-grid diagonalization.", &
790 usage=
"REUSE_SCF_MOS T", default_l_val=.true.)
793 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDOPOTENTIALS", &
794 description=
"Write CASINO *_pp.data files for CP2K semilocal ECP potentials. "// &
795 "GTH pseudopotentials are marked in gwfn.data, but require externally supplied "// &
796 "CASINO pseudopotential files.", &
797 usage=
"WRITE_PSEUDOPOTENTIALS T", default_l_val=.true., &
798 lone_keyword_l_val=.true.)
805 description=
"Controls the printing of some gapw related information (debug).", &
806 n_keywords=0, n_subsections=1, repeats=.false.)
808 description=
"If the printkey is activated controls if information on"// &
809 " the projectors is printed.", &
814 description=
"If the printkey is activated controls if information on rho0 is printed.", &
822 description=
"Controls the printing of dft control parameters.", &
828 description=
"Controls the printing of kpoint information.", &
834 CALL create_bandstructure_section(subsection)
839 description=
"Controls the checking and printing of an estimate "// &
840 "of the overlap matrix condition number", &
843 description=
"Calculate an estimate of the 1-norm condition number", &
844 default_l_val=.true., lone_keyword_l_val=.true.)
847 CALL keyword_create(keyword, __location__, name=
"DIAGONALIZATION", &
848 description=
"Calculate the 1- and 2-norm condition numbers using diagonalization", &
849 default_l_val=.false., lone_keyword_l_val=.true.)
853 description=
"Calculate the 2-norm condition number using the Arnoldi code (may not be reliable)", &
854 default_l_val=.false., lone_keyword_l_val=.true.)
860 CALL create_e_density_section( &
862 "E_DENSITY_OPENPMD", &
867 CALL add_generic_openpmd_arguments(print_key)
871 CALL create_e_density_section(print_key,
"E_DENSITY_CUBE",
"cube", [2, 2, 2],
"STRIDE 2 2 2",
high_print_level)
873 description=
"append the cube files when they already exist", &
874 default_l_val=.false., lone_keyword_l_val=.true.)
878 CALL keyword_create(keyword, __location__, name=
"XRD_INTERFACE", &
879 description=
"It activates the print out of exponents and coefficients for the"// &
880 " Gaussian expansion of the core densities, based on atom calculations for each kind."// &
881 " The resulting core dansities are needed to compute the form factors."// &
882 " If GAPW the local densities are also given in terms of a Gaussian expansion,"// &
883 " by fitting the difference between local-fhard and local-soft density for each atom."// &
884 " In this case the keyword SOFT_DENSITY is enabled.", &
885 default_l_val=.false., lone_keyword_l_val=.true.)
890 description=
"Number of Gaussian functions used in the expansion of atomic (core) density", &
891 usage=
"NGAUSS 10", n_var=1, default_i_val=12, type_of_var=
integer_t)
899 description=
"Fractional occupation number weighted density (FOD) of Grimme and Hansen "// &
900 "[doi:10.1002/anie.201501887]. Prints the orbital sum N_FOD. "// &
901 "Requires GPW at Gamma and positive-temperature Fermi-Dirac smearing. "// &
902 "FOD is a qualitative static-correlation diagnostic, not a proof of "// &
903 "multireference character. Results depend on the functional and electronic "// &
904 "temperature; metallic occupations need a different interpretation.", &
907 description=
"Also collocate the FOD density, print its grid integral and write a cube "// &
908 "in electrons/bohr**3. Without this option only the inexpensive orbital sum is computed.", &
909 default_l_val=.false., lone_keyword_l_val=.true.)
913 description=
"Cube sampling stride. Supply one value for all directions or three values.", &
914 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
921 description=
"Controls printing of cube files with "// &
922 "the total density (electrons+atomic core). Note that "// &
923 "the value of the total density is positive where the "// &
924 "electron density dominates and negative where the core is. "// &
925 "When GPW is enabled this will simply print the combined density "// &
926 "of the valence electrons and charge-balanced core. In GAPW the "// &
927 "electronic density (hard+soft plus a correction term) is printed "// &
928 "together with the charge-balanced core density to produce a complete "// &
929 "representation of the total density.", &
932 description=
"The stride (X,Y,Z) used to write the cube file "// &
933 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
934 " 1 number valid for all components.", &
935 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
940 description=
"append the cube files when they already exist", &
941 default_l_val=.false., lone_keyword_l_val=.true.)
945 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
946 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
947 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
955 description=
"Controls the printing of a cube file with eletrostatic"// &
956 " potential generated by the total density (electrons+ions). It is"// &
957 " valid only for QS with GPW formalism."// &
958 " Note that by convention the potential has opposite sign than the expected physical one.", &
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)
968 description=
"append the cube files when they already exist", &
969 default_l_val=.false., lone_keyword_l_val=.true.)
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)
982 description=
"Controls the printing of a cube file with external"// &
983 " potential from the DFT%EXTERNAL_POTENTIAL section only.", &
986 description=
"The stride (X,Y,Z) used to write the cube file "// &
987 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
988 " 1 number valid for all components.", &
989 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
993 description=
"append the cube files when they already exist", &
994 default_l_val=.false., lone_keyword_l_val=.true.)
997 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
998 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
999 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1007 description=
"Controls the output of the electron density to the losslessly"// &
1008 " compressed BQB file format, see [Brehm2018]"// &
1009 " (via LibBQB see <https://brehm-research.de/bqb>)."// &
1010 " Currently does not work with changing cell vector (NpT ensemble).", &
1015 description=
"Skips the first step of a MD run (avoids duplicate step if restarted).", &
1016 usage=
"SKIP_FIRST T", default_l_val=.false., lone_keyword_l_val=.true.)
1020 CALL keyword_create(keyword, __location__, name=
"STORE_STEP_NUMBER", &
1021 description=
"Stores the step number and simulation time in the comment line of each BQB"// &
1022 " frame. Switch it off for binary compatibility with original CP2k CUBE files.", &
1023 usage=
"STORE_STEP_NUMBER F", default_l_val=.true., lone_keyword_l_val=.true.)
1028 description=
"Performs an on-the-fly decompression of each compressed BQB frame to check"// &
1029 " whether the volumetric data exactly matches, and aborts the run if not so.", &
1030 usage=
"CHECK T", default_l_val=.false., lone_keyword_l_val=.true.)
1035 description=
"Specify this keyword to overwrite the output BQB file if"// &
1036 " it already exists. By default, the data is appended to an existing file.", &
1037 usage=
"OVERWRITE T", default_l_val=.false., lone_keyword_l_val=.true.)
1042 description=
"Controls how many previous steps are taken into account for extrapolation in"// &
1043 " compression. Use a value of 1 to compress the frames independently.", &
1044 usage=
"HISTORY 10", n_var=1, default_i_val=10, type_of_var=
integer_t)
1048 CALL keyword_create(keyword, __location__, name=
"PARAMETER_KEY", &
1049 description=
"Allows to supply previously optimized compression parameters via a"// &
1050 " parameter key (alphanumeric character sequence starting with 'at')."// &
1051 " Just leave away the 'at' sign here, because CP2k will otherwise"// &
1052 " assume it is a variable name in the input", &
1053 usage=
"PARAMETER_KEY <KEY>", n_var=1, default_c_val=
"", type_of_var=
char_t)
1058 description=
"Controls the time spent to optimize the parameters for compression efficiency.", &
1059 usage=
"OPTIMIZE {OFF,QUICK,NORMAL,PATIENT,EXHAUSTIVE}", repeats=.false., n_var=1, &
1061 enum_c_vals=
s2a(
"OFF",
"QUICK",
"NORMAL",
"PATIENT",
"EXHAUSTIVE"), &
1062 enum_desc=
s2a(
"No optimization (use defaults)",
"Quick optimization", &
1063 "Standard optimization",
"Precise optimization",
"Exhaustive optimization"), &
1077 CALL create_implicit_psolver_section(subsection)
1083 description=
"Controls the printing of a cube file with xc"// &
1084 " potential generated by the ZMP method (for the moment). It is"// &
1085 " valid only for QS with GPW formalism .", &
1088 description=
"The stride (X,Y,Z) used to write the cube file "// &
1089 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1090 " 1 number valid for all components.", &
1091 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1095 description=
"append the cube files when they already exist", &
1096 default_l_val=.false., lone_keyword_l_val=.true.)
1104 description=
"Controls the printing of cube files with electric"// &
1105 " field generated by the total density (electrons+ions). It is"// &
1106 " valid only for QS with GPW formalism.", &
1109 description=
"The stride (X,Y,Z) used to write the cube file "// &
1110 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1111 " 1 number valid for all components.", &
1112 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1116 description=
"append the cube files when they already exist", &
1117 default_l_val=.false., lone_keyword_l_val=.true.)
1120 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1121 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1122 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1129 CALL create_elf_print_section(print_key,
"ELF_CUBE", &
1133 description=
"append the cube files when they already exist", &
1134 default_l_val=.false., lone_keyword_l_val=.true.)
1141 CALL create_elf_print_section(print_key,
"ELF_OPENPMD", &
1144 CALL add_generic_openpmd_arguments(print_key)
1149 description=
"Controls the printing of cube files with the local"// &
1150 " energy. It is valid only for QS with GPW/GAPW formalism."// &
1151 " Meta and hybrid functionals are not possible. For GAPW/GAPW_XC"// &
1152 " and ADMM-GAPW this regular-grid cube keeps the existing soft-grid"// &
1153 " semantics; atom-centered hard one-center terms are not projected"// &
1154 " onto the cube grid.", &
1157 description=
"The stride (X,Y,Z) used to write the cube file "// &
1158 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1159 " 1 number valid for all components.", &
1160 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1164 description=
"append the cube files when they already exist", &
1165 default_l_val=.false., lone_keyword_l_val=.true.)
1168 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1169 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1170 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1178 description=
"Controls the printing of cube files with the local"// &
1179 " stress. It is valid only for QS with GPW/GAPW formalism."// &
1180 " Meta and hybrid functionals are not possible. For GAPW/GAPW_XC"// &
1181 " and ADMM-GAPW this regular-grid cube keeps the existing soft-grid"// &
1182 " semantics; atom-centered hard one-center terms are not projected"// &
1183 " onto the cube grid.", &
1186 description=
"The stride (X,Y,Z) used to write the cube file "// &
1187 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1188 " 1 number valid for all components.", &
1189 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1193 description=
"append the cube files when they already exist", &
1194 default_l_val=.false., lone_keyword_l_val=.true.)
1197 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1198 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1199 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1207 description=
"Print density of states (DOS). "// &
1208 "Projected DOS output can be enabled with PDOS.", &
1214 description=
"Specify a Monkhorst-Pack grid with which to compute the density of states. "// &
1215 "Works only for a k-point calculation", &
1216 usage=
"MP_GRID {integer} {integer} {integer}", default_i_vals=[-1], &
1224 CALL create_wannier_section(print_key)
1231 keyword, __location__, &
1232 name=
"MAX_MOMENT", &
1233 description=
"Maximum moment to be calculated. Values higher than 1 not implemented under periodic boundaries.", &
1234 usage=
"MAX_MOMENT {integer}", &
1242 keyword, __location__, &
1244 description=
"Format of the moments output. DETAILED prints the traditional multi-line report. "// &
1245 "TRAJECTORY prints one machine-readable electric-dipole record per iteration. For periodic "// &
1246 "calculations each record also contains the cell matrix in Debye, which is required to unwrap "// &
1247 "Berry-phase jumps in variable cells.", &
1248 usage=
"FORMAT {DETAILED|TRAJECTORY}", &
1249 enum_c_vals=
s2a(
"DETAILED",
"TRAJECTORY"), &
1250 enum_desc=
s2a(
"Traditional multi-line moments report", &
1251 "One electric-dipole record per iteration"), &
1258 description=
"Calculate also magnetic moments, only implemented without periodic boundaries", &
1259 usage=
"MAGNETIC yes", &
1262 default_l_val=.false., &
1263 lone_keyword_l_val=.true.)
1268 description=
"Calculate expectation values of the el. multipole moments in their velocity "// &
1269 "representation during RTP. Implemented up to el. quadrupole moment.", &
1270 usage=
"VEL_REPRS yes", &
1273 default_l_val=.false., &
1274 lone_keyword_l_val=.true.)
1279 description=
"Include non local commutator for velocity representations. "// &
1280 "Necessary for origin independent results.", &
1281 usage=
"COM_NL yes", &
1284 default_l_val=.false., &
1285 lone_keyword_l_val=.true.)
1289 name=
"SECOND_REFERENCE_POINT", &
1290 description=
"Use second reference point", &
1291 usage=
"SECOND_REFERENCE_POINT .TRUE.", &
1294 default_l_val=.false., &
1295 lone_keyword_l_val=.true.)
1299 variants=
s2a(
"REF_2"), &
1300 description=
"Define a second reference point for the calculation of the electrostatic moment.", &
1301 usage=
"REFERENCE_2 COM", &
1302 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1303 enum_desc=
s2a(
"Use Center of Mass", &
1304 "Use Center of Atomic Charges", &
1305 "Use User Defined Point (Keyword:REF_POINT)", &
1306 "Use Origin of Coordinate System"), &
1314 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT_2", &
1315 variants=
s2a(
"REF_POINT_2"), &
1316 description=
"Fixed second reference point for the calculations of the electrostatic moment.", &
1317 usage=
"REFERENCE_POINT_2 x y z", &
1319 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1325 description=
"Maximum number of molecular orbitals closest to the Fermi "// &
1326 "level for which dipole matrix elements and Berry curvatures are printed "// &
1327 "per k-point. 0 for all orbitals. Ignored if not a KPOINT calculation.", &
1328 usage=
"MAX_NMO {integer}", &
1330 n_var=1, default_i_val=10, &
1341 description=
"Print the electronic moments separately for KG subsystems", &
1342 usage=
"KG .TRUE.", &
1345 default_l_val=.false., &
1346 lone_keyword_l_val=.true.)
1354 description=
"Controls the printing of the Mulliken (spin) population analysis", &
1356 common_iter_levels=1)
1358 keyword, __location__, &
1360 description=
"Print the gross orbital populations (GOP) in addition to the gross atomic populations (GAP) "// &
1361 "and net charges", &
1362 usage=
"PRINT_GOP yes", &
1365 default_l_val=.false., &
1366 lone_keyword_l_val=.true.)
1370 keyword, __location__, &
1372 description=
"Print all information including the full net AO and overlap population matrix", &
1373 usage=
"PRINT_ALL yes", &
1376 default_l_val=.false., &
1377 lone_keyword_l_val=.true.)
1385 description=
"Controls the printing of the Lowdin (spin) population analysis", &
1387 common_iter_levels=1)
1389 keyword, __location__, &
1391 description=
"Print the orbital populations in addition to the atomic populations and net charges", &
1392 usage=
"PRINT_GOP yes", &
1395 default_l_val=.false., &
1396 lone_keyword_l_val=.true.)
1400 keyword, __location__, &
1402 description=
"Print all information including the full symmetrically orthogonalised density matrix", &
1403 usage=
"PRINT_ALL yes", &
1406 default_l_val=.false., &
1407 lone_keyword_l_val=.true.)
1415 description=
"Controls the printing of the Hirshfeld (spin) population analysis", &
1417 common_iter_levels=1)
1418 CALL keyword_create(keyword, __location__, name=
"SELF_CONSISTENT", &
1419 description=
"Calculate charges from the Hirscheld-I (self_consistent) method."// &
1420 " This scales only the full shape function, not the added charge as in the original scheme.", &
1421 usage=
"SELF_CONSISTENT yes", repeats=.false., n_var=1, &
1422 default_l_val=.false., lone_keyword_l_val=.true.)
1425 CALL keyword_create(keyword, __location__, name=
"SHAPE_FUNCTION", &
1426 description=
"Type of shape function used for Hirshfeld partitioning.", &
1427 usage=
"SHAPE_FUNCTION {Gaussian,Density}", repeats=.false., n_var=1, &
1429 enum_c_vals=
s2a(
"GAUSSIAN",
"DENSITY"), &
1430 enum_desc=
s2a(
"Single Gaussian with Colvalent radius", &
1431 "Atomic density expanded in multiple Gaussians"), &
1435 CALL keyword_create(keyword, __location__, name=
"REFERENCE_CHARGE", &
1436 description=
"Charge of atomic partitioning function for Hirshfeld method.", &
1437 usage=
"REFERENCE_CHARGE {Atomic,Mulliken}", repeats=.false., n_var=1, &
1439 enum_c_vals=
s2a(
"ATOMIC",
"MULLIKEN"), &
1440 enum_desc=
s2a(
"Use atomic core charges",
"Calculate Mulliken charges"), &
1445 description=
"Use user defined radii to generate Gaussians."// &
1446 " These radii are defined by the keyword ATOMIC_RADII", &
1447 usage=
"USER_RADIUS yes", repeats=.false., n_var=1, &
1448 default_l_val=.false., lone_keyword_l_val=.true.)
1451 CALL keyword_create(keyword, __location__, name=
"ATOMIC_RADII", &
1452 description=
"Defines custom radii to setup the spherical Gaussians.", &
1453 usage=
"ATOMIC_RADII {real} {real} {real}", repeats=.false., &
1454 unit_str=
"angstrom", &
1455 type_of_var=
real_t, n_var=-1)
1463 description=
"Controls the printing of the EEQ charges", &
1465 common_iter_levels=1, &
1472 description=
"Controls the printing of the MAO (modified atomic orbital) analysis", &
1474 common_iter_levels=1, &
1477 description=
"Threshold for matrix elements in MAO determination.", &
1478 usage=
"EPS_FILTER reps", repeats=.false., n_var=1, &
1479 default_r_val=1.e-8_dp, type_of_var=
real_t)
1482 CALL keyword_create(keyword, __location__, name=
"REFERENCE_BASIS", &
1483 description=
"Basis set used to construct MAO's.", &
1484 usage=
"REFERENCE_BASIS {ORBITAL,PRIMITIVE,EXTERNAL}", repeats=.false., n_var=1, &
1486 enum_c_vals=
s2a(
"ORBITAL",
"PRIMITIVE",
"EXTERNAL"), &
1487 enum_desc=
s2a(
"Use standard orbital basis set",
"Construct basis from primitives of the orbital basis", &
1488 "Read external basis (MAO)"), &
1493 description=
"Print out MAO reference basis.", &
1494 usage=
"PRINT_BASIS {logical}", repeats=.false., n_var=1, &
1495 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1499 description=
"Print out MAO in PAO format to be used for optimization or learning.", &
1500 usage=
"PRINT_PAO {logical}", repeats=.false., n_var=1, &
1501 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1505 description=
"Threshold for gradient in MAO optimization.", &
1506 usage=
"EPS_GRAD reps", repeats=.false., n_var=1, &
1507 default_r_val=1.e-4_dp, type_of_var=
real_t)
1510 CALL keyword_create(keyword, __location__, name=
"EPS_FUNCTION", &
1511 description=
"Threshold for electron defect in MAO optimization.", &
1512 usage=
"EPS_FUNCTION feps", repeats=.false., n_var=1, &
1513 default_r_val=1.e-3_dp, type_of_var=
real_t)
1517 description=
"Maximum allowed iterations for MAO optimization.", &
1518 usage=
"MAX_ITER iter", repeats=.false., n_var=1, &
1523 description=
"Neglect 3 atom terms in MAO analysis.", &
1524 usage=
"NEGLECT_ABC {logical}", repeats=.false., n_var=1, &
1525 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=
logical_t)
1528 CALL keyword_create(keyword, __location__, name=
"AB_THRESHOLD", &
1529 description=
"Threshold for printing of AB shared electron numbers.", &
1530 usage=
"AB_THRESHOLD thr", repeats=.false., n_var=1, &
1531 default_r_val=1.e-2_dp, type_of_var=
real_t)
1534 CALL keyword_create(keyword, __location__, name=
"ABC_THRESHOLD", &
1535 description=
"Threshold for printing of ABC shared electron numbers.", &
1536 usage=
"ABC_THRESHOLD thr", repeats=.false., n_var=1, &
1537 default_r_val=1.e-5_dp, type_of_var=
real_t)
1540 CALL keyword_create(keyword, __location__, name=
"ANALYZE_UNASSIGNED_CHARGE", &
1541 description=
"Calculate atomic contributions to the unassigned charge.", &
1542 usage=
"ANALYZE_UNASSIGNED_CHARGE {logical}", repeats=.false., n_var=1, &
1543 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1551 description=
"Controls the printing of the minimal localized basis analysis", &
1553 common_iter_levels=1, &
1556 description=
"Threshold for matrix elements in basis determination.", &
1557 usage=
"EPS_FILTER reps", repeats=.false., n_var=1, &
1558 default_r_val=1.e-8_dp, type_of_var=
real_t)
1561 CALL keyword_create(keyword, __location__, name=
"FULL_ORTHOGONALIZATION", &
1562 description=
"Orthogonalize the localized minimal basis.", &
1563 usage=
"FULL_ORTHOGONALIZATION {logical}", repeats=.false., n_var=1, &
1564 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1568 description=
"Calculate Mayer Bond Orders.", &
1569 usage=
"BOND_ORDER {logical}", repeats=.false., n_var=1, &
1570 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1574 NULLIFY (sub_print_key)
1576 description=
"Write the minimal basis on Cube files.", &
1579 description=
"The stride (X,Y,Z) used to write the cube file "// &
1580 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1581 " 1 number valid for all components.", &
1582 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1586 description=
"Indexes of the atoms minimal basis to be printed as cube files "// &
1587 "This keyword can be repeated several times "// &
1588 "(useful if you have to specify many indexes).", &
1589 usage=
"ATOM_LIST 1 2", &
1590 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1596 NULLIFY (sub_print_key)
1598 description=
"Write the minimal basis in Molden file format, for visualisation.", &
1601 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1602 usage=
"UNIT ANGSTROM", &
1603 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1604 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1605 enum_i_vals=[1, 2], &
1610 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1611 usage=
"WRITE_CELL T", &
1612 default_l_val=.false., lone_keyword_l_val=.true.)
1615 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
1616 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1617 usage=
"WRITE_PSEUDO T", &
1618 default_l_val=.false., lone_keyword_l_val=.true.)
1622 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
1623 "setting their atomic number to zero.", &
1624 usage=
"MARK_GHOST T", &
1625 default_l_val=.false., lone_keyword_l_val=.true.)
1629 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1630 usage=
"NDIGITS {int}", &
1635 description=
"Representation of Gaussian-type orbitals", &
1637 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
1639 "Cartesian Gaussian orbitals. Use with caution", &
1640 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1652 description=
"Controls energy decomposition analysis", &
1654 common_iter_levels=1, &
1656 CALL keyword_create(keyword, __location__, name=
"REFERENCE_ORB_CANONICAL", &
1657 description=
"Use reference orbitals in canonical form.", &
1658 usage=
"REFERENCE_ORB_CANONICAL {logical}", repeats=.false., n_var=1, &
1659 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=
logical_t)
1662 CALL keyword_create(keyword, __location__, name=
"SKIP_LOCALIZATION", &
1663 description=
"Don't localize the MOs.", &
1664 usage=
"SKIP_LOCALIZATION {logical}", repeats=.false., n_var=1, &
1665 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1668 CALL keyword_create(keyword, __location__, name=
"DETAILED_ENERGY", &
1669 description=
"Calculate detailed atomic decomposition energies.", &
1670 usage=
"DETAILED_ENERGY {logical}", repeats=.false., n_var=1, &
1671 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1674 CALL keyword_create(keyword, __location__, name=
"EWALD_ALPHA_PARAMETER", &
1675 description=
"Calculate Energy Decomposition for a specific alpha value. "// &
1676 "alpha = 1/(2*rc**2), see GTH pseudopotentials.", &
1677 usage=
"EWALD_ALPHA_PARAMETER alpha", repeats=.false., n_var=1, &
1678 default_r_val=0.0_dp, type_of_var=
real_t)
1687 description=
"Controls the printing of the IAO (intrinsic atomic orbital) analysis", &
1689 common_iter_levels=1, &
1692 description=
"Threshold for matrix inversion eigenvalues.", &
1693 usage=
"EPS_SVD reps", repeats=.false., n_var=1, &
1694 default_r_val=0.0_dp, type_of_var=
real_t)
1698 description=
"Threshold in occupation for vectors included.", &
1699 usage=
"EPS_OCC reps", repeats=.false., n_var=1, &
1700 default_r_val=0.0_dp, type_of_var=
real_t)
1703 CALL keyword_create(keyword, __location__, name=
"ATOMIC_CHARGES", &
1704 description=
"Calculate atomic charges from IAO.", &
1705 usage=
"ATOMIC_CHARGES {logical}", repeats=.false., n_var=1, &
1706 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=
logical_t)
1710 NULLIFY (sub_print_key)
1712 description=
"Write the IAO basis in Molden file format, for visualisation.", &
1715 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1716 usage=
"UNIT ANGSTROM", &
1717 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1718 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1719 enum_i_vals=[1, 2], &
1724 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1725 usage=
"WRITE_CELL T", &
1726 default_l_val=.false., lone_keyword_l_val=.true.)
1729 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
1730 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1731 usage=
"WRITE_PSEUDO T", &
1732 default_l_val=.false., lone_keyword_l_val=.true.)
1736 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
1737 "setting their atomic number to zero.", &
1738 usage=
"MARK_GHOST T", &
1739 default_l_val=.false., lone_keyword_l_val=.true.)
1743 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1744 usage=
"NDIGITS {int}", &
1749 description=
"Representation of Gaussian-type orbitals", &
1751 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
1753 "Cartesian Gaussian orbitals. Use with caution", &
1754 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1761 NULLIFY (sub_print_key)
1763 description=
"Controls the printing of the IAO basis "// &
1764 "as *.cube files.", &
1768 description=
"The stride (X,Y,Z) used to write the cube file "// &
1769 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1770 " 1 number valid for all components.", &
1771 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1775 description=
"append the cube files when they already exist", &
1776 default_l_val=.false., lone_keyword_l_val=.true.)
1780 description=
"Indices of the atoms to be included in basis CUBE file printing. ", &
1781 usage=
"ATOM_LIST {integer} {integer} .. {integer} ", &
1782 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1788 NULLIFY (sub_print_key)
1790 description=
"Calculates single center expansion of IAOs ", &
1794 description=
"Maximum l quantum number used in the expansion.", &
1795 usage=
"LMAX 2", n_var=1, default_i_val=3, type_of_var=
integer_t)
1799 description=
"Max number of basis functions used in the expansion."// &
1800 " Default is determined by the orbital basis set.", &
1801 usage=
"NBAS 10", n_var=1, default_i_val=-1, type_of_var=
integer_t)
1805 description=
"Append the OCE basis files when it already exists", &
1806 default_l_val=.false., lone_keyword_l_val=.true.)
1812 NULLIFY (sub_print_key)
1814 description=
"Calculate intrinsic bond orbitals using "// &
1815 "localized MOs in IAO basis.", &
1819 CALL keyword_create(keyword, __location__, name=
"LOCALIZATION_OPERATOR", &
1820 description=
"Operator to be optimized for orbital localization", &
1821 enum_c_vals=
s2a(
"PIPEK_MEZEY",
"PIPEK_MEZEY_4",
"L1NORM"), &
1823 enum_desc=
s2a(
"Use Pipek-Mezey operator (order 2)", &
1824 "Use Pipek-Mezey operator (order 4)", &
1829 CALL keyword_create(keyword, __location__, name=
"ENERGY_LOCALIZATION_FUNCTION", &
1830 description=
"Function for energy localization: f(e_i), e_i orbital energy", &
1831 enum_c_vals=
s2a(
"NONE",
"ENERGY",
"OCCUPATION"), &
1833 enum_desc=
s2a(
"Don't use energy localization.", &
1834 "Use orbital energies for localization.", &
1835 "Use occupation numbers for localization."), &
1839 CALL keyword_create(keyword, __location__, name=
"ENERGY_LOCALIZATION_WEIGHT", &
1840 description=
"Weight given to energy localization, using f(e_i) function", &
1841 usage=
"ENERGY_LOCALIZATION_WEIGHT 0.1", n_var=1, &
1842 default_r_val=0.0_dp, type_of_var=
real_t)
1847 NULLIFY (subsection)
1849 description=
"Calculation and printing of centers and spreads "// &
1850 "of localized orbitals.", &
1853 CALL keyword_create(keyword, __location__, name=
"POSITION_OPERATOR_BERRY", &
1854 description=
"Use Berry phase position operator.", &
1855 usage=
"POSITION_OPERATOR_BERRY T", n_var=1, &
1856 default_l_val=.true., lone_keyword_l_val=.true.)
1862 NULLIFY (subsection)
1864 description=
"Write the IBO orbitals in Molden file format, for visualisation.", &
1867 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1868 usage=
"UNIT ANGSTROM", &
1869 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1870 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1871 enum_i_vals=[1, 2], &
1876 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1877 usage=
"WRITE_CELL T", &
1878 default_l_val=.false., lone_keyword_l_val=.true.)
1881 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
1882 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1883 usage=
"WRITE_PSEUDO T", &
1884 default_l_val=.false., lone_keyword_l_val=.true.)
1888 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
1889 "setting their atomic number to zero.", &
1890 usage=
"MARK_GHOST T", &
1891 default_l_val=.false., lone_keyword_l_val=.true.)
1895 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1896 usage=
"NDIGITS {int}", &
1901 description=
"Representation of Gaussian-type orbitals", &
1903 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
1905 "Cartesian Gaussian orbitals. Use with caution", &
1906 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1913 NULLIFY (subsection)
1915 description=
"Controls the printing of the IBO orbitals "// &
1916 "as *.cube files.", &
1920 description=
"The stride (X,Y,Z) used to write the cube file "// &
1921 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1922 " 1 number valid for all components.", &
1923 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1927 description=
"append the cube files when they already exist", &
1928 default_l_val=.false., lone_keyword_l_val=.true.)
1932 description=
"Indices of the orbitals to be included in IBO CUBE file printing. ", &
1933 usage=
"STATE_LIST {integer} {integer} .. {integer} ", &
1934 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1943 NULLIFY (sub_print_key)
1945 description=
"Controls the printout required for ROSE.", &
1948 description=
"Specify the number of digits used to print the MO information.", &
1961 description=
"Controls the printing of the DOS from the density matrix. "// &
1962 "This allows the calculation of the DOS even in density matrix based "// &
1963 "REAL_TIME_PROPAGATION and LS_SCF. "// &
1964 "However, it requires a cubically scaling diagonalization of the Hamiltonian. "// &
1965 "Hartree-Fock NYI, values will be wrong. "// &
1966 "Careful, the orbitals in rtp/emd are not actually eigenstates of the Hamiltonian. "// &
1967 "Assumes absence of spin polarization (so far).", &
1969 each_iter_names=
s2a(
"MD"), each_iter_values=[100], &
1972 description=
"The number of energy windows.", &
1973 usage=
"N_WINDOWS 200", &
1978 description=
"Filtering threshold for sparse matrix operations.", &
1979 usage=
"EPS_FILTER 1.0E-6", &
1980 default_r_val=1.0e-14_dp)
1983 CALL keyword_create(keyword, __location__, name=
"RESTRICT_RANGE", &
1984 description=
"Restricts the energy windows to states close to the fermi level", &
1985 usage=
"RESTRICT_RANGE .TRUE.", &
1986 default_l_val=.false., lone_keyword_l_val=.true.)
1990 description=
"If the RESTRICT_RANGE keyword is set, then all energy widnows will"// &
1991 " be placed in an interval from from the fermi level minus to the fermi level plus this keyword", &
1993 default_r_val=1.0_dp)
1997 description=
"Print the energy windows to cube files", &
1998 usage=
"PRINT_CUBES .TRUE.", &
1999 default_l_val=.false., lone_keyword_l_val=.true.)
2003 description=
"The stride (X,Y,Z) used to write the energy windows cube files (if enabled) "// &
2004 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
2005 " 1 number valid for all components.", &
2006 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
2014 description=
"Write the KS matrix in CSR format into a file.", &
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}", &
2022 default_r_val=0.0_dp)
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}", &
2029 default_l_val=.false., &
2030 lone_keyword_l_val=.true.)
2034 description=
"Whether or not to generate the file in a binary format. ", &
2035 usage=
"BINARY {logical}", &
2037 default_l_val=.false., &
2038 lone_keyword_l_val=.true.)
2042 description=
"Print the KS matrix in real-space instead of k-space.. ", &
2043 usage=
"REAL_SPACE {logical}", &
2045 default_l_val=.false., &
2046 lone_keyword_l_val=.true.)
2054 description=
"Write the overlap matrix in CSR format into a file.", &
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}", &
2062 default_r_val=0.0_dp)
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}", &
2069 default_l_val=.false., &
2070 lone_keyword_l_val=.true.)
2074 description=
"Whether or not to generate the file in a binary format. ", &
2075 usage=
"BINARY {logical}", &
2077 default_l_val=.false., &
2078 lone_keyword_l_val=.true.)
2082 description=
"Print the overlap matrix in real-space instead of k-space.. ", &
2083 usage=
"REAL_SPACE {logical}", &
2085 default_l_val=.false., &
2086 lone_keyword_l_val=.true.)
2094 description=
"Write the core Hamiltonian matrix in CSR format into a file.", &
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}", &
2102 default_r_val=0.0_dp)
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}", &
2109 default_l_val=.false., &
2110 lone_keyword_l_val=.true.)
2114 description=
"Whether or not to generate the file in a binary format. ", &
2115 usage=
"BINARY {logical}", &
2117 default_l_val=.false., &
2118 lone_keyword_l_val=.true.)
2122 description=
"Print the core Hamiltonian matrix in real-space instead of k-space.. ", &
2123 usage=
"REAL_SPACE {logical}", &
2125 default_l_val=.false., &
2126 lone_keyword_l_val=.true.)
2134 description=
"Write the density matrix in CSR format into a file.", &
2137 description=
"Threshold on the absolute value of the elements to be printed out. "// &
2138 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2139 "if the block contains at least one non-zero element.", &
2140 usage=
"THRESHOLD {real}", &
2142 default_r_val=0.0_dp)
2145 CALL keyword_create(keyword, __location__, name=
"Upper_triangular", &
2146 description=
"Print only the upper triangular part of the matrix. ", &
2147 usage=
"UPPER_TRIANGULAR {logical}", &
2149 default_l_val=.false., &
2150 lone_keyword_l_val=.true.)
2154 description=
"Whether or not to generate the file in a binary format. ", &
2155 usage=
"BINARY {logical}", &
2157 default_l_val=.false., &
2158 lone_keyword_l_val=.true.)
2162 description=
"Print the density matrix in real-space instead of k-space.. ", &
2163 usage=
"REAL_SPACE {logical}", &
2165 default_l_val=.false., &
2166 lone_keyword_l_val=.true.)
2174 description=
"Writes an (upper-triangular) adjacency matrix indicating the "// &
2175 "interaction between atoms (according to overlapping basis functions). The "// &
2176 "columns are: iatom, jatom, ikind, jkind; where iatom and jatom are the atom "// &
2177 "indices (based on the coordinate file), ikind and jkind are the atomic kinds "// &
2178 "(indeces as shown in the ATOMIC KIND INFORMATION section of a CP2K output). ", &
2185 print_key, __location__, name=
"XRAY_DIFFRACTION_SPECTRUM", &
2186 description=
"Calculate and print the coherent X-ray "// &
2187 "diffraction spectrum", &
2192 keyword, __location__, &
2194 variants=[
"Q_MAXIMUM"], &
2195 description=
"Maximum Q value calculated for the spectrum", &
2196 usage=
"Q_MAX {real}", &
2201 unit_str=
"angstrom^-1"), &
2202 unit_str=
"angstrom^-1")
2209 description=
"Calculate and print the electric field gradients "// &
2210 "at atomic positions", &
2212 filename=
"__STD_OUT__")
2215 name=
"INTERPOLATION", &
2216 description=
"Use interpolation method from real space grid", &
2217 usage=
"INTERPOLATION {logical}", &
2220 default_l_val=.false., lone_keyword_l_val=.true.)
2225 name=
"GSPACE_SMOOTHING", &
2226 description=
"Use a G-space smoothing function", &
2227 usage=
"GSPACE_SMOOTHING cutoff {real}, width {real}", &
2229 n_var=2, default_r_vals=[-1._dp, -1._dp], &
2236 description=
"Print additional debug output", &
2237 usage=
"DEBUG {logical}", &
2240 default_l_val=.false., lone_keyword_l_val=.true.)
2252 description=
"Print the two quantities needed in the basis molopt generation:"// &
2253 " total energy and condition number of the overlap matrix (S matrix)", &
2255 filename=
"__STD_OUT__")
2260 description=
"Calculate and print the EPR hyperfine coupling tensor"// &
2261 " at atomic positions", &
2263 filename=
"__STD_OUT__")
2266 name=
"INTERACTION_RADIUS", &
2267 description=
"Radius of interaction for EPR hyperfine tensor calculation", &
2268 usage=
"INTERACTION_RADIUS radius {real}", &
2270 n_var=1, default_r_val=10._dp, &
2279 description=
"Optimize the exponents of the LRI basis set", &
2281 filename=
"OPTIMIZED_LRI_BASIS")
2286 print_key, __location__, name=
"PLUS_U", &
2287 description=
"Controls the printing for the DFT+U methods", &
2289 filename=
"__STD_OUT__", &
2290 each_iter_names=
s2a(
"QS_SCF"), &
2291 each_iter_values=[0], &
2297 print_key, __location__, name=
"CHARGEMOL", &
2298 description=
"Write .wfx input file for Chargemol", &
2300 filename=
"CHARGEMOL", &
2302 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2303 description=
"Specifies the maximum number of backup copies.", &
2304 usage=
"BACKUP_COPIES {int}", &
2309 description=
"Write information about cell periodicity.", &
2310 usage=
"PERIODIC {LOGICAL}", &
2311 default_l_val=.false., lone_keyword_l_val=.true.)
2318 print_key, __location__, name=
"SCCS", &
2319 description=
"Controls the printing for the SCCS models", &
2321 filename=
"__STD_OUT__", &
2322 each_iter_names=
s2a(
"QS_SCF"), &
2323 each_iter_values=[0], &
2326 NULLIFY (sub_print_key)
2329 sub_print_key, __location__, name=
"DENSITY_GRADIENT", &
2330 description=
"Controls the printing of the cube files with "// &
2331 "the norm of the density gradient |∇ρ| "// &
2332 "used by the SCCS model.", &
2335 each_iter_names=
s2a(
"QS_SCF"), &
2336 each_iter_values=[0])
2338 description=
"The stride (X,Y,Z) used to write the cube file "// &
2339 "(larger values result in smaller cube files). You can provide 3 "// &
2340 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2342 default_i_vals=[2, 2, 2], &
2348 description=
"Append the cube files when they already exist", &
2349 default_l_val=.false., &
2350 lone_keyword_l_val=.true., &
2358 sub_print_key, __location__, name=
"DIELECTRIC_FUNCTION", &
2359 description=
"Controls the printing of the cube files with "// &
2360 "the dielectric function used by the SCCS model. "// &
2361 "This function determines the cavity formed by a solute in "// &
2362 "a solvent and thus it can be used for the visualisaton of the cavity.", &
2365 each_iter_names=
s2a(
"QS_SCF"), &
2366 each_iter_values=[0], &
2369 description=
"The stride (X,Y,Z) used to write the cube file "// &
2370 "(larger values result in smaller cube files). You can provide 3 "// &
2371 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2373 default_i_vals=[2, 2, 2], &
2379 description=
"Append the cube files when they already exist", &
2380 default_l_val=.false., &
2381 lone_keyword_l_val=.true., &
2389 sub_print_key, __location__, name=
"TOTAL_CHARGE_DENSITY", &
2390 description=
"Controls the printing of the cube files with the "// &
2391 "total charge density $\rho^\text{tot}$ used by the SCCS model.", &
2394 each_iter_names=
s2a(
"QS_SCF"), &
2395 each_iter_values=[0], &
2398 description=
"The stride (X,Y,Z) used to write the cube file "// &
2399 "(larger values result in smaller cube files). You can provide 3 "// &
2400 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2402 default_i_vals=[2, 2, 2], &
2408 description=
"Append the cube files when they already exist", &
2409 default_l_val=.false., &
2410 lone_keyword_l_val=.true., &
2418 sub_print_key, __location__, name=
"POLARISATION_CHARGE_DENSITY", &
2419 description=
"Controls the printing of the cube files with the "// &
2420 "polarisation charge density $\rho^\text{pol}$ used by the SCCS model with the "// &
2421 "total charge density $\rho^\text{tot} = \rho^\text{sol} + \rho^\text{pol}", &
2424 each_iter_names=
s2a(
"QS_SCF"), &
2425 each_iter_values=[0], &
2428 description=
"The stride (X,Y,Z) used to write the cube file "// &
2429 "(larger values result in smaller cube files). You can provide 3 "// &
2430 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2432 default_i_vals=[2, 2, 2], &
2438 description=
"Append the cube files when they already exist", &
2439 default_l_val=.false., &
2440 lone_keyword_l_val=.true., &
2448 sub_print_key, __location__, name=
"POLARISATION_POTENTIAL", &
2449 description=
"Controls the printing of the cube files with the "// &
2450 "polarisation potential $\phi^\text{pol}$ used by the SCCS model with the "// &
2451 "total potential $\phi^\text{tot} = \phi^\text{sol} + \phi^\text{pol}$", &
2454 each_iter_names=
s2a(
"QS_SCF"), &
2455 each_iter_values=[0], &
2458 description=
"The stride (X,Y,Z) used to write the cube file "// &
2459 "(larger values result in smaller cube files). You can provide 3 "// &
2460 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2462 default_i_vals=[2, 2, 2], &
2468 description=
"Append the cube files when they already exist", &
2469 default_l_val=.false., &
2470 lone_keyword_l_val=.true., &
2487 SUBROUTINE create_bandstructure_section(section)
2493 cpassert(.NOT.
ASSOCIATED(section))
2494 CALL section_create(section, __location__, name=
"BAND_STRUCTURE", &
2495 description=
"Specifies the k-points used in band structure calculation.", &
2496 n_keywords=0, n_subsections=0, repeats=.false.)
2500 description=
"File name used for band structure", &
2501 usage=
"FILE_NAME <filename>", default_c_val=
"", &
2502 type_of_var=
char_t, n_var=1)
2507 variants=[
"ADDED_BANDS"], &
2508 description=
"Number of MOs/Bands added to the Band Structure calculation.", &
2513 NULLIFY (subsection)
2518 END SUBROUTINE create_bandstructure_section
2520 SUBROUTINE add_generic_openpmd_arguments(print_key)
2526 CALL keyword_create(keyword, __location__, name=
"OPENPMD_EXTENSION", &
2527 description=
"Filename extension for openPMD files, including the dot and "// &
2528 "(for optionally activating file encoding) a file expansion pattern.", &
2535 description=
"Inline runtime config for openPMD output. Note that inline "// &
2536 "specifications are subject to restrictions imposed by the input "// &
2537 "file format, making this option useful only for very simple use cases. "// &
2538 "Refer to OPENPMD_CFG_FILE for anything else.", &
2539 default_c_val=
"{}", type_of_var=
char_t)
2543 CALL keyword_create(keyword, __location__, name=
"OPENPMD_CFG_FILE", &
2544 description=
"Runtime config file for openPMD output. This parameter takes precedence over OPENPMD_CFG.", default_c_val=
"", &
2549 END SUBROUTINE add_generic_openpmd_arguments
2555 SUBROUTINE create_mo_section( &
2556 print_key, section_name, description, stride_default, stride_usage, &
2557 print_level, do_write_keyname)
2560 CHARACTER(len=*),
INTENT(IN) :: section_name, description, stride_usage, do_write_keyname
2561 INTEGER,
DIMENSION(3),
INTENT(IN) :: stride_default
2562 INTEGER,
INTENT(IN) :: print_level
2569 description=
"Controls the printing of the molecular orbitals (MOs) as " &
2570 //trim(adjustl(description))// &
2572 " It can be used during a Real Time calculation to print the MOs."// &
2573 " In this case, the density corresponding to the time dependent MO is printed"// &
2574 " instead of the wave-function.", &
2575 print_level=print_level, filename=
"")
2578 description=
"The stride (X,Y,Z) used to write the "//trim(adjustl(description))//
" file "// &
2579 "(larger values result in smaller "// &
2580 trim(adjustl(description))// &
2581 " files). You can provide 3 numbers (for X,Y,Z) or"// &
2582 " 1 number valid for all components.", &
2583 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=
integer_t)
2587 CALL keyword_create(keyword, __location__, name=do_write_keyname, &
2588 description=
"If the MO " &
2589 //trim(adjustl(description)) &
2590 //
" file should be written. If false, the eigenvalues are still computed."// &
2591 " Can also be useful in combination with STM calculations", &
2592 default_l_val=.true., lone_keyword_l_val=.true.)
2597 description=
"If the printkey is activated controls the number of lumos"// &
2598 " that are printed and dumped as "//trim(adjustl(description))//
" (-1=all)", &
2604 keyword, __location__, name=
"nhomo", &
2605 description=
"If the printkey is activated controls the number of homos that dumped as "// &
2606 trim(adjustl(description))// &
2608 " eigenvalues are always all dumped", &
2614 keyword, __location__, name=
"homo_list", &
2615 description=
"If the printkey is activated controls the index of homos dumped as openPMD,"// &
2616 " eigenvalues are always all dumped. It overrides nhomo.", &
2617 usage=
"HOMO_LIST {integer} {integer} .. {integer} ", type_of_var=
integer_t, &
2618 n_var=-1, repeats=.true.)
2622 END SUBROUTINE create_mo_section
2624 SUBROUTINE create_e_density_section( &
2625 print_key, section_name, description, stride_default, &
2626 stride_usage, print_level)
2629 CHARACTER(len=*),
INTENT(IN) :: section_name, description, stride_usage
2630 INTEGER,
DIMENSION(3),
INTENT(IN) :: stride_default
2631 INTEGER,
INTENT(IN) :: print_level
2638 description=
"Controls the printing of "//trim(adjustl(description))//
" files with "// &
2639 "the electronic density and, for LSD calculations, the spin density.", &
2640 print_level=print_level, filename=
"")
2642 description=
"The stride (X,Y,Z) used to write the "//trim(adjustl(description))//
" file "// &
2643 "(larger values result in smaller "// &
2644 trim(adjustl(description))// &
2645 " files). You can provide 3 numbers (for X,Y,Z) or"// &
2646 " 1 number valid for all components.", &
2647 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=
integer_t)
2651 CALL keyword_create(keyword, __location__, name=
"DENSITY_INCLUDE", &
2652 description=
"Which parts of the density to include. In GAPW the electronic density "// &
2653 "is divided into a hard and a soft component, and the default (TOTAL_HARD_APPROX) "// &
2654 "is to approximate the hard density as a spherical gaussian and to print the smooth "// &
2655 "density accurately. This avoids potential artefacts originating from the hard density. "// &
2656 "If the TOTAL_DENSITY keyword is used the hard density will be computed more accurately "// &
2657 "but may introduce non-physical features. The SOFT_DENSITY keyword will lead to only the "// &
2658 "soft density being printed. In GPW these options have no effect and the cube file will "// &
2659 "only contain the valence electron density.", &
2660 usage=
"DENSITY_INCLUDE TOTAL_HARD_APPROX", &
2661 enum_c_vals=
s2a(
"TOTAL_HARD_APPROX",
"TOTAL_DENSITY",
"SOFT_DENSITY"), &
2662 enum_desc=
s2a(
"Print (hard+soft) density where the hard components shape is approximated", &
2663 "Print (hard+soft) density. Only has an effect "// &
2664 "if PAW atoms are present. NOTE: The total "// &
2665 "in real space might exhibit unphysical features "// &
2666 "like spikes due to the finite and thus "// &
2667 "truncated g vector", &
2668 "Print only the soft density"), &
2676 END SUBROUTINE create_e_density_section
2687 SUBROUTINE create_elf_print_section( &
2688 print_key, section_name, description, stride_default, stride_usage, print_level, filename)
2691 CHARACTER(len=*),
INTENT(IN) :: section_name, description, stride_usage, filename
2692 INTEGER,
DIMENSION(3),
INTENT(IN) :: stride_default
2693 INTEGER,
INTENT(IN) :: print_level
2699 description=
"Controls printing of "//trim(adjustl(description))// &
2700 " files with the electron localization function (ELF). "// &
2701 "Note that the value of ELF is defined between 0 and 1: "// &
2702 "Pauli kinetic energy density normalized by the kinetic energy density "// &
2703 "of a uniform el. gas of same density.", print_level=print_level, filename=filename)
2706 description=
"The stride (X,Y,Z) used to write the file (larger values result in smaller files). "// &
2707 "You can provide 3 numbers (for X,Y,Z) or 1 number valid for all components.", &
2708 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=
integer_t)
2712 CALL keyword_create(keyword, __location__, name=
"density_cutoff", &
2713 description=
" ", usage=
"density_cutoff 0.0001", repeats=.false., n_var=1, &
2714 type_of_var=
real_t, default_r_val=1.0e-10_dp)
2717 END SUBROUTINE create_elf_print_section
2727 LOGICAL,
INTENT(IN) :: xas_mode
2730 TYPE(
section_type),
POINTER :: broaden_subsection, pdos_section, subsection
2732 NULLIFY (broaden_subsection, pdos_section, subsection)
2736 description=
"Append the DOS/PDOS obtained at different iterations to the output file. "// &
2737 "By default the file is overwritten", &
2738 usage=
"APPEND", default_l_val=.false., lone_keyword_l_val=.true.)
2743 description=
"Specify the number of digits used to print DOS/PDOS values.", &
2749 description=
"Energy spacing of the DOS/PDOS output grid.", &
2750 usage=
"DELTA_E 0.0005", type_of_var=
real_t, default_r_val=0.001_dp)
2755 description=
"Number of unoccupied orbitals to include in the DOS/PDOS (-1=all). "// &
2756 "For OT calculations, the requested virtual orbitals are generated after SCF using the "// &
2757 "OT eigensolver. For diagonalization calculations, SCF%ADDED_MOS is increased if needed "// &
2758 "to make the requested unoccupied orbitals available.", &
2759 usage=
"NLUMO integer", default_i_val=0)
2763 IF (.NOT. xas_mode)
THEN
2765 description=
"Controls the printing of kind-resolved projected DOS.", &
2766 n_keywords=1, n_subsections=0)
2768 pdos_section => print_key
2771 description=
"Print out PDOS distinguishing all angular momentum components.", &
2772 usage=
"COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2775 IF (.NOT. xas_mode)
THEN
2781 description=
"Controls the printing of broadened DOS/PDOS curves.", &
2782 n_keywords=2, n_subsections=1, repeats=.false.)
2784 description=
"Energy unit used for the printed DOS/PDOS energy axis. "// &
2785 "Intensities are converted consistently to the selected energy unit.", &
2786 usage=
"ENERGY_UNIT HARTREE", type_of_var=
enum_t, &
2787 enum_c_vals=
s2a(
"HARTREE",
"EV"), &
2788 enum_i_vals=[1, 2], &
2789 enum_desc=
s2a(
"Print energies in Hartree (a.u.).", &
2790 "Print energies in electronvolt."), &
2795 description=
"Reference energy used for the printed DOS/PDOS energy axis. "// &
2796 "With AUTO, the Fermi energy is used if smearing is enabled or fractional "// &
2797 "occupations are found; otherwise the highest occupied crystal orbital is used.", &
2798 usage=
"ENERGY_ZERO AUTO", type_of_var=
enum_t, &
2799 enum_c_vals=
s2a(
"AUTO",
"ABSOLUTE",
"FERMI",
"HOCO"), &
2800 enum_i_vals=[1, 2, 3, 4], &
2801 enum_desc=
s2a(
"Choose FERMI for smeared or fractionally occupied systems, otherwise HOCO.", &
2802 "Print absolute orbital energies.", &
2803 "Shift orbital energies by the Fermi energy.", &
2804 "Shift orbital energies by the highest occupied crystal orbital."), &
2809 CALL section_create(broaden_subsection, __location__, name=
"BROADEN", &
2810 description=
"Controls the line shape used for broadened DOS/PDOS curves.", &
2811 n_keywords=3, n_subsections=0, repeats=.false.)
2813 description=
"Type of broadening function used to produce the DOS/PDOS curve.", &
2814 usage=
"TYPE GAUSSIAN", type_of_var=
enum_t, &
2815 enum_c_vals=
s2a(
"GAUSSIAN",
"LORENTZIAN",
"PSEUDO_VOIGT"), &
2816 enum_i_vals=[1, 2, 3], &
2817 enum_desc=
s2a(
"Use a Gaussian broadening function.", &
2818 "Use a Lorentzian broadening function.", &
2819 "Use a pseudo-Voigt mixture of Lorentzian and Gaussian functions."), &
2824 description=
"Full width at half maximum (FWHM) of the DOS/PDOS broadening function.", &
2825 usage=
"WIDTH [eV] 0.1", type_of_var=
real_t, &
2826 default_r_val=
cp_unit_to_cp2k(
value=0.1_dp, unit_str=
"eV"), unit_str=
"eV")
2829 CALL keyword_create(keyword, __location__, name=
"VOIGT_MIXING", &
2830 description=
"Lorentzian fraction of the pseudo-Voigt broadening function.", &
2831 usage=
"VOIGT_MIXING 0.5", type_of_var=
real_t, default_r_val=0.5_dp)
2839 CALL keyword_create(keyword, __location__, name=
"OUT_EACH_STATE", &
2840 variants=[
"OUT_EACH_MO"], &
2841 description=
"Output on the status of the calculation every OUT_EACH_MO states. If -1 no output", &
2842 usage=
"OUT_EACH_STATE integer", default_i_val=-1)
2847 description=
"Controls the printing of local PDOS, projected on subsets"// &
2848 " of atoms given through lists", &
2849 n_keywords=4, n_subsections=0, repeats=.true.)
2851 description=
"Print out PDOS distinguishing all angular momentum components.", &
2852 usage=
"COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2856 description=
"Specifies a list of indexes of atoms where to project the DOS", &
2857 usage=
"LIST {integer} {integer} .. {integer}", type_of_var=
integer_t, &
2858 n_var=-1, repeats=.true.)
2865 description=
"Controls the printing of local PDOS, projected on 3D volume in real space, "// &
2866 "the volume is defined in terms of position with respect to atoms in the lists", &
2867 n_keywords=4, n_subsections=0, repeats=.true.)
2869 description=
"Specifies a list of indexes of atoms used to define the real space volume", &
2870 usage=
"LIST {integer} {integer} .. {integer}", type_of_var=
integer_t, &
2871 n_var=-1, repeats=.true.)
2875 description=
"range of positions in Cartesian direction x: all grid points within "// &
2876 "this range from at least one atom of the list are considered", &
2877 usage=
"XRANGE -10.0 10.0", unit_str=
"angstrom", n_var=2, type_of_var=
real_t)
2881 description=
"range of positions in Cartesian direction y: all grid points within "// &
2882 "this range from at least one atom of the list are considered", &
2883 usage=
"YRANGE -10.0 10.0", unit_str=
"angstrom", n_var=2, type_of_var=
real_t)
2887 description=
"range of positions in Cartesian direction z: all grid points within "// &
2888 "this range from at least one atom of the list are considered", &
2889 usage=
"ZRANGE -10.0 10.0", unit_str=
"angstrom", n_var=2, type_of_var=
real_t)
2893 description=
"Only project states with the energy values in the given interval. "// &
2894 "Default is all states.", &
2895 usage=
"ERANGE -1.0 1.0", unit_str=
"hartree", n_var=2, type_of_var=
real_t)
2907 SUBROUTINE create_wannier_section(print_key)
2916 description=
"Interface to Wannier90 code. (EXPERIMENTAL)", &
2920 description=
"The seedname for the Wannier90 calculation (body of filenames).", &
2921 usage=
"SEED_NAME filename", default_c_val=
"wannier90", &
2922 n_var=1, type_of_var=
char_t)
2927 description=
"The dimensions of the Monkhorst-Pack k-point grid. ", &
2928 usage=
"MP_GRID 6 6 6", n_var=-1, default_i_vals=[10, 10, 10], type_of_var=
integer_t)
2932 CALL keyword_create(keyword, __location__, name=
"KPOINTS_SOURCE", &
2933 description=
"Select the k-point source for the Wannier90 export. MP_GRID keeps "// &
2934 "the historical behavior and builds a full grid from WANNIER90%MP_GRID. SCF uses "// &
2935 "the full k-point mesh from DFT%KPOINTS for Monkhorst-Pack, MacDonald, Gamma, or "// &
2936 "explicit GENERAL k-points. If the SCF calculation uses K290 or SPGLIB symmetry "// &
2937 "reduction, the corresponding unreduced mesh is used for Wannier90 because "// &
2938 "Wannier90 requires a complete mesh. NNKP reads explicit k-points and directed "// &
2939 "overlap connections from NNKP_FILE, without a regular-mesh requirement. "// &
2940 "WILSON generates and refines a surface of closed loops at the SCF potential. "// &
2941 "TRIM generates four or eight time-reversal-invariant points for native parity analysis.", &
2942 usage=
"KPOINTS_SOURCE MP_GRID", type_of_var=
enum_t, &
2943 enum_c_vals=
s2a(
"MP_GRID",
"SCF",
"NNKP",
"WILSON",
"TRIM"), &
2944 enum_i_vals=[0, 1, 2, 3, 4], &
2945 enum_desc=
s2a(
"Build the Wannier90 k-point mesh from WANNIER90%MP_GRID.", &
2946 "Use the full k-point mesh from DFT%KPOINTS.", &
2947 "Read explicit k-points and connections from NNKP_FILE.", &
2948 "Generate a family of closed Wilson loops.", &
2949 "Generate TRIM and enable native inversion-parity analysis."), &
2955 description=
"Wannier90 nnkp file for KPOINTS_SOURCE NNKP. Required literal block names: "// &
2956 "real_lattice (Angstrom), recip_lattice (2*pi/Angstrom), kpoints (fractional), "// &
2957 "and nnkpts (nearest-neighbour point indices and reciprocal lattice shifts). Nonzero exclusions "// &
2958 "in the file are unsupported; use EXCLUDE_BANDS in CP2K instead.", &
2959 usage=
"NNKP_FILE loop.nnkp", default_c_val=
"wannier90.nnkp", &
2960 n_var=1, type_of_var=
char_t)
2964 CALL keyword_create(keyword, __location__, name=
"SPIN_CHANNEL", &
2965 description=
"Collinear spin channel exported to the Wannier90 files (1 or 2). "// &
2966 "Each scalar export contains one channel. With SOC, use the restricted channel 1.", &
2967 usage=
"SPIN_CHANNEL 1", default_i_val=1)
2972 description=
"Compute native SVD-unitarized Wilson loops for NNKP connections. "// &
2973 "Requires one directed neighbour per point and contiguous, closed loops. "// &
2974 "Automatically enabled by KPOINTS_SOURCE WILSON.", default_l_val=.false., &
2979 description=
"Points per closed loop and number of transverse loops. "// &
2980 "Only for KPOINTS_SOURCE WILSON; loops include both transverse endpoints.", &
2981 n_var=2, default_i_vals=[16, 9], type_of_var=
integer_t)
2984 CALL keyword_create(keyword, __location__, name=
"WILSON_ORIGIN", &
2985 description=
"Origin of Wilson surface in fractional reciprocal coordinates.", &
2986 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t)
2989 CALL keyword_create(keyword, __location__, name=
"WILSON_DIRECTION", &
2990 description=
"Integer reciprocal vector along each closed Wilson loop.", &
2991 n_var=3, default_i_vals=[1, 0, 0], type_of_var=
integer_t)
2994 CALL keyword_create(keyword, __location__, name=
"WILSON_TRANSVERSE", &
2995 description=
"Fractional reciprocal vector spanning the transverse surface. "// &
2996 "For Z2 choose a time-reversal half-plane, e.g. 0 0.5 0.", &
2997 n_var=3, default_r_vals=[0.0_dp, 0.5_dp, 0.0_dp], type_of_var=
real_t)
3001 description=
"Compute native largest-gap crossing parity on a WILSON half-surface. "// &
3002 "Requires SOC, a nonmagnetic time-reversal-invariant Hamiltonian, an isolated "// &
3003 "occupied subspace, and converged Wilson spectra. TIME_REVERSAL must be set.", &
3008 description=
"Compute the native first Chern number from determinant Wilson winding. "// &
3009 "Requires KPOINTS_SOURCE WILSON and a closed full surface with integer transverse "// &
3010 "winding, e.g. WILSON_TRANSVERSE 0 1 0. Not compatible with Z2 half-surfaces. "// &
3011 "The selected bands must be isolated; SOC and time reversal are not required.", &
3012 default_l_val=.false., citations=[
gresch2017])
3016 description=
"Compute native even/odd inversion irreps at explicit TRIM. Uses the Gaussian "// &
3017 "AO metric, orbital parities, atom permutations and Bloch lattice phases. Validates the "// &
3018 "selected representation and its energy commutator. No Z2Pack or Wannier fit is needed.", &
3019 default_l_val=.false.)
3022 CALL keyword_create(keyword, __location__, name=
"INVERSION_TQC", &
3023 description=
"Enable PARITY and classify the inversion-subgroup symmetry signature of "// &
3024 "the occupied spinor bands. Requires SOC and TIME_REVERSAL and all four/eight TRIM. "// &
3025 "Reports Fu-Kane indices, 3D Z4, and an exact signed/nonnegative atomic EBR-signature test. "// &
3026 "Not a full-space-group TQC classifier or a certificate of a bulk gap/trivial topology.", &
3027 default_l_val=.false.)
3030 CALL keyword_create(keyword, __location__, name=
"TQC_DIMENSION", &
3031 description=
"Dimension of the inversion analysis: 2 uses the four kz=0 TRIM; "// &
3032 "3 uses all eight TRIM of the supplied reciprocal cell. All cell directions must be periodic.", &
3036 CALL keyword_create(keyword, __location__, name=
"PARITY_ORIGIN", &
3037 description=
"Inversion center in fractional direct-cell coordinates. The operation is "// &
3038 "r -> 2*center-r. Atomic kinds, basis and the selected Hamiltonian subspace must be invariant.", &
3039 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t)
3042 CALL keyword_create(keyword, __location__, name=
"PARITY_TOLERANCE", &
3043 description=
"Tolerance for parity metric, subspace and character checks. Also used "// &
3044 "as the inversion geometry tolerance in Bohr. Tighten with numerical convergence.", &
3045 default_r_val=1.e-6_dp)
3048 CALL keyword_create(keyword, __location__, name=
"PARITY_ENERGY_TOL", &
3049 description=
"Maximum projected symmetry/eigenvalue commutator in Hartree.", &
3050 default_r_val=1.e-6_dp)
3053 CALL keyword_create(keyword, __location__, name=
"REQUIRE_GLOBAL_GAP", &
3054 description=
"Require a positive sampled indirect gap above the lowest selected bands. "// &
3055 "Unlike the direct subspace gap this tests a common energy interval over all sampled "// &
3056 "points. A finite sampling does not prove a bulk gap. No per-point Fermi shifts are applied.", &
3057 default_l_val=.false.)
3060 CALL keyword_create(keyword, __location__, name=
"STATE_EXPORT", &
3061 description=
"Export selected complex AO states, all eigenvalues and full contracted "// &
3062 "Gaussian basis to SEED_NAME.topology for cross-geometry/phason overlaps. "// &
3063 "Requires NNKP, WILSON or TRIM, uses atomic units, and can generate large files. "// &
3064 "Spinor coefficients include second-variational SOC when enabled. "// &
3065 "No Wannier fit or Fermi-energy alignment is performed.", default_l_val=.false.)
3068 CALL keyword_create(keyword, __location__, name=
"TIME_REVERSAL", &
3069 description=
"User confirmation that the Hamiltonian is time-reversal invariant. "// &
3070 "Boundary Kramers degeneracy is additionally checked; it is not a proof of TR symmetry.", &
3071 default_l_val=.false.)
3075 description=
"Second-variational pseudopotential SOC for explicit-loop exports. "// &
3076 "Requires a restricted SCF and SOC-capable pseudopotentials. ADDED_MOS controls "// &
3077 "the scalar basis; EXCLUDE_BANDS then refers to spinor bands. Converge ADDED_MOS.", &
3078 default_l_val=.false.)
3081 CALL keyword_create(keyword, __location__, name=
"WILSON_MAX_REFINEMENT", &
3082 description=
"Maximum joint doublings of loop and transverse resolution; at least "// &
3083 "one doubling is required for generated WILSON surfaces.", default_i_val=3)
3087 description=
"Tolerance of Wilson centres between successive meshes (reduced units).", &
3088 default_r_val=1.e-3_dp)
3091 CALL keyword_create(keyword, __location__, name=
"WILSON_GAP_TOL", &
3092 description=
"Minimum sampled separation from excluded bands in Hartree.", &
3093 default_r_val=1.e-7_dp)
3097 CALL keyword_create(keyword, __location__, name=
"REUSE_SCF_MOS", &
3098 description=
"Try to reuse the SCF k-point MO coefficients when KPOINTS_SOURCE SCF "// &
3099 "is active. CP2K can directly reuse full SCF meshes, time-reversal partners, "// &
3100 "non-degenerate atom/AO symmetry images, and atom/AO symmetry images whose "// &
3101 "degenerate band subspaces are fully contained in the exported Wannier90 band "// &
3102 "window. If the Wannier90 band window cuts through a degenerate subspace, CP2K "// &
3103 "falls back to the historical full-mesh diagonalization.", &
3104 usage=
"REUSE_SCF_MOS T", default_l_val=.true.)
3108 CALL keyword_create(keyword, __location__, name=
"VALIDATE_REUSE_SCF_MOS", &
3109 description=
"When KPOINTS_SOURCE SCF and REUSE_SCF_MOS are active, first build a "// &
3110 "full-mesh diagonalization reference and validate the reconstructed SCF MO "// &
3111 "subspaces against it before writing Wannier90 files. This diagnostic option is "// &
3112 "expensive and intended for development of symmetry-reconstructed Wannier90 "// &
3114 usage=
"VALIDATE_REUSE_SCF_MOS T", default_l_val=.false.)
3118 CALL keyword_create(keyword, __location__, name=
"USE_BLOCH_PHASES", &
3119 description=
"Apply the CP2K Bloch-phase gauge to complete exported band subspaces "// &
3120 "and write an explicit identity .amn projection file for Wannier90. It is only "// &
3121 "valid when WANNIER_FUNCTIONS matches the number of exported bands; disentangled "// &
3122 "Wannier90 calculations still need explicit projections.", &
3123 usage=
"USE_BLOCH_PHASES T", default_l_val=.false.)
3128 variants=[
"ADDED_BANDS"], &
3129 description=
"Number of MOs/Bands added to the Band Structure calculation.", &
3134 CALL keyword_create(keyword, __location__, name=
"EXCLUDE_BANDS", &
3135 description=
"List of Bands excluded in the Wannier calculation.", &
3136 usage=
"EXCLUDE_BANDS b1 b2 ...", n_var=-1, repeats=.true., &
3141 CALL keyword_create(keyword, __location__, name=
"WANNIER_FUNCTIONS", &
3142 description=
"Number of Wannier functions to be calculated. ", &
3143 usage=
"WANNIER_FUNCTIONS 6", n_var=1, default_i_val=0, &
3148 END SUBROUTINE create_wannier_section
3154 SUBROUTINE create_stm_section(print_key)
3162 description=
"Controls the printing of cubes for the generation of STM images.", &
3165 description=
"The stride (X,Y,Z) used to write the cube file "// &
3166 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3167 " 1 number valid for all components.", &
3168 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3173 description=
"If the printkey is activated controls the number of additional lumos"// &
3174 " that are computed to be able to reproduce STM images obtained"// &
3175 " from positive bias (imaging unoccupied states)", &
3181 description=
"Bias energy for scanning tunneling microscopy (STM) image generation. "// &
3182 "Orbital densities are summed according to the bias energy. "// &
3183 "For negative values, states in the range ]EF+bias,EF] are summed, "// &
3184 "While positive values sum states in the range [EF,EF+bias[. "// &
3185 "If positive biases are used, sufficiently many unoccupied stated "// &
3186 "(see ADDED_MOS and NLUMO ) should be computed.", &
3187 n_var=-1, type_of_var=
real_t, default_r_vals=[0.0_dp], unit_str=
'eV')
3192 description=
"Tip orbital symmetry in Tersoff-Hamann approximation to compute STM images", &
3194 default_i_val=
orb_s, &
3195 usage=
"TH_TORB s dz2", &
3196 enum_c_vals=
s2a(
"S",
"PX",
"PY",
"PZ",
"DXY",
"DYZ",
"DZX",
"DX2",
"DY2",
"DZ2"), &
3197 enum_i_vals=[
orb_s,
orb_px,
orb_py,
orb_pz,
orb_dxy,
orb_dyz,
orb_dzx,
orb_dx2,
orb_dy2,
orb_dz2], &
3198 enum_desc=
s2a(
"s orbital",
"px orbital",
"py orbital",
"pz orbital", &
3199 "dxy orbital",
"dyz orbital",
"dzx orbital",
"x^2 orbital",
"y^2 orbital",
"z^2 orbital"))
3204 description=
"By default the reference energy is the Fermi energy. In order to compare"// &
3205 " with STS experiments, where specific energy ranges are addressed, here"// &
3206 " one can set a different reference energy."// &
3207 " The energy range is anyway controlled by the BIAS", &
3208 type_of_var=
real_t, default_r_val=0.0_dp, unit_str=
'eV')
3213 description=
"append the cube files when they already exist", &
3214 default_l_val=.false., lone_keyword_l_val=.true.)
3218 END SUBROUTINE create_stm_section
3224 SUBROUTINE create_wfn_mix_section(section)
3231 NULLIFY (subsection)
3234 cpassert(.NOT.
ASSOCIATED(section))
3237 description=
"A section that allows manipulation of the MO coeffs, "// &
3238 "e.g. for changing a ground state into an excited state. "// &
3239 "Starting from a copy of the original MOs, changes can be made "// &
3240 "by adding linear combinations of HOMO/LUMO of the original MOs to the result MOs. "// &
3241 "This method is called after an SCF optimization or before an RTP run if "// &
3242 "INITIAL_WFN=RESTART_WFN. Note that if called after an SCF optimization, a restart file "// &
3243 "with the mixed MOs is saved. This is not the case for an RTP with "// &
3244 "INITIAL_WFN=RESTART_WFN.", &
3245 n_keywords=1, n_subsections=0, repeats=.false.)
3247 CALL keyword_create(keyword, __location__, name=
"OVERWRITE_MOS", &
3248 description=
"If set to True, the active molecular orbitals in memory will be replaced by the mixed wfn "// &
3249 "at the end of the wfn mixing procedure. For instance, you can then use this new set of MOs to perform "// &
3250 "RTP or EMD directly. Note that in the case of an RTP run with INITIAL_WFN=RESTART_WFN, the OVERWRITE_MOS "// &
3251 "keyword is not used.", &
3252 default_l_val=.false., lone_keyword_l_val=.true.)
3257 description=
"Update a result MO with with a linear combination of original MOs."// &
3258 " This section can be repeated to build arbitrary linear combinations using repeatedly y=a*y+b*x. "// &
3259 "RESULT is (y), RESULT_SCALE is (a), ORIG is (x), ORIG_SCALE is (b)", &
3260 n_keywords=1, n_subsections=0, repeats=.true.)
3262 CALL keyword_create(keyword, __location__, name=
"RESULT_MO_INDEX", &
3263 description=
"Index of the MO (y) to be modified. Counting down in energy: "// &
3264 "set to 1 for the highest MO, to 3 for the highest MO-2.", &
3265 usage=
"RESULT_MO_INDEX 1", type_of_var=
integer_t, default_i_val=0)
3269 CALL keyword_create(keyword, __location__, name=
"RESULT_MARKED_STATE", &
3270 description=
"Specifies the MO according to "// &
3271 "the marks set in MOLECULAR_STATES. The value corresponds to the repetition "// &
3272 "of MARK_STATES in MOLECULAR_STATES", &
3273 usage=
"RESULT_MARKED_STATE 1", type_of_var=
integer_t, default_i_val=0)
3277 CALL keyword_create(keyword, __location__, name=
"REVERSE_MO_INDEX", &
3278 description=
"Reverses the index order of the OCCUPIED and EXTERNAL MOs. With this keyword "// &
3279 "ORIG_MO_INDEX/RESULT_MO_INDEX 1 point to the lowest energy MO (instead of the highest) "// &
3280 "and counts up in energy. The VIRTUAL MOs indexing is unchanged.", &
3281 default_l_val=.false., lone_keyword_l_val=.true.)
3285 CALL keyword_create(keyword, __location__, name=
"RESULT_SPIN_INDEX", &
3286 description=
"Spin of the MO (y) to be modified.", &
3287 enum_c_vals=
s2a(
"Alpha",
"Beta"), &
3288 enum_i_vals=[1, 2], &
3290 enum_desc=
s2a(
"Majority spin",
"Minority spin"))
3294 CALL keyword_create(keyword, __location__, name=
"RESULT_SCALE", &
3295 description=
"Scaling factor of the result variable (a).", &
3296 usage=
"RESULT_SCALE 0.0", type_of_var=
real_t)
3300 CALL keyword_create(keyword, __location__, name=
"ORIG_MO_INDEX", &
3301 description=
"Index of the original MO (x). "// &
3302 "If ORIG_TYPE is OCCUPIED, it counts down in energy: set to 1 to point to "// &
3303 "the highest MO and to 3 for the highest MO-2. "// &
3304 "If ORIG_TYPE is VIRTUAL, it counts up in energy: set to 1 to point to "// &
3305 "the lowest virtual MO and to 3 for the lowest MO+2. "// &
3306 "If ORIG_TYPE is EXTERNAL, it counts down in energy for the external "// &
3307 "set of MOs: set to 1 to point to the highest MO and to 3 for the highest MO-2. "// &
3308 "Do not set to zero or negative values.", &
3309 usage=
"ORIG_MO_INDEX 1", type_of_var=
integer_t, default_i_val=0)
3313 CALL keyword_create(keyword, __location__, name=
"ORIG_MARKED_STATE", &
3314 description=
"Specifies the MO according to "// &
3315 "the marks set in MOLECULAR_STATES. The value corresponds to the repetition "// &
3316 "of MARK_STATES in MOLECULAR_STATES", &
3317 usage=
"ORIG_MARKED_STATE 1", type_of_var=
integer_t, default_i_val=0)
3321 CALL keyword_create(keyword, __location__, name=
"ORIG_SPIN_INDEX", &
3322 description=
"Spin of the MO (x) to be modified.", &
3323 enum_c_vals=
s2a(
"Alpha",
"Beta"), &
3324 enum_i_vals=[1, 2], &
3326 enum_desc=
s2a(
"Majority spin",
"Minority spin"))
3331 description=
"Scaling factor of the original variable (b).", &
3332 usage=
"ORIG_SCALE 0.0", type_of_var=
real_t)
3337 description=
"Type of the original MO. Note that if ADDED_MOS was used in the "// &
3338 "SCF construction of the MO matrix, these extra MOs are also treated as OCCUPIED. ", &
3339 enum_c_vals=
s2a(
"OCCUPIED",
"VIRTUAL",
'EXTERNAL'), &
3340 usage=
"ORIG_TYPE OCCUPIED", &
3342 enum_desc=
s2a(
"The original MO is the result of the SCF procedure. This can also contain "// &
3343 "unoccupied MOs if the SCF%ADDED_MOS keyword was used.", &
3344 "The original MO is taken from the result of additional MOs calculated a "// &
3345 "posteriori of the SCF by request of the user. E.g. by specifying print%mo_cubes%nlumo. ", &
3346 "The orginal MO is from an external .wfn file. Use the keyword "// &
3347 "ORIG_EXT_FILE_NAME to define its name."), &
3352 CALL keyword_create(keyword, __location__, name=
"ORIG_EXT_FILE_NAME", &
3353 description=
"Name of the wavefunction file to read the original MO from. "// &
3354 "For instance, a restart wfn file from SCF calculation or an excited state from XAS_TDP calculation. "// &
3355 "If no file is specified, the run will crash. "// &
3356 "Currently, a RTP restart file (.rtpwfn) cannot be used as reference. "// &
3357 "Currently, this file SHALL have the basis set, number of MO and the same number of spin as the one "// &
3358 "from the SCF cycle.", &
3359 usage=
"ORIG_EXT_FILE_NAME <FILENAME>", &
3360 default_lc_val=
"EMPTY")
3367 END SUBROUTINE create_wfn_mix_section
3376 SUBROUTINE create_implicit_psolver_section(section)
3382 cpassert(.NOT.
ASSOCIATED(section))
3383 CALL section_create(section, __location__, name=
"IMPLICIT_PSOLVER", &
3384 description=
"Controls printing of cube files for data from the implicit "// &
3385 "(generalized) Poisson solver.", &
3387 n_keywords=0, n_subsections=3, repeats=.false.)
3389 NULLIFY (keyword, print_key)
3393 description=
"Controls the printing of a cube file with dielectric constant from "// &
3394 "the implicit (generalized) Poisson solver.", &
3398 description=
"The stride (X,Y,Z) used to write the cube file "// &
3399 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3400 " 1 number valid for all components.", &
3401 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3405 description=
"append the cube files when they already exist", &
3406 default_l_val=.false., lone_keyword_l_val=.true.)
3409 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
3410 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3411 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3420 print_key, __location__,
"DIRICHLET_BC_CUBE", &
3421 description=
"Controls the printing of cube files with unit step functions (constraints)"// &
3422 " representing Dirichlet-type (boundary) regions defined in the implicit (generalized) Poisson"// &
3423 " solver section. The regions remain unchanged throughout the calculations. If the Dirichlet"// &
3424 " regions are relatively large and/or the number of partitions is quite high, in order to save memory,"// &
3425 " generate the cube files in early steps and perform the rest of the calculations with this keyword"// &
3430 description=
"Print tiles that tessellate the Dirichlet regions into cube files. If TRUE, "// &
3431 "generates cube files as many as the total number of tiles.", &
3432 usage=
"TILE_CUBES <logical>", &
3433 default_l_val=.false., lone_keyword_l_val=.true.)
3437 description=
"The stride (X,Y,Z) used to write the cube file "// &
3438 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3439 " 1 number valid for all components.", &
3440 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3444 description=
"append the cube files when they already exist", &
3445 default_l_val=.false., lone_keyword_l_val=.true.)
3448 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
3449 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3450 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3459 description=
"Controls the printing of cube files with penalty charges induced to "// &
3460 "Dirichlet regions by Lagrange multipliers (implicit Poisson solver).", &
3464 description=
"The stride (X,Y,Z) used to write the cube file "// &
3465 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3466 " 1 number valid for all components.", &
3467 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3471 description=
"append the cube files when they already exist", &
3472 default_l_val=.false., lone_keyword_l_val=.true.)
3475 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
3476 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3477 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3484 END SUBROUTINE create_implicit_psolver_section
3497 cpassert(.NOT.
ASSOCIATED(section))
3498 CALL section_create(section, __location__, name=
"interpolator", &
3499 description=
"controls the interpolation for the G-space term", &
3500 n_keywords=5, n_subsections=0, repeats=.false.)
3502 NULLIFY (keyword, print_key)
3504 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
3505 description=
"the approximate inverse to use to get the starting point"// &
3506 " for the linear solver of the spline3 methods", &
3507 usage=
"aint_precond copy", &
3509 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_precond1", &
3510 "spl3_nopbc_aint2",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
3517 description=
"The preconditioner used"// &
3518 " for the linear solver of the spline3 methods", &
3519 usage=
"precond copy", &
3521 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_precond1", &
3522 "spl3_nopbc_aint2",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
3529 description=
"accuracy on the solution for spline3 the interpolators", &
3530 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
3535 description=
"accuracy on the residual for spline3 the interpolators", &
3536 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
3541 variants=[
'maxiter'], &
3542 description=
"the maximum number of iterations", &
3543 usage=
"max_iter 200", default_i_val=100)
3549 description=
"if convergence information about the linear solver"// &
3550 " of the spline methods should be printed", &
3552 each_iter_values=[10], filename=
"__STD_OUT__", &
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 grimme2015fod
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 gresch2017
integer, save, public weber2008
integer, save, public soluyanov2011
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
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Defines the basic variable types.
integer, parameter, public dp
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.
integer, parameter, public do_pw_grid_blocked_false
integer, parameter, public do_pw_grid_blocked_true
integer, parameter, public do_pw_grid_blocked_free
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...
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.