54 create_velocity_section
72#include "../base/base_uses.f90"
77 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
78 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_motion'
94 cpassert(.NOT.
ASSOCIATED(section))
96 description=
"This section defines a set of tool connected with the motion of the nuclei.", &
97 n_keywords=1, n_subsections=1, repeats=.false.)
101 CALL create_geoopt_section(subsection, __location__, label=
"GEO_OPT", &
102 description=
"This section sets the environment of the geometry optimizer.", &
103 just_optimizers=.false., &
104 use_model_hessian=.true.)
108 CALL create_cell_opt_section(subsection)
112 CALL create_shellcore_opt_section(subsection)
120 CALL create_driver_section(subsection)
132 CALL create_fp_section(subsection)
136 CALL create_mc_section(subsection)
144 CALL create_pint_section(subsection)
163 SUBROUTINE create_mc_section(section)
169 cpassert(.NOT.
ASSOCIATED(section))
171 description=
"This section sets parameters to set up a MonteCarlo calculation.", &
172 n_keywords=10, n_subsections=2, repeats=.false.)
174 NULLIFY (keyword, subsection)
177 description=
"Specifies the number of MC cycles.", &
178 usage=
"NSTEP {integer}", &
184 description=
"Prints coordinate/cell/etc information every IPRINT steps.", &
185 usage=
"IPRINT {integer}", &
191 description=
"Specifies the number of classical moves between energy evaluations. ", &
192 usage=
"NMOVES {integer}", &
198 description=
"How many insertions to try per swap move.", &
199 usage=
"NSWAPMOVES {integer}", &
205 description=
"Dictates if we presample moves with a different potential.", &
206 usage=
"LBIAS {logical}", &
207 default_l_val=.false.)
212 description=
"Makes nstep in terms of steps, instead of cycles.", &
213 usage=
"LSTOP {logical}", &
214 default_l_val=.false.)
219 description=
"Changes the volume of the box in discrete steps, one side at a time.", &
220 usage=
"LDISCRETE {logical}", &
221 default_l_val=.false.)
226 description=
"The cluster cut off radius in angstroms.", &
227 usage=
"RCLUS {real}", &
228 default_r_val=1.0e0_dp)
233 description=
"Read initial configuration from restart file.", &
234 usage=
"RESTART {logical}", &
235 default_l_val=.false.)
240 keyword, __location__, name=
"NVIRIAL", &
241 description=
"Use this many random orientations to compute the second virial coefficient (ENSEMBLE=VIRIAL)", &
242 usage=
"NVIRIAL {integer}", &
248 description=
"Specify the type of simulation", &
249 usage=
"ENSEMBLE (TRADITIONAL|GEMC_NVT|GEMC_NPT|VIRIAL)", &
250 enum_c_vals=
s2a(
"TRADITIONAL",
"GEMC_NVT",
"GEMC_NPT",
"VIRIAL"), &
256 CALL keyword_create(keyword, __location__, name=
"RESTART_FILE_NAME", &
257 description=
"Name of the restart file for MC information.", &
258 usage=
"RESTART_FILE_NAME {filename}", &
263 CALL keyword_create(keyword, __location__, name=
"MOVES_FILE_NAME", &
264 description=
"The file to print the move statistics to.", &
265 usage=
"MOVES_FILE_NAME {filename}", &
270 CALL keyword_create(keyword, __location__, name=
"MOLECULES_FILE_NAME", &
271 description=
"The file to print the number of molecules to.", &
272 usage=
"MOLECULES_FILE_NAME {filename}", &
277 CALL keyword_create(keyword, __location__, name=
"COORDINATE_FILE_NAME", &
278 description=
"The file to print the current coordinates to.", &
279 usage=
"COORDINATE_FILE_NAME {filename}", &
284 CALL keyword_create(keyword, __location__, name=
"ENERGY_FILE_NAME", &
285 description=
"The file to print current energies to.", &
286 usage=
"ENERGY_FILE_NAME {filename}", &
291 CALL keyword_create(keyword, __location__, name=
"DATA_FILE_NAME", &
292 description=
"The file to print current configurational info to.", &
293 usage=
"DATA_FILE_NAME {filename}", &
298 CALL keyword_create(keyword, __location__, name=
"CELL_FILE_NAME", &
299 description=
"The file to print current cell length info to.", &
300 usage=
"CELL_FILE_NAME {filename}", &
305 CALL keyword_create(keyword, __location__, name=
"MAX_DISP_FILE_NAME", &
306 description=
"The file to print current maximum displacement info to.", &
307 usage=
"MAX_DISP_FILE_NAME {filename}", &
312 CALL keyword_create(keyword, __location__, name=
"BOX2_FILE_NAME", &
313 description=
"For GEMC, the name of the input file for the other box.", &
314 usage=
"BOX2_FILE_NAME {filename}", &
320 description=
"The pressure for NpT simulations, in bar.", &
321 usage=
"PRESSURE {real}", &
327 description=
"The temperature of the simulation, in Kelvin.", &
328 usage=
"TEMPERATURE {real}", &
334 keyword, __location__, name=
"VIRIAL_TEMPS", &
335 description=
"The temperatures you wish to compute the virial coefficient for. Only used if ensemble=VIRIAL.", &
336 usage=
"VIRIAL_TEMPS {real} {real} ... ", &
337 n_var=-1, type_of_var=
real_t)
341 CALL keyword_create(keyword, __location__, name=
"DISCRETE_STEP", &
342 description=
"The size of the discrete volume move step, in angstroms.", &
343 usage=
"DISCRETE_STEP {real}", &
344 default_r_val=1.0e0_dp)
349 description=
"The free energy bias (in Kelvin) for swapping a molecule of each type into this box.", &
350 usage=
"ETA {real} {real} ... ", &
351 n_var=-1, type_of_var=
real_t)
356 description=
"Number of random numbers from the acceptance/rejection stream to skip", &
357 usage=
"RANDOMTOSKIP {integer}", &
362 CALL create_avbmc_section(subsection)
366 CALL create_move_prob_section(subsection)
370 CALL create_update_section(subsection)
374 CALL create_max_disp_section(subsection)
378 END SUBROUTINE create_mc_section
385 SUBROUTINE create_avbmc_section(section)
390 cpassert(.NOT.
ASSOCIATED(section))
393 description=
"Parameters for Aggregation Volume Bias Monte Carlo (AVBMC) "// &
394 "which explores cluster formation and destruction. "// &
395 "Chen and Siepmann, J. Phys. Chem. B 105, 11275-11282 (2001).", &
396 n_keywords=5, n_subsections=0, repeats=.false.)
401 keyword, __location__, name=
"PBIAS", &
402 description=
"The probability of swapping to an inner region in an AVBMC swap move for each molecule type.", &
403 usage=
"PBIAS {real} {real} ... ", &
404 n_var=-1, type_of_var=
real_t)
409 description=
"The target atom for an AVBMC swap move for each molecule type.", &
410 usage=
"AVBMC_ATOM {integer} {integer} ... ", &
416 description=
"The inner radius for an AVBMC swap move, in angstroms for every molecule type.", &
417 usage=
"AVBMC_RMIN {real} {real} ... ", &
418 n_var=-1, type_of_var=
real_t)
423 description=
"The outer radius for an AVBMC swap move, in angstroms, for every molecule type.", &
424 usage=
"AVBMC_RMAX {real} {real} ... ", &
425 n_var=-1, type_of_var=
real_t)
429 END SUBROUTINE create_avbmc_section
437 SUBROUTINE create_move_prob_section(section)
443 cpassert(.NOT.
ASSOCIATED(section))
445 CALL section_create(section, __location__, name=
"move_probabilities", &
446 description=
"Parameters for fraction of moves performed for each move type.", &
447 n_keywords=5, n_subsections=2, repeats=.false.)
449 NULLIFY (keyword, subsection)
452 description=
"The probability of attempting a hybrid MC move.", &
453 usage=
"PMHMC {real}", &
454 type_of_var=
real_t, default_r_val=0.0e0_dp)
459 description=
"The probability of attempting a molecule translation.", &
460 usage=
"PMTRANS {real}", &
466 description=
"The probability of attempting a cluster translation.", &
467 usage=
"PMCLTRANS {real}", &
468 type_of_var=
real_t, default_r_val=0.0e0_dp)
473 description=
"The probability of attempting an AVBMC swap move.", &
474 usage=
"PMAVBMC {real}", &
475 default_r_val=0.0e0_dp)
480 description=
"The probability of attempting a conformational change.", &
481 usage=
"PMTRAION {real}", &
487 description=
"The probability of attempting a swap move.", &
488 usage=
"PMSWAP {real}", &
489 type_of_var=
real_t, default_r_val=0.0e0_dp)
494 description=
"The probability of attempting a volume move.", &
495 usage=
"PMVOLUME {real}", &
496 type_of_var=
real_t, default_r_val=0.0e0_dp)
500 CALL create_mol_prob_section(subsection)
504 CALL create_box_prob_section(subsection)
508 END SUBROUTINE create_move_prob_section
516 SUBROUTINE create_mol_prob_section(section)
521 cpassert(.NOT.
ASSOCIATED(section))
523 CALL section_create(section, __location__, name=
"mol_probabilities", &
524 description=
"Probabilities of attempting various moves types on "// &
525 "the various molecular types present in the simulation.", &
526 n_keywords=5, n_subsections=0, repeats=.false.)
531 description=
"The probability of attempting an AVBMC swap move on each molecule type.", &
532 usage=
"PMAVBMC_MOL {real} {real} ... ", &
533 n_var=-1, type_of_var=
real_t)
538 description=
"The probability of attempting a molecule swap of a given molecule type.", &
539 usage=
"PMSWAP_MOL {real} {real} ... ", &
540 n_var=-1, type_of_var=
real_t)
545 description=
"The probability of attempting a molecule rotation of a given molecule type.", &
546 usage=
"PMROT_MOL {real} {real} ... ", &
547 n_var=-1, type_of_var=
real_t)
552 description=
"The probability of attempting a conformational change of a given molecule type.", &
553 usage=
"PMTRAION_MOL {real} {real} ... ", &
554 n_var=-1, type_of_var=
real_t)
559 description=
"The probability of attempting a molecule translation of a given molecule type.", &
560 usage=
"PMTRANS_MOL {real} {real} ... ", &
561 n_var=-1, type_of_var=
real_t)
565 END SUBROUTINE create_mol_prob_section
573 SUBROUTINE create_box_prob_section(section)
578 cpassert(.NOT.
ASSOCIATED(section))
580 CALL section_create(section, __location__, name=
"BOX_PROBABILITIES", &
581 description=
"Probabilities of attempting various moves types on "// &
583 n_keywords=2, n_subsections=0, repeats=.false.)
588 description=
"The probability of attempting a HMC move on this box.", &
589 usage=
"PMHMC_BOX {real}", &
590 type_of_var=
real_t, default_r_val=1.0e0_dp)
595 description=
"The probability of attempting a volume move on this box (GEMC_NpT).", &
596 usage=
"PMVOL_BOX {real}", &
597 type_of_var=
real_t, default_r_val=1.0e0_dp)
602 description=
"The probability of attempting a cluster move in this box", &
603 usage=
"PMCLUS_BOX {real}", &
604 type_of_var=
real_t, default_r_val=1.0e0_dp)
608 END SUBROUTINE create_box_prob_section
616 SUBROUTINE create_update_section(section)
621 cpassert(.NOT.
ASSOCIATED(section))
624 description=
"Frequency for updating move maximum displacements.", &
625 n_keywords=2, n_subsections=0, repeats=.false.)
630 description=
"Every iupvolume steps update maximum volume displacement.", &
631 usage=
"IUPVOLUME {integer}", &
637 description=
"Every iuptrans steps update maximum "// &
638 "translation/rotation/configurational changes.", &
639 usage=
"IUPTRANS {integer}", &
645 description=
"Every iupcltrans steps update maximum cluster translation.", &
646 usage=
"IUPCLTRANS {integer}", &
651 END SUBROUTINE create_update_section
658 SUBROUTINE create_max_disp_section(section)
663 cpassert(.NOT.
ASSOCIATED(section))
665 CALL section_create(section, __location__, name=
"max_displacements", &
666 description=
"The maximum displacements for all attempted moves.", &
667 n_keywords=1, n_subsections=2, repeats=.false.)
671 CALL create_mol_disp_section(subsection)
675 CALL create_box_disp_section(subsection)
679 END SUBROUTINE create_max_disp_section
687 SUBROUTINE create_mol_disp_section(section)
692 cpassert(.NOT.
ASSOCIATED(section))
694 CALL section_create(section, __location__, name=
"mol_displacements", &
695 description=
"Maximum displacements for every move type that requires "// &
696 "a value for each molecular type in the simulation.", &
697 n_keywords=5, n_subsections=0, repeats=.false.)
702 description=
"Maximum bond length displacement, in angstroms, for each molecule type.", &
703 usage=
"RMBOND {real} {real} ... ", &
704 n_var=-1, type_of_var=
real_t)
709 description=
"Maximum bond angle displacement, in degrees, for each molecule type.", &
710 usage=
"RMANGLE {real} {real} ...", &
711 n_var=-1, type_of_var=
real_t)
716 description=
"Maximum dihedral angle distplacement, in degrees, for each molecule type.", &
717 usage=
"RMDIHEDRAL {real} {real} ... ", &
718 n_var=-1, type_of_var=
real_t)
723 description=
"Maximum rotational displacement, in degrees, for each molecule type.", &
724 usage=
"RMROT {real} {real} ... ", &
725 n_var=-1, type_of_var=
real_t)
730 description=
"Maximum translational displacement, in angstroms, for each molecule type.", &
731 usage=
"RMTRANS {real} {real} ...", &
732 n_var=-1, type_of_var=
real_t)
736 END SUBROUTINE create_mol_disp_section
744 SUBROUTINE create_box_disp_section(section)
749 cpassert(.NOT.
ASSOCIATED(section))
751 CALL section_create(section, __location__, name=
"BOX_DISPLACEMENTS", &
752 description=
"Maximum displacements for any move that is performed on each"// &
753 " simulation box.", &
754 n_keywords=1, n_subsections=0, repeats=.false.)
759 description=
"Maximum volume displacement, in angstrom**3.", &
760 usage=
"RMVOLUME {real}", &
766 description=
"Maximum translational displacement, in angstroms, for each cluster.", &
767 usage=
"RMCLTRANS {real}", &
768 default_r_val=1.0e0_dp)
772 END SUBROUTINE create_box_disp_section
786 RECURSIVE SUBROUTINE create_geoopt_section(section, location, label, description, just_optimizers, use_model_hessian)
788 CHARACTER(LEN=*),
INTENT(IN) :: location, label, description
789 LOGICAL,
INTENT(IN) :: just_optimizers, use_model_hessian
794 cpassert(.NOT.
ASSOCIATED(section))
795 CALL section_create(section, location=location, name=label, description=description, &
796 n_keywords=1, n_subsections=1, repeats=.false.)
799 IF (.NOT. just_optimizers)
THEN
801 description=
"Specify which kind of geometry optimization to perform", &
802 usage=
"TYPE (MINIMIZATION|TRANSITION_STATE)", &
803 enum_c_vals=
s2a(
"MINIMIZATION",
"TRANSITION_STATE"), &
804 enum_desc=
s2a(
"Performs a geometry minimization.", &
805 "Performs a transition state optimization."), &
813 keyword, __location__, name=
"OPTIMIZER", &
814 variants=[
"MINIMIZER"], &
816 description=
"Specify which method to use to perform a geometry optimization.", &
817 usage=
"OPTIMIZER {BFGS|LBFGS|CG}", &
818 enum_c_vals=
s2a(
"BFGS",
"LBFGS",
"CG"), &
819 enum_desc=
s2a(
"Most efficient minimizer, but only for 'small' systems, "// &
820 "as it relies on diagonalization of a full Hessian matrix", &
821 "Limited-memory variant of BFGS suitable for large systems. "// &
822 "Not as well fine-tuned but can be more robust.", &
823 "conjugate gradients, robust minimizer (depending on the line search) also OK for large systems"), &
830 description=
"Specifies the maximum number of geometry optimization steps. "// &
831 "One step might imply several force evaluations for the CG and LBFGS optimizers.", &
832 usage=
"MAX_ITER {integer}", &
838 description=
"Convergence criterion for the maximum geometry change "// &
839 "between the current and the last optimizer iteration.", &
840 usage=
"MAX_DR {real}", &
841 default_r_val=0.0030_dp, unit_str=
"bohr")
846 description=
"Convergence criterion for the maximum force component of the current configuration.", &
847 usage=
"MAX_FORCE {real}", &
848 default_r_val=0.00045_dp, unit_str=
"hartree/bohr")
853 description=
"Convergence criterion for the root mean square (RMS) geometry"// &
854 " change between the current and the last optimizer iteration.", &
855 usage=
"RMS_DR {real}", unit_str=
"bohr", &
856 default_r_val=0.0015_dp)
861 description=
"Convergence criterion for the root mean square (RMS) force of the current configuration.", &
862 usage=
"RMS_FORCE {real}", unit_str=
"hartree/bohr", &
863 default_r_val=0.00030_dp)
867 CALL keyword_create(keyword, __location__, name=
"step_start_val", &
868 description=
"The starting step value for the "//trim(label)//
" module.", &
869 usage=
"step_start_val <integer>", default_i_val=0)
875 keyword, __location__, name=
"KEEP_SPACE_GROUP", &
876 description=
"Detect space group of the system and preserve it during optimization. "// &
877 "The space group symmetry is applied to coordinates, forces, the stress tensor, and "// &
878 "the CELL_OPT cell metric. "// &
879 "It works for supercell. It does not affect/reduce computational cost. "// &
880 "Use EPS_SYMMETRY to adjust the detection threshold.", &
881 usage=
"KEEP_SPACE_GROUP .TRUE.", &
882 default_l_val=.false., lone_keyword_l_val=.true., repeats=.false.)
888 keyword, __location__, name=
"SHOW_SPACE_GROUP", &
889 description=
"Detect and show space group of the system after optimization. "// &
890 "It works for supercell. It does not affect/reduce computational cost. "// &
891 "Use EPS_SYMMETRY to adjust the detection threshold.", &
892 usage=
"SHOW_SPACE_GROUP .TRUE.", &
893 default_l_val=.false., lone_keyword_l_val=.true., repeats=.false.)
899 keyword, __location__, name=
"EPS_SYMMETRY", &
900 description=
"Accuracy for space group determination. EPS_SYMMETRY is dimensionless. "// &
901 "Roughly speaking, two scaled (fractional) atomic positions v1, v2 are considered identical if |v1 - v2| < EPS_SYMMETRY. ", &
902 usage=
"EPS_SYMMETRY {REAL}", &
903 default_r_val=1.e-4_dp, repeats=.false.)
909 keyword, __location__, name=
"SYMM_REDUCTION", &
910 description=
"Direction of the external static electric field. "// &
911 "Some symmetry operations are not compatible with the direction of an electric field. "// &
912 "These operations are used when enforcing the space group.", &
913 usage=
"SYMM_REDUCTION 0.0 0.0 0.0", &
914 repeats=.false., n_var=3, &
915 type_of_var=
real_t, default_r_vals=[0.0_dp, 0.0_dp, 0.0_dp])
921 keyword, __location__, name=
"SYMM_EXCLUDE_RANGE", &
922 description=
"Range of atoms to exclude from space group symmetry. "// &
923 "These atoms are excluded from both identification and enforcement. "// &
924 "This keyword can be repeated.", &
925 repeats=.true., usage=
"SYMM_EXCLUDE_RANGE {Int} {Int}", type_of_var=
integer_t, n_var=2)
930 keyword, __location__, name=
"SPGR_PRINT_ATOMS", &
931 description=
"Print equivalent atoms list for each space group symmetry operation.", &
932 default_l_val=.false., lone_keyword_l_val=.true.)
936 CALL create_lbfgs_section(subsection)
940 CALL create_cg_section(subsection)
944 CALL create_bfgs_section(subsection, use_model_hessian)
948 IF (.NOT. just_optimizers)
THEN
950 CALL create_ts_section(subsection)
957 description=
"Controls the printing properties during a geometry optimization run", &
958 n_keywords=0, n_subsections=1, repeats=.true.)
961 print_key, __location__,
"program_run_info", &
962 description=
"Controls the printing of basic information during the Geometry Optimization", &
970 END SUBROUTINE create_geoopt_section
977 SUBROUTINE create_shellcore_opt_section(section)
982 CALL create_geoopt_section( &
983 section, __location__, label=
"SHELL_OPT", &
984 description=
"This section sets the environment for the optimization of the shell-core distances"// &
985 " that might turn to be necessary along a MD run using a shell-model potential."// &
986 " The optimization procedure is activated when at least one of the shell-core"// &
987 " pairs becomes too elongated, i.e. when the assumption of point dipole is not longer valid.", &
988 just_optimizers=.true., &
989 use_model_hessian=.false.)
991 NULLIFY (print_key, subsection)
996 description=
"Controls the printing properties during a shell-core optimization procedure", &
997 n_keywords=0, n_subsections=1, repeats=.true.)
1000 description=
"Controls the printing of basic information during the Optimization", &
1007 END SUBROUTINE create_shellcore_opt_section
1014 SUBROUTINE create_cell_opt_section(section)
1020 CALL create_geoopt_section(section, __location__, label=
"CELL_OPT", &
1021 description=
"This section sets the environment for the optimization "// &
1022 "of the simulation cell. As is noted in FORCE_EVAL/SUBSYS/CELL, the "// &
1023 "program convention is that the first cell vector A lies along the "// &
1024 "X-axis and the second cell vector B is in the XY plane, such that "// &
1025 "the cell vector matrix is a lower triangle. There is no complete, "// &
1026 "official algorithm support and/or tests for updating the three "// &
1027 "upper triangular components during a cell optimization; please "// &
1028 "prepare input accordingly with these three components precisely 0 "// &
1029 "even for cases like the primitive rhombohedral cell of the FCC lattice.", &
1030 just_optimizers=.true., use_model_hessian=.false.)
1032 NULLIFY (keyword, print_key, subsection)
1034 keyword, __location__, name=
"TYPE", removed=.true., description=
"", &
1035 deprecation_notice=
"The keyword MOTION/CELL_OPT/TYPE has been removed because "// &
1036 "cell optimizations now always use DIRECT_CELL_OPT.", &
1037 enum_c_vals=
s2a(
"DIRECT_CELL_OPT",
"GEO_OPT",
"MD"), &
1038 enum_i_vals=[1, 2, 3], default_i_val=1)
1043 keyword, __location__, name=
"EXTERNAL_PRESSURE", &
1044 description=
"Specifies the external pressure (1 value or the full 9 components of the pressure tensor) "// &
1045 "applied during the cell optimization.", &
1046 usage=
"EXTERNAL_PRESSURE {REAL} .. {REAL}", unit_str=
"bar", &
1054 description=
"Keep the volume of the cell constant during cell optimization. "// &
1055 "This is implemented by comparing the cell volumes and scaling the new "// &
1056 "cell vectors just before updating the cell information, and can be "// &
1057 "used together with KEEP_ANGLES or KEEP_SYMMETRY.", &
1058 usage=
"KEEP_VOLUME TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1063 description=
"Keep angles between the cell vectors constant, but "// &
1064 "allow the lengths of the cell vectors to change independently "// &
1065 "during cell optimization. This is implemented by projecting out "// &
1066 "the components of angles in the cell gradient before the cell "// &
1067 "is updated. Albeit general, this is most useful for triclinic "// &
1068 "cells; to enforce higher symmetry, see KEEP_SYMMETRY.", &
1069 usage=
"KEEP_ANGLES TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1073 CALL keyword_create(keyword, __location__, name=
"KEEP_SYMMETRY", &
1074 description=
"Keep the requested initial cell symmetry as specified "// &
1075 "in the FORCE_EVAL/SUBSYS/CELL section during cell optimization. "// &
1076 "This is implemented by removing symmetry-breaking components and "// &
1077 "taking averages of components if necessary in the cell gradient "// &
1078 "before the cell is updated. To enforce the space group (which "// &
1079 "requires spglib package), see KEEP_SPACE_GROUP.", &
1080 usage=
"KEEP_SYMMETRY TRUE", default_l_val=.false., lone_keyword_l_val=.true.)
1085 keyword, __location__, name=
"CONSTRAINT", &
1086 description=
"Imposes a constraint on the pressure tensor by fixing the specified cell components.", &
1087 usage=
"CONSTRAINT (none|x|y|z|xy|xz|yz)", &
1088 enum_desc=
s2a(
"Fix nothing", &
1089 "Fix only x component", &
1090 "Fix only y component", &
1091 "Fix only z component", &
1092 "Fix x and y component", &
1093 "Fix x and z component", &
1094 "Fix y and z component"), &
1095 enum_c_vals=
s2a(
"NONE",
"X",
"Y",
"Z",
"XY",
"XZ",
"YZ"), &
1101 CALL keyword_create(keyword, __location__, name=
"PRESSURE_TOLERANCE", &
1102 description=
"Specifies the Pressure tolerance (compared to the external pressure) to achieve "// &
1103 "during the cell optimization.", &
1104 usage=
"PRESSURE_TOLERANCE {REAL}", unit_str=
"bar", &
1110 NULLIFY (subsection)
1112 description=
"Controls the printing properties during a geometry optimization run", &
1113 n_keywords=0, n_subsections=1, repeats=.true.)
1116 description=
"Controls the printing of basic information during the Geometry Optimization", &
1121 description=
"Controls the printing of the cell eveytime a calculation using a new cell is started.", &
1123 unit_str=
"angstrom")
1129 END SUBROUTINE create_cell_opt_section
1136 SUBROUTINE create_ts_section(section)
1140 TYPE(
section_type),
POINTER :: print_key, subsection, subsection2, &
1145 NULLIFY (section, keyword, subsection, subsection2)
1146 CALL section_create(section, __location__, name=
"TRANSITION_STATE", &
1147 description=
"Specifies parameters to perform a transition state search", &
1148 n_keywords=0, n_subsections=1, repeats=.false.)
1151 description=
"Specify which kind of method to use for locating transition states", &
1153 usage=
"METHOD (DIMER)", &
1154 enum_c_vals=
s2a(
"DIMER"), &
1155 enum_desc=
s2a(
"Uses the dimer method to optimize transition states."), &
1162 description=
"Specifies parameters for Dimer Method", &
1163 n_keywords=0, n_subsections=1, repeats=.false.)
1166 description=
"This keyword sets the value for the DR parameter.", &
1167 usage=
"DR {real}", unit_str=
'angstrom', &
1172 CALL keyword_create(keyword, __location__, name=
"INITIALIZATION_METHOD", &
1173 description=
"Specify the initialization method of the dimer vector, "// &
1174 "which is crucial for converging to the desired transition state. "// &
1175 "If the DIMER_VECTOR section is defined explicitly, it will always "// &
1176 "be parsed directly (e.g. in restart files); INITIALIZATION_METHOD "// &
1177 "is only effective if the DIMER_VECTOR section is not explicit.", &
1178 usage=
"INITIALIZATION_METHOD (RANDOM|MOLDEN)", &
1179 enum_desc=
s2a(
"Generate the initial dimer vector randomly. This is "// &
1180 "the default for backwards compatibility; in practice "// &
1181 "it may distort the structure and slow down convergence.", &
1182 "Generate the initial dimer vector from one or more "// &
1183 "vibrational normal modes as read from a MOLDEN file "// &
1184 "produced by `VIBRATIONAL_ANALYSIS%PRINT%MOLDEN_VIB` "// &
1185 "in a vibrational analysis task. Requires setting up "// &
1186 "keywords `VIB_MOLDEN_NAME`, `VIB_INDEX` and `VIB_WEIGHT`."), &
1187 enum_c_vals=
s2a(
"RANDOM",
"MOLDEN"), &
1193 CALL keyword_create(keyword, __location__, name=
"VIB_MOLDEN_NAME", &
1194 description=
"The external molden file containing vibrational "// &
1195 "normal modes for `INITIALIZATION_METHOD MOLDEN`.", &
1196 usage=
"VIB_MOLDEN_NAME <CHARACTER>", type_of_var=
lchar_t)
1201 description=
"The index of one or more vibrational normal modes "// &
1202 "from the file whose linear combination will form the initial "// &
1204 usage=
"VIB_INDEX {integer} {integer} .. {integer}", repeats=.true., &
1205 n_var=-1, default_i_vals=[1], type_of_var=
integer_t)
1210 description=
"The weight of one or more vibrational normal modes "// &
1211 "from the file whose linear combination will form the initial "// &
1213 usage=
"VIB_WEIGHT {real} {real} .. {real}", repeats=.true., &
1214 n_var=-1, default_r_vals=[1.0_dp], type_of_var=
real_t)
1218 CALL keyword_create(keyword, __location__, name=
"INTERPOLATE_GRADIENT", &
1219 description=
"This keyword controls the interpolation of the gradient whenever possible"// &
1220 " during the optimization of the Dimer. The use of this keywords saves 1 evaluation"// &
1221 " of energy/forces.", usage=
"INTERPOLATE_GRADIENT {logical}", default_l_val=.true., &
1222 lone_keyword_l_val=.true.)
1226 CALL keyword_create(keyword, __location__, name=
"ANGLE_TOLERANCE", &
1227 description=
"This keyword sets the value of the tolerance angle for the line search"// &
1228 " performed to optimize the orientation of the dimer.", &
1229 usage=
"ANGLE_TOLERANCE {real}", unit_str=
'rad', &
1235 description=
"This keyword activates the constrained k-dimer translation"// &
1236 " J. Chem. Phys. 141, 164111 (2014).", &
1238 usage=
"K-DIMER {logica}", &
1239 default_l_val=.false., &
1240 lone_keyword_l_val=.false.)
1245 description=
"Exponential factor for the switching function used in K-DIMER", &
1246 usage=
"BETA {real}", &
1247 default_r_val=5.0_dp, &
1248 lone_keyword_r_val=5.0_dp)
1252 CALL create_geoopt_section( &
1253 subsection2, __location__, label=
"ROT_OPT", &
1254 description=
"This section sets the environment for the optimization of the rotation of the Dimer.", &
1255 just_optimizers=.true., &
1256 use_model_hessian=.false.)
1257 NULLIFY (subsection3)
1259 description=
"Controls the printing properties during the dimer rotation optimization run", &
1260 n_keywords=0, n_subsections=1, repeats=.true.)
1264 description=
"Controls the printing of basic information during the Geometry Optimization", &
1270 description=
"Controls the printing basic info during the cleaning of the "// &
1274 description=
"Prints atomic coordinates after rotation", &
1275 default_l_val=.false., lone_keyword_l_val=.true.)
1286 CALL section_create(subsection2, __location__, name=
"DIMER_VECTOR", &
1287 description=
"Specifies the initial dimer vector. This "// &
1288 "section overrides INITIALIZATION_METHOD, and will be "// &
1289 "updated on each step for producing the restart files.", &
1290 n_keywords=0, n_subsections=1, repeats=.false.)
1291 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1292 description=
"Specify on each line the components of the dimer vector.", repeats=.true., &
1293 usage=
"{Real} {Real} {Real}", type_of_var=
real_t, n_var=-1)
1302 END SUBROUTINE create_ts_section
1310 SUBROUTINE create_bfgs_section(section, use_model_hessian)
1312 LOGICAL,
INTENT(IN) :: use_model_hessian
1319 NULLIFY (section, keyword, print_key)
1321 description=
"Provides parameters to tune the BFGS optimization", &
1322 n_keywords=0, n_subsections=1, repeats=.false.)
1325 description=
"Matrix updated by full-memory BFGS. DIRECT updates the Hessian; "// &
1326 "INVERSE updates its inverse without a full diagonalization at each step.", &
1327 usage=
"METHOD INVERSE", &
1328 enum_c_vals=
s2a(
"DIRECT",
"INVERSE"), &
1333 CALL keyword_create(keyword, __location__, name=
"TRUST_RADIUS", &
1334 description=
"Trust radius used in BFGS. Previously set to 0.1. "// &
1335 "Large values can lead to instabilities", &
1336 usage=
"TRUST_RADIUS {real}", unit_str=
'angstrom', &
1341 CALL keyword_create(keyword, __location__, name=
"USE_MODEL_HESSIAN", &
1342 description=
"Uses a model Hessian as initial guess instead of a unit matrix."// &
1343 " Should lead in general to improved convergence might be switched off for exotic cases", &
1344 usage=
"USE_MODEL_HESSIAN", &
1346 default_l_val=use_model_hessian, lone_keyword_l_val=.true.)
1350 CALL keyword_create(keyword, __location__, name=
"USE_RAT_FUN_OPT", &
1351 description=
"Includes a rational function optimization to determine the step. "// &
1352 "Previously default but did not improve convergence in many cases. "// &
1353 "Not supported by inverse-Hessian update method.", &
1354 usage=
"USE_RAT_FUN_OPT", &
1355 default_l_val=.false., lone_keyword_l_val=.true.)
1359 CALL keyword_create(keyword, __location__, name=
"RESTART_HESSIAN", &
1360 description=
"Reads the initial BFGS matrix from file. Hessian and inverse-Hessian "// &
1361 "restarts are converted to the selected METHOD when necessary.", &
1362 usage=
"RESTART_HESSIAN", &
1363 default_l_val=.false., lone_keyword_l_val=.true.)
1367 CALL keyword_create(keyword, __location__, name=
"RESTART_FILE_NAME", &
1368 description=
"Specifies the name of the file used to read the initial Hessian.", &
1369 usage=
"RESTART_FILE_NAME {filename}", &
1375 description=
"Controls the printing of Hessian Restart file", &
1377 common_iter_levels=2)
1381 END SUBROUTINE create_bfgs_section
1388 SUBROUTINE create_cg_section(section)
1392 TYPE(
section_type),
POINTER :: subsection, subsubsection
1396 NULLIFY (section, subsection, subsubsection, keyword)
1398 description=
"Provides parameters to tune the conjugate gradient optimization", &
1399 n_keywords=0, n_subsections=1, repeats=.false.)
1401 CALL keyword_create(keyword, __location__, name=
"MAX_STEEP_STEPS", &
1402 description=
"Maximum number of steepest descent steps before starting the"// &
1403 " conjugate gradients optimization.", &
1404 usage=
"MAX_STEEP_STEPS {integer}", &
1409 CALL keyword_create(keyword, __location__, name=
"RESTART_LIMIT", &
1410 description=
"Cosine of the angle between two consecutive searching directions."// &
1411 " If the angle during a CG optimization is less than the one corresponding to"// &
1412 " to the RESTART_LIMIT the CG is reset and one step of steepest descent is"// &
1414 usage=
"RESTART_LIMIT {real}", &
1415 default_r_val=0.9_dp)
1419 CALL keyword_create(keyword, __location__, name=
"FLETCHER_REEVES", &
1420 description=
"Uses FLETCHER-REEVES instead of POLAK-RIBIERE when using Conjugate Gradients", &
1421 usage=
"FLETCHER_REEVES", &
1422 default_l_val=.false., lone_keyword_l_val=.true.)
1427 CALL section_create(subsection, __location__, name=
"LINE_SEARCH", &
1428 description=
"Provides parameters to tune the line search during the conjugate gradient optimization", &
1429 n_keywords=0, n_subsections=1, repeats=.false.)
1432 description=
"1D line search algorithm to be used with the CG optimizer,"// &
1433 " in increasing order of robustness and cost. ", &
1434 usage=
"TYPE GOLD", &
1436 enum_c_vals=
s2a(
"2PNT",
"GOLD",
"FIT"), &
1437 enum_desc=
s2a(
"extrapolate based on 2 points", &
1438 "perform 1D golden section search of the minimum (very expensive)", &
1439 "perform 1D fit of a parabola on several evaluation of energy "// &
1440 "(very expensive and more robust vs numerical noise)"), &
1446 NULLIFY (subsubsection)
1448 description=
"Provides parameters to tune the line search for the two point based line search.", &
1449 n_keywords=0, n_subsections=1, repeats=.false.)
1451 CALL keyword_create(keyword, __location__, name=
"MAX_ALLOWED_STEP", &
1452 description=
"Max allowed value for the line search step.", &
1453 usage=
"MAX_ALLOWED_STEP {real}", unit_str=
"internal_cp2k", &
1454 default_r_val=0.25_dp)
1459 keyword, __location__, name=
"LINMIN_GRAD_ONLY", &
1460 description=
"Use only the gradient, not the energy for line minimizations (e.g. in conjugate gradients).", &
1461 usage=
"LINMIN_GRAD_ONLY T", &
1462 default_l_val=.false., lone_keyword_l_val=.true.)
1470 NULLIFY (subsubsection)
1472 description=
"Provides parameters to tune the line search for the gold search.", &
1473 n_keywords=0, n_subsections=1, repeats=.false.)
1475 CALL keyword_create(keyword, __location__, name=
"INITIAL_STEP", &
1476 description=
"Initial step size used, e.g. for bracketing or minimizers. "// &
1477 "Might need to be reduced for systems with close contacts", &
1478 usage=
"INITIAL_STEP {real}", unit_str=
"internal_cp2k", &
1479 default_r_val=0.2_dp)
1484 description=
"Limit in 1D bracketing during line search in Conjugate Gradients Optimization.", &
1485 usage=
"BRACK_LIMIT {real}", unit_str=
"internal_cp2k", &
1486 default_r_val=100.0_dp)
1491 description=
"Tolerance requested during Brent line search in Conjugate Gradients Optimization.", &
1492 usage=
"BRENT_TOL {real}", unit_str=
"internal_cp2k", &
1493 default_r_val=0.01_dp)
1497 CALL keyword_create(keyword, __location__, name=
"BRENT_MAX_ITER", &
1498 description=
"Maximum number of iterations in brent algorithm "// &
1499 "(used for the line search in Conjugated Gradients Optimization)", &
1500 usage=
"BRENT_MAX_ITER {integer}", &
1509 END SUBROUTINE create_cg_section
1516 SUBROUTINE create_lbfgs_section(section)
1523 NULLIFY (section, keyword)
1525 description=
"Provides parameters to tune the limited memory BFGS (LBFGS) optimization", &
1526 n_keywords=0, n_subsections=1, repeats=.false., &
1530 description=
"Maximum rank (and consequently size) of the "// &
1531 "approximate Hessian matrix used by the LBFGS optimizer. "// &
1532 "Larger values (e.g. 30) will accelerate the convergence behaviour "// &
1533 "at the cost of a larger memory consumption.", &
1534 usage=
"MAX_H_RANK {integer}", &
1539 CALL keyword_create(keyword, __location__, name=
"MAX_F_PER_ITER", &
1540 description=
"Maximum number of force evaluations per iteration"// &
1541 " (used for the line search)", &
1542 usage=
"MAX_F_PER_ITER {integer}", &
1548 description=
"How much output is written out by the LBFGS algorithm. "// &
1549 "Currently this is independent of the &GLOBAL/PRINT_LEVEL setting.", &
1550 usage=
"PRINT_LEVEL MEDIUM", &
1551 enum_c_vals=
s2a(
"SILENT",
"LOW",
"MEDIUM",
"HIGH",
"DEBUG"), &
1552 enum_desc=
s2a(
"Almost no output", &
1553 "Little output about f and |proj g| every iteration", &
1554 "Quite some output about details every iteration", &
1555 "Lots of output about changes of active set and final x", &
1556 "Everything is written out, useful for debugging purposes only"), &
1563 CALL keyword_create(keyword, __location__, name=
"WANTED_PROJ_GRADIENT", &
1564 description=
"Convergence criterion (overrides the general ones):"// &
1565 " Requested norm threshold of the gradient multiplied"// &
1566 " by the approximate Hessian.", &
1567 usage=
"WANTED_PROJ_GRADIENT {real}", unit_str=
"internal_cp2k", &
1568 default_r_val=1.0e-16_dp)
1572 CALL keyword_create(keyword, __location__, name=
"WANTED_REL_F_ERROR", &
1573 description=
"Convergence criterion (overrides the general ones):"// &
1574 " Requested relative error on the objective function"// &
1575 " of the optimizer (the energy)", &
1576 usage=
"WANTED_REL_F_ERROR {real}", unit_str=
"internal_cp2k", &
1577 default_r_val=1.0e-16_dp)
1582 keyword, __location__, name=
"TRUST_RADIUS", &
1583 description=
"Trust radius used in LBFGS. Not completely in depth tested. Negativ values means no trust radius is used.", &
1584 usage=
"TRUST_RADIUS {real}", unit_str=
'angstrom', &
1585 default_r_val=-1.0_dp)
1589 CALL keyword_create(keyword, __location__, name=
"__CONTROL_VAL", &
1590 description=
"Hidden parameter that controls the printing behavior "// &
1591 "of the LBFGS optimizer for advanced debug purposes. This option "// &
1592 "overrides PRINT_LEVEL setting if explicit.", &
1597 END SUBROUTINE create_lbfgs_section
1604 SUBROUTINE create_fp_section(section)
1610 cpassert(.NOT.
ASSOCIATED(section))
1611 CALL section_create(section, __location__, name=
"FLEXIBLE_PARTITIONING", &
1612 description=
"This section sets up flexible_partitioning", &
1613 n_keywords=1, n_subsections=1, repeats=.false.)
1615 NULLIFY (keyword, print_key)
1617 CALL keyword_create(keyword, __location__, name=
"CENTRAL_ATOM", &
1618 description=
"Specifies the central atom.", &
1619 usage=
"CENTRAL_ATOM {integer}", &
1625 description=
"Specifies the list of atoms that should remain close to the central atom.", &
1626 usage=
"INNER_ATOMS {integer} {integer} .. {integer}", &
1632 description=
"Specifies the list of atoms that should remain far from the central atom.", &
1633 usage=
"OUTER_ATOMS {integer} {integer} .. {integer}", &
1638 CALL keyword_create(keyword, __location__, name=
"INNER_RADIUS", &
1639 description=
"radius of the inner wall", &
1640 usage=
"INNER_RADIUS {real} ", type_of_var=
real_t, &
1641 n_var=1, unit_str=
"angstrom")
1645 CALL keyword_create(keyword, __location__, name=
"OUTER_RADIUS", &
1646 description=
"radius of the outer wall", &
1647 usage=
"OUTER_RADIUS {real} ", type_of_var=
real_t, &
1648 n_var=1, unit_str=
"angstrom")
1653 description=
"Sets the force constant of the repulsive harmonic potential", &
1654 usage=
"STRENGTH 1.0", default_r_val=1.0_dp)
1659 description=
"If a bias potential counter-acting the weight term should be applied (recommended).", &
1660 usage=
"BIAS F", default_l_val=.true., lone_keyword_l_val=.true.)
1665 description=
"Sets the temperature parameter that is used in the baising potential."// &
1666 " It is recommended to use the actual simulation temperature", &
1667 usage=
"TEMPERATURE 300", default_r_val=300.0_dp, unit_str=
'K')
1671 CALL keyword_create(keyword, __location__, name=
"SMOOTH_WIDTH", &
1672 description=
"Sets the width of the smooth counting function.", &
1673 usage=
"SMOOTH_WIDTH 0.2", default_r_val=0.02_dp, unit_str=
'angstrom')
1678 description=
"Controls the printing of FP info during flexible partitioning simulations.", &
1680 filename=
"FLEXIBLE_PARTIONING")
1685 description=
"Controls the printing of FP info at startup", &
1687 filename=
"__STD_OUT__")
1691 END SUBROUTINE create_fp_section
1698 SUBROUTINE create_driver_section(section)
1703 cpassert(.NOT.
ASSOCIATED(section))
1705 description=
"This section defines the parameters needed to run in i-PI driver mode.", &
1707 n_keywords=4, n_subsections=0, repeats=.false.)
1711 description=
"Use a UNIX socket rather than an INET socket.", &
1712 usage=
"unix LOGICAL", &
1713 default_l_val=.false., lone_keyword_l_val=.true.)
1718 description=
"Port number for the i-PI server.", &
1719 usage=
"port <INTEGER>", &
1720 default_i_val=12345)
1725 description=
"Host name for the i-PI server.", &
1726 usage=
"host <HOSTNAME>", &
1727 default_c_val=
"localhost")
1732 description=
"Prefix used to build the path of the UNIX socket file, "// &
1733 "as /tmp/<PREFIX>_<HOST>. Only relevant if UNIX is set to true.", &
1734 usage=
"PREFIX ipi", &
1735 default_c_val=
"ipi")
1740 description=
"Sleeping time while waiting for for driver commands [s].", &
1741 usage=
"SLEEP_TIME 0.1", &
1742 default_r_val=0.01_dp)
1746 END SUBROUTINE create_driver_section
1753 SUBROUTINE create_pint_section(section)
1757 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
1759 cpassert(.NOT.
ASSOCIATED(section))
1761 description=
"The section that controls a path integral run", &
1762 n_keywords=13, n_subsections=9, repeats=.false.)
1766 description=
"Specify number beads to use", repeats=.false., &
1770 CALL keyword_create(keyword, __location__, name=
"proc_per_replica", &
1771 description=
"Specify number of processors to use for each replica", &
1772 repeats=.false., default_i_val=0)
1776 description=
"Number of steps (if MAX_STEP is not explicitly given"// &
1777 " the program will perform this number of steps)", repeats=.false., &
1782 description=
"Maximum step number (the program will stop if"// &
1783 " ITERATION >= MAX_STEP even if NUM_STEPS has not been reached)", &
1784 repeats=.false., default_i_val=10)
1788 description=
"Specify the iteration number from which it should be "// &
1789 "counted", default_i_val=0)
1793 description=
"The temperature you want to simulate", &
1798 CALL keyword_create(keyword, __location__, name=
"kT_CORRECTION", &
1799 description=
"Corrects for the loss of temperature due to constrained "// &
1800 "degrees of freedom for Nose-Hover chains and numeric integration", &
1801 repeats=.false., default_l_val=.false.)
1804 CALL keyword_create(keyword, __location__, name=
"T_tol", variants=[
"temp_to"], &
1805 description=
"threshold for the oscillations of the temperature "// &
1806 "excedeed which the temperature is rescaled. 0 means no rescaling.", &
1807 default_r_val=0._dp, unit_str=
"K")
1811 description=
"timestep (might be subdivised in nrespa subtimesteps", &
1814 usage=
"dt 1.0", unit_str=
"fs")
1818 description=
"integrator scheme for integrating the harmonic bead springs.", &
1819 usage=
"HARM_INT (NUMERIC|EXACT)", &
1821 enum_c_vals=
s2a(
"NUMERIC",
"EXACT"), &
1826 description=
"number of respa steps for the bead for each md step", &
1827 repeats=.false., default_i_val=5)
1831 CALL keyword_create(keyword, __location__, name=
"transformation", &
1832 description=
"Specifies the coordinate transformation to use", &
1833 usage=
"TRANSFORMATION (NORMAL|STAGE)", &
1835 enum_c_vals=
s2a(
"NORMAL",
"STAGE"), &
1841 description=
"Specifies the real time propagator to use", &
1842 usage=
"PROPAGATOR (PIMD|RPMD|CMD|BCMD)", &
1844 enum_c_vals=
s2a(
"PIMD",
"RPMD",
"CMD",
"BCMD"), &
1848 CALL keyword_create(keyword, __location__, name=
"FIX_CENTROID_POS", &
1849 description=
"Propagate all DOF but the centroid - "// &
1850 "useful for equilibration of the non-centroid modes "// &
1851 "(activated only if TRANSFORMATION==NORMAL)", &
1852 repeats=.false., default_l_val=.false., &
1853 lone_keyword_l_val=.true.)
1857 NULLIFY (subsection, subsubsection)
1858 CALL section_create(subsection, __location__, name=
"NORMALMODE", &
1859 description=
"Controls the normal mode transformation", &
1860 n_keywords=3, n_subsections=0, repeats=.false.)
1862 description=
"Value of the thermostat mass of centroid degree of freedom", &
1863 repeats=.false., default_r_val=-1.0_dp)
1867 description=
"Value of the thermostat mass of non-centroid degrees of freedom", &
1868 repeats=.false., default_r_val=-1.0_dp)
1872 description=
"mass scale factor for non-centroid degrees of freedom", &
1873 repeats=.false., default_r_val=1.0_dp)
1877 description=
"mass scale factor for non-centroid degrees of freedom, &
1878& naming convention according to Witt, 2008, <https://doi.org/10.1063/1.3125009>.", &
1879 repeats=.false., default_r_val=8.0_dp)
1887 description=
"The section that controls the staging transformation", &
1888 n_keywords=2, n_subsections=0, repeats=.false.)
1890 description=
"Value of the j parameter for the staging transformation", &
1891 repeats=.false., default_i_val=2)
1895 description=
"Value of the nose-hoover mass for the endbead (Q_end)", &
1896 repeats=.false., default_i_val=2)
1903 description=
"Sets positions and velocities of the beads", &
1904 n_keywords=0, n_subsections=2, &
1906 CALL create_coord_section(subsubsection,
"BEADS")
1909 CALL create_velocity_section(subsubsection,
"BEADS")
1916 description=
"Controls the Nose-Hoover thermostats", &
1917 n_keywords=1, n_subsections=2, &
1920 description=
"length of nose-hoover chain. 0 means no thermostat", &
1921 repeats=.false., default_i_val=2)
1924 CALL create_coord_section(subsubsection,
"NOSE")
1927 CALL create_velocity_section(subsubsection,
"NOSE")
1938 description=
"Controls the PI Langevin Equation thermostat."// &
1939 " Needs the exact harmonic integrator."// &
1940 " May lead to unphysical motions if constraint e.g. FIXED_ATOMS, is applied."// &
1941 " RESTART_HELIUM section has to be .FALSE. when restarting the PIGLET job.", &
1943 n_keywords=3, n_subsections=1, &
1949 description=
"Time constant for centroid motion. "// &
1950 "If zero or negative the centroid is not thermostated.", &
1951 usage=
"TAU {real}", type_of_var=
real_t, &
1952 unit_str=
"fs", n_var=1, default_r_val=1000.0_dp)
1956 description=
"Scaling of friction to mode coupling", &
1957 usage=
"LAMBDA {real}", type_of_var=
real_t, &
1958 n_var=1, default_r_val=0.5_dp)
1961 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
1962 description=
"Thermostat energy for conserved quantity. "// &
1963 "Only useful in restart files.", &
1964 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
1965 n_var=1, default_r_val=0.0_dp)
1972 description=
"Controls the PI Generalized Langevin Equation thermostat."// &
1973 " Needs the exact harmonic integrator", &
1975 n_keywords=4, n_subsections=2, &
1980 CALL section_create(subsubsection, __location__, name=
"EXTRA_DOF", &
1981 description=
"Additional degrees of freedom to ensure Markovian Dynamics.", &
1982 n_keywords=1, n_subsections=0, repeats=.false.)
1983 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
1984 description=
"Restart values for additional degrees of freedom" &
1985 //
" (only for restarts, do not set explicitly)", &
1987 type_of_var=
real_t, n_var=-1)
1993 description=
"Number of extra degrees of freedom to ensure markovian dynamics", &
1994 repeats=.false., default_i_val=8)
1997 CALL keyword_create(keyword, __location__, name=
"MATRICES_FILE_NAME", &
1998 description=
"Filename containig the raw matrices from "// &
1999 "<https://gle4md.org/index.html?page=matrix>.", &
2000 repeats=.false., default_lc_val=
"PIGLET.MAT")
2003 CALL keyword_create(keyword, __location__, name=
"SMATRIX_INIT", &
2004 description=
"Select algorithm to initialize piglet S-matrices", &
2005 usage=
"SMATRIX_INIT (CHOLESKY|DIAGONAL)", &
2007 enum_c_vals=
s2a(
"CHOLESKY",
"DIAGONAL"), &
2011 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
2012 description=
"Thermostat energy for conserved quantity. "// &
2013 "Only useful in restart files.", &
2014 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
2015 n_var=1, default_r_val=0.0_dp)
2022 description=
"Controls the QTB-PILE thermostat."// &
2023 " Needs the exact harmonic integrator", &
2025 n_keywords=7, n_subsections=1, &
2031 description=
"Time constant for centroid motion. ", &
2032 usage=
"TAU {real}", type_of_var=
real_t, &
2033 unit_str=
"fs", n_var=1, default_r_val=1000.0_dp)
2037 description=
"Scaling of friction to ring polymer NM freq.", &
2038 usage=
"LAMBDA {real}", type_of_var=
real_t, &
2039 n_var=1, default_r_val=0.5_dp)
2043 description=
"Defines which version to use "// &
2044 "0: f_P^(0), 1: f_P^(1)", &
2045 usage=
"FP {integer}", type_of_var=
integer_t, &
2046 n_var=1, default_i_val=1)
2050 description=
"Inverse of cutoff freq. for the centroid mode", &
2051 usage=
"TAUCUT {real}", type_of_var=
real_t, &
2052 unit_str=
"fs", n_var=1, default_r_val=0.5_dp)
2056 description=
"Scaling of cutoff freq. to ring polymer NM freq.", &
2057 usage=
"LAMBCUT {real}", type_of_var=
real_t, &
2058 n_var=1, default_r_val=2.0_dp)
2062 description=
"Number of points used for the convolution product.", &
2063 usage=
"NF {integer}", type_of_var=
integer_t, &
2064 n_var=1, default_i_val=128)
2067 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_ENERGY", &
2068 description=
"Thermostat energy for conserved quantity. "// &
2069 "Only useful in restart files.", &
2070 usage=
"THERMOSTAT_ENERGY {real}", type_of_var=
real_t, &
2071 n_var=1, default_r_val=0.0_dp)
2078 description=
"Controls the initialization if the beads are not present", &
2081 CALL keyword_create(keyword, __location__, name=
"LEVY_POS_SAMPLE", &
2082 description=
"Sample bead positions assuming free particle "// &
2083 "behavior (performs a Levy random walk of length P around "// &
2084 "the classical position of each atom at the physical "// &
2085 "temperature defined in PINT%TEMP)", &
2086 repeats=.false., default_l_val=.false., &
2087 lone_keyword_l_val=.true.)
2090 CALL keyword_create(keyword, __location__, name=
"LEVY_CORRELATED", &
2091 description=
"Use the same Levy path for all atoms, though "// &
2092 "with mass-dependent variances (might help at very low T)", &
2093 repeats=.false., default_l_val=.false., &
2094 lone_keyword_l_val=.true.)
2097 CALL keyword_create(keyword, __location__, name=
"LEVY_TEMP_FACTOR", &
2098 description=
"Multiplicative correction factor for the "// &
2099 "temperature at which the Levy walk is performed "// &
2100 "(correction is due to the interactions that modify "// &
2101 "the spread of a free particle)", &
2102 repeats=.false., default_r_val=1.0_dp)
2106 description=
"Initial seed for the (pseudo)random number "// &
2107 "generator that controls Levy walk for bead positions.", &
2108 usage=
"LEVY_SEED <INTEGER>", default_i_val=1234, &
2112 CALL keyword_create(keyword, __location__, name=
"THERMOSTAT_SEED", &
2113 description=
"Initial seed for the (pseudo)random number "// &
2114 "generator that controls the PILE and PIGLET thermostats.", &
2115 usage=
"THERMOSTAT_SEED <INTEGER>", default_i_val=12345, &
2119 CALL keyword_create(keyword, __location__, name=
"RANDOMIZE_POS", &
2120 description=
"add gaussian noise to the positions of the beads", &
2121 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2125 CALL keyword_create(keyword, __location__, name=
"CENTROID_SPEED", &
2126 description=
"adds random velocity component to the centroid modes "// &
2127 "(useful to correct for the averaging out of the speed of various beads)", &
2128 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2132 CALL keyword_create(keyword, __location__, name=
"VELOCITY_QUENCH", &
2133 description=
"set the initial velocities to zero", &
2134 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2137 CALL keyword_create(keyword, __location__, name=
"VELOCITY_SCALE", &
2138 description=
"scale initial velocities to the temperature given in MOTION%PINT%TEMP", &
2139 repeats=.false., default_l_val=.false., lone_keyword_l_val=.true.)
2146 CALL create_helium_section(subsection)
2151 description=
"Controls the path integral-specific output", &
2152 n_keywords=2, n_subsections=0, repeats=.false.)
2157 description=
"Controls the output of the path integral energies", &
2163 description=
"Controls the output of the path integral action", &
2169 description=
"Controls the output of the centroid's position", &
2170 unit_str=
"angstrom", &
2173 description=
"Output file format for the positions of centroid")
2178 description=
"Controls the output of the centroid's velocity", &
2179 unit_str=
"bohr*au_t^-1", &
2182 description=
"Output file format for the velocity of centroid")
2187 description=
"Controls the output of the centroid's radii of gyration", &
2188 unit_str=
"angstrom", &
2194 description=
"Controls the output of the center of mass", &
2199 CALL keyword_create(keyword, __location__, name=
"IMAGINARY_TIME_STRIDE", &
2200 description=
"Prints only every nth bead trajectory", &
2201 repeats=.false., default_i_val=1)
2208 END SUBROUTINE create_pint_section
2218 SUBROUTINE create_helium_section(section)
2222 TYPE(
section_type),
POINTER :: print_key, subsection, subsubsection
2224 cpassert(.NOT.
ASSOCIATED(section))
2227 description=
"The section that controls optional helium solvent"// &
2228 " environment (highly experimental, not for general use yet)", &
2229 n_keywords=31, n_subsections=11, repeats=.false.)
2232 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2233 description=
"Whether or not to actually use this section", &
2234 usage=
"silent", default_l_val=.false., lone_keyword_l_val=.true.)
2239 description=
"Simulate helium solvent only, "// &
2240 "disregard solute entirely", &
2241 repeats=.false., default_l_val=.false., &
2242 lone_keyword_l_val=.true.)
2246 CALL keyword_create(keyword, __location__, name=
"INTERACTION_POT_SCAN", &
2247 description=
"Scan solute-helium interaction potential, "// &
2248 "cubefile parameters set in subsection RHO", &
2249 repeats=.false., default_l_val=.false., &
2250 lone_keyword_l_val=.true.)
2255 description=
"Number of independent helium environments", &
2256 repeats=.false., default_i_val=1)
2260 CALL keyword_create(keyword, __location__, name=
"POTENTIAL_FILE_NAME", &
2261 description=
"Name of the Helium interaction potential file", &
2262 repeats=.false., default_lc_val=
"HELIUM.POT")
2267 description=
"Get average MC forces or last MC forces to propagate MD", &
2268 usage=
"GET_FORCES (AVERAGE|LAST)", &
2270 enum_c_vals=
s2a(
"AVERAGE",
"LAST"), &
2275 CALL keyword_create(keyword, __location__, name=
"SOLUTE_INTERACTION", &
2276 description=
"Interaction potential between helium and the solute", &
2277 usage=
"SOLUTE_INTERACTION (NONE | MWATER | NNP)", &
2279 enum_c_vals=
s2a(
"NONE",
"MWATER",
"NNP"), &
2285 "No interaction with solute", &
2286 "Test interaction with wrong Water", &
2287 "Interaction with NNP"))
2292 description=
"Number of helium atoms", &
2293 repeats=.false., default_i_val=64)
2298 description=
"Number of helium path integral beads", &
2299 repeats=.false., default_i_val=25)
2304 description=
"Initial seed for the (pseudo)random number "// &
2305 "generator that controls helium coordinate generation and propagation.", &
2306 usage=
"RNG_SEED <INTEGER>", default_i_val=12345, &
2312 variants=
s2a(
"INOROT"), &
2313 description=
"Number of MC iterations at the same time slice(s) "// &
2314 "(number of inner MC loop iterations)", &
2315 repeats=.false., default_i_val=6600)
2320 variants=
s2a(
"IROT"), &
2321 description=
"how often to reselect the time slice(s) to work on "// &
2322 "(number of outer MC loop iterations)", &
2323 repeats=.false., default_i_val=300)
2327 CALL keyword_create(keyword, __location__, name=
"SAMPLING_METHOD", &
2328 description=
"Choose between Ceperley or the worm algorithm", &
2329 usage=
"SAMPLING_METHOD (CEPERLEY|WORM)", &
2331 enum_c_vals=
s2a(
"CEPERLEY",
"WORM"), &
2336 CALL keyword_create(keyword, __location__, name=
"COORD_INIT_TEMP", &
2337 description=
"Temperature for thermal gaussian initialization of the helium."// &
2338 " Negative values correspond to a hot start.", &
2344 CALL keyword_create(keyword, __location__, name=
"SOLUTE_RADIUS", &
2345 description=
"Radius of the solute molecule for prevention of"// &
2346 " coordinate collision during initialization", &
2348 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2353 NULLIFY (subsection)
2355 description=
"This section contains all information to run an helium-solute "// &
2356 "interaction Neural Network Potential (NNP) calculation.", &
2357 n_keywords=4, n_subsections=3, repeats=.false.)
2359 CALL keyword_create(keyword, __location__, name=
"NNP_INPUT_FILE_NAME", &
2360 description=
"File containing the input information for the setup "// &
2361 "of the NNP (n2p2/RuNNer format). ", &
2362 repeats=.false., default_lc_val=
"input.nn")
2366 CALL keyword_create(keyword, __location__, name=
"SCALE_FILE_NAME", &
2367 description=
"File containing the scaling information for the symmetry "// &
2368 "functions of the NNP. ", &
2369 repeats=.false., default_lc_val=
"scaling.data")
2373 CALL keyword_create(keyword, __location__, name=
"RAD_SPLINE_N", &
2374 description=
"Number of knots per radial group in the cubic-Hermite "// &
2375 "spline tables that tabulate the radial symmetry-function product "// &
2376 "y(r) = exp(-eta*(r-rs)^2) * fcut(r). Cubic-Hermite per-evaluation "// &
2377 "error scales as O(1/n^4); the default keeps the spline residual "// &
2378 "inside the NNP regression tolerance for a radial cutoff of "// &
2379 "~12 bohr. Models with larger cutoffs or stricter tolerances may "// &
2380 "need a larger n. Memory cost scales linearly in n per radial group.", &
2384 default_i_val=8192, &
2385 usage=
"RAD_SPLINE_N 8192")
2390 description=
"Verlet skin distance for the NNP descriptor neighbour "// &
2391 "cell-list. The neighbour-list cutoff is (symmetry-function cutoff "// &
2392 "+ skin); the cell-list chain is rebuilt only when an atom drifts "// &
2393 "more than skin/2 from its rebuild-time position, analogous to the "// &
2394 "LAMMPS 'neighbor <skin> bin' command. Larger skin reduces the "// &
2395 "rebuild rate but enlarges the per-atom neighbour list. A negative "// &
2396 "value (default) selects the automatic heuristic "// &
2397 "MIN(0.5 bohr, 0.1*cutoff). Useful upper bound is half the smallest "// &
2398 "perpendicular cell width.", &
2402 default_r_val=-1.0_dp, &
2404 usage=
"VERLET_SKIN [bohr] 0.5")
2408 NULLIFY (subsubsection)
2409 CALL section_create(subsubsection, __location__, name=
"SR_CUTOFF", &
2410 description=
"Section for failsafe short range cutoffs for the NNPs, "// &
2411 "if the distance between solvent and specified solute element becomes "// &
2412 "smaller than the given cutoff, an artifical repulsive potential is "// &
2413 "introduced. Note this is only meant to prevent such configurations, "// &
2414 "not to physically sample them.", &
2415 n_keywords=2, n_subsections=0, repeats=.true.)
2418 description=
"Solute element for which the short range cutoff is in effect", &
2419 repeats=.false., default_c_val=
"none")
2424 description=
"Short range cutoff in Angstrom, below this cutoff, the energy "// &
2425 "is replaced by a sizable positive value plus a 1/r**2 term to guide particles "// &
2426 "away from each other.", &
2428 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2434 NULLIFY (subsubsection)
2436 description=
"Section for a single NNP model. If this section is repeated, "// &
2437 "a committee model (C-NNP)is used where the NNP members share the same "// &
2438 "symmetry functions. ", &
2439 n_keywords=1, n_subsections=0, repeats=.true.)
2442 description=
"File containing the weights for the artificial neural "// &
2443 "networks of the NNP. The specified name is extended by .XXX.data ", &
2444 repeats=.false., default_lc_val=
"weights")
2451 NULLIFY (subsubsection)
2453 description=
"Section of possible print options in NNP code.", &
2454 n_keywords=0, n_subsections=3, repeats=.false.)
2455 NULLIFY (print_key, keyword)
2458 description=
"Controls the printing of the NNP energies.", &
2464 description=
"Controls the printing of the STD per atom of the NNP forces.", &
2470 description=
"If activated, output structures with extrapolation "// &
2471 "warning in xyz-format", &
2482 NULLIFY (subsection)
2484 description=
"Enables sampling with Ceperley's algorithm", &
2485 n_keywords=2, n_subsections=1, repeats=.false.)
2488 description=
"how many time slices to change at once (+1). "// &
2489 "Must be a power of 2 currently", &
2490 repeats=.false., default_i_val=8)
2494 CALL keyword_create(keyword, __location__, name=
"MAX_PERM_CYCLE", &
2495 description=
"how large cyclic permutations to try", &
2496 repeats=.false., default_i_val=6)
2500 NULLIFY (subsubsection)
2501 CALL section_create(subsubsection, __location__, name=
"M-SAMPLING", &
2502 description=
"Permutation cycle length sampling settings", &
2503 n_keywords=3, n_subsections=0, repeats=.false.)
2504 CALL keyword_create(keyword, __location__, name=
"DISTRIBUTION-TYPE", &
2505 description=
"Distribution from which the cycle length m is sampled", &
2506 usage=
"DISTRIBUTION-TYPE (SINGLEV|UNIFORM|LINEAR|QUADRATIC|EXPONENTIAL|GAUSSIAN)", &
2525 description=
"Value of m treated in a special way "// &
2526 "(specific behavior depends on the distribution type chosen)", &
2532 description=
"Probability ratio betw M-VALUE and other cycle lengths", &
2534 default_r_val=1.0_dp)
2543 NULLIFY (subsection)
2545 description=
"Enables sampling via the canonical worm algorithm adapted from Bonisegni", &
2546 n_keywords=12, n_subsections=0, repeats=.false.)
2548 CALL keyword_create(keyword, __location__, name=
"CENTROID_DRMAX", &
2549 description=
"Maximum displacement allowed for the centroid moves", &
2550 repeats=.false., default_r_val=0.5_dp)
2555 description=
"From 2 up to max. L-1 beads will be moved", &
2556 repeats=.false., default_i_val=5)
2560 CALL keyword_create(keyword, __location__, name=
"OPEN_CLOSE_SCALE", &
2561 description=
"Open/Close acceptance adjustment parameter", &
2562 repeats=.false., default_r_val=0.01_dp)
2567 description=
"Enable bosonic exchange sampling", &
2568 repeats=.false., default_l_val=.true.)
2572 CALL keyword_create(keyword, __location__, name=
"MAX_OPEN_CYCLES", &
2573 description=
"If > 0 then reset positions and permutations to the previous closed &
2574 & state if staying more than this amount of MC cycles in open state to avoid staying &
2575 & trapped in open state for too long. Use with caution as it can potentially introduce &
2576 & a bias in the sampling.", &
2577 repeats=.false., default_i_val=0)
2581 CALL keyword_create(keyword, __location__, name=
"SHOW_STATISTICS", &
2582 description=
"Show sampling statistics in output", &
2583 repeats=.false., default_l_val=.true.)
2587 CALL keyword_create(keyword, __location__, name=
"CENTROID_WEIGHT", &
2588 description=
"Absolute weight of the centroid move", &
2589 repeats=.false., default_i_val=10)
2593 CALL keyword_create(keyword, __location__, name=
"STAGING_WEIGHT", &
2594 description=
"Absolute weight of the staging move", &
2595 repeats=.false., default_i_val=30)
2599 CALL keyword_create(keyword, __location__, name=
"OPEN_CLOSE_WEIGHT", &
2600 description=
"Absolute weight of the open/close move", &
2601 repeats=.false., default_i_val=10)
2605 CALL keyword_create(keyword, __location__, name=
"HEAD_TAIL_WEIGHT", &
2606 description=
"Absolute weight of the head/tail moves (both)", &
2607 repeats=.false., default_i_val=10)
2611 CALL keyword_create(keyword, __location__, name=
"CRAWL_WEIGHT", &
2612 description=
"Absolute weight of the crawl bwd/fwd moves (both)", &
2613 repeats=.false., default_i_val=10)
2617 CALL keyword_create(keyword, __location__, name=
"CRAWL_REPETITION", &
2618 description=
"Number of repeated crawl moves", &
2619 repeats=.false., default_i_val=4)
2624 description=
"Absolute weight of the crawl move", &
2625 repeats=.false., default_i_val=10)
2635 description=
"Use periodic boundary conditions for helium", &
2636 repeats=.false., default_l_val=.false.)
2641 description=
"PBC unit cell size (NOTE 1: density, number of atoms"// &
2642 " and volume are interdependent - give only two of them; "// &
2643 "NOTE 2: for small cell sizes specify NATOMS instead)", &
2644 repeats=.false., type_of_var=
real_t, unit_str=
"angstrom")
2649 description=
"PBC unit cell shape for helium", &
2650 usage=
"CELL_SHAPE (CUBE|OCTAHEDRON)", &
2652 enum_c_vals=
s2a(
"CUBE",
"OCTAHEDRON"), &
2657 CALL keyword_create(keyword, __location__, name=
"DROPLET_RADIUS", &
2658 description=
"Reject a move if any of the new positions does not lie within"// &
2659 " this range from the center of gravity", &
2660 repeats=.false., type_of_var=
real_t, default_r_val=huge(1.0_dp), &
2661 unit_str=
"angstrom")
2666 description=
"trial density of helium for determining the helium "// &
2670 unit_str=
"angstrom^-3")
2675 description=
"Presample He coordinates before first PIMD step", &
2676 repeats=.false., default_l_val=.false.)
2681 description=
"Radial distribution settings", &
2682 n_keywords=5, n_subsections=0, repeats=.false.)
2684 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2685 description=
"Whether or not to actually calculate this property", &
2686 default_l_val=.false., lone_keyword_l_val=.true.)
2691 description=
"Maximum RDF range, defaults to unit cell size", &
2692 repeats=.false., type_of_var=
real_t, &
2693 unit_str=
"angstrom")
2698 description=
"Number of bins", &
2705 description=
"Whether or not to calculate solute-He RDFs (if solute is present)", &
2706 default_l_val=.true., lone_keyword_l_val=.true.)
2711 description=
"Whether or not to calculate He-He RDFs", &
2712 default_l_val=.false., lone_keyword_l_val=.true.)
2719 NULLIFY (subsection)
2721 description=
"Spatial distribution settings", &
2722 n_keywords=10, n_subsections=0, repeats=.false.)
2723 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
2724 description=
"Whether or not to actually calculate densities "// &
2725 "(requires significant amount of memory, depending on the value of NBIN)", &
2726 default_l_val=.false., lone_keyword_l_val=.true.)
2730 description=
"Number of grid points in each direction for density binning", &
2736 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_WDG", &
2737 description=
"Density of winding paths "// &
2738 "not shorter than the given length", &
2739 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_WDG <INT> <INT> .. <INT>", &
2744 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_NON", &
2745 description=
"Density of non-winding paths "// &
2746 "not shorter than the given length", &
2747 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_NON <INT> <INT> .. <INT>", &
2752 CALL keyword_create(keyword, __location__, name=
"MIN_CYCLE_LENGTHS_ALL", &
2753 description=
"Density of all paths "// &
2754 "not shorter than the given length", &
2755 repeats=.false., usage=
"MIN_CYCLE_LENGTHS_ALL <INT> <INT> .. <INT>", &
2761 description=
"Atom number density", &
2764 default_l_val=.true., &
2765 lone_keyword_l_val=.true.)
2769 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA_2", &
2770 description=
"Projected area squared density, A*A(r)", &
2773 default_l_val=.false., &
2774 lone_keyword_l_val=.true.)
2778 CALL keyword_create(keyword, __location__, name=
"WINDING_NUMBER_2", &
2779 description=
"Winding number squared density, W*W(r)", &
2782 default_l_val=.false., &
2783 lone_keyword_l_val=.true.)
2787 CALL keyword_create(keyword, __location__, name=
"WINDING_CYCLE_2", &
2788 description=
"Winding number squared density, W^2(r)", &
2791 default_l_val=.false., &
2792 lone_keyword_l_val=.true.)
2796 CALL keyword_create(keyword, __location__, name=
"MOMENT_OF_INERTIA", &
2797 description=
"Moment of inertia density", &
2800 default_l_val=.false., &
2801 lone_keyword_l_val=.true.)
2809 CALL create_coord_section(subsection,
"HELIUM")
2814 description=
"Permutation state used for restart", &
2815 n_keywords=1, n_subsections=0, repeats=.false.)
2816 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2817 description=
"Specify particle index permutation for every "// &
2818 "helium atom", repeats=.true., usage=
"<INT> <INT> .. <INT>", &
2826 description=
"Average properties (used for restarts)", &
2827 n_keywords=7, n_subsections=0, repeats=.false.)
2828 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA", &
2829 description=
"Projected area vector for all environments", &
2830 repeats=.true., usage=
"PROJECTED_AREA <REAL> <REAL> .. <REAL>", &
2831 type_of_var=
real_t, n_var=-1)
2834 CALL keyword_create(keyword, __location__, name=
"PROJECTED_AREA_2", &
2835 description=
"Projected area vector squared for all environments", &
2836 repeats=.true., usage=
"PROJECTED_AREA_2 <REAL> <REAL> .. <REAL>", &
2837 type_of_var=
real_t, n_var=-1)
2840 CALL keyword_create(keyword, __location__, name=
"WINDING_NUMBER_2", &
2841 description=
"Winding number vector squared for all environments", &
2842 repeats=.true., usage=
"WINDING_NUMBER_2 <REAL> <REAL> .. <REAL>", &
2843 type_of_var=
real_t, n_var=-1)
2846 CALL keyword_create(keyword, __location__, name=
"MOMENT_OF_INERTIA", &
2847 description=
"Moment of inertia vector for all environments", &
2848 repeats=.true., usage=
"MOMENT_OF_INERTIA <REAL> <REAL> .. <REAL>", &
2849 type_of_var=
real_t, n_var=-1)
2853 description=
"Radial distributions averaged over all environments", &
2854 repeats=.true., usage=
"RDF <REAL> <REAL> .. <REAL>", &
2855 type_of_var=
real_t, n_var=-1)
2859 description=
"Spatial distributions averaged over all environments", &
2860 repeats=.true., usage=
"RHO <REAL> <REAL> .. <REAL>", &
2861 type_of_var=
real_t, n_var=-1)
2865 description=
"Weight for the restarted quantities "// &
2866 "(number of MC steps used to calculate the accumulated averages)", &
2875 description=
"Forces exerted by the helium on the solute system"// &
2876 " (used for restarts)", &
2877 n_keywords=1, n_subsections=0, repeats=.false.)
2878 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2879 description=
"Number of real values should be 3 * "// &
2880 "<num_solute_atoms> * <num_solute_beads>", repeats=.true., &
2881 usage=
"<REAL> <REAL> .. <REAL>", type_of_var=
real_t, &
2888 CALL section_create(subsection, __location__, name=
"RNG_STATE", &
2889 description=
"Random number generator state for all processors", &
2890 n_keywords=1, n_subsections=0, repeats=.false.)
2891 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
2892 description=
"Three real arrays of DIMENSION(3,2) times two RNG "// &
2893 "streams - 36 real values per processor", &
2894 repeats=.true., usage=
"automatically filled, do not edit by hand", &
2895 type_of_var=
real_t, n_var=-1)
2902 description=
"The section that controls the output of the helium code", &
2903 n_keywords=16, n_subsections=0, repeats=.false.)
2916 description=
"Controls the output of helium energies"// &
2917 " (averaged over MC step)", &
2923 description=
"Controls the output of the average projected area squared vector", &
2929 description=
"Controls the output of the average winding number vector squared", &
2935 description=
"Controls the output of the average moment of inertia vector", &
2943 description=
"Controls the output of helium radial distribution functions", &
2949 description=
"Controls the output of the helium density "// &
2950 "(Gaussian cube file format)", &
2951 each_iter_names=
s2a(
"PINT"), each_iter_values=[100], &
2954 CALL keyword_create(keyword, __location__, name=
"BACKUP_COPIES", &
2955 description=
"Specifies the maximum number of backup copies.", &
2956 usage=
"BACKUP_COPIES {int}", &
2964 description=
"Controls the output of the projected area vector", &
2970 description=
"Controls the output of the winding number vector", &
2976 description=
"Controls the output of the moment of inertia vector", &
2982 description=
"Controls the output of the helium permutation length", &
2988 description=
"Controls the output of the total helium action", &
2996 description=
"Controls the output of helium coordinates", &
2999 description=
"Output file format for the coordinates", &
3000 usage=
"FORMAT (PDB|XYZ)", &
3002 enum_c_vals=
s2a(
"PDB",
"XYZ"), &
3004 enum_desc=
s2a(
"Bead coordinates and connectivity is written in PDB format", &
3005 "Only bead coordinates are written in XYZ format"))
3012 description=
"Controls the output of the helium permutation state", &
3015 description=
"Output format for the permutation", &
3016 usage=
"FORMAT (CYCLE|PLAIN)", &
3018 enum_c_vals=
s2a(
"CYCLE",
"PLAIN"), &
3021 "Cycle notation with winding cycles enclosed"// &
3022 " in '[...]' and non-winding ones enclosed in '(...)'", &
3023 "Plain permutation output, i.e. P(1) ... P(N)"))
3030 description=
"Controls the output of the helium forces on the solute", &
3038 description=
"Controls the output of the helium acceptance data", &
3044 description=
"Controls the output of the instantaneous helium forces on the solute", &
3053 END SUBROUTINE create_helium_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public kapil2016
integer, save, public ceriotti2012
integer, save, public lindh1995
integer, save, public henkelman1999
integer, save, public ceriotti2010
integer, save, public henkelman2014
integer, save, public byrd1995
integer, save, public brieuc2016
integer, save, public ceriotti2014
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
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
Utilities for string manipulations.
character(len=1), parameter, public newline