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.)
490 description=
"Print the analytic AO matrices <mu|x,y,z|nu> in Bohr, relative to "// &
491 "the coordinate origin, in the same AO ordering as OVERLAP and KOHN_SHAM_MATRIX. "// &
492 "Only isolated GPW/GAPW systems; not a periodic Berry-phase operator. "// &
493 "Use NDIGITS 16 for numerical postprocessing.", &
494 default_l_val=.false., lone_keyword_l_val=.true.)
499 description=
"Print the three real antisymmetric AO GTH SOC components Vx, Vy, Vz in hartree. "// &
500 "The physical orbital operators are i*Vx, i*Vy, i*Vz. "// &
501 "Requires a restricted, isolated GPW/GAPW calculation with GTH SOC potentials.", &
502 default_l_val=.false., lone_keyword_l_val=.true.)
506 CALL keyword_create(keyword, __location__, name=
"FERMI_CONTACT", &
507 description=
"If the printkey is activated controls the printing of the Fermi contact matrix", &
508 default_l_val=.false., lone_keyword_l_val=.true.)
512 keyword, __location__, name=
"PSO", &
513 description=
"If the printkey is activated controls the printing of the paramagnetic spin-orbit matrices", &
514 default_l_val=.false., lone_keyword_l_val=.true.)
518 keyword, __location__, name=
"EFG", &
519 description=
"If the printkey is activated controls the printing of the electric field gradient matrices", &
520 default_l_val=.false., lone_keyword_l_val=.true.)
523 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_ENERGY", &
524 description=
"If the printkey is activated controls the printing of the potential energy matrix", &
525 default_l_val=.false., lone_keyword_l_val=.true.)
529 description=
"If the printkey is activated controls the printing of the OCE HARD matrix", &
530 default_l_val=.false., lone_keyword_l_val=.true.)
534 description=
"If the printkey is activated controls the printing of the OCE SOFT matrix", &
535 default_l_val=.false., lone_keyword_l_val=.true.)
539 description=
"If the printkey is activated controls the printing of the w matrix", &
540 default_l_val=.false., lone_keyword_l_val=.true.)
543 CALL keyword_create(keyword, __location__, name=
"W_MATRIX_AUX_FIT", &
544 description=
"If the printkey is activated controls the printing of the w matrix", &
545 default_l_val=.false., lone_keyword_l_val=.true.)
549 description=
"If the printkey is activated controls the printing "// &
550 "of derivatives (for the matrixes that support this)", &
551 default_l_val=.false., lone_keyword_l_val=.true.)
558 print_key, __location__,
"MO", &
559 description=
"Controls the printing of the molecular orbital (MO) information. The requested MO information "// &
560 "is printed for all occupied MOs by default. Use the MO_INDEX_RANGE keyword to restrict the number "// &
561 "of the MOs or to print the MO information for unoccupied MOs. With diagonalization, an explicit "// &
562 "positive range or -1 as its last index makes the requested MOs available automatically, up to the "// &
563 "AO basis size. ADDED_MOS can make extra MOs available independently of this print request. With OT, "// &
564 "it is sufficient to specify the desired MO_INDEX_RANGE. The OT eigensolver can be controlled with "// &
565 "the EPS_LUMO and MAX_ITER_LUMO keywords in the SCF section.", &
568 description=
"Print the MOs in the Cartesian basis instead of the default spherical basis.", &
569 default_l_val=.false., lone_keyword_l_val=.true.)
572 CALL keyword_create(keyword, __location__, name=
"CARTESIAN_OVERLAP", &
573 description=
"Print the Cartesian overlap matrix in line with Cartesian MO coefficients.", &
574 default_l_val=.false., lone_keyword_l_val=.true.)
578 variants=
s2a(
"EIGENVALUES",
"EIGVALS"), &
579 description=
"Print the MO energies (eigenvalues).", &
580 default_l_val=.false., lone_keyword_l_val=.true.)
584 variants=
s2a(
"EIGENVECTORS",
"EIGVECS"), &
585 description=
"Print the MO coefficients (eigenvectors).", &
586 default_l_val=.false., lone_keyword_l_val=.true.)
589 CALL keyword_create(keyword, __location__, name=
"OCCUPATION_NUMBERS", &
590 variants=
s2a(
"OCCNUMS"), &
591 description=
"Print the MO occupation numbers.", &
592 default_l_val=.false., lone_keyword_l_val=.true.)
595 CALL keyword_create(keyword, __location__, name=
"OCCUPATION_NUMBERS_STATS", &
596 variants=
s2a(
"OCCNUMSTATS"), &
597 description=
"Print some stats (max number of occupied MOs, etc.) of the MO occupation numbers."// &
598 " First logical toggles stats printing, first real is the occupied threshold.", &
599 type_of_var=
char_t, n_var=-1, &
600 default_c_vals=[
".FALSE.",
"1.0E-6 "], &
601 lone_keyword_c_vals=[
".TRUE."], &
602 usage=
"OCCUPATION_NUMBERS_STATS {Logical} [{Real}]")
606 description=
"Specify the number of digits used to print the MO information.", &
611 name=
"MO_INDEX_RANGE", &
612 variants=
s2a(
"MO_RANGE",
"RANGE"), &
613 description=
"Print only the requested subset of MOs. The indices of the first and "// &
614 "the last MO have to be specified to define the range. A positive range makes the "// &
615 "requested MOs available automatically. -1 as the last MO index makes and prints all "// &
616 "available orbitals with diagonalization and all orbitals with OT.", &
620 default_i_vals=[0, 0], &
621 usage=
"MO_INDEX_RANGE 10 15")
628 description=
"Write the molecular orbitals in Molden file format, for visualisation.", &
631 description=
"Unit for coordinates and cell in the MOLDEN file.", &
632 usage=
"UNIT ANGSTROM", &
633 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
634 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
635 enum_i_vals=[1, 2], &
640 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
641 usage=
"WRITE_CELL T", &
642 default_l_val=.false., lone_keyword_l_val=.true.)
646 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
647 usage=
"WRITE_PSEUDO T", &
648 default_l_val=.false., lone_keyword_l_val=.true.)
652 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
653 "setting their atomic number to zero.", &
654 usage=
"MARK_GHOST T", &
655 default_l_val=.false., lone_keyword_l_val=.true.)
659 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
660 usage=
"NDIGITS {int}", &
665 description=
"Representation of Gaussian-type orbitals", &
667 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
669 "Cartesian Gaussian orbitals. Use with caution", &
670 "Spherical Gaussian orbitals. Incompatible with VMD"), &
675 description=
"Number of unoccupied orbitals to include in the Molden file. "// &
676 "For OT calculations, the requested virtual orbitals are generated after "// &
677 "SCF using the OT eigensolver. For diagonalization calculations, "// &
678 "SCF%ADDED_MOS is increased if needed to make the requested unoccupied "// &
679 "orbitals available. 0 means no virtual orbitals, -1 means all available.", &
680 usage=
"NLUMO integer", &
688 description=
"Write k-point MO information to `.mokp` file. "// &
689 "The information of cell and k-points is given at first. Then, "// &
690 "the coefficients of molecular orbitals are always written, "// &
691 "while users can choose whether to write GTO basis information "// &
692 "or explicit overlap matrices through the `AO_EXPORT_TYPE` keyword.", &
695 description=
"Unit for coordinates and cell in the .mokp file.", &
696 usage=
"UNIT ANGSTROM", &
697 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
698 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
699 enum_i_vals=[1, 2], &
704 description=
"Specifies the number of significant digits retained.", &
705 usage=
"NDIGITS {int}", &
709 CALL keyword_create(keyword, __location__, name=
"AO_EXPORT_TYPE", &
710 description=
"How AO information is provided for interpreting MO coefficients. "// &
711 "GTO_BASIS writes basis set exponents/coefficients (compact, post-processing reconstructs S(k)). "// &
712 "OVERLAP_MATRIX writes S(k) directly (larger file, ready to use).", &
714 enum_c_vals=
s2a(
"GTO_BASIS",
"OVERLAP_MATRIX"), &
715 enum_desc=
s2a(
"Write GTO basis set definition (MOLDEN denormalization convention)", &
716 "Write explicit overlap matrices S(k) for all k-points"), &
723 CALL create_mo_section(print_key,
"MO_CUBES",
"cube", [2, 2, 2],
"STRIDE 1 1 1",
high_print_level,
"write_cube")
725 description=
"append the cube files when they already exist", &
726 default_l_val=.false., lone_keyword_l_val=.true.)
729 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
730 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
731 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
737 CALL create_mo_section( &
738 print_key,
"MO_OPENPMD",
"openPMD", [1, 1, 1],
"STRIDE 2 2 2",
debug_print_level + 1,
"write_openpmd")
739 CALL add_generic_openpmd_arguments(print_key)
743 CALL create_stm_section(print_key)
747 CALL create_wfn_mix_section(subsection)
752 description=
"Write a TREXIO file to disk.", &
753 n_keywords=4, n_subsections=0, repeats=.false.)
755 description=
"Body of Filename for the trexio file.", &
756 usage=
"FILENAME {name}", default_c_val=
"TREXIO", &
761 description=
"Store the MOs in the Cartesian basis instead of the default spherical basis.", &
762 default_l_val=.false., lone_keyword_l_val=.true.)
765 CALL keyword_create(keyword, __location__, name=
"FULL_KPOINT_GRID", &
766 description=
"For symmetry-reduced k-point SCF calculations, export MOs on the "// &
767 "full unreduced k-point grid instead of the irreducible grid.", &
768 usage=
"FULL_KPOINT_GRID <LOGICAL>", default_l_val=.false., &
769 lone_keyword_l_val=.true.)
772 CALL keyword_create(keyword, __location__, name=
"REUSE_SCF_MOS", &
773 description=
"When FULL_KPOINT_GRID is active, try to reconstruct the full-grid "// &
774 "MO coefficients from the symmetry-reduced SCF orbitals before falling back to "// &
775 "a full-grid diagonalization.", &
776 usage=
"REUSE_SCF_MOS T", default_l_val=.true.)
783 description=
"Write a CASINO gwfn.data file to disk.", &
784 n_keywords=5, n_subsections=0, repeats=.false.)
786 description=
"Filename for the CASINO gwfn.data file.", &
787 usage=
"FILENAME {name}", default_c_val=
"gwfn.data", &
791 CALL keyword_create(keyword, __location__, name=
"EPS_KPOINT_REAL", &
792 description=
"Tolerance for detecting Gamma/BZ-edge k-points with real orbitals.", &
793 usage=
"EPS_KPOINT_REAL 1.0E-10", default_r_val=1.0e-10_dp)
796 CALL keyword_create(keyword, __location__, name=
"FULL_KPOINT_GRID", &
797 description=
"For symmetry-reduced k-point SCF calculations, export orbitals on the "// &
798 "full unreduced k-point grid required by CASINO.", &
799 usage=
"FULL_KPOINT_GRID <LOGICAL>", default_l_val=.true., &
800 lone_keyword_l_val=.true.)
803 CALL keyword_create(keyword, __location__, name=
"REUSE_SCF_MOS", &
804 description=
"When FULL_KPOINT_GRID is active, try to reconstruct the full-grid "// &
805 "MO coefficients from the symmetry-reduced SCF orbitals before falling back to "// &
806 "a full-grid diagonalization.", &
807 usage=
"REUSE_SCF_MOS T", default_l_val=.true.)
810 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDOPOTENTIALS", &
811 description=
"Write CASINO *_pp.data files for CP2K semilocal ECP potentials. "// &
812 "GTH pseudopotentials are marked in gwfn.data, but require externally supplied "// &
813 "CASINO pseudopotential files.", &
814 usage=
"WRITE_PSEUDOPOTENTIALS T", default_l_val=.true., &
815 lone_keyword_l_val=.true.)
822 description=
"Controls the printing of some gapw related information (debug).", &
823 n_keywords=0, n_subsections=1, repeats=.false.)
825 description=
"If the printkey is activated controls if information on"// &
826 " the projectors is printed.", &
831 description=
"If the printkey is activated controls if information on rho0 is printed.", &
839 description=
"Controls the printing of dft control parameters.", &
845 description=
"Controls the printing of kpoint information.", &
851 CALL create_bandstructure_section(subsection)
856 description=
"Controls the checking and printing of an estimate "// &
857 "of the overlap matrix condition number", &
860 description=
"Calculate an estimate of the 1-norm condition number", &
861 default_l_val=.true., lone_keyword_l_val=.true.)
864 CALL keyword_create(keyword, __location__, name=
"DIAGONALIZATION", &
865 description=
"Calculate the 1- and 2-norm condition numbers using diagonalization", &
866 default_l_val=.false., lone_keyword_l_val=.true.)
870 description=
"Calculate the 2-norm condition number using the Arnoldi code (may not be reliable)", &
871 default_l_val=.false., lone_keyword_l_val=.true.)
877 CALL create_e_density_section( &
879 "E_DENSITY_OPENPMD", &
884 CALL add_generic_openpmd_arguments(print_key)
888 CALL create_e_density_section(print_key,
"E_DENSITY_CUBE",
"cube", [2, 2, 2],
"STRIDE 2 2 2",
high_print_level)
890 description=
"append the cube files when they already exist", &
891 default_l_val=.false., lone_keyword_l_val=.true.)
895 CALL keyword_create(keyword, __location__, name=
"XRD_INTERFACE", &
896 description=
"It activates the print out of exponents and coefficients for the"// &
897 " Gaussian expansion of the core densities, based on atom calculations for each kind."// &
898 " The resulting core dansities are needed to compute the form factors."// &
899 " If GAPW the local densities are also given in terms of a Gaussian expansion,"// &
900 " by fitting the difference between local-fhard and local-soft density for each atom."// &
901 " In this case the keyword SOFT_DENSITY is enabled.", &
902 default_l_val=.false., lone_keyword_l_val=.true.)
907 description=
"Number of Gaussian functions used in the expansion of atomic (core) density", &
908 usage=
"NGAUSS 10", n_var=1, default_i_val=12, type_of_var=
integer_t)
916 description=
"Fractional occupation number weighted density (FOD) of Grimme and Hansen "// &
917 "[doi:10.1002/anie.201501887]. Prints the orbital sum N_FOD. "// &
918 "Requires GPW at Gamma and positive-temperature Fermi-Dirac smearing. "// &
919 "FOD is a qualitative static-correlation diagnostic, not a proof of "// &
920 "multireference character. Results depend on the functional and electronic "// &
921 "temperature; metallic occupations need a different interpretation.", &
924 description=
"Also collocate the FOD density, print its grid integral and write a cube "// &
925 "in electrons/bohr**3. Without this option only the inexpensive orbital sum is computed.", &
926 default_l_val=.false., lone_keyword_l_val=.true.)
930 description=
"Cube sampling stride. Supply one value for all directions or three values.", &
931 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
938 description=
"Controls printing of cube files with "// &
939 "the total density (electrons+atomic core). Note that "// &
940 "the value of the total density is positive where the "// &
941 "electron density dominates and negative where the core is. "// &
942 "When GPW is enabled this will simply print the combined density "// &
943 "of the valence electrons and charge-balanced core. In GAPW the "// &
944 "electronic density (hard+soft plus a correction term) is printed "// &
945 "together with the charge-balanced core density to produce a complete "// &
946 "representation of the total density.", &
949 description=
"The stride (X,Y,Z) used to write the cube file "// &
950 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
951 " 1 number valid for all components.", &
952 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
957 description=
"append the cube files when they already exist", &
958 default_l_val=.false., lone_keyword_l_val=.true.)
962 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
963 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
964 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
972 description=
"Controls the printing of a cube file with eletrostatic"// &
973 " potential generated by the total density (electrons+ions). It is"// &
974 " valid only for QS with GPW formalism."// &
975 " Note that by convention the potential has opposite sign than the expected physical one.", &
978 description=
"The stride (X,Y,Z) used to write the cube file "// &
979 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
980 " 1 number valid for all components.", &
981 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
985 description=
"append the cube files when they already exist", &
986 default_l_val=.false., lone_keyword_l_val=.true.)
989 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
990 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
991 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
999 description=
"Controls the printing of a cube file with external"// &
1000 " potential from the DFT%EXTERNAL_POTENTIAL section only.", &
1003 description=
"The stride (X,Y,Z) used to write the cube file "// &
1004 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1005 " 1 number valid for all components.", &
1006 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1010 description=
"append the cube files when they already exist", &
1011 default_l_val=.false., lone_keyword_l_val=.true.)
1014 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1015 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1016 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1024 description=
"Controls the output of the electron density to the losslessly"// &
1025 " compressed BQB file format, see [Brehm2018]"// &
1026 " (via LibBQB see <https://brehm-research.de/bqb>)."// &
1027 " Currently does not work with changing cell vector (NpT ensemble).", &
1032 description=
"Skips the first step of a MD run (avoids duplicate step if restarted).", &
1033 usage=
"SKIP_FIRST T", default_l_val=.false., lone_keyword_l_val=.true.)
1037 CALL keyword_create(keyword, __location__, name=
"STORE_STEP_NUMBER", &
1038 description=
"Stores the step number and simulation time in the comment line of each BQB"// &
1039 " frame. Switch it off for binary compatibility with original CP2k CUBE files.", &
1040 usage=
"STORE_STEP_NUMBER F", default_l_val=.true., lone_keyword_l_val=.true.)
1045 description=
"Performs an on-the-fly decompression of each compressed BQB frame to check"// &
1046 " whether the volumetric data exactly matches, and aborts the run if not so.", &
1047 usage=
"CHECK T", default_l_val=.false., lone_keyword_l_val=.true.)
1052 description=
"Specify this keyword to overwrite the output BQB file if"// &
1053 " it already exists. By default, the data is appended to an existing file.", &
1054 usage=
"OVERWRITE T", default_l_val=.false., lone_keyword_l_val=.true.)
1059 description=
"Controls how many previous steps are taken into account for extrapolation in"// &
1060 " compression. Use a value of 1 to compress the frames independently.", &
1061 usage=
"HISTORY 10", n_var=1, default_i_val=10, type_of_var=
integer_t)
1065 CALL keyword_create(keyword, __location__, name=
"PARAMETER_KEY", &
1066 description=
"Allows to supply previously optimized compression parameters via a"// &
1067 " parameter key (alphanumeric character sequence starting with 'at')."// &
1068 " Just leave away the 'at' sign here, because CP2k will otherwise"// &
1069 " assume it is a variable name in the input", &
1070 usage=
"PARAMETER_KEY <KEY>", n_var=1, default_c_val=
"", type_of_var=
char_t)
1075 description=
"Controls the time spent to optimize the parameters for compression efficiency.", &
1076 usage=
"OPTIMIZE {OFF,QUICK,NORMAL,PATIENT,EXHAUSTIVE}", repeats=.false., n_var=1, &
1078 enum_c_vals=
s2a(
"OFF",
"QUICK",
"NORMAL",
"PATIENT",
"EXHAUSTIVE"), &
1079 enum_desc=
s2a(
"No optimization (use defaults)",
"Quick optimization", &
1080 "Standard optimization",
"Precise optimization",
"Exhaustive optimization"), &
1094 CALL create_implicit_psolver_section(subsection)
1100 description=
"Controls the printing of a cube file with xc"// &
1101 " potential generated by the ZMP method (for the moment). It is"// &
1102 " valid only for QS with GPW formalism .", &
1105 description=
"The stride (X,Y,Z) used to write the cube file "// &
1106 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1107 " 1 number valid for all components.", &
1108 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1112 description=
"append the cube files when they already exist", &
1113 default_l_val=.false., lone_keyword_l_val=.true.)
1121 description=
"Controls the printing of cube files with electric"// &
1122 " field generated by the total density (electrons+ions). It is"// &
1123 " valid only for QS with GPW formalism.", &
1126 description=
"The stride (X,Y,Z) used to write the cube file "// &
1127 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1128 " 1 number valid for all components.", &
1129 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1133 description=
"append the cube files when they already exist", &
1134 default_l_val=.false., lone_keyword_l_val=.true.)
1137 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1138 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1139 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1146 CALL create_elf_print_section(print_key,
"ELF_CUBE", &
1150 description=
"append the cube files when they already exist", &
1151 default_l_val=.false., lone_keyword_l_val=.true.)
1158 CALL create_elf_print_section(print_key,
"ELF_OPENPMD", &
1161 CALL add_generic_openpmd_arguments(print_key)
1166 description=
"Controls the printing of cube files with the local"// &
1167 " energy. It is valid only for QS with GPW/GAPW formalism."// &
1168 " Meta and hybrid functionals are not possible. For GAPW/GAPW_XC"// &
1169 " and ADMM-GAPW this regular-grid cube keeps the existing soft-grid"// &
1170 " semantics; atom-centered hard one-center terms are not projected"// &
1171 " onto the cube grid.", &
1174 description=
"The stride (X,Y,Z) used to write the cube file "// &
1175 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1176 " 1 number valid for all components.", &
1177 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1181 description=
"append the cube files when they already exist", &
1182 default_l_val=.false., lone_keyword_l_val=.true.)
1185 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1186 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1187 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1195 description=
"Controls the printing of cube files with the local"// &
1196 " stress. It is valid only for QS with GPW/GAPW formalism."// &
1197 " Meta and hybrid functionals are not possible. For GAPW/GAPW_XC"// &
1198 " and ADMM-GAPW this regular-grid cube keeps the existing soft-grid"// &
1199 " semantics; atom-centered hard one-center terms are not projected"// &
1200 " onto the cube grid.", &
1203 description=
"The stride (X,Y,Z) used to write the cube file "// &
1204 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1205 " 1 number valid for all components.", &
1206 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1210 description=
"append the cube files when they already exist", &
1211 default_l_val=.false., lone_keyword_l_val=.true.)
1214 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
1215 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
1216 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
1224 description=
"Print density of states (DOS). "// &
1225 "Projected DOS output can be enabled with PDOS.", &
1231 description=
"Specify a Monkhorst-Pack grid with which to compute the density of states. "// &
1232 "Works only for a k-point calculation", &
1233 usage=
"MP_GRID {integer} {integer} {integer}", default_i_vals=[-1], &
1241 CALL create_wannier_section(print_key)
1248 keyword, __location__, &
1249 name=
"MAX_MOMENT", &
1250 description=
"Maximum moment to be calculated. Values higher than 1 not implemented under periodic boundaries.", &
1251 usage=
"MAX_MOMENT {integer}", &
1259 keyword, __location__, &
1261 description=
"Format of the moments output. DETAILED prints the traditional multi-line report. "// &
1262 "TRAJECTORY prints one machine-readable electric-dipole record per iteration. For periodic "// &
1263 "calculations each record also contains the cell matrix in Debye, which is required to unwrap "// &
1264 "Berry-phase jumps in variable cells.", &
1265 usage=
"FORMAT {DETAILED|TRAJECTORY}", &
1266 enum_c_vals=
s2a(
"DETAILED",
"TRAJECTORY"), &
1267 enum_desc=
s2a(
"Traditional multi-line moments report", &
1268 "One electric-dipole record per iteration"), &
1275 description=
"Calculate also magnetic moments, only implemented without periodic boundaries", &
1276 usage=
"MAGNETIC yes", &
1279 default_l_val=.false., &
1280 lone_keyword_l_val=.true.)
1285 description=
"Calculate expectation values of the el. multipole moments in their velocity "// &
1286 "representation during RTP. Implemented up to el. quadrupole moment.", &
1287 usage=
"VEL_REPRS yes", &
1290 default_l_val=.false., &
1291 lone_keyword_l_val=.true.)
1296 description=
"Include non local commutator for velocity representations. "// &
1297 "Necessary for origin independent results.", &
1298 usage=
"COM_NL yes", &
1301 default_l_val=.false., &
1302 lone_keyword_l_val=.true.)
1306 name=
"SECOND_REFERENCE_POINT", &
1307 description=
"Use second reference point", &
1308 usage=
"SECOND_REFERENCE_POINT .TRUE.", &
1311 default_l_val=.false., &
1312 lone_keyword_l_val=.true.)
1316 variants=
s2a(
"REF_2"), &
1317 description=
"Define a second reference point for the calculation of the electrostatic moment.", &
1318 usage=
"REFERENCE_2 COM", &
1319 enum_c_vals=
s2a(
"COM",
"COAC",
"USER_DEFINED",
"ZERO"), &
1320 enum_desc=
s2a(
"Use Center of Mass", &
1321 "Use Center of Atomic Charges", &
1322 "Use User Defined Point (Keyword:REF_POINT)", &
1323 "Use Origin of Coordinate System"), &
1331 CALL keyword_create(keyword, __location__, name=
"REFERENCE_POINT_2", &
1332 variants=
s2a(
"REF_POINT_2"), &
1333 description=
"Fixed second reference point for the calculations of the electrostatic moment.", &
1334 usage=
"REFERENCE_POINT_2 x y z", &
1336 n_var=3, default_r_vals=[0._dp, 0._dp, 0._dp], &
1342 description=
"Maximum number of molecular orbitals closest to the Fermi "// &
1343 "level for which dipole matrix elements and Berry curvatures are printed "// &
1344 "per k-point. 0 for all orbitals. Ignored if not a KPOINT calculation.", &
1345 usage=
"MAX_NMO {integer}", &
1347 n_var=1, default_i_val=10, &
1358 description=
"Print the electronic moments separately for KG subsystems", &
1359 usage=
"KG .TRUE.", &
1362 default_l_val=.false., &
1363 lone_keyword_l_val=.true.)
1371 description=
"Controls the printing of the Mulliken (spin) population analysis", &
1373 common_iter_levels=1)
1375 keyword, __location__, &
1377 description=
"Print the gross orbital populations (GOP) in addition to the gross atomic populations (GAP) "// &
1378 "and net charges", &
1379 usage=
"PRINT_GOP yes", &
1382 default_l_val=.false., &
1383 lone_keyword_l_val=.true.)
1387 keyword, __location__, &
1389 description=
"Print all information including the full net AO and overlap population matrix", &
1390 usage=
"PRINT_ALL yes", &
1393 default_l_val=.false., &
1394 lone_keyword_l_val=.true.)
1402 description=
"Controls the printing of the Lowdin (spin) population analysis", &
1404 common_iter_levels=1)
1406 keyword, __location__, &
1408 description=
"Print the orbital populations in addition to the atomic populations and net charges", &
1409 usage=
"PRINT_GOP yes", &
1412 default_l_val=.false., &
1413 lone_keyword_l_val=.true.)
1417 keyword, __location__, &
1419 description=
"Print all information including the full symmetrically orthogonalised density matrix", &
1420 usage=
"PRINT_ALL yes", &
1423 default_l_val=.false., &
1424 lone_keyword_l_val=.true.)
1432 description=
"Controls the printing of the Hirshfeld (spin) population analysis", &
1434 common_iter_levels=1)
1435 CALL keyword_create(keyword, __location__, name=
"SELF_CONSISTENT", &
1436 description=
"Calculate charges from the Hirscheld-I (self_consistent) method."// &
1437 " This scales only the full shape function, not the added charge as in the original scheme.", &
1438 usage=
"SELF_CONSISTENT yes", repeats=.false., n_var=1, &
1439 default_l_val=.false., lone_keyword_l_val=.true.)
1442 CALL keyword_create(keyword, __location__, name=
"SHAPE_FUNCTION", &
1443 description=
"Type of shape function used for Hirshfeld partitioning.", &
1444 usage=
"SHAPE_FUNCTION {Gaussian,Density}", repeats=.false., n_var=1, &
1446 enum_c_vals=
s2a(
"GAUSSIAN",
"DENSITY"), &
1447 enum_desc=
s2a(
"Single Gaussian with Colvalent radius", &
1448 "Atomic density expanded in multiple Gaussians"), &
1452 CALL keyword_create(keyword, __location__, name=
"REFERENCE_CHARGE", &
1453 description=
"Charge of atomic partitioning function for Hirshfeld method.", &
1454 usage=
"REFERENCE_CHARGE {Atomic,Mulliken}", repeats=.false., n_var=1, &
1456 enum_c_vals=
s2a(
"ATOMIC",
"MULLIKEN"), &
1457 enum_desc=
s2a(
"Use atomic core charges",
"Calculate Mulliken charges"), &
1462 description=
"Use user defined radii to generate Gaussians."// &
1463 " These radii are defined by the keyword ATOMIC_RADII", &
1464 usage=
"USER_RADIUS yes", repeats=.false., n_var=1, &
1465 default_l_val=.false., lone_keyword_l_val=.true.)
1468 CALL keyword_create(keyword, __location__, name=
"ATOMIC_RADII", &
1469 description=
"Defines custom radii to setup the spherical Gaussians.", &
1470 usage=
"ATOMIC_RADII {real} {real} {real}", repeats=.false., &
1471 unit_str=
"angstrom", &
1472 type_of_var=
real_t, n_var=-1)
1480 description=
"Controls the printing of the EEQ charges", &
1482 common_iter_levels=1, &
1489 description=
"Controls the printing of the MAO (modified atomic orbital) analysis", &
1491 common_iter_levels=1, &
1494 description=
"Threshold for matrix elements in MAO determination.", &
1495 usage=
"EPS_FILTER reps", repeats=.false., n_var=1, &
1496 default_r_val=1.e-8_dp, type_of_var=
real_t)
1499 CALL keyword_create(keyword, __location__, name=
"REFERENCE_BASIS", &
1500 description=
"Basis set used to construct MAO's.", &
1501 usage=
"REFERENCE_BASIS {ORBITAL,PRIMITIVE,EXTERNAL}", repeats=.false., n_var=1, &
1503 enum_c_vals=
s2a(
"ORBITAL",
"PRIMITIVE",
"EXTERNAL"), &
1504 enum_desc=
s2a(
"Use standard orbital basis set",
"Construct basis from primitives of the orbital basis", &
1505 "Read external basis (MAO)"), &
1510 description=
"Print out MAO reference basis.", &
1511 usage=
"PRINT_BASIS {logical}", repeats=.false., n_var=1, &
1512 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1516 description=
"Print out MAO in PAO format to be used for optimization or learning.", &
1517 usage=
"PRINT_PAO {logical}", repeats=.false., n_var=1, &
1518 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1522 description=
"Threshold for gradient in MAO optimization.", &
1523 usage=
"EPS_GRAD reps", repeats=.false., n_var=1, &
1524 default_r_val=1.e-4_dp, type_of_var=
real_t)
1527 CALL keyword_create(keyword, __location__, name=
"EPS_FUNCTION", &
1528 description=
"Threshold for electron defect in MAO optimization.", &
1529 usage=
"EPS_FUNCTION feps", repeats=.false., n_var=1, &
1530 default_r_val=1.e-3_dp, type_of_var=
real_t)
1534 description=
"Maximum allowed iterations for MAO optimization.", &
1535 usage=
"MAX_ITER iter", repeats=.false., n_var=1, &
1540 description=
"Neglect 3 atom terms in MAO analysis.", &
1541 usage=
"NEGLECT_ABC {logical}", repeats=.false., n_var=1, &
1542 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=
logical_t)
1545 CALL keyword_create(keyword, __location__, name=
"AB_THRESHOLD", &
1546 description=
"Threshold for printing of AB shared electron numbers.", &
1547 usage=
"AB_THRESHOLD thr", repeats=.false., n_var=1, &
1548 default_r_val=1.e-2_dp, type_of_var=
real_t)
1551 CALL keyword_create(keyword, __location__, name=
"ABC_THRESHOLD", &
1552 description=
"Threshold for printing of ABC shared electron numbers.", &
1553 usage=
"ABC_THRESHOLD thr", repeats=.false., n_var=1, &
1554 default_r_val=1.e-5_dp, type_of_var=
real_t)
1557 CALL keyword_create(keyword, __location__, name=
"ANALYZE_UNASSIGNED_CHARGE", &
1558 description=
"Calculate atomic contributions to the unassigned charge.", &
1559 usage=
"ANALYZE_UNASSIGNED_CHARGE {logical}", repeats=.false., n_var=1, &
1560 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1568 description=
"Controls the printing of the minimal localized basis analysis", &
1570 common_iter_levels=1, &
1573 description=
"Threshold for matrix elements in basis determination.", &
1574 usage=
"EPS_FILTER reps", repeats=.false., n_var=1, &
1575 default_r_val=1.e-8_dp, type_of_var=
real_t)
1578 CALL keyword_create(keyword, __location__, name=
"FULL_ORTHOGONALIZATION", &
1579 description=
"Orthogonalize the localized minimal basis.", &
1580 usage=
"FULL_ORTHOGONALIZATION {logical}", repeats=.false., n_var=1, &
1581 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1585 description=
"Calculate Mayer Bond Orders.", &
1586 usage=
"BOND_ORDER {logical}", repeats=.false., n_var=1, &
1587 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1591 NULLIFY (sub_print_key)
1593 description=
"Write the minimal basis on Cube files.", &
1596 description=
"The stride (X,Y,Z) used to write the cube file "// &
1597 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1598 " 1 number valid for all components.", &
1599 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1603 description=
"Indexes of the atoms minimal basis to be printed as cube files "// &
1604 "This keyword can be repeated several times "// &
1605 "(useful if you have to specify many indexes).", &
1606 usage=
"ATOM_LIST 1 2", &
1607 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1613 NULLIFY (sub_print_key)
1615 description=
"Write the minimal basis in Molden file format, for visualisation.", &
1618 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1619 usage=
"UNIT ANGSTROM", &
1620 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1621 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1622 enum_i_vals=[1, 2], &
1627 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1628 usage=
"WRITE_CELL T", &
1629 default_l_val=.false., lone_keyword_l_val=.true.)
1632 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
1633 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1634 usage=
"WRITE_PSEUDO T", &
1635 default_l_val=.false., lone_keyword_l_val=.true.)
1639 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
1640 "setting their atomic number to zero.", &
1641 usage=
"MARK_GHOST T", &
1642 default_l_val=.false., lone_keyword_l_val=.true.)
1646 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1647 usage=
"NDIGITS {int}", &
1652 description=
"Representation of Gaussian-type orbitals", &
1654 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
1656 "Cartesian Gaussian orbitals. Use with caution", &
1657 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1669 description=
"Controls energy decomposition analysis", &
1671 common_iter_levels=1, &
1673 CALL keyword_create(keyword, __location__, name=
"REFERENCE_ORB_CANONICAL", &
1674 description=
"Use reference orbitals in canonical form.", &
1675 usage=
"REFERENCE_ORB_CANONICAL {logical}", repeats=.false., n_var=1, &
1676 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=
logical_t)
1679 CALL keyword_create(keyword, __location__, name=
"SKIP_LOCALIZATION", &
1680 description=
"Don't localize the MOs.", &
1681 usage=
"SKIP_LOCALIZATION {logical}", repeats=.false., n_var=1, &
1682 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1685 CALL keyword_create(keyword, __location__, name=
"DETAILED_ENERGY", &
1686 description=
"Calculate detailed atomic decomposition energies.", &
1687 usage=
"DETAILED_ENERGY {logical}", repeats=.false., n_var=1, &
1688 default_l_val=.false., lone_keyword_l_val=.true., type_of_var=
logical_t)
1691 CALL keyword_create(keyword, __location__, name=
"EWALD_ALPHA_PARAMETER", &
1692 description=
"Calculate Energy Decomposition for a specific alpha value. "// &
1693 "alpha = 1/(2*rc**2), see GTH pseudopotentials.", &
1694 usage=
"EWALD_ALPHA_PARAMETER alpha", repeats=.false., n_var=1, &
1695 default_r_val=0.0_dp, type_of_var=
real_t)
1704 description=
"Controls the printing of the IAO (intrinsic atomic orbital) analysis", &
1706 common_iter_levels=1, &
1709 description=
"Threshold for matrix inversion eigenvalues.", &
1710 usage=
"EPS_SVD reps", repeats=.false., n_var=1, &
1711 default_r_val=0.0_dp, type_of_var=
real_t)
1715 description=
"Threshold in occupation for vectors included.", &
1716 usage=
"EPS_OCC reps", repeats=.false., n_var=1, &
1717 default_r_val=0.0_dp, type_of_var=
real_t)
1720 CALL keyword_create(keyword, __location__, name=
"ATOMIC_CHARGES", &
1721 description=
"Calculate atomic charges from IAO.", &
1722 usage=
"ATOMIC_CHARGES {logical}", repeats=.false., n_var=1, &
1723 default_l_val=.true., lone_keyword_l_val=.true., type_of_var=
logical_t)
1727 NULLIFY (sub_print_key)
1729 description=
"Write the IAO basis in Molden file format, for visualisation.", &
1732 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1733 usage=
"UNIT ANGSTROM", &
1734 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1735 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1736 enum_i_vals=[1, 2], &
1741 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1742 usage=
"WRITE_CELL T", &
1743 default_l_val=.false., lone_keyword_l_val=.true.)
1746 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
1747 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1748 usage=
"WRITE_PSEUDO T", &
1749 default_l_val=.false., lone_keyword_l_val=.true.)
1753 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
1754 "setting their atomic number to zero.", &
1755 usage=
"MARK_GHOST T", &
1756 default_l_val=.false., lone_keyword_l_val=.true.)
1760 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1761 usage=
"NDIGITS {int}", &
1766 description=
"Representation of Gaussian-type orbitals", &
1768 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
1770 "Cartesian Gaussian orbitals. Use with caution", &
1771 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1778 NULLIFY (sub_print_key)
1780 description=
"Controls the printing of the IAO basis "// &
1781 "as *.cube files.", &
1785 description=
"The stride (X,Y,Z) used to write the cube file "// &
1786 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1787 " 1 number valid for all components.", &
1788 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1792 description=
"append the cube files when they already exist", &
1793 default_l_val=.false., lone_keyword_l_val=.true.)
1797 description=
"Indices of the atoms to be included in basis CUBE file printing. ", &
1798 usage=
"ATOM_LIST {integer} {integer} .. {integer} ", &
1799 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1805 NULLIFY (sub_print_key)
1807 description=
"Calculates single center expansion of IAOs ", &
1811 description=
"Maximum l quantum number used in the expansion.", &
1812 usage=
"LMAX 2", n_var=1, default_i_val=3, type_of_var=
integer_t)
1816 description=
"Max number of basis functions used in the expansion."// &
1817 " Default is determined by the orbital basis set.", &
1818 usage=
"NBAS 10", n_var=1, default_i_val=-1, type_of_var=
integer_t)
1822 description=
"Append the OCE basis files when it already exists", &
1823 default_l_val=.false., lone_keyword_l_val=.true.)
1829 NULLIFY (sub_print_key)
1831 description=
"Calculate intrinsic bond orbitals using "// &
1832 "localized MOs in IAO basis.", &
1836 CALL keyword_create(keyword, __location__, name=
"LOCALIZATION_OPERATOR", &
1837 description=
"Operator to be optimized for orbital localization", &
1838 enum_c_vals=
s2a(
"PIPEK_MEZEY",
"PIPEK_MEZEY_4",
"L1NORM"), &
1840 enum_desc=
s2a(
"Use Pipek-Mezey operator (order 2)", &
1841 "Use Pipek-Mezey operator (order 4)", &
1846 CALL keyword_create(keyword, __location__, name=
"ENERGY_LOCALIZATION_FUNCTION", &
1847 description=
"Function for energy localization: f(e_i), e_i orbital energy", &
1848 enum_c_vals=
s2a(
"NONE",
"ENERGY",
"OCCUPATION"), &
1850 enum_desc=
s2a(
"Don't use energy localization.", &
1851 "Use orbital energies for localization.", &
1852 "Use occupation numbers for localization."), &
1856 CALL keyword_create(keyword, __location__, name=
"ENERGY_LOCALIZATION_WEIGHT", &
1857 description=
"Weight given to energy localization, using f(e_i) function", &
1858 usage=
"ENERGY_LOCALIZATION_WEIGHT 0.1", n_var=1, &
1859 default_r_val=0.0_dp, type_of_var=
real_t)
1864 NULLIFY (subsection)
1866 description=
"Calculation and printing of centers and spreads "// &
1867 "of localized orbitals.", &
1870 CALL keyword_create(keyword, __location__, name=
"POSITION_OPERATOR_BERRY", &
1871 description=
"Use Berry phase position operator.", &
1872 usage=
"POSITION_OPERATOR_BERRY T", n_var=1, &
1873 default_l_val=.true., lone_keyword_l_val=.true.)
1879 NULLIFY (subsection)
1881 description=
"Write the IBO orbitals in Molden file format, for visualisation.", &
1884 description=
"Unit for coordinates and cell in the MOLDEN file.", &
1885 usage=
"UNIT ANGSTROM", &
1886 enum_c_vals=
s2a(
"BOHR",
"ANGSTROM"), &
1887 enum_desc=
s2a(
"Write in Bohr (AU)",
"Write in Angstrom"), &
1888 enum_i_vals=[1, 2], &
1893 description=
"Controls whether the [Cell] block is written to the MOLDEN file.", &
1894 usage=
"WRITE_CELL T", &
1895 default_l_val=.false., lone_keyword_l_val=.true.)
1898 CALL keyword_create(keyword, __location__, name=
"WRITE_PSEUDO", &
1899 description=
"Controls whether the [Pseudo] block is written to the MOLDEN file.", &
1900 usage=
"WRITE_PSEUDO T", &
1901 default_l_val=.false., lone_keyword_l_val=.true.)
1905 description=
"Controls whether ghost atoms are marked in the [Atoms] block by "// &
1906 "setting their atomic number to zero.", &
1907 usage=
"MARK_GHOST T", &
1908 default_l_val=.false., lone_keyword_l_val=.true.)
1912 description=
"Specifies the number of significant digits retained. 3 is OK for visualization.", &
1913 usage=
"NDIGITS {int}", &
1918 description=
"Representation of Gaussian-type orbitals", &
1920 enum_c_vals=
s2a(
"CARTESIAN",
"SPHERICAL"), &
1922 "Cartesian Gaussian orbitals. Use with caution", &
1923 "Spherical Gaussian orbitals. Incompatible with VMD"), &
1930 NULLIFY (subsection)
1932 description=
"Controls the printing of the IBO orbitals "// &
1933 "as *.cube files.", &
1937 description=
"The stride (X,Y,Z) used to write the cube file "// &
1938 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
1939 " 1 number valid for all components.", &
1940 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
1944 description=
"append the cube files when they already exist", &
1945 default_l_val=.false., lone_keyword_l_val=.true.)
1949 description=
"Indices of the orbitals to be included in IBO CUBE file printing. ", &
1950 usage=
"STATE_LIST {integer} {integer} .. {integer} ", &
1951 n_var=-1, type_of_var=
integer_t, repeats=.true.)
1960 NULLIFY (sub_print_key)
1962 description=
"Controls the printout required for ROSE.", &
1965 description=
"Specify the number of digits used to print the MO information.", &
1978 description=
"Controls the printing of the DOS from the density matrix. "// &
1979 "This allows the calculation of the DOS even in density matrix based "// &
1980 "REAL_TIME_PROPAGATION and LS_SCF. "// &
1981 "However, it requires a cubically scaling diagonalization of the Hamiltonian. "// &
1982 "Hartree-Fock NYI, values will be wrong. "// &
1983 "Careful, the orbitals in rtp/emd are not actually eigenstates of the Hamiltonian. "// &
1984 "Assumes absence of spin polarization (so far).", &
1986 each_iter_names=
s2a(
"MD"), each_iter_values=[100], &
1989 description=
"The number of energy windows.", &
1990 usage=
"N_WINDOWS 200", &
1995 description=
"Filtering threshold for sparse matrix operations.", &
1996 usage=
"EPS_FILTER 1.0E-6", &
1997 default_r_val=1.0e-14_dp)
2000 CALL keyword_create(keyword, __location__, name=
"RESTRICT_RANGE", &
2001 description=
"Restricts the energy windows to states close to the fermi level", &
2002 usage=
"RESTRICT_RANGE .TRUE.", &
2003 default_l_val=.false., lone_keyword_l_val=.true.)
2007 description=
"If the RESTRICT_RANGE keyword is set, then all energy widnows will"// &
2008 " be placed in an interval from from the fermi level minus to the fermi level plus this keyword", &
2010 default_r_val=1.0_dp)
2014 description=
"Print the energy windows to cube files", &
2015 usage=
"PRINT_CUBES .TRUE.", &
2016 default_l_val=.false., lone_keyword_l_val=.true.)
2020 description=
"The stride (X,Y,Z) used to write the energy windows cube files (if enabled) "// &
2021 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
2022 " 1 number valid for all components.", &
2023 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
2031 description=
"Write the KS matrix in CSR format into a file.", &
2034 description=
"Threshold on the absolute value of the elements to be printed out. "// &
2035 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2036 "if the block contains at least one non-zero element.", &
2037 usage=
"THRESHOLD {real}", &
2039 default_r_val=0.0_dp)
2042 CALL keyword_create(keyword, __location__, name=
"Upper_triangular", &
2043 description=
"Print only the upper triangular part of the matrix. ", &
2044 usage=
"UPPER_TRIANGULAR {logical}", &
2046 default_l_val=.false., &
2047 lone_keyword_l_val=.true.)
2051 description=
"Whether or not to generate the file in a binary format. ", &
2052 usage=
"BINARY {logical}", &
2054 default_l_val=.false., &
2055 lone_keyword_l_val=.true.)
2059 description=
"Print the KS matrix in real-space instead of k-space.. ", &
2060 usage=
"REAL_SPACE {logical}", &
2062 default_l_val=.false., &
2063 lone_keyword_l_val=.true.)
2071 description=
"Write the overlap matrix in CSR format into a file.", &
2074 description=
"Threshold on the absolute value of the elements to be printed out. "// &
2075 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2076 "if the block contains at least one non-zero element.", &
2077 usage=
"THRESHOLD {real}", &
2079 default_r_val=0.0_dp)
2082 CALL keyword_create(keyword, __location__, name=
"Upper_triangular", &
2083 description=
"Print only the upper triangular part of the matrix. ", &
2084 usage=
"UPPER_TRIANGULAR {logical}", &
2086 default_l_val=.false., &
2087 lone_keyword_l_val=.true.)
2091 description=
"Whether or not to generate the file in a binary format. ", &
2092 usage=
"BINARY {logical}", &
2094 default_l_val=.false., &
2095 lone_keyword_l_val=.true.)
2099 description=
"Print the overlap matrix in real-space instead of k-space.. ", &
2100 usage=
"REAL_SPACE {logical}", &
2102 default_l_val=.false., &
2103 lone_keyword_l_val=.true.)
2111 description=
"Write the core Hamiltonian matrix in CSR format into a file.", &
2114 description=
"Threshold on the absolute value of the elements to be printed out. "// &
2115 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2116 "if the block contains at least one non-zero element.", &
2117 usage=
"THRESHOLD {real}", &
2119 default_r_val=0.0_dp)
2122 CALL keyword_create(keyword, __location__, name=
"Upper_triangular", &
2123 description=
"Print only the upper triangular part of the matrix. ", &
2124 usage=
"UPPER_TRIANGULAR {logical}", &
2126 default_l_val=.false., &
2127 lone_keyword_l_val=.true.)
2131 description=
"Whether or not to generate the file in a binary format. ", &
2132 usage=
"BINARY {logical}", &
2134 default_l_val=.false., &
2135 lone_keyword_l_val=.true.)
2139 description=
"Print the core Hamiltonian matrix in real-space instead of k-space.. ", &
2140 usage=
"REAL_SPACE {logical}", &
2142 default_l_val=.false., &
2143 lone_keyword_l_val=.true.)
2151 description=
"Write the density matrix in CSR format into a file.", &
2154 description=
"Threshold on the absolute value of the elements to be printed out. "// &
2155 "In CP2K all the elements in a (atomic) matrix block are considered non-zero, "// &
2156 "if the block contains at least one non-zero element.", &
2157 usage=
"THRESHOLD {real}", &
2159 default_r_val=0.0_dp)
2162 CALL keyword_create(keyword, __location__, name=
"Upper_triangular", &
2163 description=
"Print only the upper triangular part of the matrix. ", &
2164 usage=
"UPPER_TRIANGULAR {logical}", &
2166 default_l_val=.false., &
2167 lone_keyword_l_val=.true.)
2171 description=
"Whether or not to generate the file in a binary format. ", &
2172 usage=
"BINARY {logical}", &
2174 default_l_val=.false., &
2175 lone_keyword_l_val=.true.)
2179 description=
"Print the density matrix in real-space instead of k-space.. ", &
2180 usage=
"REAL_SPACE {logical}", &
2182 default_l_val=.false., &
2183 lone_keyword_l_val=.true.)
2191 description=
"Writes an (upper-triangular) adjacency matrix indicating the "// &
2192 "interaction between atoms (according to overlapping basis functions). The "// &
2193 "columns are: iatom, jatom, ikind, jkind; where iatom and jatom are the atom "// &
2194 "indices (based on the coordinate file), ikind and jkind are the atomic kinds "// &
2195 "(indeces as shown in the ATOMIC KIND INFORMATION section of a CP2K output). ", &
2202 print_key, __location__, name=
"XRAY_DIFFRACTION_SPECTRUM", &
2203 description=
"Calculate and print the coherent X-ray "// &
2204 "diffraction spectrum", &
2209 keyword, __location__, &
2211 variants=[
"Q_MAXIMUM"], &
2212 description=
"Maximum Q value calculated for the spectrum", &
2213 usage=
"Q_MAX {real}", &
2218 unit_str=
"angstrom^-1"), &
2219 unit_str=
"angstrom^-1")
2226 description=
"Calculate and print the electric field gradients "// &
2227 "at atomic positions", &
2229 filename=
"__STD_OUT__")
2232 name=
"INTERPOLATION", &
2233 description=
"Use interpolation method from real space grid", &
2234 usage=
"INTERPOLATION {logical}", &
2237 default_l_val=.false., lone_keyword_l_val=.true.)
2242 name=
"GSPACE_SMOOTHING", &
2243 description=
"Use a G-space smoothing function", &
2244 usage=
"GSPACE_SMOOTHING cutoff {real}, width {real}", &
2246 n_var=2, default_r_vals=[-1._dp, -1._dp], &
2253 description=
"Print additional debug output", &
2254 usage=
"DEBUG {logical}", &
2257 default_l_val=.false., lone_keyword_l_val=.true.)
2269 description=
"Print the two quantities needed in the basis molopt generation:"// &
2270 " total energy and condition number of the overlap matrix (S matrix)", &
2272 filename=
"__STD_OUT__")
2277 description=
"Calculate and print the EPR hyperfine coupling tensor"// &
2278 " at atomic positions", &
2280 filename=
"__STD_OUT__")
2283 name=
"INTERACTION_RADIUS", &
2284 description=
"Radius of interaction for EPR hyperfine tensor calculation", &
2285 usage=
"INTERACTION_RADIUS radius {real}", &
2287 n_var=1, default_r_val=10._dp, &
2296 description=
"Optimize the exponents of the LRI basis set", &
2298 filename=
"OPTIMIZED_LRI_BASIS")
2303 print_key, __location__, name=
"PLUS_U", &
2304 description=
"Controls the printing for the DFT+U methods", &
2306 filename=
"__STD_OUT__", &
2307 each_iter_names=
s2a(
"QS_SCF"), &
2308 each_iter_values=[0], &
2314 print_key, __location__, name=
"CHARGEMOL", &
2315 description=
"Write .wfx input file for Chargemol", &
2317 filename=
"CHARGEMOL", &
2319 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2320 description=
"Specifies the maximum number of backup copies.", &
2321 usage=
"BACKUP_COPIES {int}", &
2326 description=
"Write information about cell periodicity.", &
2327 usage=
"PERIODIC {LOGICAL}", &
2328 default_l_val=.false., lone_keyword_l_val=.true.)
2335 print_key, __location__, name=
"SCCS", &
2336 description=
"Controls the printing for the SCCS models", &
2338 filename=
"__STD_OUT__", &
2339 each_iter_names=
s2a(
"QS_SCF"), &
2340 each_iter_values=[0], &
2343 NULLIFY (sub_print_key)
2346 sub_print_key, __location__, name=
"DENSITY_GRADIENT", &
2347 description=
"Controls the printing of the cube files with "// &
2348 "the norm of the density gradient |∇ρ| "// &
2349 "used by the SCCS model.", &
2352 each_iter_names=
s2a(
"QS_SCF"), &
2353 each_iter_values=[0])
2355 description=
"The stride (X,Y,Z) used to write the cube file "// &
2356 "(larger values result in smaller cube files). You can provide 3 "// &
2357 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2359 default_i_vals=[2, 2, 2], &
2365 description=
"Append the cube files when they already exist", &
2366 default_l_val=.false., &
2367 lone_keyword_l_val=.true., &
2375 sub_print_key, __location__, name=
"DIELECTRIC_FUNCTION", &
2376 description=
"Controls the printing of the cube files with "// &
2377 "the dielectric function used by the SCCS model. "// &
2378 "This function determines the cavity formed by a solute in "// &
2379 "a solvent and thus it can be used for the visualisaton of the cavity.", &
2382 each_iter_names=
s2a(
"QS_SCF"), &
2383 each_iter_values=[0], &
2386 description=
"The stride (X,Y,Z) used to write the cube file "// &
2387 "(larger values result in smaller cube files). You can provide 3 "// &
2388 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2390 default_i_vals=[2, 2, 2], &
2396 description=
"Append the cube files when they already exist", &
2397 default_l_val=.false., &
2398 lone_keyword_l_val=.true., &
2406 sub_print_key, __location__, name=
"TOTAL_CHARGE_DENSITY", &
2407 description=
"Controls the printing of the cube files with the "// &
2408 "total charge density $\rho^\text{tot}$ used by the SCCS model.", &
2411 each_iter_names=
s2a(
"QS_SCF"), &
2412 each_iter_values=[0], &
2415 description=
"The stride (X,Y,Z) used to write the cube file "// &
2416 "(larger values result in smaller cube files). You can provide 3 "// &
2417 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2419 default_i_vals=[2, 2, 2], &
2425 description=
"Append the cube files when they already exist", &
2426 default_l_val=.false., &
2427 lone_keyword_l_val=.true., &
2435 sub_print_key, __location__, name=
"POLARISATION_CHARGE_DENSITY", &
2436 description=
"Controls the printing of the cube files with the "// &
2437 "polarisation charge density $\rho^\text{pol}$ used by the SCCS model with the "// &
2438 "total charge density $\rho^\text{tot} = \rho^\text{sol} + \rho^\text{pol}", &
2441 each_iter_names=
s2a(
"QS_SCF"), &
2442 each_iter_values=[0], &
2445 description=
"The stride (X,Y,Z) used to write the cube file "// &
2446 "(larger values result in smaller cube files). You can provide 3 "// &
2447 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2449 default_i_vals=[2, 2, 2], &
2455 description=
"Append the cube files when they already exist", &
2456 default_l_val=.false., &
2457 lone_keyword_l_val=.true., &
2465 sub_print_key, __location__, name=
"POLARISATION_POTENTIAL", &
2466 description=
"Controls the printing of the cube files with the "// &
2467 "polarisation potential $\phi^\text{pol}$ used by the SCCS model with the "// &
2468 "total potential $\phi^\text{tot} = \phi^\text{sol} + \phi^\text{pol}$", &
2471 each_iter_names=
s2a(
"QS_SCF"), &
2472 each_iter_values=[0], &
2475 description=
"The stride (X,Y,Z) used to write the cube file "// &
2476 "(larger values result in smaller cube files). You can provide 3 "// &
2477 "numbers (for X,Y,Z) or 1 number valid for all components.", &
2479 default_i_vals=[2, 2, 2], &
2485 description=
"Append the cube files when they already exist", &
2486 default_l_val=.false., &
2487 lone_keyword_l_val=.true., &
2504 SUBROUTINE create_bandstructure_section(section)
2510 cpassert(.NOT.
ASSOCIATED(section))
2511 CALL section_create(section, __location__, name=
"BAND_STRUCTURE", &
2512 description=
"Specifies the k-points used in band structure calculation.", &
2513 n_keywords=0, n_subsections=0, repeats=.false.)
2517 description=
"File name used for band structure", &
2518 usage=
"FILE_NAME <filename>", default_c_val=
"", &
2519 type_of_var=
char_t, n_var=1)
2524 variants=[
"ADDED_BANDS"], &
2525 description=
"Number of MOs/Bands added to the Band Structure calculation.", &
2530 NULLIFY (subsection)
2535 END SUBROUTINE create_bandstructure_section
2537 SUBROUTINE add_generic_openpmd_arguments(print_key)
2543 CALL keyword_create(keyword, __location__, name=
"OPENPMD_EXTENSION", &
2544 description=
"Filename extension for openPMD files, including the dot and "// &
2545 "(for optionally activating file encoding) a file expansion pattern.", &
2552 description=
"Inline runtime config for openPMD output. Note that inline "// &
2553 "specifications are subject to restrictions imposed by the input "// &
2554 "file format, making this option useful only for very simple use cases. "// &
2555 "Refer to OPENPMD_CFG_FILE for anything else.", &
2556 default_c_val=
"{}", type_of_var=
char_t)
2560 CALL keyword_create(keyword, __location__, name=
"OPENPMD_CFG_FILE", &
2561 description=
"Runtime config file for openPMD output. This parameter takes precedence over OPENPMD_CFG.", default_c_val=
"", &
2566 END SUBROUTINE add_generic_openpmd_arguments
2572 SUBROUTINE create_mo_section( &
2573 print_key, section_name, description, stride_default, stride_usage, &
2574 print_level, do_write_keyname)
2577 CHARACTER(len=*),
INTENT(IN) :: section_name, description, stride_usage, do_write_keyname
2578 INTEGER,
DIMENSION(3),
INTENT(IN) :: stride_default
2579 INTEGER,
INTENT(IN) :: print_level
2586 description=
"Controls the printing of the molecular orbitals (MOs) as " &
2587 //trim(adjustl(description))// &
2589 " It can be used during a Real Time calculation to print the MOs."// &
2590 " In this case, the density corresponding to the time dependent MO is printed"// &
2591 " instead of the wave-function.", &
2592 print_level=print_level, filename=
"")
2595 description=
"The stride (X,Y,Z) used to write the "//trim(adjustl(description))//
" file "// &
2596 "(larger values result in smaller "// &
2597 trim(adjustl(description))// &
2598 " files). You can provide 3 numbers (for X,Y,Z) or"// &
2599 " 1 number valid for all components.", &
2600 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=
integer_t)
2604 CALL keyword_create(keyword, __location__, name=do_write_keyname, &
2605 description=
"If the MO " &
2606 //trim(adjustl(description)) &
2607 //
" file should be written. If false, the eigenvalues are still computed."// &
2608 " Can also be useful in combination with STM calculations", &
2609 default_l_val=.true., lone_keyword_l_val=.true.)
2614 description=
"If the printkey is activated controls the number of lumos"// &
2615 " that are printed and dumped as "//trim(adjustl(description))//
" (-1=all)", &
2621 keyword, __location__, name=
"nhomo", &
2622 description=
"If the printkey is activated controls the number of homos that dumped as "// &
2623 trim(adjustl(description))// &
2625 " eigenvalues are always all dumped", &
2631 keyword, __location__, name=
"homo_list", &
2632 description=
"If the printkey is activated controls the index of homos dumped as openPMD,"// &
2633 " eigenvalues are always all dumped. It overrides nhomo.", &
2634 usage=
"HOMO_LIST {integer} {integer} .. {integer} ", type_of_var=
integer_t, &
2635 n_var=-1, repeats=.true.)
2639 END SUBROUTINE create_mo_section
2641 SUBROUTINE create_e_density_section( &
2642 print_key, section_name, description, stride_default, &
2643 stride_usage, print_level)
2646 CHARACTER(len=*),
INTENT(IN) :: section_name, description, stride_usage
2647 INTEGER,
DIMENSION(3),
INTENT(IN) :: stride_default
2648 INTEGER,
INTENT(IN) :: print_level
2655 description=
"Controls the printing of "//trim(adjustl(description))//
" files with "// &
2656 "the electronic density and, for LSD calculations, the spin density.", &
2657 print_level=print_level, filename=
"")
2659 description=
"The stride (X,Y,Z) used to write the "//trim(adjustl(description))//
" file "// &
2660 "(larger values result in smaller "// &
2661 trim(adjustl(description))// &
2662 " files). You can provide 3 numbers (for X,Y,Z) or"// &
2663 " 1 number valid for all components.", &
2664 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=
integer_t)
2668 CALL keyword_create(keyword, __location__, name=
"DENSITY_INCLUDE", &
2669 description=
"Which parts of the density to include. In GAPW the electronic density "// &
2670 "is divided into a hard and a soft component, and the default (TOTAL_HARD_APPROX) "// &
2671 "is to approximate the hard density as a spherical gaussian and to print the smooth "// &
2672 "density accurately. This avoids potential artefacts originating from the hard density. "// &
2673 "If the TOTAL_DENSITY keyword is used the hard density will be computed more accurately "// &
2674 "but may introduce non-physical features. The SOFT_DENSITY keyword will lead to only the "// &
2675 "soft density being printed. In GPW these options have no effect and the cube file will "// &
2676 "only contain the valence electron density.", &
2677 usage=
"DENSITY_INCLUDE TOTAL_HARD_APPROX", &
2678 enum_c_vals=
s2a(
"TOTAL_HARD_APPROX",
"TOTAL_DENSITY",
"SOFT_DENSITY"), &
2679 enum_desc=
s2a(
"Print (hard+soft) density where the hard components shape is approximated", &
2680 "Print (hard+soft) density. Only has an effect "// &
2681 "if PAW atoms are present. NOTE: The total "// &
2682 "in real space might exhibit unphysical features "// &
2683 "like spikes due to the finite and thus "// &
2684 "truncated g vector", &
2685 "Print only the soft density"), &
2693 END SUBROUTINE create_e_density_section
2704 SUBROUTINE create_elf_print_section( &
2705 print_key, section_name, description, stride_default, stride_usage, print_level, filename)
2708 CHARACTER(len=*),
INTENT(IN) :: section_name, description, stride_usage, filename
2709 INTEGER,
DIMENSION(3),
INTENT(IN) :: stride_default
2710 INTEGER,
INTENT(IN) :: print_level
2716 description=
"Controls printing of "//trim(adjustl(description))// &
2717 " files with the electron localization function (ELF). "// &
2718 "Note that the value of ELF is defined between 0 and 1: "// &
2719 "Pauli kinetic energy density normalized by the kinetic energy density "// &
2720 "of a uniform el. gas of same density.", print_level=print_level, filename=filename)
2723 description=
"The stride (X,Y,Z) used to write the file (larger values result in smaller files). "// &
2724 "You can provide 3 numbers (for X,Y,Z) or 1 number valid for all components.", &
2725 usage=stride_usage, n_var=-1, default_i_vals=stride_default, type_of_var=
integer_t)
2729 CALL keyword_create(keyword, __location__, name=
"density_cutoff", &
2730 description=
" ", usage=
"density_cutoff 0.0001", repeats=.false., n_var=1, &
2731 type_of_var=
real_t, default_r_val=1.0e-10_dp)
2734 END SUBROUTINE create_elf_print_section
2744 LOGICAL,
INTENT(IN) :: xas_mode
2747 TYPE(
section_type),
POINTER :: broaden_subsection, pdos_section, subsection
2749 NULLIFY (broaden_subsection, pdos_section, subsection)
2753 description=
"Append the DOS/PDOS obtained at different iterations to the output file. "// &
2754 "By default the file is overwritten", &
2755 usage=
"APPEND", default_l_val=.false., lone_keyword_l_val=.true.)
2760 description=
"Specify the number of digits used to print DOS/PDOS values.", &
2766 description=
"Energy spacing of the DOS/PDOS output grid.", &
2767 usage=
"DELTA_E 0.0005", type_of_var=
real_t, default_r_val=0.001_dp)
2772 description=
"Number of unoccupied orbitals to include in the DOS/PDOS (-1=all). "// &
2773 "For OT calculations, the requested virtual orbitals are generated after SCF using the "// &
2774 "OT eigensolver. For diagonalization calculations, SCF%ADDED_MOS is increased if needed "// &
2775 "to make the requested unoccupied orbitals available.", &
2776 usage=
"NLUMO integer", default_i_val=0)
2780 IF (.NOT. xas_mode)
THEN
2782 description=
"Controls the printing of kind-resolved projected DOS.", &
2783 n_keywords=1, n_subsections=0)
2785 pdos_section => print_key
2788 description=
"Print out PDOS distinguishing all angular momentum components.", &
2789 usage=
"COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2792 IF (.NOT. xas_mode)
THEN
2798 description=
"Controls the printing of broadened DOS/PDOS curves.", &
2799 n_keywords=2, n_subsections=1, repeats=.false.)
2801 description=
"Energy unit used for the printed DOS/PDOS energy axis. "// &
2802 "Intensities are converted consistently to the selected energy unit.", &
2803 usage=
"ENERGY_UNIT HARTREE", type_of_var=
enum_t, &
2804 enum_c_vals=
s2a(
"HARTREE",
"EV"), &
2805 enum_i_vals=[1, 2], &
2806 enum_desc=
s2a(
"Print energies in Hartree (a.u.).", &
2807 "Print energies in electronvolt."), &
2812 description=
"Reference energy used for the printed DOS/PDOS energy axis. "// &
2813 "With AUTO, the Fermi energy is used if smearing is enabled or fractional "// &
2814 "occupations are found; otherwise the highest occupied crystal orbital is used.", &
2815 usage=
"ENERGY_ZERO AUTO", type_of_var=
enum_t, &
2816 enum_c_vals=
s2a(
"AUTO",
"ABSOLUTE",
"FERMI",
"HOCO"), &
2817 enum_i_vals=[1, 2, 3, 4], &
2818 enum_desc=
s2a(
"Choose FERMI for smeared or fractionally occupied systems, otherwise HOCO.", &
2819 "Print absolute orbital energies.", &
2820 "Shift orbital energies by the Fermi energy.", &
2821 "Shift orbital energies by the highest occupied crystal orbital."), &
2826 CALL section_create(broaden_subsection, __location__, name=
"BROADEN", &
2827 description=
"Controls the line shape used for broadened DOS/PDOS curves.", &
2828 n_keywords=3, n_subsections=0, repeats=.false.)
2830 description=
"Type of broadening function used to produce the DOS/PDOS curve.", &
2831 usage=
"TYPE GAUSSIAN", type_of_var=
enum_t, &
2832 enum_c_vals=
s2a(
"GAUSSIAN",
"LORENTZIAN",
"PSEUDO_VOIGT"), &
2833 enum_i_vals=[1, 2, 3], &
2834 enum_desc=
s2a(
"Use a Gaussian broadening function.", &
2835 "Use a Lorentzian broadening function.", &
2836 "Use a pseudo-Voigt mixture of Lorentzian and Gaussian functions."), &
2841 description=
"Full width at half maximum (FWHM) of the DOS/PDOS broadening function.", &
2842 usage=
"WIDTH [eV] 0.1", type_of_var=
real_t, &
2843 default_r_val=
cp_unit_to_cp2k(
value=0.1_dp, unit_str=
"eV"), unit_str=
"eV")
2846 CALL keyword_create(keyword, __location__, name=
"VOIGT_MIXING", &
2847 description=
"Lorentzian fraction of the pseudo-Voigt broadening function.", &
2848 usage=
"VOIGT_MIXING 0.5", type_of_var=
real_t, default_r_val=0.5_dp)
2856 CALL keyword_create(keyword, __location__, name=
"OUT_EACH_STATE", &
2857 variants=[
"OUT_EACH_MO"], &
2858 description=
"Output on the status of the calculation every OUT_EACH_MO states. If -1 no output", &
2859 usage=
"OUT_EACH_STATE integer", default_i_val=-1)
2864 description=
"Controls the printing of local PDOS, projected on subsets"// &
2865 " of atoms given through lists", &
2866 n_keywords=4, n_subsections=0, repeats=.true.)
2868 description=
"Print out PDOS distinguishing all angular momentum components.", &
2869 usage=
"COMPONENTS", default_l_val=.false., lone_keyword_l_val=.true.)
2873 description=
"Specifies a list of indexes of atoms where to project the DOS", &
2874 usage=
"LIST {integer} {integer} .. {integer}", type_of_var=
integer_t, &
2875 n_var=-1, repeats=.true.)
2882 description=
"Controls the printing of local PDOS, projected on 3D volume in real space, "// &
2883 "the volume is defined in terms of position with respect to atoms in the lists", &
2884 n_keywords=4, n_subsections=0, repeats=.true.)
2886 description=
"Specifies a list of indexes of atoms used to define the real space volume", &
2887 usage=
"LIST {integer} {integer} .. {integer}", type_of_var=
integer_t, &
2888 n_var=-1, repeats=.true.)
2892 description=
"range of positions in Cartesian direction x: all grid points within "// &
2893 "this range from at least one atom of the list are considered", &
2894 usage=
"XRANGE -10.0 10.0", unit_str=
"angstrom", n_var=2, type_of_var=
real_t)
2898 description=
"range of positions in Cartesian direction y: all grid points within "// &
2899 "this range from at least one atom of the list are considered", &
2900 usage=
"YRANGE -10.0 10.0", unit_str=
"angstrom", n_var=2, type_of_var=
real_t)
2904 description=
"range of positions in Cartesian direction z: all grid points within "// &
2905 "this range from at least one atom of the list are considered", &
2906 usage=
"ZRANGE -10.0 10.0", unit_str=
"angstrom", n_var=2, type_of_var=
real_t)
2910 description=
"Only project states with the energy values in the given interval. "// &
2911 "Default is all states.", &
2912 usage=
"ERANGE -1.0 1.0", unit_str=
"hartree", n_var=2, type_of_var=
real_t)
2924 SUBROUTINE create_wannier_section(print_key)
2933 description=
"Interface to Wannier90 code. (EXPERIMENTAL)", &
2937 description=
"The seedname for the Wannier90 calculation (body of filenames).", &
2938 usage=
"SEED_NAME filename", default_c_val=
"wannier90", &
2939 n_var=1, type_of_var=
char_t)
2944 description=
"The dimensions of the Monkhorst-Pack k-point grid. ", &
2945 usage=
"MP_GRID 6 6 6", n_var=-1, default_i_vals=[10, 10, 10], type_of_var=
integer_t)
2949 CALL keyword_create(keyword, __location__, name=
"KPOINTS_SOURCE", &
2950 description=
"Select the k-point source for the Wannier90 export. MP_GRID keeps "// &
2951 "the historical behavior and builds a full grid from WANNIER90%MP_GRID. SCF uses "// &
2952 "the full k-point mesh from DFT%KPOINTS for Monkhorst-Pack, MacDonald, Gamma, or "// &
2953 "explicit GENERAL k-points. If the SCF calculation uses K290 or SPGLIB symmetry "// &
2954 "reduction, the corresponding unreduced mesh is used for Wannier90 because "// &
2955 "Wannier90 requires a complete mesh. NNKP reads explicit k-points and directed "// &
2956 "overlap connections from NNKP_FILE, without a regular-mesh requirement. "// &
2957 "WILSON generates and refines a surface of closed loops at the SCF potential. "// &
2958 "TRIM generates four or eight time-reversal-invariant points for native parity analysis.", &
2959 usage=
"KPOINTS_SOURCE MP_GRID", type_of_var=
enum_t, &
2960 enum_c_vals=
s2a(
"MP_GRID",
"SCF",
"NNKP",
"WILSON",
"TRIM"), &
2961 enum_i_vals=[0, 1, 2, 3, 4], &
2962 enum_desc=
s2a(
"Build the Wannier90 k-point mesh from WANNIER90%MP_GRID.", &
2963 "Use the full k-point mesh from DFT%KPOINTS.", &
2964 "Read explicit k-points and connections from NNKP_FILE.", &
2965 "Generate a family of closed Wilson loops.", &
2966 "Generate TRIM and enable native inversion-parity analysis."), &
2972 description=
"Wannier90 nnkp file for KPOINTS_SOURCE NNKP. Required literal block names: "// &
2973 "real_lattice (Angstrom), recip_lattice (2*pi/Angstrom), kpoints (fractional), "// &
2974 "and nnkpts (nearest-neighbour point indices and reciprocal lattice shifts). Nonzero exclusions "// &
2975 "in the file are unsupported; use EXCLUDE_BANDS in CP2K instead.", &
2976 usage=
"NNKP_FILE loop.nnkp", default_c_val=
"wannier90.nnkp", &
2977 n_var=1, type_of_var=
char_t)
2981 CALL keyword_create(keyword, __location__, name=
"SPIN_CHANNEL", &
2982 description=
"Collinear spin channel exported to the Wannier90 files (1 or 2). "// &
2983 "Each scalar export contains one channel. With SOC, use the restricted channel 1.", &
2984 usage=
"SPIN_CHANNEL 1", default_i_val=1)
2989 description=
"Compute native SVD-unitarized Wilson loops for NNKP connections. "// &
2990 "Requires one directed neighbour per point and contiguous, closed loops. "// &
2991 "Automatically enabled by KPOINTS_SOURCE WILSON.", default_l_val=.false., &
2996 description=
"Points per closed loop and number of transverse loops. "// &
2997 "Only for KPOINTS_SOURCE WILSON; loops include both transverse endpoints.", &
2998 n_var=2, default_i_vals=[16, 9], type_of_var=
integer_t)
3001 CALL keyword_create(keyword, __location__, name=
"WILSON_ORIGIN", &
3002 description=
"Origin of Wilson surface in fractional reciprocal coordinates.", &
3003 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t)
3006 CALL keyword_create(keyword, __location__, name=
"WILSON_DIRECTION", &
3007 description=
"Integer reciprocal vector along each closed Wilson loop.", &
3008 n_var=3, default_i_vals=[1, 0, 0], type_of_var=
integer_t)
3011 CALL keyword_create(keyword, __location__, name=
"WILSON_TRANSVERSE", &
3012 description=
"Fractional reciprocal vector spanning the transverse surface. "// &
3013 "For Z2 choose a time-reversal half-plane, e.g. 0 0.5 0.", &
3014 n_var=3, default_r_vals=[0.0_dp, 0.5_dp, 0.0_dp], type_of_var=
real_t)
3018 description=
"Compute native largest-gap crossing parity on a WILSON half-surface. "// &
3019 "Requires SOC, a nonmagnetic time-reversal-invariant Hamiltonian, an isolated "// &
3020 "occupied subspace, and converged Wilson spectra. TIME_REVERSAL must be set.", &
3025 description=
"Compute the native first Chern number from determinant Wilson winding. "// &
3026 "Requires KPOINTS_SOURCE WILSON and a closed full surface with integer transverse "// &
3027 "winding, e.g. WILSON_TRANSVERSE 0 1 0. Not compatible with Z2 half-surfaces. "// &
3028 "The selected bands must be isolated; SOC and time reversal are not required.", &
3029 default_l_val=.false., citations=[
gresch2017])
3033 description=
"Compute native even/odd inversion irreps at explicit TRIM. Uses the Gaussian "// &
3034 "AO metric, orbital parities, atom permutations and Bloch lattice phases. Validates the "// &
3035 "selected representation and its energy commutator. No Z2Pack or Wannier fit is needed.", &
3036 default_l_val=.false.)
3039 CALL keyword_create(keyword, __location__, name=
"INVERSION_TQC", &
3040 description=
"Enable PARITY and classify the inversion-subgroup symmetry signature of "// &
3041 "the occupied spinor bands. Requires SOC and TIME_REVERSAL and all four/eight TRIM. "// &
3042 "Reports Fu-Kane indices, 3D Z4, and an exact signed/nonnegative atomic EBR-signature test. "// &
3043 "Not a full-space-group TQC classifier or a certificate of a bulk gap/trivial topology.", &
3044 default_l_val=.false.)
3047 CALL keyword_create(keyword, __location__, name=
"TQC_DIMENSION", &
3048 description=
"Dimension of the inversion analysis: 2 uses the four kz=0 TRIM; "// &
3049 "3 uses all eight TRIM of the supplied reciprocal cell. All cell directions must be periodic.", &
3053 CALL keyword_create(keyword, __location__, name=
"PARITY_ORIGIN", &
3054 description=
"Inversion center in fractional direct-cell coordinates. The operation is "// &
3055 "r -> 2*center-r. Atomic kinds, basis and the selected Hamiltonian subspace must be invariant.", &
3056 n_var=3, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp], type_of_var=
real_t)
3059 CALL keyword_create(keyword, __location__, name=
"PARITY_TOLERANCE", &
3060 description=
"Tolerance for parity metric, subspace and character checks. Also used "// &
3061 "as the inversion geometry tolerance in Bohr. Tighten with numerical convergence.", &
3062 default_r_val=1.e-6_dp)
3065 CALL keyword_create(keyword, __location__, name=
"PARITY_ENERGY_TOL", &
3066 description=
"Maximum projected symmetry/eigenvalue commutator in Hartree.", &
3067 default_r_val=1.e-6_dp)
3070 CALL keyword_create(keyword, __location__, name=
"REQUIRE_GLOBAL_GAP", &
3071 description=
"Require a positive sampled indirect gap above the lowest selected bands. "// &
3072 "Unlike the direct subspace gap this tests a common energy interval over all sampled "// &
3073 "points. A finite sampling does not prove a bulk gap. No per-point Fermi shifts are applied.", &
3074 default_l_val=.false.)
3077 CALL keyword_create(keyword, __location__, name=
"STATE_EXPORT", &
3078 description=
"Export selected complex AO states, all eigenvalues and full contracted "// &
3079 "Gaussian basis to SEED_NAME.topology for cross-geometry/phason overlaps. "// &
3080 "Requires NNKP, WILSON or TRIM, uses atomic units, and can generate large files. "// &
3081 "Spinor coefficients include second-variational SOC when enabled. "// &
3082 "No Wannier fit or Fermi-energy alignment is performed.", default_l_val=.false.)
3085 CALL keyword_create(keyword, __location__, name=
"TIME_REVERSAL", &
3086 description=
"User confirmation that the Hamiltonian is time-reversal invariant. "// &
3087 "Boundary Kramers degeneracy is additionally checked; it is not a proof of TR symmetry.", &
3088 default_l_val=.false.)
3092 description=
"Second-variational pseudopotential SOC for explicit-loop exports. "// &
3093 "Requires a restricted SCF and SOC-capable pseudopotentials. ADDED_MOS controls "// &
3094 "the scalar basis; EXCLUDE_BANDS then refers to spinor bands. Converge ADDED_MOS.", &
3095 default_l_val=.false.)
3098 CALL keyword_create(keyword, __location__, name=
"WILSON_MAX_REFINEMENT", &
3099 description=
"Maximum joint doublings of loop and transverse resolution; at least "// &
3100 "one doubling is required for generated WILSON surfaces.", default_i_val=3)
3104 description=
"Tolerance of Wilson centres between successive meshes (reduced units).", &
3105 default_r_val=1.e-3_dp)
3108 CALL keyword_create(keyword, __location__, name=
"WILSON_GAP_TOL", &
3109 description=
"Minimum sampled separation from excluded bands in Hartree.", &
3110 default_r_val=1.e-7_dp)
3114 CALL keyword_create(keyword, __location__, name=
"REUSE_SCF_MOS", &
3115 description=
"Try to reuse the SCF k-point MO coefficients when KPOINTS_SOURCE SCF "// &
3116 "is active. CP2K can directly reuse full SCF meshes, time-reversal partners, "// &
3117 "non-degenerate atom/AO symmetry images, and atom/AO symmetry images whose "// &
3118 "degenerate band subspaces are fully contained in the exported Wannier90 band "// &
3119 "window. If the Wannier90 band window cuts through a degenerate subspace, CP2K "// &
3120 "falls back to the historical full-mesh diagonalization.", &
3121 usage=
"REUSE_SCF_MOS T", default_l_val=.true.)
3125 CALL keyword_create(keyword, __location__, name=
"VALIDATE_REUSE_SCF_MOS", &
3126 description=
"When KPOINTS_SOURCE SCF and REUSE_SCF_MOS are active, first build a "// &
3127 "full-mesh diagonalization reference and validate the reconstructed SCF MO "// &
3128 "subspaces against it before writing Wannier90 files. This diagnostic option is "// &
3129 "expensive and intended for development of symmetry-reconstructed Wannier90 "// &
3131 usage=
"VALIDATE_REUSE_SCF_MOS T", default_l_val=.false.)
3135 CALL keyword_create(keyword, __location__, name=
"USE_BLOCH_PHASES", &
3136 description=
"Apply the CP2K Bloch-phase gauge to complete exported band subspaces "// &
3137 "and write an explicit identity .amn projection file for Wannier90. It is only "// &
3138 "valid when WANNIER_FUNCTIONS matches the number of exported bands; disentangled "// &
3139 "Wannier90 calculations still need explicit projections.", &
3140 usage=
"USE_BLOCH_PHASES T", default_l_val=.false.)
3145 variants=[
"ADDED_BANDS"], &
3146 description=
"Number of MOs/Bands added to the Band Structure calculation.", &
3151 CALL keyword_create(keyword, __location__, name=
"EXCLUDE_BANDS", &
3152 description=
"List of Bands excluded in the Wannier calculation.", &
3153 usage=
"EXCLUDE_BANDS b1 b2 ...", n_var=-1, repeats=.true., &
3158 CALL keyword_create(keyword, __location__, name=
"WANNIER_FUNCTIONS", &
3159 description=
"Number of Wannier functions to be calculated. ", &
3160 usage=
"WANNIER_FUNCTIONS 6", n_var=1, default_i_val=0, &
3165 END SUBROUTINE create_wannier_section
3171 SUBROUTINE create_stm_section(print_key)
3179 description=
"Controls the printing of cubes for the generation of STM images.", &
3182 description=
"The stride (X,Y,Z) used to write the cube file "// &
3183 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3184 " 1 number valid for all components.", &
3185 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3190 description=
"If the printkey is activated controls the number of additional lumos"// &
3191 " that are computed to be able to reproduce STM images obtained"// &
3192 " from positive bias (imaging unoccupied states)", &
3198 description=
"Bias energy for scanning tunneling microscopy (STM) image generation. "// &
3199 "Orbital densities are summed according to the bias energy. "// &
3200 "For negative values, states in the range ]EF+bias,EF] are summed, "// &
3201 "While positive values sum states in the range [EF,EF+bias[. "// &
3202 "If positive biases are used, sufficiently many unoccupied stated "// &
3203 "(see ADDED_MOS and NLUMO ) should be computed.", &
3204 n_var=-1, type_of_var=
real_t, default_r_vals=[0.0_dp], unit_str=
'eV')
3209 description=
"Tip orbital symmetry in Tersoff-Hamann approximation to compute STM images", &
3211 default_i_val=
orb_s, &
3212 usage=
"TH_TORB s dz2", &
3213 enum_c_vals=
s2a(
"S",
"PX",
"PY",
"PZ",
"DXY",
"DYZ",
"DZX",
"DX2",
"DY2",
"DZ2"), &
3214 enum_i_vals=[
orb_s,
orb_px,
orb_py,
orb_pz,
orb_dxy,
orb_dyz,
orb_dzx,
orb_dx2,
orb_dy2,
orb_dz2], &
3215 enum_desc=
s2a(
"s orbital",
"px orbital",
"py orbital",
"pz orbital", &
3216 "dxy orbital",
"dyz orbital",
"dzx orbital",
"x^2 orbital",
"y^2 orbital",
"z^2 orbital"))
3221 description=
"By default the reference energy is the Fermi energy. In order to compare"// &
3222 " with STS experiments, where specific energy ranges are addressed, here"// &
3223 " one can set a different reference energy."// &
3224 " The energy range is anyway controlled by the BIAS", &
3225 type_of_var=
real_t, default_r_val=0.0_dp, unit_str=
'eV')
3230 description=
"append the cube files when they already exist", &
3231 default_l_val=.false., lone_keyword_l_val=.true.)
3235 END SUBROUTINE create_stm_section
3241 SUBROUTINE create_wfn_mix_section(section)
3248 NULLIFY (subsection)
3251 cpassert(.NOT.
ASSOCIATED(section))
3254 description=
"A section that allows manipulation of the MO coeffs, "// &
3255 "e.g. for changing a ground state into an excited state. "// &
3256 "Starting from a copy of the original MOs, changes can be made "// &
3257 "by adding linear combinations of HOMO/LUMO of the original MOs to the result MOs. "// &
3258 "This method is called after an SCF optimization or before an RTP run if "// &
3259 "INITIAL_WFN=RESTART_WFN. Note that if called after an SCF optimization, a restart file "// &
3260 "with the mixed MOs is saved. This is not the case for an RTP with "// &
3261 "INITIAL_WFN=RESTART_WFN.", &
3262 n_keywords=1, n_subsections=0, repeats=.false.)
3264 CALL keyword_create(keyword, __location__, name=
"OVERWRITE_MOS", &
3265 description=
"If set to True, the active molecular orbitals in memory will be replaced by the mixed wfn "// &
3266 "at the end of the wfn mixing procedure. For instance, you can then use this new set of MOs to perform "// &
3267 "RTP or EMD directly. Note that in the case of an RTP run with INITIAL_WFN=RESTART_WFN, the OVERWRITE_MOS "// &
3268 "keyword is not used.", &
3269 default_l_val=.false., lone_keyword_l_val=.true.)
3274 description=
"Update a result MO with with a linear combination of original MOs."// &
3275 " This section can be repeated to build arbitrary linear combinations using repeatedly y=a*y+b*x. "// &
3276 "RESULT is (y), RESULT_SCALE is (a), ORIG is (x), ORIG_SCALE is (b)", &
3277 n_keywords=1, n_subsections=0, repeats=.true.)
3279 CALL keyword_create(keyword, __location__, name=
"RESULT_MO_INDEX", &
3280 description=
"Index of the MO (y) to be modified. Counting down in energy: "// &
3281 "set to 1 for the highest MO, to 3 for the highest MO-2.", &
3282 usage=
"RESULT_MO_INDEX 1", type_of_var=
integer_t, default_i_val=0)
3286 CALL keyword_create(keyword, __location__, name=
"RESULT_MARKED_STATE", &
3287 description=
"Specifies the MO according to "// &
3288 "the marks set in MOLECULAR_STATES. The value corresponds to the repetition "// &
3289 "of MARK_STATES in MOLECULAR_STATES", &
3290 usage=
"RESULT_MARKED_STATE 1", type_of_var=
integer_t, default_i_val=0)
3294 CALL keyword_create(keyword, __location__, name=
"REVERSE_MO_INDEX", &
3295 description=
"Reverses the index order of the OCCUPIED and EXTERNAL MOs. With this keyword "// &
3296 "ORIG_MO_INDEX/RESULT_MO_INDEX 1 point to the lowest energy MO (instead of the highest) "// &
3297 "and counts up in energy. The VIRTUAL MOs indexing is unchanged.", &
3298 default_l_val=.false., lone_keyword_l_val=.true.)
3302 CALL keyword_create(keyword, __location__, name=
"RESULT_SPIN_INDEX", &
3303 description=
"Spin of the MO (y) to be modified.", &
3304 enum_c_vals=
s2a(
"Alpha",
"Beta"), &
3305 enum_i_vals=[1, 2], &
3307 enum_desc=
s2a(
"Majority spin",
"Minority spin"))
3311 CALL keyword_create(keyword, __location__, name=
"RESULT_SCALE", &
3312 description=
"Scaling factor of the result variable (a).", &
3313 usage=
"RESULT_SCALE 0.0", type_of_var=
real_t)
3317 CALL keyword_create(keyword, __location__, name=
"ORIG_MO_INDEX", &
3318 description=
"Index of the original MO (x). "// &
3319 "If ORIG_TYPE is OCCUPIED, it counts down in energy: set to 1 to point to "// &
3320 "the highest MO and to 3 for the highest MO-2. "// &
3321 "If ORIG_TYPE is VIRTUAL, it counts up in energy: set to 1 to point to "// &
3322 "the lowest virtual MO and to 3 for the lowest MO+2. "// &
3323 "If ORIG_TYPE is EXTERNAL, it counts down in energy for the external "// &
3324 "set of MOs: set to 1 to point to the highest MO and to 3 for the highest MO-2. "// &
3325 "Do not set to zero or negative values.", &
3326 usage=
"ORIG_MO_INDEX 1", type_of_var=
integer_t, default_i_val=0)
3330 CALL keyword_create(keyword, __location__, name=
"ORIG_MARKED_STATE", &
3331 description=
"Specifies the MO according to "// &
3332 "the marks set in MOLECULAR_STATES. The value corresponds to the repetition "// &
3333 "of MARK_STATES in MOLECULAR_STATES", &
3334 usage=
"ORIG_MARKED_STATE 1", type_of_var=
integer_t, default_i_val=0)
3338 CALL keyword_create(keyword, __location__, name=
"ORIG_SPIN_INDEX", &
3339 description=
"Spin of the MO (x) to be modified.", &
3340 enum_c_vals=
s2a(
"Alpha",
"Beta"), &
3341 enum_i_vals=[1, 2], &
3343 enum_desc=
s2a(
"Majority spin",
"Minority spin"))
3348 description=
"Scaling factor of the original variable (b).", &
3349 usage=
"ORIG_SCALE 0.0", type_of_var=
real_t)
3354 description=
"Type of the original MO. Note that if ADDED_MOS was used in the "// &
3355 "SCF construction of the MO matrix, these extra MOs are also treated as OCCUPIED. ", &
3356 enum_c_vals=
s2a(
"OCCUPIED",
"VIRTUAL",
'EXTERNAL'), &
3357 usage=
"ORIG_TYPE OCCUPIED", &
3359 enum_desc=
s2a(
"The original MO is the result of the SCF procedure. This can also contain "// &
3360 "unoccupied MOs if the SCF%ADDED_MOS keyword was used.", &
3361 "The original MO is taken from the result of additional MOs calculated a "// &
3362 "posteriori of the SCF by request of the user. E.g. by specifying print%mo_cubes%nlumo. ", &
3363 "The orginal MO is from an external .wfn file. Use the keyword "// &
3364 "ORIG_EXT_FILE_NAME to define its name."), &
3369 CALL keyword_create(keyword, __location__, name=
"ORIG_EXT_FILE_NAME", &
3370 description=
"Name of the wavefunction file to read the original MO from. "// &
3371 "For instance, a restart wfn file from SCF calculation or an excited state from XAS_TDP calculation. "// &
3372 "If no file is specified, the run will crash. "// &
3373 "Currently, a RTP restart file (.rtpwfn) cannot be used as reference. "// &
3374 "Currently, this file SHALL have the basis set, number of MO and the same number of spin as the one "// &
3375 "from the SCF cycle.", &
3376 usage=
"ORIG_EXT_FILE_NAME <FILENAME>", &
3377 default_lc_val=
"EMPTY")
3384 END SUBROUTINE create_wfn_mix_section
3393 SUBROUTINE create_implicit_psolver_section(section)
3399 cpassert(.NOT.
ASSOCIATED(section))
3400 CALL section_create(section, __location__, name=
"IMPLICIT_PSOLVER", &
3401 description=
"Controls printing of cube files for data from the implicit "// &
3402 "(generalized) Poisson solver.", &
3404 n_keywords=0, n_subsections=3, repeats=.false.)
3406 NULLIFY (keyword, print_key)
3410 description=
"Controls the printing of a cube file with dielectric constant from "// &
3411 "the implicit (generalized) Poisson solver.", &
3415 description=
"The stride (X,Y,Z) used to write the cube file "// &
3416 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3417 " 1 number valid for all components.", &
3418 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3422 description=
"append the cube files when they already exist", &
3423 default_l_val=.false., lone_keyword_l_val=.true.)
3426 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
3427 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3428 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3437 print_key, __location__,
"DIRICHLET_BC_CUBE", &
3438 description=
"Controls the printing of cube files with unit step functions (constraints)"// &
3439 " representing Dirichlet-type (boundary) regions defined in the implicit (generalized) Poisson"// &
3440 " solver section. The regions remain unchanged throughout the calculations. If the Dirichlet"// &
3441 " regions are relatively large and/or the number of partitions is quite high, in order to save memory,"// &
3442 " generate the cube files in early steps and perform the rest of the calculations with this keyword"// &
3447 description=
"Print tiles that tessellate the Dirichlet regions into cube files. If TRUE, "// &
3448 "generates cube files as many as the total number of tiles.", &
3449 usage=
"TILE_CUBES <logical>", &
3450 default_l_val=.false., lone_keyword_l_val=.true.)
3454 description=
"The stride (X,Y,Z) used to write the cube file "// &
3455 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3456 " 1 number valid for all components.", &
3457 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3461 description=
"append the cube files when they already exist", &
3462 default_l_val=.false., lone_keyword_l_val=.true.)
3465 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
3466 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3467 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3476 description=
"Controls the printing of cube files with penalty charges induced to "// &
3477 "Dirichlet regions by Lagrange multipliers (implicit Poisson solver).", &
3481 description=
"The stride (X,Y,Z) used to write the cube file "// &
3482 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
3483 " 1 number valid for all components.", &
3484 usage=
"STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=
integer_t)
3488 description=
"append the cube files when they already exist", &
3489 default_l_val=.false., lone_keyword_l_val=.true.)
3492 CALL keyword_create(keyword, __location__, name=
"MAX_FILE_SIZE_MB", &
3493 description=
"Limits the size of the cube file by choosing a suitable stride. Zero means no limit.", &
3494 usage=
"MAX_FILE_SIZE_MB 1.5", default_r_val=0.0_dp)
3501 END SUBROUTINE create_implicit_psolver_section
3514 cpassert(.NOT.
ASSOCIATED(section))
3515 CALL section_create(section, __location__, name=
"interpolator", &
3516 description=
"controls the interpolation for the G-space term", &
3517 n_keywords=5, n_subsections=0, repeats=.false.)
3519 NULLIFY (keyword, print_key)
3521 CALL keyword_create(keyword, __location__, name=
"aint_precond", &
3522 description=
"the approximate inverse to use to get the starting point"// &
3523 " for the linear solver of the spline3 methods", &
3524 usage=
"aint_precond copy", &
3526 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_precond1", &
3527 "spl3_nopbc_aint2",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
3534 description=
"The preconditioner used"// &
3535 " for the linear solver of the spline3 methods", &
3536 usage=
"precond copy", &
3538 enum_c_vals=
s2a(
"copy",
"spl3_nopbc_aint1",
"spl3_nopbc_precond1", &
3539 "spl3_nopbc_aint2",
"spl3_nopbc_precond2",
"spl3_nopbc_precond3"), &
3546 description=
"accuracy on the solution for spline3 the interpolators", &
3547 usage=
"eps_x 1.e-15", default_r_val=1.e-10_dp)
3552 description=
"accuracy on the residual for spline3 the interpolators", &
3553 usage=
"eps_r 1.e-15", default_r_val=1.e-10_dp)
3558 variants=[
'maxiter'], &
3559 description=
"the maximum number of iterations", &
3560 usage=
"max_iter 200", default_i_val=100)
3566 description=
"if convergence information about the linear solver"// &
3567 " of the spline methods should be printed", &
3569 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.