57#include "./base/base_uses.f90"
62 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
63 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_subsys'
81 INTEGER,
INTENT(IN),
OPTIONAL :: periodic
85 cpassert(.NOT.
ASSOCIATED(section))
87 description=
"Input parameters needed to set up the simulation cell. "// &
88 "Simple products and fractions combined with functions of a single "// &
89 "number can be used like 2/3, 0.3*COS(60) or -SQRT(3)/2. The functions "// &
90 "COS, EXP, LOG, LOG10, SIN, SQRT, and TAN are available.")
91 CALL create_cell_section_low(section, periodic)
95 description=
"Input parameters needed to set up the reference cell. "// &
96 "This option can be used to keep the FFT grid fixed while "// &
97 "running a cell optimization or NpT molecular dynamics. "// &
98 "Check the &CELL section for further details.")
99 CALL create_cell_section_low(subsection, periodic)
111 SUBROUTINE create_cell_section_low(section, periodic)
113 INTEGER,
INTENT(IN),
OPTIONAL :: periodic
115 INTEGER :: my_periodic
119 IF (
PRESENT(periodic)) my_periodic = periodic
123 description=
"Specify the Cartesian components for the cell vector A. "// &
124 "This defines the first column of the h matrix.", &
125 usage=
"A 10.000 0.000 0.000", unit_str=
"angstrom", &
126 n_var=3, type_of_var=
real_t, repeats=.false.)
131 description=
"Specify the Cartesian components for the cell vector B. "// &
132 "This defines the second column of the h matrix.", &
133 usage=
"B 0.000 10.000 0.000", unit_str=
"angstrom", &
134 n_var=3, type_of_var=
real_t, repeats=.false.)
139 description=
"Specify the Cartesian components for the cell vector C. "// &
140 "This defines the third column of the h matrix.", &
141 usage=
"C 0.000 0.000 10.000", unit_str=
"angstrom", &
142 n_var=3, type_of_var=
real_t, repeats=.false.)
147 description=
"Specify the lengths of the cell vectors A, B, and C, which"// &
148 " defines the diagonal elements of h matrix for an orthorhombic cell."// &
149 " For non-orthorhombic cells it is possible either to specify the angles "// &
150 "ALPHA, BETA, GAMMA via ALPHA_BETA_GAMMA keyword or alternatively use the keywords "// &
151 "A, B, and C. The convention is that A lies along the X-axis, B is in the XY plane.", &
152 usage=
"ABC 10.000 10.000 10.000", unit_str=
"angstrom", &
153 n_var=3, type_of_var=
real_t, repeats=.false.)
157 CALL keyword_create(keyword, __location__, name=
"ALPHA_BETA_GAMMA", &
158 variants=(/
"ANGLES"/), &
159 description=
"Specify the angles between the vectors A, B and C when using the ABC keyword. "// &
160 "The convention is that A lies along the X-axis, B is in the XY plane. "// &
161 "ALPHA is the angle between B and C, BETA is the angle between A and C and "// &
162 "GAMMA the angle between A and B.", &
163 usage=
"ALPHA_BETA_GAMMA [deg] 90.0 90.0 120.0", unit_str=
"deg", &
164 n_var=3, default_r_vals=(/
cp_unit_to_cp2k(
value=90.0_dp, unit_str=
"deg"), &
171 CALL keyword_create(keyword, __location__, name=
"CELL_FILE_NAME", &
172 description=
"Possibility to read the cell from an external file ", &
173 repeats=.false., usage=
"CELL_FILE_NAME <CHARACTER>", &
178 CALL keyword_create(keyword, __location__, name=
"CELL_FILE_FORMAT", &
179 description=
"Specify the format of the cell file (if used)", &
180 usage=
"CELL_FILE_FORMAT (CP2K|CIF|XSC)", &
181 enum_c_vals=
s2a(
"CP2K",
"CIF",
"XSC"), &
183 enum_desc=
s2a(
"Cell info in the CP2K native format.", &
184 "Cell info from CIF file.", &
185 "Cell info in the XSC format (NAMD)"), &
191 description=
"Specify the directions for which periodic boundary conditions (PBC) will be applied. "// &
192 "Important notice: This applies to the generation of the pair lists as well as to the "// &
193 "application of the PBCs to positions. "// &
194 "See the POISSON section to specify the periodicity used for the electrostatics. "// &
195 "Typically the settings should be the same.", &
196 usage=
"PERIODIC (x|y|z|xy|xz|yz|xyz|none)", &
197 enum_c_vals=
s2a(
"x",
"y",
"z",
"xy",
"xz",
"yz",
"xyz",
"none"), &
201 default_i_val=my_periodic)
205 CALL keyword_create(keyword, __location__, name=
"MULTIPLE_UNIT_CELL", &
206 description=
"Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, "// &
207 "assuming it as a unit cell. This keyword affects only the CELL specification. The same keyword "// &
208 "in SUBSYS%TOPOLOGY%MULTIPLE_UNIT_CELL should be modified in order to affect the coordinates "// &
209 "specification.", usage=
"MULTIPLE_UNIT_CELL 1 1 1", &
210 n_var=3, default_i_vals=(/1, 1, 1/), repeats=.false.)
215 keyword, __location__, name=
"SYMMETRY", &
216 description=
"Imposes an initial cell symmetry.", &
217 usage=
"SYMMETRY monoclinic", &
218 enum_desc=
s2a(
"No cell symmetry", &
219 "Triclinic (a ≠ b ≠ c ≠ a, α ≠ β ≠ γ ≠ α ≠ 90°)", &
220 "Monoclinic (a ≠ b ≠ c, α = γ = 90°, β ≠ 90°)", &
221 "Monoclinic (a = b ≠ c, α = β = 90°, γ ≠ 90°)", &
222 "Orthorhombic (a ≠ b ≠ c, α = β = γ = 90°)", &
223 "Tetragonal (a = b ≠ c, α = β = γ = 90°)", &
224 "Tetragonal (a = c ≠ b, α = β = γ = 90°)", &
225 "Tetragonal (a ≠ b = c, α = β = γ = 90°)", &
226 "Tetragonal (alias for TETRAGONAL_AB)", &
227 "Rhombohedral (a = b = c, α = β = γ ≠ 90°)", &
228 "Hexagonal (alias for HEXAGONAL_GAMMA_60)", &
229 "Hexagonal (a = b ≠ c, α = β = 90°, γ = 60°)", &
230 "Hexagonal (a = b ≠ c, α = β = 90°, γ = 120°)", &
231 "Cubic (a = b = c, α = β = γ = 90°)"), &
232 enum_c_vals=
s2a(
"NONE",
"TRICLINIC",
"MONOCLINIC",
"MONOCLINIC_GAMMA_AB",
"ORTHORHOMBIC", &
233 "TETRAGONAL_AB",
"TETRAGONAL_AC",
"TETRAGONAL_BC",
"TETRAGONAL",
"RHOMBOHEDRAL", &
234 "HEXAGONAL",
"HEXAGONAL_GAMMA_60",
"HEXAGONAL_GAMMA_120",
"CUBIC"), &
243 END SUBROUTINE create_cell_section_low
255 cpassert(.NOT.
ASSOCIATED(section))
257 description=
"Information to initialize the parallel random number generator streams", &
258 n_keywords=1, n_subsections=0, repeats=.false.)
261 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
262 description=
"Specify an initial RNG stream record", repeats=.true., &
263 usage=
"{RNG record string}", type_of_var=
lchar_t)
281 cpassert(.NOT.
ASSOCIATED(section))
283 description=
"a subsystem: coordinates, topology, molecules and cell", &
284 n_keywords=1, n_subsections=9, repeats=.false.)
288 description=
"Initial seed for the (pseudo)random number generator for the "// &
289 "Wiener process employed by the Langevin dynamics. Exactly 1 or 6 positive "// &
290 "integer values are expected. A single value is replicated to fill up the "// &
291 "full seed array with 6 numbers.", &
294 usage=
"SEED {INTEGER} .. {INTEGER}", &
295 default_i_vals=(/12345/))
309 CALL create_coord_section(subsection)
313 CALL create_velocity_section(subsection)
317 CALL create_kind_section(subsection)
321 CALL create_topology_section(subsection)
329 CALL create_multipole_section(subsection)
333 CALL create_shell_coord_section(subsection)
337 CALL create_shell_vel_section(subsection)
340 CALL create_core_coord_section(subsection)
344 CALL create_core_vel_section(subsection)
348 CALL create_subsys_print_section(subsection)
359 SUBROUTINE create_subsys_print_section(section)
365 NULLIFY (print_key, keyword)
366 cpassert(.NOT.
ASSOCIATED(section))
368 description=
"Controls printings related to the subsys", &
369 n_keywords=0, n_subsections=9, repeats=.false.)
372 description=
"controls the output of the atomic coordinates when setting up the"// &
373 " force environment. For printing coordinates during MD or GEO refer to the keyword"// &
374 " trajectory.", unit_str=
"angstrom", &
384 description=
"Controls the printout of the interatomic distances when setting up the "// &
385 "force environment", unit_str=
"angstrom", &
387 CALL keyword_create(keyword, __location__, name=
"CHECK_INTERATOMIC_DISTANCES", &
388 description=
"Minimum allowed distance between two atoms. "// &
389 "A warning is printed, if a smaller interatomic distance is encountered. "// &
390 "The check is disabled for the threshold value 0 which is the default "// &
391 "for systems with more than 2000 atoms (otherwise 0.5 A). "// &
392 "The run is aborted, if an interatomic distance is smaller than the absolute "// &
393 "value of a negative threshold value.", &
394 default_r_val=0.5_dp*
bohr, unit_str=
"angstrom")
401 "controls the printing of information in the topology settings", &
404 description=
"Prints information when parsing XTL files.", &
405 default_l_val=.false., lone_keyword_l_val=.true.)
409 description=
"Prints information when parsing CIF files.", &
410 default_l_val=.false., lone_keyword_l_val=.true.)
414 description=
"Prints information when parsing PDB files.", &
415 default_l_val=.false., lone_keyword_l_val=.true.)
419 description=
"Prints information when parsing XYZ files.", &
420 default_l_val=.false., lone_keyword_l_val=.true.)
424 description=
"Prints information when parsing PSF files.", &
425 default_l_val=.false., lone_keyword_l_val=.true.)
429 description=
"Prints information when parsing ABER topology files.", &
430 default_l_val=.false., lone_keyword_l_val=.true.)
434 description=
"Prints information when parsing G96 files.", &
435 default_l_val=.false., lone_keyword_l_val=.true.)
439 description=
"Prints information when parsing CRD files.", &
440 default_l_val=.false., lone_keyword_l_val=.true.)
444 description=
"Prints information when parsing GROMOS topology files.", &
445 default_l_val=.false., lone_keyword_l_val=.true.)
449 description=
"Prints information regarding topology utilities", &
450 default_l_val=.false., lone_keyword_l_val=.true.)
453 CALL keyword_create(keyword, __location__, name=
"generate_info", &
454 description=
"Prints information regarding topology generation", &
455 default_l_val=.false., lone_keyword_l_val=.true.)
462 description=
"controls the output of the cell parameters", &
469 description=
"controls the output of information on the kinds", &
472 description=
"If the printkey is activated controls the printing of the"// &
473 " fist_potential, gth_potential, sgp_potential or all electron"// &
474 " potential information", &
475 default_l_val=.false., lone_keyword_l_val=.true.)
479 description=
"If the printkey is activated controls the printing of basis set information", &
480 default_l_val=.false., lone_keyword_l_val=.true.)
483 CALL keyword_create(keyword, __location__, name=
"se_parameters", &
484 description=
"If the printkey is activated controls the printing of the semi-empirical parameters.", &
485 default_l_val=.false., lone_keyword_l_val=.true.)
492 description=
"controls the output of symmetry information", &
495 description=
"Assume the system is an isolated molecule", &
496 default_l_val=.false., lone_keyword_l_val=.true.)
500 description=
"Accuracy required for symmetry detection", &
501 default_r_val=1.0e-4_dp)
504 CALL keyword_create(keyword, __location__, name=
"STANDARD_ORIENTATION", &
505 description=
"Print molecular coordinates in standard orientation", &
506 default_l_val=.false., lone_keyword_l_val=.true.)
510 description=
"Print molecular inertia tensor", &
511 default_l_val=.false., lone_keyword_l_val=.true.)
514 CALL keyword_create(keyword, __location__, name=
"SYMMETRY_ELEMENTS", &
515 description=
"Print symmetry elements", &
516 default_l_val=.false., lone_keyword_l_val=.true.)
520 description=
"Print all symmetry information", &
521 default_l_val=.false., lone_keyword_l_val=.true.)
524 CALL keyword_create(keyword, __location__, name=
"ROTATION_MATRICES", &
525 description=
"All the rotation matrices of the point group", &
526 default_l_val=.false.)
529 CALL keyword_create(keyword, __location__, name=
"CHECK_SYMMETRY", &
530 description=
"Check if calculated symmetry has expected value."// &
531 " Use either Schoenfliess or Hermann-Maugin symbols", &
532 default_c_val=
"NONE")
539 description=
"controls the output of information on the molecules", &
545 description=
"controls the output of radii information", unit_str=
"angstrom", &
548 CALL keyword_create(keyword, __location__, name=
"core_charges_radii", &
549 description=
"If the printkey is activated controls the printing of the radii of the core charges", &
550 default_l_val=.true., lone_keyword_l_val=.true.)
555 description=
"If the printkey is activated controls the printing of the core gaussian radii", &
556 default_l_val=.true., lone_keyword_l_val=.true.)
561 description=
"If the printkey is activated controls the printing of the set_radii", &
562 default_l_val=.true., lone_keyword_l_val=.true.)
567 description=
"If the printkey is activated controls the printing of the kind_radii", &
568 default_l_val=.true., lone_keyword_l_val=.true.)
572 CALL keyword_create(keyword, __location__, name=
"core_charge_radii", &
573 description=
"If the printkey is activated controls the printing of the core_charge_radii", &
574 default_l_val=.true., lone_keyword_l_val=.true.)
579 description=
"If the printkey is activated controls the printing of the "// &
580 "pseudo potential local radii", &
581 default_l_val=.true., lone_keyword_l_val=.true.)
586 description=
"If the printkey is activated controls the printing of the "// &
587 "pseudo potential non local radii", &
588 default_l_val=.true., lone_keyword_l_val=.true.)
592 CALL keyword_create(keyword, __location__, name=
"gapw_prj_radii", &
593 description=
"If the printkey is activated controls the printing of the gapw projector radii", &
594 default_l_val=.true., lone_keyword_l_val=.true.)
601 END SUBROUTINE create_subsys_print_section
608 SUBROUTINE create_multipole_section(section)
614 cpassert(.NOT.
ASSOCIATED(section))
616 description=
"Specifies the dipoles and quadrupoles for particles.", &
617 n_keywords=1, n_subsections=0, repeats=.false.)
619 NULLIFY (keyword, subsection)
621 description=
"Specifies the dipoles of the particles.", &
622 n_keywords=1, n_subsections=0, repeats=.false.)
623 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
624 description=
"The dipole components for each atom in the format: "// &
625 "$D_x \ D_y \ D_z$", &
626 repeats=.true., usage=
"{Real} {Real} {Real}", &
627 type_of_var=
real_t, n_var=3)
633 CALL section_create(subsection, __location__, name=
"quadrupoles", &
634 description=
"Specifies the quadrupoles of the particles.", &
635 n_keywords=1, n_subsections=0, repeats=.false.)
636 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
637 description=
"The quadrupole components for each atom in the format: "// &
638 "$Q_{xx} \ Q_{xy} \ Q_{xz} \ Q_{yy} \ Q_{yz} \ Q_{zz}$", &
639 repeats=.true., usage=
"{Real} {Real} {Real} {Real} {Real} {Real}", &
640 type_of_var=
real_t, n_var=6)
646 END SUBROUTINE create_multipole_section
658 cpassert(.NOT.
ASSOCIATED(print_key))
663 description=
"Request the printing of special structure data during a structure "// &
664 "optimization (in MOTION%PRINT) or when setting up a subsys (in SUBSYS%PRINT).", &
667 CALL keyword_create(keyword, __location__, name=
"POSITION", variants=(/
"POS"/), &
668 description=
"Print the position vectors in Cartesian coordinates of the atoms specified "// &
669 "by a list of their indices", &
670 usage=
"POSITION {integer} {integer} {integer}..{integer}", n_var=-1, repeats=.true., &
675 CALL keyword_create(keyword, __location__, name=
"POSITION_SCALED", variants=(/
"POS_SCALED"/), &
676 description=
"Print the position vectors in scaled coordinates of the atoms specified "// &
677 "by a list of their indices", &
678 usage=
"POSITION_SCALED {integer} {integer} {integer}..{integer}", n_var=-1, repeats=.true., &
683 CALL keyword_create(keyword, __location__, name=
"DISTANCE", variants=(/
"DIS"/), &
684 description=
"Print the distance between the atoms a and b specified by their indices", &
685 usage=
"DISTANCE {integer} {integer}", n_var=2, repeats=.true., &
690 CALL keyword_create(keyword, __location__, name=
"ANGLE", variants=(/
"ANG"/), &
691 description=
"Print the angle formed by the atoms specified by their indices", &
692 usage=
"ANGLE {integer} {integer} {integer}", n_var=3, repeats=.true., &
697 CALL keyword_create(keyword, __location__, name=
"DIHEDRAL_ANGLE", variants=
s2a(
"DIHEDRAL",
"DIH"), &
698 description=
"Print the dihedral angle between the planes defined by the atoms (a,b,c) and "// &
699 "the atoms (b,c,d) specified by their indices", &
700 usage=
"DIHEDRAL_ANGLE {integer} {integer} {integer} {integer}", n_var=4, &
712 SUBROUTINE create_velocity_section(section)
717 cpassert(.NOT.
ASSOCIATED(section))
719 description=
"The velocities for simple systems or "// &
720 "the centroid mode in PI runs, xyz format by default", &
721 n_keywords=1, n_subsections=0, repeats=.false.)
724 description=
"Specify the units of measurement for the velocities "// &
725 "(currently works only for the path integral code). "// &
726 "All available CP2K units can be used.", &
727 usage=
"PINT_UNIT angstrom*au_t^-1", &
728 default_c_val=
"bohr*au_t^-1")
732 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
733 description=
"The atomic velocities in the format: "// &
734 "$ v_x \ v_y \ v_z$ "// &
735 "The same order as for the atomic coordinates is assumed.", &
736 repeats=.true., usage=
"{Real} {Real} {Real}", &
737 type_of_var=
real_t, n_var=3)
741 END SUBROUTINE create_velocity_section
748 SUBROUTINE create_shell_vel_section(section)
753 cpassert(.NOT.
ASSOCIATED(section))
754 CALL section_create(section, __location__, name=
"shell_velocity", &
755 description=
"The velocities of shells for shell-model potentials, "// &
757 n_keywords=1, n_subsections=0, repeats=.false.)
760 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
761 description=
"The shell particle velocities in the format: "// &
762 "$v_x \ v_y \ v_z$ "// &
763 "The same order as for the shell particle coordinates is assumed.", &
764 repeats=.true., usage=
"{Real} {Real} {Real}", &
765 type_of_var=
real_t, n_var=3)
769 END SUBROUTINE create_shell_vel_section
776 SUBROUTINE create_core_vel_section(section)
781 cpassert(.NOT.
ASSOCIATED(section))
782 CALL section_create(section, __location__, name=
"core_velocity", &
783 description=
"The velocities of cores for shell-model potentials, "// &
785 n_keywords=1, n_subsections=0, repeats=.false.)
788 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
789 description=
"The core particle velocities in the format: "// &
790 "$v_x \ v_y \ v_z$ "// &
791 "The same order as for the core particle coordinates is assumed.", &
792 repeats=.true., usage=
"{Real} {Real} {Real}", &
793 type_of_var=
real_t, n_var=3)
797 END SUBROUTINE create_core_vel_section
804 SUBROUTINE create_potential_section(section)
810 description=
"Section used to specify Potentials.", &
811 n_keywords=1, n_subsections=0, repeats=.false.)
813 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
814 description=
"CP2K Pseudo Potential Standard Format (GTH, ALL)", &
815 repeats=.true., type_of_var=
lchar_t)
819 END SUBROUTINE create_potential_section
826 SUBROUTINE create_kgpot_section(section)
832 description=
"Section used to specify KG Potentials.", &
833 n_keywords=1, n_subsections=0, repeats=.false.)
835 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
836 description=
"CP2K KG TNADD Potential Standard Format (TNADD)", &
837 repeats=.true., type_of_var=
lchar_t)
841 END SUBROUTINE create_kgpot_section
854 description=
"Section used to specify a general basis set for QM calculations.", &
855 n_keywords=1, n_subsections=0, repeats=.true.)
859 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
860 description=
"The type of basis set defined in this section.", &
861 lone_keyword_c_val=
"Orbital", &
862 usage=
"Orbital", default_c_val=
"Orbital")
867 keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
868 repeats=.true., type_of_var=
lchar_t, &
869 description=
"CP2K Basis Set Standard Format:"//
newline//
newline// &
871 "Element symbol Name of the basis set Alias names"//
newline// &
872 "nset (repeat the following block of lines nset times)"//
newline// &
873 "n lmin lmax nexp nshell(lmin) nshell(lmin+1) ... nshell(lmax-1) nshell(lmax)"//
newline// &
874 "a(1) c(1,l,1) c(1,l,2) ... c(1,l,nshell(l)-1) c(1,l,nshell(l)), l=lmin,lmax"//
newline// &
875 "a(2) c(2,l,1) c(2,l,2) ... c(2,l,nshell(l)-1) c(2,l,nshell(l)), l=lmin,lmax"//
newline// &
879 "a(nexp-1) c(nexp-1,l,1) c(nexp-1,l,2) ... c(nexp-1,l,nshell(l)-1) c(nexp-1,l,nshell(l)), l=lmin,lmax"//
newline// &
880 "a(nexp) c(nexp,l,1) c(nexp,l,2) ... c(nexp,l,nshell(l)-1) c(nexp,l,nshell(l)), l=lmin,lmax"//
newline// &
883 "nset : Number of exponent sets"//
newline// &
884 "n : Principle quantum number (only for orbital label printing)"//
newline// &
885 "lmax : Maximum angular momentum quantum number l"//
newline// &
886 "lmin : Minimum angular momentum quantum number l"//
newline// &
887 "nshell(l): Number of shells for angular momentum quantum number l"//
newline// &
889 "c : Contraction coefficient"//
newline// &
901 SUBROUTINE create_coord_section(section)
906 cpassert(.NOT.
ASSOCIATED(section))
908 description=
"The coordinates for simple systems (like small QM cells) "// &
909 "are specified here by default using explicit XYZ coordinates. "// &
910 "Simple products and fractions combined with functions of a single "// &
911 "number can be used like 2/3, 0.3*COS(60) or -SQRT(3)/2. "// &
912 "More complex systems should be given via an external coordinate "// &
913 "file in the SUBSYS%TOPOLOGY section.", &
914 n_keywords=1, n_subsections=0, repeats=.false.)
917 description=
'Specify the unit of measurement for the coordinates in input'// &
918 "All available CP2K units can be used.", &
919 usage=
"UNIT angstrom", default_c_val=
"angstrom")
924 description=
'Specify if the coordinates in input are scaled. '// &
925 'When true, the coordinates are given in multiples of the lattice vectors.', &
926 usage=
"SCALED F", default_l_val=.false., &
927 lone_keyword_l_val=.true.)
931 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
932 description=
"The atomic coordinates in the format:"//
newline//
newline// &
934 "The `MOLNAME` is optional. If not provided the molecule name "// &
935 "is internally created. All other fields after `MOLNAME` are simply ignored.", &
936 repeats=.true., usage=
"{{String} {Real} {Real} {Real} {String}}", &
940 END SUBROUTINE create_coord_section
947 SUBROUTINE create_shell_coord_section(section)
952 cpassert(.NOT.
ASSOCIATED(section))
954 description=
"The shell coordinates for the shell-model potentials"// &
955 " xyz format with an additional column for the index of the corresponding particle", &
956 n_keywords=1, n_subsections=0, repeats=.false.)
959 description=
'Specify the unit of measurement for the coordinates in input'// &
960 "All available CP2K units can be used.", &
961 usage=
"UNIT angstrom", default_c_val=
"angstrom")
966 description=
'Specify if the coordinates in input are scaled. '// &
967 'When true, the coordinates are given in multiples of the lattice vectors.', &
968 usage=
"SCALED F", default_l_val=.false., &
969 lone_keyword_l_val=.true.)
973 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
974 description=
"The shell particle coordinates in the format:"//
newline//
newline// &
976 "The `ATOMIC_INDEX` refers to the atom the shell particle belongs to.", &
977 repeats=.true., usage=
"{{String} {Real} {Real} {Real} {Integer}}", &
982 END SUBROUTINE create_shell_coord_section
989 SUBROUTINE create_core_coord_section(section)
994 cpassert(.NOT.
ASSOCIATED(section))
996 description=
"The core coordinates for the shell-model potentials"// &
997 " xyz format with an additional column for the index of the corresponding particle", &
998 n_keywords=1, n_subsections=0, repeats=.false.)
1001 description=
'Specify the unit of measurement for the coordinates in input'// &
1002 "All available CP2K units can be used.", &
1003 usage=
"UNIT angstrom", default_c_val=
"angstrom")
1008 description=
'Specify if the coordinates in input are scaled. '// &
1009 'When true, the coordinates are given in multiples of the lattice vectors.', &
1010 usage=
"SCALED F", default_l_val=.false., &
1011 lone_keyword_l_val=.true.)
1015 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1016 description=
"The core particle coordinates in the format:"//
newline//
newline// &
1018 "The `ATOMIC_INDEX` refers to the atom the core particle belongs to.", &
1019 repeats=.true., usage=
"{{String} {Real} {Real} {Real} {Integer}}", &
1024 END SUBROUTINE create_core_coord_section
1031 SUBROUTINE create_kind_section(section)
1037 cpassert(.NOT.
ASSOCIATED(section))
1040 description=
"The description of the kind of the atoms (mostly for QM)", &
1041 n_keywords=19, n_subsections=1, repeats=.true.)
1045 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1046 description=
"The name of the kind described in this section.", &
1047 usage=
"H", default_c_val=
"DEFAULT")
1052 description=
"The primary Gaussian basis set (NONE implies no basis used, meaningful with GHOST). "// &
1053 "Defaults are set for TYPE {ORB} and FORM {GTO}. Possible values for TYPE are "// &
1054 "{ORB, AUX, MIN, RI_AUX, LRI, ...}. Possible values for "// &
1055 "FORM are {GTO, STO}. Where STO results in a GTO expansion of a Slater type basis. "// &
1056 "If a value for FORM is given, also TYPE has to be set explicitly.", &
1057 usage=
"BASIS_SET [type] [form] DZVP", type_of_var=
char_t, default_c_vals=(/
" ",
" ",
" "/), &
1059 repeats=.true., n_var=-1)
1066 keyword, __location__, name=
"AUX_BASIS_SET", &
1067 variants=
s2a(
"AUXILIARY_BASIS_SET",
"AUX_BASIS"), &
1068 description=
"The auxiliary basis set (GTO type)", &
1069 usage=
"AUX_BASIS_SET DZVP", default_c_val=
" ", &
1071 deprecation_notice=
"use 'BASIS_SET AUX ...' instead", &
1077 keyword, __location__, name=
"RI_AUX_BASIS_SET", &
1078 variants=
s2a(
"RI_MP2_BASIS_SET",
"RI_RPA_BASIS_SET",
"RI_AUX_BASIS"), &
1079 description=
"The RI auxiliary basis set used in WF_CORRELATION (GTO type)", &
1080 usage=
"RI_AUX_BASIS_SET DZVP", default_c_val=
" ", &
1082 deprecation_notice=
"Use 'BASIS_SET RI_AUX ...' instead.", &
1088 keyword, __location__, name=
"LRI_BASIS_SET", &
1089 variants=
s2a(
"LRI_BASIS"), &
1090 description=
"The local resolution of identity basis set (GTO type)", &
1091 usage=
"LRI_BASIS_SET", default_c_val=
" ", &
1093 deprecation_notice=
"Use 'BASIS_SET LRI ...' instead.", &
1099 keyword, __location__, name=
"AUX_FIT_BASIS_SET", &
1100 variants=
s2a(
"AUXILIARY_FIT_BASIS_SET",
"AUX_FIT_BASIS"), &
1101 description=
"The auxiliary basis set (GTO type) for auxiliary density matrix method", &
1102 usage=
"AUX_FIT_BASIS_SET DZVP", default_c_val=
" ", &
1105 deprecation_notice=
"Use 'BASIS_SET AUX_FIT ...' instead.", &
1112 description=
"Specifies the electronic configuration used in construction the "// &
1113 "atomic initial guess (see the pseudo potential file for the default values).", &
1114 usage=
"ELEC_CONF n_elec(s) n_elec(p) n_elec(d) ... ", &
1119 CALL keyword_create(keyword, __location__, name=
"CORE_CORRECTION", &
1120 description=
"Corrects the effective nuclear charge", &
1121 usage=
"CORE_CORRECTION 1.0", n_var=1, &
1122 default_r_val=0.0_dp)
1126 CALL keyword_create(keyword, __location__, name=
"MAGNETIZATION", &
1127 description=
"The magnetization used in the atomic initial guess. "// &
1128 "Adds magnetization/2 spin-alpha electrons and removes magnetization/2 spin-beta electrons.", &
1129 usage=
"MAGNETIZATION 0.5", n_var=1, &
1130 default_r_val=0.0_dp)
1135 variants=(/
"ELEMENT_SYMBOL"/), &
1136 description=
"The element of the actual kind "// &
1137 "(if not given it is inferred from the kind name)", &
1138 usage=
"ELEMENT O", type_of_var=
char_t, n_var=1)
1143 variants=
s2a(
"ATOMIC_MASS",
"ATOMIC_WEIGHT",
"WEIGHT"), &
1144 description=
"The mass of the atom "// &
1145 "(if negative or non present it is inferred from the element symbol)", &
1146 usage=
"MASS 2.0", type_of_var=
real_t, n_var=1)
1150 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
1151 description=
"The name of the file where to find this kinds pseudopotential."// &
1152 " Default file is specified in DFT section.", &
1153 usage=
"POTENTIAL_FILE_NAME <PSEUDO-POTENTIAL-FILE-NAME>", default_c_val=
"-", n_var=1)
1157 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_TYPE", &
1158 description=
"The type of this kinds pseudopotential (ECP, ALL, GTH, UPS).", &
1159 deprecation_notice=
"Use 'POTENTIAL <TYPE> ...' instead.", &
1160 usage=
"POTENTIAL_TYPE <TYPE>", default_c_val=
"", n_var=1)
1165 variants=(/
"POT"/), &
1166 description=
"The type (ECP, ALL, GTH, UPS) and name of the pseudopotential for the defined kind.", &
1167 usage=
"POTENTIAL [type] <POTENTIAL-NAME>", type_of_var=
char_t, default_c_vals=(/
" ",
" "/), &
1172 CALL keyword_create(keyword, __location__, name=
"KG_POTENTIAL_FILE_NAME", &
1173 description=
"The name of the file where to find this kinds KG potential."// &
1174 " Default file is specified in DFT section.", &
1175 usage=
"KG_POTENTIAL_FILE_NAME <POTENTIAL-FILE-NAME>", default_c_val=
"-", n_var=1)
1179 CALL keyword_create(keyword, __location__, name=
"KG_POTENTIAL", &
1180 variants=(/
"KG_POT"/), &
1181 description=
"The name of the non-additive atomic kinetic energy potential.", &
1182 usage=
"KG_POTENTIAL <TNADD-POTENTIAL-NAME>", default_c_val=
"NONE", n_var=1)
1186 CALL keyword_create(keyword, __location__, name=
"ECP_SEMI_LOCAL", &
1187 description=
"Use ECPs in the original semi-local form."// &
1188 " This requires the availability of the corresponding integral library."// &
1189 " If set to False, a fully nonlocal one-center expansion of the ECP is constructed.", &
1190 usage=
"ECP_SEMI_LOCAL {T,F}", default_l_val=.true., lone_keyword_l_val=.true.)
1194 CALL keyword_create(keyword, __location__, name=
"COVALENT_RADIUS", &
1195 description=
"Use this covalent radius (in Angstrom) for all atoms of "// &
1196 "the atomic kind instead of the internally tabulated default value", &
1197 usage=
"COVALENT_RADIUS 1.24", n_var=1, default_r_val=0.0_dp, &
1198 unit_str=
"angstrom")
1203 description=
"Use this van der Waals radius (in Angstrom) for all atoms of "// &
1204 "the atomic kind instead of the internally tabulated default value", &
1205 usage=
"VDW_RADIUS 1.85", n_var=1, default_r_val=0.0_dp, unit_str=
"angstrom")
1209 CALL keyword_create(keyword, __location__, name=
"HARD_EXP_RADIUS", &
1210 description=
"The region where the hard density is supposed to be confined"// &
1211 " (GAPW) (in Bohr, default is 1.2 for H and 1.512 otherwise)", &
1212 usage=
"HARD_EXP_RADIUS 0.9", type_of_var=
real_t, n_var=1)
1216 CALL keyword_create(keyword, __location__, name=
"MAX_RAD_LOCAL", &
1217 description=
"Max radius for the basis functions used to"// &
1218 " generate the local projectors in GAPW [Bohr]", &
1219 usage=
"MAX_RAD_LOCAL 15.0", default_r_val=13.0_dp*
bohr)
1223 CALL keyword_create(keyword, __location__, name=
"RHO0_EXP_RADIUS", &
1224 description=
"the radius which defines the atomic region where "// &
1225 "the hard compensation density is confined. "// &
1226 "should be less than HARD_EXP_RADIUS (GAPW) (Bohr, default equals HARD_EXP_RADIUS)", &
1227 usage=
"RHO0_EXP_RADIUS 0.9", type_of_var=
real_t, n_var=1)
1231 CALL keyword_create(keyword, __location__, name=
"LEBEDEV_GRID", &
1232 description=
"The number of points for the angular part of "// &
1233 "the local grid (GAPW)", &
1234 usage=
"LEBEDEV_GRID 40", default_i_val=50)
1239 description=
"The number of points for the radial part of "// &
1240 "the local grid (GAPW)", &
1241 usage=
"RADIAL_GRID 70", default_i_val=50)
1246 description=
"Defines the radius of the electrostatic multipole "// &
1247 "of the atom in Fist. This radius applies to the charge, the "// &
1248 "dipole and the quadrupole. When zero, the atom is treated as "// &
1249 "a point multipole, otherwise it is treated as a Gaussian "// &
1250 "charge distribution with the given radius: "// &
1251 "p(x,y,z)*N*exp(-(x**2+y**2+z**2)/(2*MM_RADIUS**2)), where N is "// &
1252 "a normalization constant. In the core-shell model, only the "// &
1253 "shell is treated as a Gaussian and the core is always a point "// &
1255 usage=
"MM_RADIUS {real}", default_r_val=0.0_dp, type_of_var=
real_t, &
1256 unit_str=
"angstrom", n_var=1)
1261 description=
"The third order parameter (derivative of hardness) used in "// &
1262 "diagonal DFTB3 correction.", &
1263 usage=
"DFTB3_PARAM 0.2", default_r_val=0.0_dp)
1268 description=
"The maximum l-quantum number of the DFTB basis for this kind.", &
1269 usage=
"LMAX_DFTB 1", default_i_val=-1)
1274 description=
"The number of MAOs (Modified Atomic Orbitals) for this kind.", &
1275 usage=
"MAO 4", default_i_val=-1)
1280 CALL keyword_create(keyword, __location__, name=
"SE_P_ORBITALS_ON_H", &
1281 description=
"Forces the usage of p-orbitals on H for SEMI-EMPIRICAL calculations."// &
1282 " This keyword applies only when the KIND is specifying an Hydrogen element."// &
1283 " It is ignored in all other cases. ", &
1284 usage=
"SE_P_ORBITALS_ON_H", default_l_val=.false., lone_keyword_l_val=.true.)
1289 description=
"Force one type to be treated by the GPW scheme,"// &
1290 " whatever are its primitives, even if the GAPW method is used", &
1291 usage=
"GPW_TYPE", default_l_val=.false., lone_keyword_l_val=.true.)
1297 description=
"This keyword makes all atoms of this kind "// &
1298 "ghost atoms, i.e. without pseudo or nuclear charge. "// &
1299 "Useful to just have the basis set at that position (e.g. BSSE calculations), "// &
1300 "or to have a non-interacting particle with BASIS_SET NONE", &
1302 default_l_val=.false., &
1303 lone_keyword_l_val=.true.)
1308 name=
"FLOATING_BASIS_CENTER", &
1309 description=
"This keyword makes all atoms of this kind "// &
1310 "floating functions, i.e. without pseudo or nuclear charge"// &
1311 " which are subject to a geometry optimization in the outer SCF.", &
1312 usage=
"FLOATING_BASIS_CENTER", &
1313 default_l_val=.false., &
1314 lone_keyword_l_val=.true.)
1319 name=
"NO_OPTIMIZE", &
1320 description=
"Skip optimization of this type (used in specific basis set or"// &
1321 " potential optimization schemes)", &
1322 usage=
"NO_OPTIMIZE", &
1323 default_l_val=.false., &
1324 lone_keyword_l_val=.true.)
1328 CALL keyword_create(keyword, __location__, name=
"PAO_BASIS_SIZE", &
1329 description=
"The block size used for the polarized atomic orbital basis. "// &
1330 "Setting PAO_BASIS_SIZE to the size of the primary basis or to a value "// &
1331 "below one will disables the PAO method for the given atomic kind. "// &
1332 "By default PAO is disbabled.", default_i_val=0)
1337 description=
"The filename of the PyTorch model for predicting PAO basis sets.")
1341 NULLIFY (subsection)
1342 CALL create_pao_potential_section(subsection)
1346 CALL create_pao_descriptor_section(subsection)
1354 CALL create_potential_section(subsection)
1358 CALL create_kgpot_section(subsection)
1362 CALL create_dft_plus_u_section(subsection)
1366 CALL create_bs_section(subsection)
1370 END SUBROUTINE create_kind_section
1377 SUBROUTINE create_pao_potential_section(section)
1382 cpassert(.NOT.
ASSOCIATED(section))
1385 CALL section_create(section, __location__, name=
"PAO_POTENTIAL", repeats=.true., &
1386 description=
"Settings of the PAO potentials, which are atomic kind specific.")
1389 description=
"Maximum angular moment of the potential "// &
1390 "(must be an even number).", default_i_val=0)
1395 description=
"Exponent of the Gaussian potential term.", &
1396 default_r_val=1.0_dp)
1401 description=
"Weight of Gaussian potential term.", &
1402 default_r_val=1.0_dp)
1406 CALL keyword_create(keyword, __location__, name=
"MAX_PROJECTOR", &
1407 description=
"Maximum angular moment of the potential's projectors. "// &
1408 "Used only by the GTH parametrization", default_i_val=2)
1412 END SUBROUTINE create_pao_potential_section
1419 SUBROUTINE create_pao_descriptor_section(section)
1424 cpassert(.NOT.
ASSOCIATED(section))
1427 CALL section_create(section, __location__, name=
"PAO_DESCRIPTOR", repeats=.true., &
1428 description=
"Settings of the PAO descriptor, which are atomic kind specific.")
1431 description=
"Exponent of the Gaussian potential term.", &
1432 default_r_val=1.0_dp)
1437 description=
"Exponent of the Gaussian screening.", &
1438 default_r_val=0.2_dp)
1443 description=
"Weight of Gaussian potential term.", &
1444 default_r_val=1.0_dp)
1448 END SUBROUTINE create_pao_descriptor_section
1459 SUBROUTINE create_bs_section(section)
1466 cpassert(.NOT.
ASSOCIATED(section))
1470 description=
"Define the required atomic orbital occupation "// &
1471 "assigned in initialization of the density matrix, by adding or "// &
1472 "subtracting electrons from specific angular momentum channels. "// &
1473 "It works only with GUESS ATOMIC.", &
1478 NULLIFY (keyword, subsection)
1481 name=
"_SECTION_PARAMETERS_", &
1482 description=
"controls the activation of the BS section", &
1484 default_l_val=.false., &
1485 lone_keyword_l_val=.true.)
1489 CALL section_create(subsection, __location__, name=
"ALPHA", description=
"alpha spin", &
1496 description=
"Orbital ccupation change per angular momentum quantum number. "// &
1497 "In unrestricted calculations applied to spin alpha.", &
1508 description=
"Angular momentum quantum number of the "// &
1509 "orbitals whose occupation is changed", &
1520 description=
"Principal quantum number of the "// &
1521 "orbitals whose occupation is changed. "// &
1522 "Default is the first not occupied", &
1532 CALL section_create(subsection, __location__, name=
"BETA", description=
"beta spin", &
1539 description=
"Orbital ccupation change per angular momentum quantum number. "// &
1540 "Applied to spin beta and active only in unrestricted calculations.", &
1550 description=
"Angular momentum quantum number of the "// &
1551 "orbitals of beta spin whose occupation is changed. "// &
1552 "Active only for unrestricted calculations", &
1562 description=
"Principal quantum number of the "// &
1563 "orbitals of beta spin whose occupation is changed. "// &
1564 "Default is the first not occupied. "// &
1565 "Active only for unrestricted calculations", &
1576 END SUBROUTINE create_bs_section
1584 SUBROUTINE create_topology_section(section)
1590 cpassert(.NOT.
ASSOCIATED(section))
1592 description=
"Section specifying information regarding how to handle the topology"// &
1593 " for classical runs.", &
1594 n_keywords=5, n_subsections=0, repeats=.false.)
1596 NULLIFY (keyword, print_key)
1598 CALL keyword_create(keyword, __location__, name=
"USE_ELEMENT_AS_KIND", &
1599 description=
"Kinds are generated according to the element name."// &
1600 " Default=True for SE and TB methods.", &
1601 usage=
"USE_ELEMENT_AS_KIND logical", &
1602 default_l_val=.false., lone_keyword_l_val=.true.)
1606 CALL keyword_create(keyword, __location__, name=
"CHARGE_OCCUP", &
1607 variants=(/
"CHARGE_O"/), &
1608 description=
"Read MM charges from the OCCUP field of PDB file.", &
1609 usage=
"CHARGE_OCCUP logical", &
1610 default_l_val=.false., lone_keyword_l_val=.true.)
1615 variants=(/
"CHARGE_B"/), &
1616 description=
"Read MM charges from the BETA field of PDB file.", &
1617 usage=
"CHARGE_BETA logical", &
1618 default_l_val=.false., lone_keyword_l_val=.true.)
1622 CALL keyword_create(keyword, __location__, name=
"CHARGE_EXTENDED", &
1623 description=
"Read MM charges from the very last field of PDB file (starting from column 81)."// &
1624 " No limitations of number of digits.", &
1625 usage=
"CHARGE_EXTENDED logical", &
1626 default_l_val=.false., lone_keyword_l_val=.true.)
1631 description=
"For a protein, each residue is now considered a molecule", &
1632 usage=
"PARA_RES logical", &
1633 default_l_val=.true., lone_keyword_l_val=.true.)
1638 description=
"Check molecules have the same number of atom and names.", &
1639 usage=
"MOL_CHECK logical", &
1640 default_l_val=.true., lone_keyword_l_val=.true.)
1644 CALL keyword_create(keyword, __location__, name=
"USE_G96_VELOCITY", &
1645 description=
"Use the velocities in the G96 coordinate files as the starting velocity", &
1646 usage=
"USE_G96_VELOCITY logical", &
1647 default_l_val=.false., lone_keyword_l_val=.true.)
1652 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_NAME", &
1653 variants=
s2a(
"COORD_FILE"), &
1654 description=
"Specifies the filename that contains coordinates.", &
1655 usage=
"COORD_FILE_NAME <FILENAME>", type_of_var=
lchar_t)
1659 CALL keyword_create(keyword, __location__, name=
"COORD_FILE_FORMAT", &
1660 variants=
s2a(
"COORDINATE"), &
1661 description=
"Set up the way in which coordinates will be read.", &
1662 usage=
"COORD_FILE_FORMAT (OFF|PDB|XYZ|G96|CRD|CIF|XTL|CP2K)", &
1663 enum_c_vals=
s2a(
"OFF",
"PDB",
"XYZ",
"G96",
"CRD",
"CIF",
"XTL",
"CP2K"), &
1667 "Coordinates read in the &COORD section of the input file", &
1668 "Coordinates provided through a PDB file format", &
1669 "Coordinates provided through an XYZ file format", &
1670 "Coordinates provided through a GROMOS96 file format", &
1671 "Coordinates provided through an AMBER file format", &
1672 "Coordinates provided through a CIF (Crystallographic Information File) file format", &
1673 "Coordinates provided through a XTL (MSI native) file format", &
1674 "Read the coordinates in CP2K &COORD section format from an external file. "// &
1675 "NOTE: This file will be overwritten with the latest coordinates."), &
1680 CALL keyword_create(keyword, __location__, name=
"NUMBER_OF_ATOMS", &
1681 variants=
s2a(
"NATOMS",
"NATOM"), &
1682 description=
"Optionally define the number of atoms read from an external file "// &
1683 "(see COORD_FILE_NAME) if the COORD_FILE_FORMAT CP2K is used", &
1688 usage=
"NATOMS 768000")
1694 CALL keyword_create(keyword, __location__, name=
"DISABLE_EXCLUSION_LISTS", &
1695 description=
"Do not build any exclusion lists.", &
1696 usage=
"DISABLE_EXCLUSION_LISTS", &
1697 default_l_val=.false., lone_keyword_l_val=.true.)
1702 description=
"Specifies which kind of Van der Waals interaction to skip.", &
1703 usage=
"EXCLUDE_VDW (1-1||1-2||1-3||1-4)", &
1704 enum_c_vals=
s2a(
"1-1",
"1-2",
"1-3",
"1-4"), &
1711 description=
"Specifies which kind of Electrostatic interaction to skip.", &
1712 usage=
"EXCLUDE_EI (1-1||1-2||1-3||1-4)", &
1713 enum_c_vals=
s2a(
"1-1",
"1-2",
"1-3",
"1-4"), &
1719 CALL keyword_create(keyword, __location__, name=
"AUTOGEN_EXCLUDE_LISTS", &
1720 description=
"When True, the exclude lists are solely based on"// &
1721 " the bond data in the topology. The (minimal)"// &
1722 " number of bonds between two atoms is used to"// &
1723 " determine if the atom pair is added to an"// &
1724 " exclusion list. When False, 1-2 exclusion is based"// &
1725 " on bonds in the topology, 1-3 exclusion is based"// &
1726 " on bonds and bends in the topology, 1-4 exclusion"// &
1727 " is based on bonds, bends and dihedrals in the"// &
1728 " topology. This implies that a missing dihedral in"// &
1729 " the topology will cause the corresponding 1-4 pair"// &
1730 " not to be in the exclusion list, in case 1-4"// &
1731 " exclusion is requested for VDW or EI interactions.", &
1732 usage=
"AUTOGEN_EXCLUDE_LISTS logical", &
1733 default_l_val=.false., lone_keyword_l_val=.true.)
1738 keyword, __location__, name=
"MULTIPLE_UNIT_CELL", &
1739 description=
"Specifies the numbers of repetition in space (X, Y, Z) of the defined cell, "// &
1740 "assuming it as a unit cell. This keyword affects only the coordinates specification. The same keyword "// &
1741 "in SUBSYS%CELL%MULTIPLE_UNIT_CELL should be modified in order to affect the cell "// &
1742 "specification.", usage=
"MULTIPLE_UNIT_CELL 1 1 1", &
1743 n_var=3, default_i_vals=(/1, 1, 1/), repeats=.false.)
1747 CALL keyword_create(keyword, __location__, name=
"MEMORY_PROGRESSION_FACTOR", &
1748 description=
"This keyword is quite technical and should normally not be changed by the user. It "// &
1749 "affects the memory allocation during the construction of the topology. It does NOT affect the "// &
1750 "memory used once the topology is built.", &
1751 n_var=1, default_r_val=1.2_dp, repeats=.false.)
1756 description=
"controls the dumping of the PDB at the starting geometry", &
1760 CALL keyword_create(keyword, __location__, name=
"CHARGE_OCCUP", &
1761 variants=(/
"CHARGE_O"/), &
1762 description=
"Write the MM charges to the OCCUP field of the PDB file", &
1763 usage=
"CHARGE_OCCUP logical", &
1764 default_l_val=.false., lone_keyword_l_val=.true.)
1769 variants=(/
"CHARGE_B"/), &
1770 description=
"Write the MM charges to the BETA field of the PDB file", &
1771 usage=
"CHARGE_BETA logical", &
1772 default_l_val=.false., lone_keyword_l_val=.true.)
1776 CALL keyword_create(keyword, __location__, name=
"CHARGE_EXTENDED", &
1777 description=
"Write the MM charges to the very last field of the PDB file (starting from column 81)", &
1778 usage=
"CHARGE_EXTENDED logical", &
1779 default_l_val=.false., lone_keyword_l_val=.true.)
1786 description=
"controls the dumping of the PSF connectivity", &
1791 NULLIFY (subsection)
1792 CALL create_exclude_list_section(subsection,
"EXCLUDE_VDW_LIST")
1796 CALL create_exclude_list_section(subsection,
"EXCLUDE_EI_LIST")
1800 CALL create_center_section(subsection)
1804 CALL create_generate_section(subsection)
1808 CALL create_molset_section(subsection)
1812 END SUBROUTINE create_topology_section
1820 SUBROUTINE create_exclude_list_section(section, header)
1822 CHARACTER(LEN=*),
INTENT(IN) ::
header
1826 cpassert(.NOT.
ASSOCIATED(section))
1829 description=
"Speficy bonds (via atom kinds) for fine tuning of 1-2 "// &
1830 "exclusion lists. If this section is not present the 1-2 exclusion is "// &
1831 "applied to all bond kinds. When this section is present the 1-2 exclusion "// &
1832 "is applied ONLY to the bonds defined herein. This section allows ONLY fine tuning of 1-2 "// &
1834 n_keywords=1, n_subsections=0, repeats=.false.)
1837 description=
"Specify the atom kinds involved in the bond for which 1-2 exclusion holds.", &
1838 usage=
"BOND {KIND1} {KIND2}", type_of_var=
char_t, &
1842 END SUBROUTINE create_exclude_list_section
1849 SUBROUTINE create_center_section(section)
1854 cpassert(.NOT.
ASSOCIATED(section))
1856 CALL section_create(section, __location__,
"CENTER_COORDINATES", &
1857 description=
"Allows centering the coordinates of the system in the box. "// &
1858 "The centering point can be defined by the user.", &
1859 n_keywords=1, n_subsections=0, repeats=.false.)
1861 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
1862 description=
"Controls the activation of the centering method", &
1863 usage=
"&CENTER_COORDINATES T", &
1864 default_l_val=.false., &
1865 lone_keyword_l_val=.true.)
1869 CALL keyword_create(keyword, __location__, name=
"CENTER_POINT", &
1870 description=
"Specify the point used for centering the coordinates. Default is to "// &
1871 "center the system in cell/2. ", type_of_var=
real_t, n_var=3, &
1875 END SUBROUTINE create_center_section
1882 SUBROUTINE create_molset_section(section)
1886 TYPE(
section_type),
POINTER :: subsection, subsubsection
1888 cpassert(.NOT.
ASSOCIATED(section))
1889 NULLIFY (keyword, subsection, subsubsection)
1891 description=
"Specify the connectivity of a full system specifying the connectivity"// &
1892 " of the fragments of the system.", &
1893 n_keywords=2, n_subsections=0, repeats=.false.)
1897 description=
"Specify information about the connectivity of single molecules", &
1898 n_keywords=2, n_subsections=0, repeats=.true.)
1901 description=
"number of molecules ", &
1902 usage=
"NMOL {integer}", default_i_val=1)
1906 CALL connectivity_framework(subsection,
do_conn_psf)
1911 CALL section_create(subsection, __location__, name=
"MERGE_MOLECULES", &
1912 description=
"Enables the creation of connecting bridges (bonds, angles, torsions, impropers)"// &
1913 " between the two or more molecules defined with independent connectivity.", &
1914 n_keywords=2, n_subsections=0, repeats=.false.)
1917 description=
"Defines new bonds", n_keywords=2, n_subsections=0, repeats=.false.)
1918 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1919 description=
"Two integer indexes per line defining the new bond."// &
1920 " Indexes must be relative to the full system and not to the single molecules", &
1922 usage=
"{Integer} {Integer}", type_of_var=
integer_t, n_var=2)
1928 CALL section_create(subsubsection, __location__, name=
"angles", &
1929 description=
"Defines new angles", n_keywords=2, n_subsections=0, &
1931 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1932 description=
"Three integer indexes per line defining the new angle"// &
1933 " Indexes must be relative to the full system and not to the single molecules", repeats=.true., &
1934 usage=
"{Integer} {Integer} {Integer}", type_of_var=
integer_t, n_var=3)
1940 CALL section_create(subsubsection, __location__, name=
"torsions", &
1941 description=
"Defines new torsions", n_keywords=2, n_subsections=0, &
1943 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1944 description=
"Four integer indexes per line defining the new torsion"// &
1945 " Indexes must be relative to the full system and not to the single molecules", repeats=.true., &
1946 usage=
"{Integer} {Integer} {Integer} {Integer}", type_of_var=
integer_t, n_var=4)
1952 CALL section_create(subsubsection, __location__, name=
"impropers", &
1953 description=
"Defines new impropers", n_keywords=2, n_subsections=0, &
1955 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1956 description=
"Four integer indexes per line defining the new improper"// &
1957 " Indexes must be relative to the full system and not to the single molecules", repeats=.true., &
1958 usage=
"{Integer} {Integer} {Integer} {Integer}", type_of_var=
integer_t, n_var=4)
1967 END SUBROUTINE create_molset_section
1974 SUBROUTINE create_generate_section(section)
1980 cpassert(.NOT.
ASSOCIATED(section))
1981 NULLIFY (keyword, subsection)
1983 description=
"Setup of keywords controlling the generation of the connectivity", &
1984 n_keywords=2, n_subsections=0, repeats=.true.)
1987 description=
"Reorder a list of atomic coordinates into order so it can be packed correctly.", &
1988 usage=
"REORDER <LOGICAL>", &
1989 default_l_val=.false., lone_keyword_l_val=.true.)
1993 CALL keyword_create(keyword, __location__, name=
"CREATE_MOLECULES", &
1994 description=
"Create molecules names and definition. Can be used to override the"// &
1995 " molecules specifications of a possible input connectivity or to create molecules"// &
1996 " specifications for file types as XYZ, missing of molecules definitions.", &
1997 usage=
"CREATE_MOLECULES <LOGICAL>", &
1998 default_l_val=.false., lone_keyword_l_val=.true.)
2003 description=
"Used in conjunction with BONDPARM_FACTOR to "// &
2004 "help determine wheather there is bonding "// &
2005 "between two atoms based on a distance criteria. "// &
2006 "Can use covalent radii information or VDW radii information", &
2007 usage=
"BONDPARM (COVALENT||VDW)", &
2008 enum_c_vals=
s2a(
"COVALENT",
"VDW"), &
2014 CALL keyword_create(keyword, __location__, name=
"BONDPARM_FACTOR", &
2015 description=
"Used in conjunction with BONDPARM to help "// &
2016 "determine wheather there is bonding between "// &
2017 "two atoms based on a distance criteria.", &
2018 usage=
"bondparm_factor {real}", default_r_val=1.1_dp)
2022 CALL keyword_create(keyword, __location__, name=
"BONDLENGTH_MAX", &
2023 description=
"Maximum distance to generate neighbor lists to build connectivity", &
2024 usage=
"BONDLENGTH_MAX <real>", &
2026 unit_str=
"angstrom")
2030 CALL keyword_create(keyword, __location__, name=
"BONDLENGTH_MIN", &
2031 description=
"Minimum distance to generate neighbor lists to build connectivity", &
2032 usage=
"BONDLENGTH_MIN <real>", &
2034 unit_str=
"angstrom")
2040 description=
"Section used to add/remove bonds in the connectivity."// &
2041 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2042 n_keywords=1, n_subsections=0, repeats=.true.)
2044 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2045 description=
"controls the activation of the bond", &
2046 usage=
"&BOND (ADD|REMOVE)", &
2047 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2054 description=
"Specifies two atomic index united by a covalent bond", &
2055 usage=
"ATOMS {integer} {integer}", type_of_var=
integer_t, n_var=2, &
2065 description=
"Section used to add/remove angles in the connectivity."// &
2066 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2067 n_keywords=1, n_subsections=0, repeats=.true.)
2069 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2070 description=
"controls the activation of the bond", &
2071 usage=
"&ANGLE (ADD|REMOVE)", &
2072 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2079 description=
"Specifies two atomic index united by a covalent bond", &
2080 usage=
"ATOMS {integer} {integer} {integer} ", type_of_var=
integer_t, n_var=3, &
2090 description=
"Section used to add/remove torsion in the connectivity."// &
2091 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2092 n_keywords=1, n_subsections=0, repeats=.true.)
2094 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2095 description=
"controls the activation of the bond", &
2096 usage=
"&TORSION (ADD|REMOVE)", &
2097 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2104 description=
"Specifies two atomic index united by a covalent bond", &
2105 usage=
"ATOMS {integer} {integer} {integer} {integer} ", type_of_var=
integer_t, n_var=4, &
2115 description=
"Section used to add/remove improper in the connectivity."// &
2116 " Useful for systems with a complex connectivity, difficult to find out automatically.", &
2117 n_keywords=1, n_subsections=0, repeats=.true.)
2119 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2120 description=
"controls the activation of the bond", &
2121 usage=
"&IMPROPER (ADD|REMOVE)", &
2122 enum_c_vals=
s2a(
"ADD",
"REMOVE"), &
2129 description=
"Specifies two atomic index united by a covalent bond", &
2130 usage=
"ATOMS {integer} {integer} {integer} {integer} ", type_of_var=
integer_t, n_var=4, &
2139 CALL section_create(subsection, __location__, name=
"ISOLATED_ATOMS", &
2140 description=
" This section specifies the atoms that one considers isolated. Useful when present "// &
2141 "ions in solution.", n_keywords=1, n_subsections=0, repeats=.false.)
2143 description=
"Specifies a list of atomic indexes of the isolated ion", &
2144 usage=
"LIST {integer}", type_of_var=
integer_t, n_var=-1, &
2157 CALL create_gen_print_section(subsection)
2161 END SUBROUTINE create_generate_section
2168 SUBROUTINE create_gen_print_section(section)
2173 cpassert(.NOT.
ASSOCIATED(section))
2175 description=
"Section of possible print options in GENERATE code.", &
2176 n_keywords=0, n_subsections=1, repeats=.false.)
2180 description=
"Activates the printing of the neighbor lists used"// &
2182 filename=
"", unit_str=
"angstrom")
2187 description=
"Activates the printing of the subcells used for the "// &
2188 "generation of neighbor lists for connectivity.", &
2193 END SUBROUTINE create_gen_print_section
2201 SUBROUTINE connectivity_framework(section, default)
2203 INTEGER,
INTENT(IN) :: default
2207 cpassert(
ASSOCIATED(section))
2209 CALL keyword_create(keyword, __location__, name=
"CONN_FILE_NAME", &
2210 variants=(/
"CONN_FILE"/), &
2211 description=
"Specifies the filename that contains the molecular connectivity.", &
2212 usage=
"CONN_FILE_NAME <FILENAME>", type_of_var=
lchar_t)
2216 CALL keyword_create(keyword, __location__, name=
"CONN_FILE_FORMAT", &
2217 variants=(/
"CONNECTIVITY"/), &
2218 description=
"Ways to determine and generate a molecules. "// &
2219 "Default is to use GENERATE", &
2220 usage=
"CONN_FILE_FORMAT (PSF|UPSF|MOL_SET|GENERATE|OFF|G87|G96|AMBER|USER)", &
2221 enum_c_vals=
s2a(
"PSF",
"UPSF",
"MOL_SET",
"GENERATE",
"OFF",
"G87",
"G96",
"AMBER",
"USER"), &
2231 enum_desc=
s2a(
"Use a PSF file to determine the connectivity."// &
2232 " (support standard CHARMM/XPLOR and EXT CHARMM)", &
2233 "Read a PSF file in an unformatted way (useful for not so standard PSF).", &
2234 "Use multiple PSF (for now...) files to generate the whole system.", &
2235 "Use a simple distance criteria. (Look at keyword BONDPARM)", &
2236 "Do not generate molecules. (e.g. for QS or ill defined systems)", &
2237 "Use GROMOS G87 topology file.", &
2238 "Use GROMOS G96 topology file.", &
2239 "Use AMBER topology file for reading connectivity (compatible starting from AMBER V.7)", &
2240 "Allows the definition of molecules and residues based on the 5th and 6th column of "// &
2241 "the COORD section. This option can be handy for the definition of molecules with QS "// &
2242 "or to save memory in the case of very large systems (use PARA_RES off)."), &
2243 default_i_val=default)
2246 END SUBROUTINE connectivity_framework
2255 SUBROUTINE create_dft_plus_u_section(section)
2262 cpassert(.NOT.
ASSOCIATED(section))
2265 name=
"DFT_PLUS_U", &
2266 description=
"Define the parameters for a DFT+U run", &
2273 name=
"_SECTION_PARAMETERS_", &
2274 description=
"Controls the activation of the DFT+U section", &
2275 usage=
"&DFT_PLUS_U ON", &
2276 default_l_val=.false., &
2277 lone_keyword_l_val=.true.)
2283 description=
"Angular momentum quantum number of the "// &
2284 "orbitals to which the correction is applied", &
2295 variants=(/
"U_EFF"/), &
2296 description=
"Effective parameter U(eff) = U - J", &
2300 default_r_val=0.0_dp, &
2302 usage=
"U_MINUS_J [eV] 1.4")
2308 description=
"principal quantum number of the "// &
2309 "orbitals to which the correction is applied. Ignored unless pwdft is used for the calculations", &
2320 description=
"U parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2324 default_r_val=0.0_dp, &
2332 description=
"J parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2336 default_r_val=0.0_dp, &
2344 description=
"alpha parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2348 default_r_val=0.0_dp, &
2350 usage=
"alpha [eV] 1.4")
2356 description=
"beta parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2360 default_r_val=0.0_dp, &
2362 usage=
"beta [eV] 1.4")
2368 description=
"J0 parameter in the theory of Dudarev et al. Ignored unless pwdft is used", &
2372 default_r_val=0.0_dp, &
2374 usage=
"J0 [eV] 1.4")
2379 name=
"occupation", &
2380 description=
"number of electrons in the hubbard shell. Ignored unless pwdft is used", &
2384 default_r_val=0.0_dp, &
2385 usage=
"occupation 6")
2391 description=
"Increase the effective U parameter stepwise using the specified "// &
2392 "increment until the target value given by U_MINUS_J is reached.", &
2396 default_r_val=0.0_dp, &
2398 usage=
"U_RAMPING [eV] 0.1")
2403 name=
"EPS_U_RAMPING", &
2404 description=
"Threshold value (SCF convergence) for incrementing the effective "// &
2405 "U value when U ramping is active.", &
2409 default_r_val=1.0e-5_dp, &
2410 usage=
"EPS_U_RAMPING 1.0E-6")
2415 name=
"INIT_U_RAMPING_EACH_SCF", &
2416 description=
"Set the initial U ramping value to zero before each wavefunction optimisation. "// &
2417 "The default is to apply U ramping only for the initial wavefunction optimisation.", &
2419 default_l_val=.false., &
2420 lone_keyword_l_val=.true., &
2421 usage=
"INIT_U_RAMPING_EACH_SCF on")
2425 NULLIFY (subsection)
2428 name=
"ENFORCE_OCCUPATION", &
2429 description=
"Enforce and control a special (initial) orbital occupation. "// &
2430 "Note, this feature works only for the methods MULLIKEN and LOWDIN. "// &
2431 "It should only be used to prepare an initial configuration. An "// &
2432 "inadequate parameter choice can easily inhibit SCF convergence.", &
2438 name=
"_SECTION_PARAMETERS_", &
2439 description=
"Controls the activation of the ENFORCE_OCCUPATION section", &
2440 usage=
"&ENFORCE_OCCUPATION ON", &
2441 default_l_val=.false., &
2442 lone_keyword_l_val=.true.)
2447 variants=(/
"N_ELECTRONS"/), &
2448 description=
"Number of alpha and beta electrons. An occupation (per spin) smaller than 0.5 is ignored.", &
2452 default_r_val=0.0_dp, &
2453 usage=
"NELEC 5.0 4.0")
2460 description=
"Select orbitals and occupation order. An input of 1 to 2*L+1 integer values in "// &
2461 "the range -L to L defining the M values of the spherical orbitals is expected.", &
2466 usage=
"ORBITALS 0 +1 -1")
2472 description=
"The occupation constraint is enforced until this threshold value "// &
2473 "for the SCF convergence criterion is reached", &
2477 default_r_val=1.0e30_dp, &
2478 usage=
"EPS_SCF 0.001")
2484 description=
"The occupation constraint is applied for this number of initial SCF iterations", &
2495 description=
"The occupation constraint is applied with smearing", &
2497 default_l_val=.false., &
2498 lone_keyword_l_val=.true., &
2506 END SUBROUTINE create_dft_plus_u_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public guidon2010
integer, save, public goedecker1996
integer, save, public vandevondele2005a
integer, save, public vandevondele2007
integer, save, public hartwigsen1998
integer, save, public krack2005
Handles all functions related to the CELL.
integer, parameter, public use_perd_xyz
integer, parameter, public cell_sym_monoclinic
integer, parameter, public use_perd_y
integer, parameter, public cell_sym_triclinic
integer, parameter, public cell_sym_tetragonal_ab
integer, parameter, public use_perd_xz
integer, parameter, public cell_sym_rhombohedral
integer, parameter, public use_perd_x
integer, parameter, public cell_sym_tetragonal_ac
integer, parameter, public use_perd_z
integer, parameter, public use_perd_yz
integer, parameter, public use_perd_none
integer, parameter, public cell_sym_hexagonal_gamma_60
integer, parameter, public cell_sym_orthorhombic
integer, parameter, public cell_sym_none
integer, parameter, public cell_sym_hexagonal_gamma_120
integer, parameter, public cell_sym_monoclinic_gamma_ab
integer, parameter, public cell_sym_cubic
integer, parameter, public use_perd_xy
integer, parameter, public cell_sym_tetragonal_bc
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 medium_print_level
integer, parameter, public high_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
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
Definition of physical constants:
real(kind=dp), parameter, public bohr
Utilities for string manipulations.
character(len=1), parameter, public newline