(git:cd590b0)
Loading...
Searching...
No Matches
input_cp2k_motion.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \par History
10!> 10.2005 split input_cp2k into smaller modules [fawzi]
11!> 01.2020 add keywords related to Space Groups [pcazade]
12!> \author teo & fawzi
13! **************************************************************************************************
15 USE bibliography, ONLY: brieuc2016, &
16 byrd1995, &
22 kapil2016, &
30 USE cp_units, ONLY: cp_unit_to_cp2k
31 USE input_constants, ONLY: &
52 USE input_cp2k_thermostats, ONLY: create_coord_section, &
54 create_velocity_section
64 USE input_val_types, ONLY: integer_t, &
65 lchar_t, &
66 logical_t, &
67 real_t, &
68 char_t
69 USE kinds, ONLY: dp
70 USE string_utilities, ONLY: newline, &
71 s2a
72#include "../base/base_uses.f90"
73
74 IMPLICIT NONE
75 PRIVATE
76
77 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .true.
78 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_motion'
79
80 PUBLIC :: create_motion_section
81
82CONTAINS
83
84! **************************************************************************************************
85!> \brief creates the motion section
86!> \param section the section to be created
87!> \author teo
88! **************************************************************************************************
89 SUBROUTINE create_motion_section(section)
90 TYPE(section_type), POINTER :: section
91
92 TYPE(section_type), POINTER :: subsection
93
94 cpassert(.NOT. ASSOCIATED(section))
95 CALL section_create(section, __location__, name="motion", &
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.)
98
99 NULLIFY (subsection)
100
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.)
105 CALL section_add_subsection(section, subsection)
106 CALL section_release(subsection)
107
108 CALL create_cell_opt_section(subsection)
109 CALL section_add_subsection(section, subsection)
110 CALL section_release(subsection)
111
112 CALL create_shellcore_opt_section(subsection)
113 CALL section_add_subsection(section, subsection)
114 CALL section_release(subsection)
115
116 CALL create_md_section(subsection)
117 CALL section_add_subsection(section, subsection)
118 CALL section_release(subsection)
119
120 CALL create_driver_section(subsection)
121 CALL section_add_subsection(section, subsection)
122 CALL section_release(subsection)
123
124 CALL create_fe_section(subsection)
125 CALL section_add_subsection(section, subsection)
126 CALL section_release(subsection)
127
128 CALL create_constraint_section(subsection)
129 CALL section_add_subsection(section, subsection)
130 CALL section_release(subsection)
131
132 CALL create_fp_section(subsection)
133 CALL section_add_subsection(section, subsection)
134 CALL section_release(subsection)
135
136 CALL create_mc_section(subsection)
137 CALL section_add_subsection(section, subsection)
138 CALL section_release(subsection)
139
140 CALL create_tmc_section(subsection)
141 CALL section_add_subsection(section, subsection)
142 CALL section_release(subsection)
143
144 CALL create_pint_section(subsection)
145 CALL section_add_subsection(section, subsection)
146 CALL section_release(subsection)
147
148 CALL create_band_section(subsection)
149 CALL section_add_subsection(section, subsection)
150 CALL section_release(subsection)
151
152 CALL create_motion_print_section(subsection)
153 CALL section_add_subsection(section, subsection)
154 CALL section_release(subsection)
155
156 END SUBROUTINE create_motion_section
157
158! **************************************************************************************************
159!> \brief creates the Monte Carlo section
160!> \param section the section to be created
161!> \author matt
162! **************************************************************************************************
163 SUBROUTINE create_mc_section(section)
164 TYPE(section_type), POINTER :: section
165
166 TYPE(keyword_type), POINTER :: keyword
167 TYPE(section_type), POINTER :: subsection
168
169 cpassert(.NOT. ASSOCIATED(section))
170 CALL section_create(section, __location__, name="mc", &
171 description="This section sets parameters to set up a MonteCarlo calculation.", &
172 n_keywords=10, n_subsections=2, repeats=.false.)
173
174 NULLIFY (keyword, subsection)
175
176 CALL keyword_create(keyword, __location__, name="NSTEP", &
177 description="Specifies the number of MC cycles.", &
178 usage="NSTEP {integer}", &
179 default_i_val=100)
180 CALL section_add_keyword(section, keyword)
181 CALL keyword_release(keyword)
182
183 CALL keyword_create(keyword, __location__, name="IPRINT", &
184 description="Prints coordinate/cell/etc information every IPRINT steps.", &
185 usage="IPRINT {integer}", &
186 default_i_val=1)
187 CALL section_add_keyword(section, keyword)
188 CALL keyword_release(keyword)
189
190 CALL keyword_create(keyword, __location__, name="NMOVES", &
191 description="Specifies the number of classical moves between energy evaluations. ", &
192 usage="NMOVES {integer}", &
193 default_i_val=4)
194 CALL section_add_keyword(section, keyword)
195 CALL keyword_release(keyword)
196
197 CALL keyword_create(keyword, __location__, name="NSWAPMOVES", &
198 description="How many insertions to try per swap move.", &
199 usage="NSWAPMOVES {integer}", &
200 default_i_val=16)
201 CALL section_add_keyword(section, keyword)
202 CALL keyword_release(keyword)
203
204 CALL keyword_create(keyword, __location__, name="LBIAS", &
205 description="Dictates if we presample moves with a different potential.", &
206 usage="LBIAS {logical}", &
207 default_l_val=.false.)
208 CALL section_add_keyword(section, keyword)
209 CALL keyword_release(keyword)
210
211 CALL keyword_create(keyword, __location__, name="LSTOP", &
212 description="Makes nstep in terms of steps, instead of cycles.", &
213 usage="LSTOP {logical}", &
214 default_l_val=.false.)
215 CALL section_add_keyword(section, keyword)
216 CALL keyword_release(keyword)
217
218 CALL keyword_create(keyword, __location__, name="LDISCRETE", &
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.)
222 CALL section_add_keyword(section, keyword)
223 CALL keyword_release(keyword)
224
225 CALL keyword_create(keyword, __location__, name="RCLUS", &
226 description="The cluster cut off radius in angstroms.", &
227 usage="RCLUS {real}", &
228 default_r_val=1.0e0_dp)
229 CALL section_add_keyword(section, keyword)
230 CALL keyword_release(keyword)
231
232 CALL keyword_create(keyword, __location__, name="RESTART", &
233 description="Read initial configuration from restart file.", &
234 usage="RESTART {logical}", &
235 default_l_val=.false.)
236 CALL section_add_keyword(section, keyword)
237 CALL keyword_release(keyword)
238
239 CALL keyword_create( &
240 keyword, __location__, name="NVIRIAL", &
241 description="Use this many random orientations to compute the second virial coefficient (ENSEMBLE=VIRIAL)", &
242 usage="NVIRIAL {integer}", &
243 default_i_val=1000)
244 CALL section_add_keyword(section, keyword)
245 CALL keyword_release(keyword)
246
247 CALL keyword_create(keyword, __location__, name="ENSEMBLE", &
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"), &
252 default_i_val=do_mc_traditional)
253 CALL section_add_keyword(section, keyword)
254 CALL keyword_release(keyword)
255
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}", &
259 default_lc_val="")
260 CALL section_add_keyword(section, keyword)
261 CALL keyword_release(keyword)
262
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}", &
266 default_lc_val="")
267 CALL section_add_keyword(section, keyword)
268 CALL keyword_release(keyword)
269
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}", &
273 default_lc_val="")
274 CALL section_add_keyword(section, keyword)
275 CALL keyword_release(keyword)
276
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}", &
280 default_lc_val="")
281 CALL section_add_keyword(section, keyword)
282 CALL keyword_release(keyword)
283
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}", &
287 default_lc_val="")
288 CALL section_add_keyword(section, keyword)
289 CALL keyword_release(keyword)
290
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}", &
294 default_lc_val="")
295 CALL section_add_keyword(section, keyword)
296 CALL keyword_release(keyword)
297
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}", &
301 default_lc_val="")
302 CALL section_add_keyword(section, keyword)
303 CALL keyword_release(keyword)
304
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}", &
308 default_lc_val="")
309 CALL section_add_keyword(section, keyword)
310 CALL keyword_release(keyword)
311
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}", &
315 default_lc_val="")
316 CALL section_add_keyword(section, keyword)
317 CALL keyword_release(keyword)
318
319 CALL keyword_create(keyword, __location__, name="PRESSURE", &
320 description="The pressure for NpT simulations, in bar.", &
321 usage="PRESSURE {real}", &
322 type_of_var=real_t)
323 CALL section_add_keyword(section, keyword)
324 CALL keyword_release(keyword)
325
326 CALL keyword_create(keyword, __location__, name="TEMPERATURE", &
327 description="The temperature of the simulation, in Kelvin.", &
328 usage="TEMPERATURE {real}", &
329 type_of_var=real_t)
330 CALL section_add_keyword(section, keyword)
331 CALL keyword_release(keyword)
332
333 CALL keyword_create( &
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)
338 CALL section_add_keyword(section, keyword)
339 CALL keyword_release(keyword)
340
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)
345 CALL section_add_keyword(section, keyword)
346 CALL keyword_release(keyword)
347
348 CALL keyword_create(keyword, __location__, name="ETA", &
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)
352 CALL section_add_keyword(section, keyword)
353 CALL keyword_release(keyword)
354
355 CALL keyword_create(keyword, __location__, name="RANDOMTOSKIP", &
356 description="Number of random numbers from the acceptance/rejection stream to skip", &
357 usage="RANDOMTOSKIP {integer}", &
358 default_i_val=0)
359 CALL section_add_keyword(section, keyword)
360 CALL keyword_release(keyword)
361
362 CALL create_avbmc_section(subsection)
363 CALL section_add_subsection(section, subsection)
364 CALL section_release(subsection)
365
366 CALL create_move_prob_section(subsection)
367 CALL section_add_subsection(section, subsection)
368 CALL section_release(subsection)
369
370 CALL create_update_section(subsection)
371 CALL section_add_subsection(section, subsection)
372 CALL section_release(subsection)
373
374 CALL create_max_disp_section(subsection)
375 CALL section_add_subsection(section, subsection)
376 CALL section_release(subsection)
377
378 END SUBROUTINE create_mc_section
379
380! **************************************************************************************************
381!> \brief ...
382!> \param section will contain the AVBMC parameters for MC
383!> \author matt
384! **************************************************************************************************
385 SUBROUTINE create_avbmc_section(section)
386 TYPE(section_type), POINTER :: section
387
388 TYPE(keyword_type), POINTER :: keyword
389
390 cpassert(.NOT. ASSOCIATED(section))
391
392 CALL section_create(section, __location__, name="avbmc", &
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.)
397
398 NULLIFY (keyword)
399
400 CALL keyword_create( &
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)
405 CALL section_add_keyword(section, keyword)
406 CALL keyword_release(keyword)
407
408 CALL keyword_create(keyword, __location__, name="AVBMC_ATOM", &
409 description="The target atom for an AVBMC swap move for each molecule type.", &
410 usage="AVBMC_ATOM {integer} {integer} ... ", &
411 n_var=-1, type_of_var=integer_t)
412 CALL section_add_keyword(section, keyword)
413 CALL keyword_release(keyword)
414
415 CALL keyword_create(keyword, __location__, name="AVBMC_RMIN", &
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)
419 CALL section_add_keyword(section, keyword)
420 CALL keyword_release(keyword)
421
422 CALL keyword_create(keyword, __location__, name="AVBMC_RMAX", &
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)
426 CALL section_add_keyword(section, keyword)
427 CALL keyword_release(keyword)
428
429 END SUBROUTINE create_avbmc_section
430
431! **************************************************************************************************
432!> \brief ...
433!> \param section will contain the probabilities for attempting each move
434!> type in Monte Carlo
435!> \author matt
436! **************************************************************************************************
437 SUBROUTINE create_move_prob_section(section)
438 TYPE(section_type), POINTER :: section
439
440 TYPE(keyword_type), POINTER :: keyword
441 TYPE(section_type), POINTER :: subsection
442
443 cpassert(.NOT. ASSOCIATED(section))
444
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.)
448
449 NULLIFY (keyword, subsection)
450
451 CALL keyword_create(keyword, __location__, name="PMHMC", &
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)
455 CALL section_add_keyword(section, keyword)
456 CALL keyword_release(keyword)
457
458 CALL keyword_create(keyword, __location__, name="PMTRANS", &
459 description="The probability of attempting a molecule translation.", &
460 usage="PMTRANS {real}", &
461 type_of_var=real_t)
462 CALL section_add_keyword(section, keyword)
463 CALL keyword_release(keyword)
464
465 CALL keyword_create(keyword, __location__, name="PMCLTRANS", &
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)
469 CALL section_add_keyword(section, keyword)
470 CALL keyword_release(keyword)
471
472 CALL keyword_create(keyword, __location__, name="PMAVBMC", &
473 description="The probability of attempting an AVBMC swap move.", &
474 usage="PMAVBMC {real}", &
475 default_r_val=0.0e0_dp)
476 CALL section_add_keyword(section, keyword)
477 CALL keyword_release(keyword)
478
479 CALL keyword_create(keyword, __location__, name="PMTRAION", &
480 description="The probability of attempting a conformational change.", &
481 usage="PMTRAION {real}", &
482 type_of_var=real_t)
483 CALL section_add_keyword(section, keyword)
484 CALL keyword_release(keyword)
485
486 CALL keyword_create(keyword, __location__, name="PMSWAP", &
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)
490 CALL section_add_keyword(section, keyword)
491 CALL keyword_release(keyword)
492
493 CALL keyword_create(keyword, __location__, name="PMVOLUME", &
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)
497 CALL section_add_keyword(section, keyword)
498 CALL keyword_release(keyword)
499
500 CALL create_mol_prob_section(subsection)
501 CALL section_add_subsection(section, subsection)
502 CALL section_release(subsection)
503
504 CALL create_box_prob_section(subsection)
505 CALL section_add_subsection(section, subsection)
506 CALL section_release(subsection)
507
508 END SUBROUTINE create_move_prob_section
509
510! **************************************************************************************************
511!> \brief ...
512!> \param section will contain the probabilities for attempting various moves
513!> on the various molecule types present in the system
514!> \author matt
515! **************************************************************************************************
516 SUBROUTINE create_mol_prob_section(section)
517 TYPE(section_type), POINTER :: section
518
519 TYPE(keyword_type), POINTER :: keyword
520
521 cpassert(.NOT. ASSOCIATED(section))
522
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.)
527
528 NULLIFY (keyword)
529
530 CALL keyword_create(keyword, __location__, name="PMAVBMC_MOL", &
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)
534 CALL section_add_keyword(section, keyword)
535 CALL keyword_release(keyword)
536
537 CALL keyword_create(keyword, __location__, name="PMSWAP_MOL", &
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)
541 CALL section_add_keyword(section, keyword)
542 CALL keyword_release(keyword)
543
544 CALL keyword_create(keyword, __location__, name="PMROT_MOL", &
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)
548 CALL section_add_keyword(section, keyword)
549 CALL keyword_release(keyword)
550
551 CALL keyword_create(keyword, __location__, name="PMTRAION_MOL", &
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)
555 CALL section_add_keyword(section, keyword)
556 CALL keyword_release(keyword)
557
558 CALL keyword_create(keyword, __location__, name="PMTRANS_MOL", &
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)
562 CALL section_add_keyword(section, keyword)
563 CALL keyword_release(keyword)
564
565 END SUBROUTINE create_mol_prob_section
566
567! **************************************************************************************************
568!> \brief ...
569!> \param section will contain the probabilities for attempting various moves
570!> on the box where the variable is present
571!> \author matt
572! **************************************************************************************************
573 SUBROUTINE create_box_prob_section(section)
574 TYPE(section_type), POINTER :: section
575
576 TYPE(keyword_type), POINTER :: keyword
577
578 cpassert(.NOT. ASSOCIATED(section))
579
580 CALL section_create(section, __location__, name="BOX_PROBABILITIES", &
581 description="Probabilities of attempting various moves types on "// &
582 "the box.", &
583 n_keywords=2, n_subsections=0, repeats=.false.)
584
585 NULLIFY (keyword)
586
587 CALL keyword_create(keyword, __location__, name="PMHMC_BOX", &
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)
591 CALL section_add_keyword(section, keyword)
592 CALL keyword_release(keyword)
593
594 CALL keyword_create(keyword, __location__, name="PMVOL_BOX", &
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)
598 CALL section_add_keyword(section, keyword)
599 CALL keyword_release(keyword)
600
601 CALL keyword_create(keyword, __location__, name="PMCLUS_BOX", &
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)
605 CALL section_add_keyword(section, keyword)
606 CALL keyword_release(keyword)
607
608 END SUBROUTINE create_box_prob_section
609
610! **************************************************************************************************
611!> \brief ...
612!> \param section will contain the frequency for updating maximum
613!> displacements for various moves
614!> \author matt
615! **************************************************************************************************
616 SUBROUTINE create_update_section(section)
617 TYPE(section_type), POINTER :: section
618
619 TYPE(keyword_type), POINTER :: keyword
620
621 cpassert(.NOT. ASSOCIATED(section))
622
623 CALL section_create(section, __location__, name="MOVE_UPDATES", &
624 description="Frequency for updating move maximum displacements.", &
625 n_keywords=2, n_subsections=0, repeats=.false.)
626
627 NULLIFY (keyword)
628
629 CALL keyword_create(keyword, __location__, name="IUPVOLUME", &
630 description="Every iupvolume steps update maximum volume displacement.", &
631 usage="IUPVOLUME {integer}", &
632 default_i_val=10000)
633 CALL section_add_keyword(section, keyword)
634 CALL keyword_release(keyword)
635
636 CALL keyword_create(keyword, __location__, name="IUPTRANS", &
637 description="Every iuptrans steps update maximum "// &
638 "translation/rotation/configurational changes.", &
639 usage="IUPTRANS {integer}", &
640 default_i_val=10000)
641 CALL section_add_keyword(section, keyword)
642 CALL keyword_release(keyword)
643
644 CALL keyword_create(keyword, __location__, name="IUPCLTRANS", &
645 description="Every iupcltrans steps update maximum cluster translation.", &
646 usage="IUPCLTRANS {integer}", &
647 default_i_val=10000)
648 CALL section_add_keyword(section, keyword)
649 CALL keyword_release(keyword)
650
651 END SUBROUTINE create_update_section
652
653! **************************************************************************************************
654!> \brief ...
655!> \param section will contain the maximum displacements for various moves
656!> \author matt
657! **************************************************************************************************
658 SUBROUTINE create_max_disp_section(section)
659 TYPE(section_type), POINTER :: section
660
661 TYPE(section_type), POINTER :: subsection
662
663 cpassert(.NOT. ASSOCIATED(section))
664
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.)
668
669 NULLIFY (subsection)
670
671 CALL create_mol_disp_section(subsection)
672 CALL section_add_subsection(section, subsection)
673 CALL section_release(subsection)
674
675 CALL create_box_disp_section(subsection)
676 CALL section_add_subsection(section, subsection)
677 CALL section_release(subsection)
678
679 END SUBROUTINE create_max_disp_section
680
681! **************************************************************************************************
682!> \brief ...
683!> \param section will contain the maximum displacements for all moves which
684!> require a value for each molecule type
685!> \author matt
686! **************************************************************************************************
687 SUBROUTINE create_mol_disp_section(section)
688 TYPE(section_type), POINTER :: section
689
690 TYPE(keyword_type), POINTER :: keyword
691
692 cpassert(.NOT. ASSOCIATED(section))
693
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.)
698
699 NULLIFY (keyword)
700
701 CALL keyword_create(keyword, __location__, name="RMBOND", &
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)
705 CALL section_add_keyword(section, keyword)
706 CALL keyword_release(keyword)
707
708 CALL keyword_create(keyword, __location__, name="RMANGLE", &
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)
712 CALL section_add_keyword(section, keyword)
713 CALL keyword_release(keyword)
714
715 CALL keyword_create(keyword, __location__, name="RMDIHEDRAL", &
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)
719 CALL section_add_keyword(section, keyword)
720 CALL keyword_release(keyword)
721
722 CALL keyword_create(keyword, __location__, name="RMROT", &
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)
726 CALL section_add_keyword(section, keyword)
727 CALL keyword_release(keyword)
728
729 CALL keyword_create(keyword, __location__, name="RMTRANS", &
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)
733 CALL section_add_keyword(section, keyword)
734 CALL keyword_release(keyword)
735
736 END SUBROUTINE create_mol_disp_section
737
738! **************************************************************************************************
739!> \brief ...
740!> \param section will contain the maximum displacements for any move that
741!> is done on each simulation box
742!> \author matt
743! **************************************************************************************************
744 SUBROUTINE create_box_disp_section(section)
745 TYPE(section_type), POINTER :: section
746
747 TYPE(keyword_type), POINTER :: keyword
748
749 cpassert(.NOT. ASSOCIATED(section))
750
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.)
755
756 NULLIFY (keyword)
757
758 CALL keyword_create(keyword, __location__, name="RMVOLUME", &
759 description="Maximum volume displacement, in angstrom**3.", &
760 usage="RMVOLUME {real}", &
761 type_of_var=real_t)
762 CALL section_add_keyword(section, keyword)
763 CALL keyword_release(keyword)
764
765 CALL keyword_create(keyword, __location__, name="RMCLTRANS", &
766 description="Maximum translational displacement, in angstroms, for each cluster.", &
767 usage="RMCLTRANS {real}", &
768 default_r_val=1.0e0_dp)
769 CALL section_add_keyword(section, keyword)
770 CALL keyword_release(keyword)
771
772 END SUBROUTINE create_box_disp_section
773
774! **************************************************************************************************
775!> \brief creates the geometry optimization section
776!> \param section the section to be created
777!> \param location ...
778!> \param label ...
779!> \param description ...
780!> \param just_optimizers ...
781!> \param use_model_hessian ...
782!> \par History
783!> 01.2020 keywords related to Space Group Symmetry added [pcazade]
784!> \author teo
785! **************************************************************************************************
786 RECURSIVE SUBROUTINE create_geoopt_section(section, location, label, description, just_optimizers, use_model_hessian)
787 TYPE(section_type), POINTER :: section
788 CHARACTER(LEN=*), INTENT(IN) :: location, label, description
789 LOGICAL, INTENT(IN) :: just_optimizers, use_model_hessian
790
791 TYPE(keyword_type), POINTER :: keyword
792 TYPE(section_type), POINTER :: print_key, subsection
793
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.)
797
798 NULLIFY (keyword)
799 IF (.NOT. just_optimizers) THEN
800 CALL keyword_create(keyword, __location__, name="TYPE", &
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."), &
807 default_i_val=default_minimization_method_id)
808 CALL section_add_keyword(section, keyword)
809 CALL keyword_release(keyword)
810 END IF
811
812 CALL keyword_create( &
813 keyword, __location__, name="OPTIMIZER", &
814 variants=["MINIMIZER"], &
815 citations=[byrd1995], &
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"), &
825 default_i_val=default_bfgs_method_id)
826 CALL section_add_keyword(section, keyword)
827 CALL keyword_release(keyword)
828
829 CALL keyword_create(keyword, __location__, name="MAX_ITER", &
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}", &
833 default_i_val=200)
834 CALL section_add_keyword(section, keyword)
835 CALL keyword_release(keyword)
836
837 CALL keyword_create(keyword, __location__, name="MAX_DR", &
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")
842 CALL section_add_keyword(section, keyword)
843 CALL keyword_release(keyword)
844
845 CALL keyword_create(keyword, __location__, name="MAX_FORCE", &
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")
849 CALL section_add_keyword(section, keyword)
850 CALL keyword_release(keyword)
851
852 CALL keyword_create(keyword, __location__, name="RMS_DR", &
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)
857 CALL section_add_keyword(section, keyword)
858 CALL keyword_release(keyword)
859
860 CALL keyword_create(keyword, __location__, name="RMS_FORCE", &
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)
864 CALL section_add_keyword(section, keyword)
865 CALL keyword_release(keyword)
866
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)
870 CALL section_add_keyword(section, keyword)
871 CALL keyword_release(keyword)
872
873 ! collects keywords related to Space Group Symmetry
874 CALL keyword_create( &
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.)
883 CALL section_add_keyword(section, keyword)
884 CALL keyword_release(keyword)
885
886 ! collects keywords related to Space Group Symmetry analysis
887 CALL keyword_create( &
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.)
894 CALL section_add_keyword(section, keyword)
895 CALL keyword_release(keyword)
896
897 ! collects keywords related to precision for finding the space group
898 CALL keyword_create( &
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.)
904 CALL section_add_keyword(section, keyword)
905 CALL keyword_release(keyword)
906
907 ! collects keywords related to reduction of symmetry due to an external field
908 CALL keyword_create( &
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])
916 CALL section_add_keyword(section, keyword)
917 CALL keyword_release(keyword)
918
919 ! collects keywords related to ranges of atoms to symmetrize
920 CALL keyword_create( &
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)
926 CALL section_add_keyword(section, keyword)
927 CALL keyword_release(keyword)
928
929 CALL keyword_create( &
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.)
933 CALL section_add_keyword(section, keyword)
934 CALL keyword_release(keyword)
935
936 CALL create_lbfgs_section(subsection)
937 CALL section_add_subsection(section, subsection)
938 CALL section_release(subsection)
939
940 CALL create_cg_section(subsection)
941 CALL section_add_subsection(section, subsection)
942 CALL section_release(subsection)
943
944 CALL create_bfgs_section(subsection, use_model_hessian)
945 CALL section_add_subsection(section, subsection)
946 CALL section_release(subsection)
947
948 IF (.NOT. just_optimizers) THEN
949 ! Transition states section
950 CALL create_ts_section(subsection)
951 CALL section_add_subsection(section, subsection)
952 CALL section_release(subsection)
953
954 ! Create the PRINT subsection
955 NULLIFY (subsection)
956 CALL section_create(subsection, __location__, name="PRINT", &
957 description="Controls the printing properties during a geometry optimization run", &
958 n_keywords=0, n_subsections=1, repeats=.true.)
959 NULLIFY (print_key)
961 print_key, __location__, "program_run_info", &
962 description="Controls the printing of basic information during the Geometry Optimization", &
963 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
964 CALL section_add_subsection(subsection, print_key)
965 CALL section_release(print_key)
966 CALL section_add_subsection(section, subsection)
967 CALL section_release(subsection)
968 END IF
969
970 END SUBROUTINE create_geoopt_section
971
972! **************************************************************************************************
973!> \brief creates the section for the shell-core optimization
974!> \param section the section to be created
975!> \author Caino
976! **************************************************************************************************
977 SUBROUTINE create_shellcore_opt_section(section)
978 TYPE(section_type), POINTER :: section
979
980 TYPE(section_type), POINTER :: print_key, subsection
981
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.)
990
991 NULLIFY (print_key, subsection)
992
993 ! Create the PRINT subsection
994 NULLIFY (subsection)
995 CALL section_create(subsection, __location__, name="PRINT", &
996 description="Controls the printing properties during a shell-core optimization procedure", &
997 n_keywords=0, n_subsections=1, repeats=.true.)
998 NULLIFY (print_key)
999 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
1000 description="Controls the printing of basic information during the Optimization", &
1001 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
1002 CALL section_add_subsection(subsection, print_key)
1003 CALL section_release(print_key)
1004 CALL section_add_subsection(section, subsection)
1005 CALL section_release(subsection)
1006
1007 END SUBROUTINE create_shellcore_opt_section
1008
1009! **************************************************************************************************
1010!> \brief creates the section for the cell optimization
1011!> \param section the section to be created
1012!> \author Teodoro Laino [tlaino] - University of Zurich - 03.2008
1013! **************************************************************************************************
1014 SUBROUTINE create_cell_opt_section(section)
1015 TYPE(section_type), POINTER :: section
1016
1017 TYPE(keyword_type), POINTER :: keyword
1018 TYPE(section_type), POINTER :: print_key, subsection
1019
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.)
1031
1032 NULLIFY (keyword, print_key, subsection)
1033 CALL keyword_create( &
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)
1039 CALL section_add_keyword(section, keyword)
1040 CALL keyword_release(keyword)
1041
1042 CALL keyword_create( &
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", &
1047 default_r_vals=[cp_unit_to_cp2k(100.0_dp, "bar"), 0.0_dp, 0.0_dp, &
1048 0.0_dp, cp_unit_to_cp2k(100.0_dp, "bar"), 0.0_dp, &
1049 0.0_dp, 0.0_dp, cp_unit_to_cp2k(100.0_dp, "bar")], n_var=-1)
1050 CALL section_add_keyword(section, keyword)
1051 CALL keyword_release(keyword)
1052
1053 CALL keyword_create(keyword, __location__, name="KEEP_VOLUME", &
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.)
1059 CALL section_add_keyword(section, keyword)
1060 CALL keyword_release(keyword)
1061
1062 CALL keyword_create(keyword, __location__, name="KEEP_ANGLES", &
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.)
1070 CALL section_add_keyword(section, keyword)
1071 CALL keyword_release(keyword)
1072
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.)
1081 CALL section_add_keyword(section, keyword)
1082 CALL keyword_release(keyword)
1083
1084 CALL keyword_create( &
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"), &
1096 enum_i_vals=[fix_none, fix_x, fix_y, fix_z, fix_xy, fix_xz, fix_yz], &
1097 default_i_val=fix_none)
1098 CALL section_add_keyword(section, keyword)
1099 CALL keyword_release(keyword)
1100
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", &
1105 default_r_val=cp_unit_to_cp2k(100.0_dp, "bar"))
1106 CALL section_add_keyword(section, keyword)
1107 CALL keyword_release(keyword)
1108
1109 ! Create the PRINT subsection
1110 NULLIFY (subsection)
1111 CALL section_create(subsection, __location__, name="PRINT", &
1112 description="Controls the printing properties during a geometry optimization run", &
1113 n_keywords=0, n_subsections=1, repeats=.true.)
1114 NULLIFY (print_key)
1115 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
1116 description="Controls the printing of basic information during the Geometry Optimization", &
1117 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
1118 CALL section_add_subsection(subsection, print_key)
1119 CALL section_release(print_key)
1120 CALL cp_print_key_section_create(print_key, __location__, "cell", &
1121 description="Controls the printing of the cell eveytime a calculation using a new cell is started.", &
1122 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__", &
1123 unit_str="angstrom")
1124 CALL section_add_subsection(subsection, print_key)
1125 CALL section_release(print_key)
1126 CALL section_add_subsection(section, subsection)
1127 CALL section_release(subsection)
1128
1129 END SUBROUTINE create_cell_opt_section
1130
1131! **************************************************************************************************
1132!> \brief creates the section for tuning transition states search
1133!> \param section the section to be created
1134!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1135! **************************************************************************************************
1136 SUBROUTINE create_ts_section(section)
1137 TYPE(section_type), POINTER :: section
1138
1139 TYPE(keyword_type), POINTER :: keyword
1140 TYPE(section_type), POINTER :: print_key, subsection, subsection2, &
1141 subsection3
1142
1143! Create the Transition State subsection
1144
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.)
1149
1150 CALL keyword_create(keyword, __location__, name="METHOD", &
1151 description="Specify which kind of method to use for locating transition states", &
1152 citations=[henkelman1999], &
1153 usage="METHOD (DIMER)", &
1154 enum_c_vals=s2a("DIMER"), &
1155 enum_desc=s2a("Uses the dimer method to optimize transition states."), &
1156 enum_i_vals=[default_dimer_method_id], &
1157 default_i_val=default_dimer_method_id)
1158 CALL section_add_keyword(section, keyword)
1159 CALL keyword_release(keyword)
1160
1161 CALL section_create(subsection, __location__, name="DIMER", &
1162 description="Specifies parameters for Dimer Method", &
1163 n_keywords=0, n_subsections=1, repeats=.false.)
1164
1165 CALL keyword_create(keyword, __location__, name="DR", &
1166 description="This keyword sets the value for the DR parameter.", &
1167 usage="DR {real}", unit_str='angstrom', &
1168 default_r_val=cp_unit_to_cp2k(0.01_dp, "angstrom"))
1169 CALL section_add_keyword(subsection, keyword)
1170 CALL keyword_release(keyword)
1171
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"), &
1188 enum_i_vals=[dimer_init_random, dimer_init_molden], &
1189 default_i_val=dimer_init_random)
1190 CALL section_add_keyword(subsection, keyword)
1191 CALL keyword_release(keyword)
1192
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)
1197 CALL section_add_keyword(subsection, keyword)
1198 CALL keyword_release(keyword)
1199
1200 CALL keyword_create(keyword, __location__, name="VIB_INDEX", &
1201 description="The index of one or more vibrational normal modes "// &
1202 "from the file whose linear combination will form the initial "// &
1203 "dimer vector.", &
1204 usage="VIB_INDEX {integer} {integer} .. {integer}", repeats=.true., &
1205 n_var=-1, default_i_vals=[1], type_of_var=integer_t)
1206 CALL section_add_keyword(subsection, keyword)
1207 CALL keyword_release(keyword)
1208
1209 CALL keyword_create(keyword, __location__, name="VIB_WEIGHT", &
1210 description="The weight of one or more vibrational normal modes "// &
1211 "from the file whose linear combination will form the initial "// &
1212 "dimer vector.", &
1213 usage="VIB_WEIGHT {real} {real} .. {real}", repeats=.true., &
1214 n_var=-1, default_r_vals=[1.0_dp], type_of_var=real_t)
1215 CALL section_add_keyword(subsection, keyword)
1216 CALL keyword_release(keyword)
1217
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.)
1223 CALL section_add_keyword(subsection, keyword)
1224 CALL keyword_release(keyword)
1225
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', &
1230 default_r_val=cp_unit_to_cp2k(5.0_dp, "deg"))
1231 CALL section_add_keyword(subsection, keyword)
1232 CALL keyword_release(keyword)
1233
1234 CALL keyword_create(keyword, __location__, name="K-DIMER", &
1235 description="This keyword activates the constrained k-dimer translation"// &
1236 " J. Chem. Phys. 141, 164111 (2014).", &
1237 citations=[henkelman2014], &
1238 usage="K-DIMER {logica}", &
1239 default_l_val=.false., &
1240 lone_keyword_l_val=.false.)
1241 CALL section_add_keyword(subsection, keyword)
1242 CALL keyword_release(keyword)
1243
1244 CALL keyword_create(keyword, __location__, name="BETA", &
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)
1249 CALL section_add_keyword(subsection, keyword)
1250 CALL keyword_release(keyword)
1251
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)
1258 CALL section_create(subsection3, __location__, name="PRINT", &
1259 description="Controls the printing properties during the dimer rotation optimization run", &
1260 n_keywords=0, n_subsections=1, repeats=.true.)
1261 NULLIFY (print_key)
1262
1263 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_RUN_INFO", &
1264 description="Controls the printing of basic information during the Geometry Optimization", &
1265 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
1266 CALL section_add_subsection(subsection3, print_key)
1267 CALL section_release(print_key)
1268
1269 CALL cp_print_key_section_create(print_key, __location__, "ROTATIONAL_INFO", &
1270 description="Controls the printing basic info during the cleaning of the "// &
1271 "rotational degrees of freedom.", print_level=low_print_level, &
1272 add_last=add_last_numeric, filename="__STD_OUT__")
1273 CALL keyword_create(keyword, __location__, name="COORDINATES", &
1274 description="Prints atomic coordinates after rotation", &
1275 default_l_val=.false., lone_keyword_l_val=.true.)
1276 CALL section_add_keyword(print_key, keyword)
1277 CALL keyword_release(keyword)
1278 CALL section_add_subsection(subsection3, print_key)
1279 CALL section_release(print_key)
1280
1281 CALL section_add_subsection(subsection2, subsection3)
1282 CALL section_release(subsection3)
1283 CALL section_add_subsection(subsection, subsection2)
1284 CALL section_release(subsection2)
1285
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)
1294 CALL section_add_keyword(subsection2, keyword)
1295 CALL keyword_release(keyword)
1296 CALL section_add_subsection(subsection, subsection2)
1297 CALL section_release(subsection2)
1298
1299 CALL section_add_subsection(section, subsection)
1300 CALL section_release(subsection)
1301
1302 END SUBROUTINE create_ts_section
1303
1304! **************************************************************************************************
1305!> \brief creates the BFGS section
1306!> \param section the section to be created
1307!> \param use_model_hessian ...
1308!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1309! **************************************************************************************************
1310 SUBROUTINE create_bfgs_section(section, use_model_hessian)
1311 TYPE(section_type), POINTER :: section
1312 LOGICAL, INTENT(IN) :: use_model_hessian
1313
1314 TYPE(keyword_type), POINTER :: keyword
1315 TYPE(section_type), POINTER :: print_key
1316
1317! create the BFGS subsection
1318
1319 NULLIFY (section, keyword, print_key)
1320 CALL section_create(section, __location__, name="BFGS", &
1321 description="Provides parameters to tune the BFGS optimization", &
1322 n_keywords=0, n_subsections=1, repeats=.false.)
1323
1324 CALL keyword_create(keyword, __location__, name="METHOD", &
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"), &
1329 enum_i_vals=[bfgs_direct, bfgs_inverse], default_i_val=bfgs_direct)
1330 CALL section_add_keyword(section, keyword)
1331 CALL keyword_release(keyword)
1332
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', &
1337 default_r_val=cp_unit_to_cp2k(0.25_dp, "angstrom"))
1338 CALL section_add_keyword(section, keyword)
1339 CALL keyword_release(keyword)
1340
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", &
1345 citations=[lindh1995], &
1346 default_l_val=use_model_hessian, lone_keyword_l_val=.true.)
1347 CALL section_add_keyword(section, keyword)
1348 CALL keyword_release(keyword)
1349
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.)
1356 CALL section_add_keyword(section, keyword)
1357 CALL keyword_release(keyword)
1358
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.)
1364 CALL section_add_keyword(section, keyword)
1365 CALL keyword_release(keyword)
1366
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}", &
1370 default_lc_val="")
1371 CALL section_add_keyword(section, keyword)
1372 CALL keyword_release(keyword)
1373
1374 CALL cp_print_key_section_create(print_key, __location__, "RESTART", &
1375 description="Controls the printing of Hessian Restart file", &
1376 print_level=low_print_level, add_last=add_last_numeric, filename="BFGS", &
1377 common_iter_levels=2)
1378 CALL section_add_subsection(section, print_key)
1379 CALL section_release(print_key)
1380
1381 END SUBROUTINE create_bfgs_section
1382
1383! **************************************************************************************************
1384!> \brief creates the CG section
1385!> \param section the section to be created
1386!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1387! **************************************************************************************************
1388 SUBROUTINE create_cg_section(section)
1389 TYPE(section_type), POINTER :: section
1390
1391 TYPE(keyword_type), POINTER :: keyword
1392 TYPE(section_type), POINTER :: subsection, subsubsection
1393
1394! create the CG subsection
1395
1396 NULLIFY (section, subsection, subsubsection, keyword)
1397 CALL section_create(section, __location__, name="CG", &
1398 description="Provides parameters to tune the conjugate gradient optimization", &
1399 n_keywords=0, n_subsections=1, repeats=.false.)
1400
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}", &
1405 default_i_val=0)
1406 CALL section_add_keyword(section, keyword)
1407 CALL keyword_release(keyword)
1408
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"// &
1413 " performed.", &
1414 usage="RESTART_LIMIT {real}", &
1415 default_r_val=0.9_dp)
1416 CALL section_add_keyword(section, keyword)
1417 CALL keyword_release(keyword)
1418
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.)
1423 CALL section_add_keyword(section, keyword)
1424 CALL keyword_release(keyword)
1425
1426 ! Line Search section
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.)
1430
1431 CALL keyword_create(keyword, __location__, name="TYPE", &
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", &
1435 default_i_val=ls_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)"), &
1441 enum_i_vals=[ls_2pnt, ls_gold, ls_fit])
1442 CALL section_add_keyword(subsection, keyword)
1443 CALL keyword_release(keyword)
1444
1445 ! 2PNT
1446 NULLIFY (subsubsection)
1447 CALL section_create(subsubsection, __location__, name="2PNT", &
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.)
1450
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)
1455 CALL section_add_keyword(subsubsection, keyword)
1456 CALL keyword_release(keyword)
1457
1458 CALL keyword_create( &
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.)
1463 CALL section_add_keyword(subsubsection, keyword)
1464 CALL keyword_release(keyword)
1465
1466 CALL section_add_subsection(subsection, subsubsection)
1467 CALL section_release(subsubsection)
1468
1469 ! GOLD
1470 NULLIFY (subsubsection)
1471 CALL section_create(subsubsection, __location__, name="GOLD", &
1472 description="Provides parameters to tune the line search for the gold search.", &
1473 n_keywords=0, n_subsections=1, repeats=.false.)
1474
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)
1480 CALL section_add_keyword(subsubsection, keyword)
1481 CALL keyword_release(keyword)
1482
1483 CALL keyword_create(keyword, __location__, name="BRACK_LIMIT", &
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)
1487 CALL section_add_keyword(subsubsection, keyword)
1488 CALL keyword_release(keyword)
1489
1490 CALL keyword_create(keyword, __location__, name="BRENT_TOL", &
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)
1494 CALL section_add_keyword(subsubsection, keyword)
1495 CALL keyword_release(keyword)
1496
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}", &
1501 default_i_val=100)
1502 CALL section_add_keyword(subsubsection, keyword)
1503 CALL keyword_release(keyword)
1504 CALL section_add_subsection(subsection, subsubsection)
1505 CALL section_release(subsubsection)
1506
1507 CALL section_add_subsection(section, subsection)
1508 CALL section_release(subsection)
1509 END SUBROUTINE create_cg_section
1510
1511! **************************************************************************************************
1512!> \brief creates the LBFGS section
1513!> \param section the section to be created
1514!> \author Teodoro Laino [tlaino] - University of Zurich - 01.2008
1515! **************************************************************************************************
1516 SUBROUTINE create_lbfgs_section(section)
1517 TYPE(section_type), POINTER :: section
1518
1519 TYPE(keyword_type), POINTER :: keyword
1520
1521! create the LBFGS section
1522
1523 NULLIFY (section, keyword)
1524 CALL section_create(section, __location__, name="LBFGS", &
1525 description="Provides parameters to tune the limited memory BFGS (LBFGS) optimization", &
1526 n_keywords=0, n_subsections=1, repeats=.false., &
1527 citations=[byrd1995])
1528
1529 CALL keyword_create(keyword, __location__, name="MAX_H_RANK", &
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}", &
1535 default_i_val=5)
1536 CALL section_add_keyword(section, keyword)
1537 CALL keyword_release(keyword)
1538
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}", &
1543 default_i_val=20)
1544 CALL section_add_keyword(section, keyword)
1545 CALL keyword_release(keyword)
1546
1547 CALL keyword_create(keyword, __location__, name="PRINT_LEVEL", &
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"), &
1557 enum_i_vals=[silent_lbfgs, low_lbfgs, medium_lbfgs, &
1559 default_i_val=low_print_level)
1560 CALL section_add_keyword(section, keyword)
1561 CALL keyword_release(keyword)
1562
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)
1569 CALL section_add_keyword(section, keyword)
1570 CALL keyword_release(keyword)
1571
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)
1578 CALL section_add_keyword(section, keyword)
1579 CALL keyword_release(keyword)
1580
1581 CALL keyword_create( &
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)
1586 CALL section_add_keyword(section, keyword)
1587 CALL keyword_release(keyword)
1588
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.", &
1593 default_i_val=-1)
1594 CALL section_add_keyword(section, keyword)
1595 CALL keyword_release(keyword)
1596
1597 END SUBROUTINE create_lbfgs_section
1598
1599! **************************************************************************************************
1600!> \brief creates the flexible_partitioning section
1601!> \param section the section to be created
1602!> \author Joost VandeVondele [04.2006]
1603! **************************************************************************************************
1604 SUBROUTINE create_fp_section(section)
1605 TYPE(section_type), POINTER :: section
1606
1607 TYPE(keyword_type), POINTER :: keyword
1608 TYPE(section_type), POINTER :: print_key
1609
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.)
1614
1615 NULLIFY (keyword, print_key)
1616
1617 CALL keyword_create(keyword, __location__, name="CENTRAL_ATOM", &
1618 description="Specifies the central atom.", &
1619 usage="CENTRAL_ATOM {integer}", &
1620 n_var=1, type_of_var=integer_t)
1621 CALL section_add_keyword(section, keyword)
1622 CALL keyword_release(keyword)
1623
1624 CALL keyword_create(keyword, __location__, name="INNER_ATOMS", &
1625 description="Specifies the list of atoms that should remain close to the central atom.", &
1626 usage="INNER_ATOMS {integer} {integer} .. {integer}", &
1627 n_var=-1, type_of_var=integer_t)
1628 CALL section_add_keyword(section, keyword)
1629 CALL keyword_release(keyword)
1630
1631 CALL keyword_create(keyword, __location__, name="OUTER_ATOMS", &
1632 description="Specifies the list of atoms that should remain far from the central atom.", &
1633 usage="OUTER_ATOMS {integer} {integer} .. {integer}", &
1634 n_var=-1, type_of_var=integer_t)
1635 CALL section_add_keyword(section, keyword)
1636 CALL keyword_release(keyword)
1637
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")
1642 CALL section_add_keyword(section, keyword)
1643 CALL keyword_release(keyword)
1644
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")
1649 CALL section_add_keyword(section, keyword)
1650 CALL keyword_release(keyword)
1651
1652 CALL keyword_create(keyword, __location__, name="STRENGTH", &
1653 description="Sets the force constant of the repulsive harmonic potential", &
1654 usage="STRENGTH 1.0", default_r_val=1.0_dp)
1655 CALL section_add_keyword(section, keyword)
1656 CALL keyword_release(keyword)
1657
1658 CALL keyword_create(keyword, __location__, name="BIAS", &
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.)
1661 CALL section_add_keyword(section, keyword)
1662 CALL keyword_release(keyword)
1663
1664 CALL keyword_create(keyword, __location__, name="TEMPERATURE", &
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')
1668 CALL section_add_keyword(section, keyword)
1669 CALL keyword_release(keyword)
1670
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')
1674 CALL section_add_keyword(section, keyword)
1675 CALL keyword_release(keyword)
1676
1677 CALL cp_print_key_section_create(print_key, __location__, "WEIGHTS", &
1678 description="Controls the printing of FP info during flexible partitioning simulations.", &
1679 print_level=low_print_level, common_iter_levels=1, &
1680 filename="FLEXIBLE_PARTIONING")
1681 CALL section_add_subsection(section, print_key)
1682 CALL section_release(print_key)
1683
1684 CALL cp_print_key_section_create(print_key, __location__, "CONTROL", &
1685 description="Controls the printing of FP info at startup", &
1686 print_level=low_print_level, common_iter_levels=1, &
1687 filename="__STD_OUT__")
1688 CALL section_add_subsection(section, print_key)
1689 CALL section_release(print_key)
1690
1691 END SUBROUTINE create_fp_section
1692
1693! **************************************************************************************************
1694!> \brief ...
1695!> \param section will contain the driver section
1696!> \author mceriotti
1697! **************************************************************************************************
1698 SUBROUTINE create_driver_section(section)
1699 TYPE(section_type), POINTER :: section
1700
1701 TYPE(keyword_type), POINTER :: keyword
1702
1703 cpassert(.NOT. ASSOCIATED(section))
1704 CALL section_create(section, __location__, name="DRIVER", &
1705 description="This section defines the parameters needed to run in i-PI driver mode.", &
1706 citations=[ceriotti2014, kapil2016], &
1707 n_keywords=4, n_subsections=0, repeats=.false.)
1708
1709 NULLIFY (keyword)
1710 CALL keyword_create(keyword, __location__, name="unix", &
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.)
1714 CALL section_add_keyword(section, keyword)
1715 CALL keyword_release(keyword)
1716
1717 CALL keyword_create(keyword, __location__, name="port", &
1718 description="Port number for the i-PI server.", &
1719 usage="port <INTEGER>", &
1720 default_i_val=12345)
1721 CALL section_add_keyword(section, keyword)
1722 CALL keyword_release(keyword)
1723
1724 CALL keyword_create(keyword, __location__, name="host", &
1725 description="Host name for the i-PI server.", &
1726 usage="host <HOSTNAME>", &
1727 default_c_val="localhost")
1728 CALL section_add_keyword(section, keyword)
1729 CALL keyword_release(keyword)
1730
1731 CALL keyword_create(keyword, __location__, name="PREFIX", &
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")
1736 CALL section_add_keyword(section, keyword)
1737 CALL keyword_release(keyword)
1738
1739 CALL keyword_create(keyword, __location__, name="SLEEP_TIME", &
1740 description="Sleeping time while waiting for for driver commands [s].", &
1741 usage="SLEEP_TIME 0.1", &
1742 default_r_val=0.01_dp)
1743 CALL section_add_keyword(section, keyword)
1744 CALL keyword_release(keyword)
1745
1746 END SUBROUTINE create_driver_section
1747
1748! **************************************************************************************************
1749!> \brief creates the section for a path integral run
1750!> \param section will contain the pint section
1751!> \author fawzi
1752! **************************************************************************************************
1753 SUBROUTINE create_pint_section(section)
1754 TYPE(section_type), POINTER :: section
1755
1756 TYPE(keyword_type), POINTER :: keyword
1757 TYPE(section_type), POINTER :: print_key, subsection, subsubsection
1758
1759 cpassert(.NOT. ASSOCIATED(section))
1760 CALL section_create(section, __location__, name="PINT", &
1761 description="The section that controls a path integral run", &
1762 n_keywords=13, n_subsections=9, repeats=.false.)
1763 NULLIFY (keyword)
1764
1765 CALL keyword_create(keyword, __location__, name="p", &
1766 description="Specify number beads to use", repeats=.false., &
1767 default_i_val=3)
1768 CALL section_add_keyword(section, keyword)
1769 CALL keyword_release(keyword)
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)
1773 CALL section_add_keyword(section, keyword)
1774 CALL keyword_release(keyword)
1775 CALL keyword_create(keyword, __location__, name="num_steps", &
1776 description="Number of steps (if MAX_STEP is not explicitly given"// &
1777 " the program will perform this number of steps)", repeats=.false., &
1778 default_i_val=3)
1779 CALL section_add_keyword(section, keyword)
1780 CALL keyword_release(keyword)
1781 CALL keyword_create(keyword, __location__, name="MAX_STEP", &
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)
1785 CALL section_add_keyword(section, keyword)
1786 CALL keyword_release(keyword)
1787 CALL keyword_create(keyword, __location__, name="iteration", &
1788 description="Specify the iteration number from which it should be "// &
1789 "counted", default_i_val=0)
1790 CALL section_add_keyword(section, keyword)
1791 CALL keyword_release(keyword)
1792 CALL keyword_create(keyword, __location__, name="Temp", &
1793 description="The temperature you want to simulate", &
1794 default_r_val=cp_unit_to_cp2k(300._dp, "K"), &
1795 unit_str="K")
1796 CALL section_add_keyword(section, keyword)
1797 CALL keyword_release(keyword)
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.)
1802 CALL section_add_keyword(section, keyword)
1803 CALL keyword_release(keyword)
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")
1808 CALL section_add_keyword(section, keyword)
1809 CALL keyword_release(keyword)
1810 CALL keyword_create(keyword, __location__, name="dt", &
1811 description="timestep (might be subdivised in nrespa subtimesteps", &
1812 repeats=.false., &
1813 default_r_val=cp_unit_to_cp2k(1.0_dp, "fs"), &
1814 usage="dt 1.0", unit_str="fs")
1815 CALL section_add_keyword(section, keyword)
1816 CALL keyword_release(keyword)
1817 CALL keyword_create(keyword, __location__, name="HARM_INT", &
1818 description="integrator scheme for integrating the harmonic bead springs.", &
1819 usage="HARM_INT (NUMERIC|EXACT)", &
1820 default_i_val=integrate_numeric, &
1821 enum_c_vals=s2a("NUMERIC", "EXACT"), &
1822 enum_i_vals=[integrate_numeric, integrate_exact])
1823 CALL section_add_keyword(section, keyword)
1824 CALL keyword_release(keyword)
1825 CALL keyword_create(keyword, __location__, name="nrespa", &
1826 description="number of respa steps for the bead for each md step", &
1827 repeats=.false., default_i_val=5)
1828 CALL section_add_keyword(section, keyword)
1829 CALL keyword_release(keyword)
1830
1831 CALL keyword_create(keyword, __location__, name="transformation", &
1832 description="Specifies the coordinate transformation to use", &
1833 usage="TRANSFORMATION (NORMAL|STAGE)", &
1834 default_i_val=transformation_normal, &
1835 enum_c_vals=s2a("NORMAL", "STAGE"), &
1837
1838 CALL section_add_keyword(section, keyword)
1839 CALL keyword_release(keyword)
1840 CALL keyword_create(keyword, __location__, name="propagator", &
1841 description="Specifies the real time propagator to use", &
1842 usage="PROPAGATOR (PIMD|RPMD|CMD|BCMD)", &
1843 default_i_val=propagator_pimd, &
1844 enum_c_vals=s2a("PIMD", "RPMD", "CMD", "BCMD"), &
1846 CALL section_add_keyword(section, keyword)
1847 CALL keyword_release(keyword)
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.)
1854 CALL section_add_keyword(section, keyword)
1855 CALL keyword_release(keyword)
1856
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.)
1861 CALL keyword_create(keyword, __location__, name="Q_CENTROID", &
1862 description="Value of the thermostat mass of centroid degree of freedom", &
1863 repeats=.false., default_r_val=-1.0_dp)
1864 CALL section_add_keyword(subsection, keyword)
1865 CALL keyword_release(keyword)
1866 CALL keyword_create(keyword, __location__, name="Q_BEAD", &
1867 description="Value of the thermostat mass of non-centroid degrees of freedom", &
1868 repeats=.false., default_r_val=-1.0_dp)
1869 CALL section_add_keyword(subsection, keyword)
1870 CALL keyword_release(keyword)
1871 CALL keyword_create(keyword, __location__, name="MODEFACTOR", &
1872 description="mass scale factor for non-centroid degrees of freedom", &
1873 repeats=.false., default_r_val=1.0_dp)
1874 CALL section_add_keyword(subsection, keyword)
1875 CALL keyword_release(keyword)
1876 CALL keyword_create(keyword, __location__, name="GAMMA", &
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)
1880 CALL section_add_keyword(subsection, keyword)
1881 CALL keyword_release(keyword)
1882
1883 CALL section_add_subsection(section, subsection)
1884 CALL section_release(subsection)
1885
1886 CALL section_create(subsection, __location__, name="staging", &
1887 description="The section that controls the staging transformation", &
1888 n_keywords=2, n_subsections=0, repeats=.false.)
1889 CALL keyword_create(keyword, __location__, name="j", &
1890 description="Value of the j parameter for the staging transformation", &
1891 repeats=.false., default_i_val=2)
1892 CALL section_add_keyword(subsection, keyword)
1893 CALL keyword_release(keyword)
1894 CALL keyword_create(keyword, __location__, name="Q_END", &
1895 description="Value of the nose-hoover mass for the endbead (Q_end)", &
1896 repeats=.false., default_i_val=2)
1897 CALL section_add_keyword(subsection, keyword)
1898 CALL keyword_release(keyword)
1899 CALL section_add_subsection(section, subsection)
1900 CALL section_release(subsection)
1901
1902 CALL section_create(subsection, __location__, name="BEADS", &
1903 description="Sets positions and velocities of the beads", &
1904 n_keywords=0, n_subsections=2, &
1905 repeats=.false.)
1906 CALL create_coord_section(subsubsection, "BEADS")
1907 CALL section_add_subsection(subsection, subsubsection)
1908 CALL section_release(subsubsection)
1909 CALL create_velocity_section(subsubsection, "BEADS")
1910 CALL section_add_subsection(subsection, subsubsection)
1911 CALL section_release(subsubsection)
1912 CALL section_add_subsection(section, subsection)
1913 CALL section_release(subsection)
1914
1915 CALL section_create(subsection, __location__, name="NOSE", &
1916 description="Controls the Nose-Hoover thermostats", &
1917 n_keywords=1, n_subsections=2, &
1918 repeats=.false.)
1919 CALL keyword_create(keyword, __location__, name="nnos", &
1920 description="length of nose-hoover chain. 0 means no thermostat", &
1921 repeats=.false., default_i_val=2)
1922 CALL section_add_keyword(subsection, keyword)
1923 CALL keyword_release(keyword)
1924 CALL create_coord_section(subsubsection, "NOSE")
1925 CALL section_add_subsection(subsection, subsubsection)
1926 CALL section_release(subsubsection)
1927 CALL create_velocity_section(subsubsection, "NOSE")
1928 CALL section_add_subsection(subsection, subsubsection)
1929 CALL section_release(subsubsection)
1930 CALL section_add_subsection(section, subsection)
1931 CALL section_release(subsection)
1932
1933 CALL create_gle_section(subsection)
1934 CALL section_add_subsection(section, subsection)
1935 CALL section_release(subsection)
1936
1937 CALL section_create(subsection, __location__, name="PILE", &
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.", &
1942 citations=[ceriotti2010], &
1943 n_keywords=3, n_subsections=1, &
1944 repeats=.false.)
1945 CALL create_rng_section(subsubsection)
1946 CALL section_add_subsection(subsection, subsubsection)
1947 CALL section_release(subsubsection)
1948 CALL keyword_create(keyword, __location__, name="TAU", &
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)
1953 CALL section_add_keyword(subsection, keyword)
1954 CALL keyword_release(keyword)
1955 CALL keyword_create(keyword, __location__, name="LAMBDA", &
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)
1959 CALL section_add_keyword(subsection, keyword)
1960 CALL keyword_release(keyword)
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)
1966 CALL section_add_keyword(subsection, keyword)
1967 CALL keyword_release(keyword)
1968 CALL section_add_subsection(section, subsection)
1969 CALL section_release(subsection)
1970
1971 CALL section_create(subsection, __location__, name="PIGLET", &
1972 description="Controls the PI Generalized Langevin Equation thermostat."// &
1973 " Needs the exact harmonic integrator", &
1974 citations=[ceriotti2012], &
1975 n_keywords=4, n_subsections=2, &
1976 repeats=.false.)
1977 CALL create_rng_section(subsubsection)
1978 CALL section_add_subsection(subsection, subsubsection)
1979 CALL section_release(subsubsection)
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)", &
1986 repeats=.false., &
1987 type_of_var=real_t, n_var=-1)
1988 CALL section_add_keyword(subsubsection, keyword)
1989 CALL keyword_release(keyword)
1990 CALL section_add_subsection(subsection, subsubsection)
1991 CALL section_release(subsubsection)
1992 CALL keyword_create(keyword, __location__, name="NEXTRA_DOF", &
1993 description="Number of extra degrees of freedom to ensure markovian dynamics", &
1994 repeats=.false., default_i_val=8)
1995 CALL section_add_keyword(subsection, keyword)
1996 CALL keyword_release(keyword)
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")
2001 CALL section_add_keyword(subsection, keyword)
2002 CALL keyword_release(keyword)
2003 CALL keyword_create(keyword, __location__, name="SMATRIX_INIT", &
2004 description="Select algorithm to initialize piglet S-matrices", &
2005 usage="SMATRIX_INIT (CHOLESKY|DIAGONAL)", &
2006 default_i_val=matrix_init_cholesky, &
2007 enum_c_vals=s2a("CHOLESKY", "DIAGONAL"), &
2009 CALL section_add_keyword(subsection, keyword)
2010 CALL keyword_release(keyword)
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)
2016 CALL section_add_keyword(subsection, keyword)
2017 CALL keyword_release(keyword)
2018 CALL section_add_subsection(section, subsection)
2019 CALL section_release(subsection)
2020
2021 CALL section_create(subsection, __location__, name="QTB", &
2022 description="Controls the QTB-PILE thermostat."// &
2023 " Needs the exact harmonic integrator", &
2024 citations=[brieuc2016], &
2025 n_keywords=7, n_subsections=1, &
2026 repeats=.false.)
2027 CALL create_rng_section(subsubsection)
2028 CALL section_add_subsection(subsection, subsubsection)
2029 CALL section_release(subsubsection)
2030 CALL keyword_create(keyword, __location__, name="TAU", &
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)
2034 CALL section_add_keyword(subsection, keyword)
2035 CALL keyword_release(keyword)
2036 CALL keyword_create(keyword, __location__, name="LAMBDA", &
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)
2040 CALL section_add_keyword(subsection, keyword)
2041 CALL keyword_release(keyword)
2042 CALL keyword_create(keyword, __location__, name="FP", &
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)
2047 CALL section_add_keyword(subsection, keyword)
2048 CALL keyword_release(keyword)
2049 CALL keyword_create(keyword, __location__, name="TAUCUT", &
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)
2053 CALL section_add_keyword(subsection, keyword)
2054 CALL keyword_release(keyword)
2055 CALL keyword_create(keyword, __location__, name="LAMBCUT", &
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)
2059 CALL section_add_keyword(subsection, keyword)
2060 CALL keyword_release(keyword)
2061 CALL keyword_create(keyword, __location__, name="NF", &
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)
2065 CALL section_add_keyword(subsection, keyword)
2066 CALL keyword_release(keyword)
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)
2072 CALL section_add_keyword(subsection, keyword)
2073 CALL keyword_release(keyword)
2074 CALL section_add_subsection(section, subsection)
2075 CALL section_release(subsection)
2076
2077 CALL section_create(subsection, __location__, name="INIT", &
2078 description="Controls the initialization if the beads are not present", &
2079 repeats=.false.)
2080
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.)
2088 CALL section_add_keyword(subsection, keyword)
2089 CALL keyword_release(keyword)
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.)
2095 CALL section_add_keyword(subsection, keyword)
2096 CALL keyword_release(keyword)
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)
2103 CALL section_add_keyword(subsection, keyword)
2104 CALL keyword_release(keyword)
2105 CALL keyword_create(keyword, __location__, name="LEVY_SEED", &
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, &
2109 repeats=.false.)
2110 CALL section_add_keyword(subsection, keyword)
2111 CALL keyword_release(keyword)
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, &
2116 repeats=.false.)
2117 CALL section_add_keyword(subsection, keyword)
2118 CALL keyword_release(keyword)
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.)
2122 CALL section_add_keyword(subsection, keyword)
2123 CALL keyword_release(keyword)
2124
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.)
2129 CALL section_add_keyword(subsection, keyword)
2130 CALL keyword_release(keyword)
2131
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.)
2135 CALL section_add_keyword(subsection, keyword)
2136 CALL keyword_release(keyword)
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.)
2140 CALL section_add_keyword(subsection, keyword)
2141 CALL keyword_release(keyword)
2142
2143 CALL section_add_subsection(section, subsection)
2144 CALL section_release(subsection)
2145
2146 CALL create_helium_section(subsection)
2147 CALL section_add_subsection(section, subsection)
2148 CALL section_release(subsection)
2149
2150 CALL section_create(subsection, __location__, name="PRINT", &
2151 description="Controls the path integral-specific output", &
2152 n_keywords=2, n_subsections=0, repeats=.false.)
2153
2154 NULLIFY (print_key)
2155
2156 CALL cp_print_key_section_create(print_key, __location__, "ENERGY", &
2157 description="Controls the output of the path integral energies", &
2158 print_level=low_print_level, common_iter_levels=1)
2159 CALL section_add_subsection(subsection, print_key)
2160 CALL section_release(print_key)
2161
2162 CALL cp_print_key_section_create(print_key, __location__, "ACTION", &
2163 description="Controls the output of the path integral action", &
2164 print_level=medium_print_level, common_iter_levels=1)
2165 CALL section_add_subsection(subsection, print_key)
2166 CALL section_release(print_key)
2167
2168 CALL cp_print_key_section_create(print_key, __location__, "CENTROID_POS", &
2169 description="Controls the output of the centroid's position", &
2170 unit_str="angstrom", &
2171 print_level=low_print_level, common_iter_levels=1)
2172 CALL add_format_keyword(keyword, print_key, pos=.true., &
2173 description="Output file format for the positions of centroid")
2174 CALL section_add_subsection(subsection, print_key)
2175 CALL section_release(print_key)
2176
2177 CALL cp_print_key_section_create(print_key, __location__, "CENTROID_VEL", &
2178 description="Controls the output of the centroid's velocity", &
2179 unit_str="bohr*au_t^-1", &
2180 print_level=low_print_level, common_iter_levels=1)
2181 CALL add_format_keyword(keyword, print_key, pos=.false., &
2182 description="Output file format for the velocity of centroid")
2183 CALL section_add_subsection(subsection, print_key)
2184 CALL section_release(print_key)
2185
2186 CALL cp_print_key_section_create(print_key, __location__, "CENTROID_GYR", &
2187 description="Controls the output of the centroid's radii of gyration", &
2188 unit_str="angstrom", &
2189 print_level=low_print_level, common_iter_levels=1)
2190 CALL section_add_subsection(subsection, print_key)
2191 CALL section_release(print_key)
2192
2193 CALL cp_print_key_section_create(print_key, __location__, "COM", &
2194 description="Controls the output of the center of mass", &
2195 print_level=high_print_level, common_iter_levels=1)
2196 CALL section_add_subsection(subsection, print_key)
2197 CALL section_release(print_key)
2198
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)
2202 CALL section_add_keyword(subsection, keyword)
2203 CALL keyword_release(keyword)
2204
2205 CALL section_add_subsection(section, subsection)
2206 CALL section_release(subsection)
2207
2208 END SUBROUTINE create_pint_section
2209
2210 ! ***************************************************************************
2211 !> \brief Create the input section for superfluid helium solvent.
2212 !> \author Lukasz Walewski
2213 ! ***************************************************************************
2214! **************************************************************************************************
2215!> \brief ...
2216!> \param section ...
2217! **************************************************************************************************
2218 SUBROUTINE create_helium_section(section)
2219 TYPE(section_type), POINTER :: section
2220
2221 TYPE(keyword_type), POINTER :: keyword
2222 TYPE(section_type), POINTER :: print_key, subsection, subsubsection
2223
2224 cpassert(.NOT. ASSOCIATED(section))
2225
2226 CALL section_create(section, __location__, name="HELIUM", &
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.)
2230
2231 NULLIFY (keyword)
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.)
2235 CALL section_add_keyword(section, keyword)
2236 CALL keyword_release(keyword)
2237
2238 CALL keyword_create(keyword, __location__, name="HELIUM_ONLY", &
2239 description="Simulate helium solvent only, "// &
2240 "disregard solute entirely", &
2241 repeats=.false., default_l_val=.false., &
2242 lone_keyword_l_val=.true.)
2243 CALL section_add_keyword(section, keyword)
2244 CALL keyword_release(keyword)
2245
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.)
2251 CALL section_add_keyword(section, keyword)
2252 CALL keyword_release(keyword)
2253
2254 CALL keyword_create(keyword, __location__, name="NUM_ENV", &
2255 description="Number of independent helium environments", &
2256 repeats=.false., default_i_val=1)
2257 CALL section_add_keyword(section, keyword)
2258 CALL keyword_release(keyword)
2259
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")
2263 CALL section_add_keyword(section, keyword)
2264 CALL keyword_release(keyword)
2265
2266 CALL keyword_create(keyword, __location__, name="GET_FORCES", &
2267 description="Get average MC forces or last MC forces to propagate MD", &
2268 usage="GET_FORCES (AVERAGE|LAST)", &
2269 default_i_val=helium_forces_average, &
2270 enum_c_vals=s2a("AVERAGE", "LAST"), &
2272 CALL section_add_keyword(section, keyword)
2273 CALL keyword_release(keyword)
2274
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)", &
2278 default_i_val=helium_solute_intpot_none, &
2279 enum_c_vals=s2a("NONE", "MWATER", "NNP"), &
2280 enum_i_vals=[ &
2284 enum_desc=s2a( &
2285 "No interaction with solute", &
2286 "Test interaction with wrong Water", &
2287 "Interaction with NNP"))
2288 CALL section_add_keyword(section, keyword)
2289 CALL keyword_release(keyword)
2290
2291 CALL keyword_create(keyword, __location__, name="NATOMS", &
2292 description="Number of helium atoms", &
2293 repeats=.false., default_i_val=64)
2294 CALL section_add_keyword(section, keyword)
2295 CALL keyword_release(keyword)
2296
2297 CALL keyword_create(keyword, __location__, name="NBEADS", &
2298 description="Number of helium path integral beads", &
2299 repeats=.false., default_i_val=25)
2300 CALL section_add_keyword(section, keyword)
2301 CALL keyword_release(keyword)
2302
2303 CALL keyword_create(keyword, __location__, name="RNG_SEED", &
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, &
2307 repeats=.false.)
2308 CALL section_add_keyword(section, keyword)
2309 CALL keyword_release(keyword)
2310
2311 CALL keyword_create(keyword, __location__, name="N_INNER", &
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)
2316 CALL section_add_keyword(section, keyword)
2317 CALL keyword_release(keyword)
2318
2319 CALL keyword_create(keyword, __location__, name="N_OUTER", &
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)
2324 CALL section_add_keyword(section, keyword)
2325 CALL keyword_release(keyword)
2326
2327 CALL keyword_create(keyword, __location__, name="SAMPLING_METHOD", &
2328 description="Choose between Ceperley or the worm algorithm", &
2329 usage="SAMPLING_METHOD (CEPERLEY|WORM)", &
2330 default_i_val=helium_sampling_ceperley, &
2331 enum_c_vals=s2a("CEPERLEY", "WORM"), &
2333 CALL section_add_keyword(section, keyword)
2334 CALL keyword_release(keyword)
2335
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.", &
2339 default_r_val=cp_unit_to_cp2k(300._dp, "K"), &
2340 unit_str="K")
2341 CALL section_add_keyword(section, keyword)
2342 CALL keyword_release(keyword)
2343
2344 CALL keyword_create(keyword, __location__, name="SOLUTE_RADIUS", &
2345 description="Radius of the solute molecule for prevention of"// &
2346 " coordinate collision during initialization", &
2347 default_r_val=cp_unit_to_cp2k(0.0_dp, "angstrom"), &
2348 repeats=.false., type_of_var=real_t, unit_str="angstrom")
2349 CALL section_add_keyword(section, keyword)
2350 CALL keyword_release(keyword)
2351
2352 ! Helium-solute interaction NNP
2353 NULLIFY (subsection)
2354 CALL section_create(subsection, __location__, name="NNP", &
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.)
2358
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")
2363 CALL section_add_keyword(subsection, keyword)
2364 CALL keyword_release(keyword)
2365
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")
2370 CALL section_add_keyword(subsection, keyword)
2371 CALL keyword_release(keyword)
2372
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.", &
2381 repeats=.false., &
2382 n_var=1, &
2383 type_of_var=integer_t, &
2384 default_i_val=8192, &
2385 usage="RAD_SPLINE_N 8192")
2386 CALL section_add_keyword(subsection, keyword)
2387 CALL keyword_release(keyword)
2388
2389 CALL keyword_create(keyword, __location__, name="VERLET_SKIN", &
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.", &
2399 repeats=.false., &
2400 n_var=1, &
2401 type_of_var=real_t, &
2402 default_r_val=-1.0_dp, &
2403 unit_str="bohr", &
2404 usage="VERLET_SKIN [bohr] 0.5")
2405 CALL section_add_keyword(subsection, keyword)
2406 CALL keyword_release(keyword)
2407
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.)
2416
2417 CALL keyword_create(keyword, __location__, name="ELEMENT", &
2418 description="Solute element for which the short range cutoff is in effect", &
2419 repeats=.false., default_c_val="none")
2420 CALL section_add_keyword(subsubsection, keyword)
2421 CALL keyword_release(keyword)
2422
2423 CALL keyword_create(keyword, __location__, name="RADIUS", &
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.", &
2427 default_r_val=cp_unit_to_cp2k(0.0_dp, "angstrom"), &
2428 repeats=.false., type_of_var=real_t, unit_str="angstrom")
2429 CALL section_add_keyword(subsubsection, keyword)
2430 CALL keyword_release(keyword)
2431 CALL section_add_subsection(subsection, subsubsection)
2432 CALL section_release(subsubsection)
2433
2434 NULLIFY (subsubsection)
2435 CALL section_create(subsubsection, __location__, name="MODEL", &
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.)
2440
2441 CALL keyword_create(keyword, __location__, name="WEIGHTS", &
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")
2445 CALL section_add_keyword(subsubsection, keyword)
2446 CALL keyword_release(keyword)
2447 CALL section_add_subsection(subsection, subsubsection)
2448 CALL section_release(subsubsection)
2449
2450 ! Create the PRINT subsection
2451 NULLIFY (subsubsection)
2452 CALL section_create(subsubsection, __location__, name="PRINT", &
2453 description="Section of possible print options in NNP code.", &
2454 n_keywords=0, n_subsections=3, repeats=.false.)
2455 NULLIFY (print_key, keyword)
2456
2457 CALL cp_print_key_section_create(print_key, __location__, "ENERGIES", &
2458 description="Controls the printing of the NNP energies.", &
2459 print_level=medium_print_level, common_iter_levels=1)
2460 CALL section_add_subsection(subsubsection, print_key)
2461 CALL section_release(print_key)
2462
2463 CALL cp_print_key_section_create(print_key, __location__, "FORCES_SIGMA", &
2464 description="Controls the printing of the STD per atom of the NNP forces.", &
2465 print_level=medium_print_level, common_iter_levels=1)
2466 CALL section_add_subsection(subsubsection, print_key)
2467 CALL section_release(print_key)
2468
2469 CALL cp_print_key_section_create(print_key, __location__, "EXTRAPOLATION", &
2470 description="If activated, output structures with extrapolation "// &
2471 "warning in xyz-format", &
2472 print_level=medium_print_level, common_iter_levels=1)
2473 CALL section_add_subsection(subsubsection, print_key)
2474 CALL section_release(print_key)
2475 CALL section_add_subsection(subsection, subsubsection)
2476 CALL section_release(subsubsection)
2477
2478 CALL section_add_subsection(section, subsection)
2479 CALL section_release(subsection) ! release NNP subsection
2480
2481 ! Ceperley's sampling algorithm
2482 NULLIFY (subsection)
2483 CALL section_create(subsection, __location__, name="CEPERLEY", &
2484 description="Enables sampling with Ceperley's algorithm", &
2485 n_keywords=2, n_subsections=1, repeats=.false.)
2486
2487 CALL keyword_create(keyword, __location__, name="BISECTION", &
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)
2491 CALL section_add_keyword(subsection, keyword)
2492 CALL keyword_release(keyword)
2493
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)
2497 CALL section_add_keyword(subsection, keyword)
2498 CALL keyword_release(keyword)
2499
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)", &
2507 default_i_val=helium_mdist_uniform, &
2508 enum_c_vals=s2a( &
2509 "SINGLEV", &
2510 "UNIFORM", &
2511 "LINEAR", &
2512 "QUADRATIC", &
2513 "EXPONENTIAL", &
2514 "GAUSSIAN"), &
2515 enum_i_vals=[ &
2522 CALL section_add_keyword(subsubsection, keyword)
2523 CALL keyword_release(keyword)
2524 CALL keyword_create(keyword, __location__, name="M-VALUE", &
2525 description="Value of m treated in a special way "// &
2526 "(specific behavior depends on the distribution type chosen)", &
2527 repeats=.false., &
2528 default_i_val=1)
2529 CALL section_add_keyword(subsubsection, keyword)
2530 CALL keyword_release(keyword)
2531 CALL keyword_create(keyword, __location__, name="M-RATIO", &
2532 description="Probability ratio betw M-VALUE and other cycle lengths", &
2533 repeats=.false., &
2534 default_r_val=1.0_dp)
2535 CALL section_add_keyword(subsubsection, keyword)
2536 CALL keyword_release(keyword)
2537 CALL section_add_subsection(subsection, subsubsection)
2538 CALL section_release(subsubsection)
2539 CALL section_add_subsection(section, subsection)
2540 CALL section_release(subsection) ! release CEPERLEY subsection
2541
2542! worm algorithm parameters:
2543 NULLIFY (subsection)
2544 CALL section_create(subsection, __location__, name="WORM", &
2545 description="Enables sampling via the canonical worm algorithm adapted from Bonisegni", &
2546 n_keywords=12, n_subsections=0, repeats=.false.)
2547
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)
2551 CALL section_add_keyword(subsection, keyword)
2552 CALL keyword_release(keyword)
2553
2554 CALL keyword_create(keyword, __location__, name="STAGING_L", &
2555 description="From 2 up to max. L-1 beads will be moved", &
2556 repeats=.false., default_i_val=5)
2557 CALL section_add_keyword(subsection, keyword)
2558 CALL keyword_release(keyword)
2559
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)
2563 CALL section_add_keyword(subsection, keyword)
2564 CALL keyword_release(keyword)
2565
2566 CALL keyword_create(keyword, __location__, name="ALLOW_OPEN", &
2567 description="Enable bosonic exchange sampling", &
2568 repeats=.false., default_l_val=.true.)
2569 CALL section_add_keyword(subsection, keyword)
2570 CALL keyword_release(keyword)
2571
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)
2578 CALL section_add_keyword(subsection, keyword)
2579 CALL keyword_release(keyword)
2580
2581 CALL keyword_create(keyword, __location__, name="SHOW_STATISTICS", &
2582 description="Show sampling statistics in output", &
2583 repeats=.false., default_l_val=.true.)
2584 CALL section_add_keyword(subsection, keyword)
2585 CALL keyword_release(keyword)
2586
2587 CALL keyword_create(keyword, __location__, name="CENTROID_WEIGHT", &
2588 description="Absolute weight of the centroid move", &
2589 repeats=.false., default_i_val=10)
2590 CALL section_add_keyword(subsection, keyword)
2591 CALL keyword_release(keyword)
2592
2593 CALL keyword_create(keyword, __location__, name="STAGING_WEIGHT", &
2594 description="Absolute weight of the staging move", &
2595 repeats=.false., default_i_val=30)
2596 CALL section_add_keyword(subsection, keyword)
2597 CALL keyword_release(keyword)
2598
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)
2602 CALL section_add_keyword(subsection, keyword)
2603 CALL keyword_release(keyword)
2604
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)
2608 CALL section_add_keyword(subsection, keyword)
2609 CALL keyword_release(keyword)
2610
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)
2614 CALL section_add_keyword(subsection, keyword)
2615 CALL keyword_release(keyword)
2616
2617 CALL keyword_create(keyword, __location__, name="CRAWL_REPETITION", &
2618 description="Number of repeated crawl moves", &
2619 repeats=.false., default_i_val=4)
2620 CALL section_add_keyword(subsection, keyword)
2621 CALL keyword_release(keyword)
2622
2623 CALL keyword_create(keyword, __location__, name="SWAP_WEIGHT", &
2624 description="Absolute weight of the crawl move", &
2625 repeats=.false., default_i_val=10)
2626 CALL section_add_keyword(subsection, keyword)
2627 CALL keyword_release(keyword)
2628
2629 CALL section_add_subsection(section, subsection)
2630 CALL section_release(subsection) ! release WORM subsection
2631
2632! end of worm parameters
2633
2634 CALL keyword_create(keyword, __location__, name="PERIODIC", &
2635 description="Use periodic boundary conditions for helium", &
2636 repeats=.false., default_l_val=.false.)
2637 CALL section_add_keyword(section, keyword)
2638 CALL keyword_release(keyword)
2639
2640 CALL keyword_create(keyword, __location__, name="CELL_SIZE", &
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")
2645 CALL section_add_keyword(section, keyword)
2646 CALL keyword_release(keyword)
2647
2648 CALL keyword_create(keyword, __location__, name="CELL_SHAPE", &
2649 description="PBC unit cell shape for helium", &
2650 usage="CELL_SHAPE (CUBE|OCTAHEDRON)", &
2651 default_i_val=helium_cell_shape_cube, &
2652 enum_c_vals=s2a("CUBE", "OCTAHEDRON"), &
2654 CALL section_add_keyword(section, keyword)
2655 CALL keyword_release(keyword)
2656
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")
2662 CALL section_add_keyword(section, keyword)
2663 CALL keyword_release(keyword)
2664
2665 CALL keyword_create(keyword, __location__, name="DENSITY", &
2666 description="trial density of helium for determining the helium "// &
2667 "box size", &
2668 repeats=.false., &
2669 default_r_val=cp_unit_to_cp2k(0.02186_dp, "angstrom^-3"), &
2670 unit_str="angstrom^-3")
2671 CALL section_add_keyword(section, keyword)
2672 CALL keyword_release(keyword)
2673
2674 CALL keyword_create(keyword, __location__, name="PRESAMPLE", &
2675 description="Presample He coordinates before first PIMD step", &
2676 repeats=.false., default_l_val=.false.)
2677 CALL section_add_keyword(section, keyword)
2678 CALL keyword_release(keyword)
2679
2680 CALL section_create(subsection, __location__, name="RDF", &
2681 description="Radial distribution settings", &
2682 n_keywords=5, n_subsections=0, repeats=.false.)
2683
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.)
2687 CALL section_add_keyword(subsection, keyword)
2688 CALL keyword_release(keyword)
2689
2690 CALL keyword_create(keyword, __location__, name="MAXR", &
2691 description="Maximum RDF range, defaults to unit cell size", &
2692 repeats=.false., type_of_var=real_t, &
2693 unit_str="angstrom")
2694 CALL section_add_keyword(subsection, keyword)
2695 CALL keyword_release(keyword)
2696
2697 CALL keyword_create(keyword, __location__, name="NBIN", &
2698 description="Number of bins", &
2699 repeats=.false., &
2700 default_i_val=250)
2701 CALL section_add_keyword(subsection, keyword)
2702 CALL keyword_release(keyword)
2703
2704 CALL keyword_create(keyword, __location__, name="SOLUTE_HE", &
2705 description="Whether or not to calculate solute-He RDFs (if solute is present)", &
2706 default_l_val=.true., lone_keyword_l_val=.true.)
2707 CALL section_add_keyword(subsection, keyword)
2708 CALL keyword_release(keyword)
2709
2710 CALL keyword_create(keyword, __location__, name="HE_HE", &
2711 description="Whether or not to calculate He-He RDFs", &
2712 default_l_val=.false., lone_keyword_l_val=.true.)
2713 CALL section_add_keyword(subsection, keyword)
2714 CALL keyword_release(keyword)
2715
2716 CALL section_add_subsection(section, subsection)
2717 CALL section_release(subsection)
2718
2719 NULLIFY (subsection)
2720 CALL section_create(subsection, __location__, name="RHO", &
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.)
2727 CALL section_add_keyword(subsection, keyword)
2728 CALL keyword_release(keyword)
2729 CALL keyword_create(keyword, __location__, name="NBIN", &
2730 description="Number of grid points in each direction for density binning", &
2731 repeats=.false., &
2732 default_i_val=100)
2733 CALL section_add_keyword(subsection, keyword)
2734 CALL keyword_release(keyword)
2735 !
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>", &
2740 type_of_var=integer_t, n_var=-1)
2741 CALL section_add_keyword(subsection, keyword)
2742 CALL keyword_release(keyword)
2743 !
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>", &
2748 type_of_var=integer_t, n_var=-1)
2749 CALL section_add_keyword(subsection, keyword)
2750 CALL keyword_release(keyword)
2751 !
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>", &
2756 type_of_var=integer_t, n_var=-1)
2757 CALL section_add_keyword(subsection, keyword)
2758 CALL keyword_release(keyword)
2759 !
2760 CALL keyword_create(keyword, __location__, name="ATOM_NUMBER", &
2761 description="Atom number density", &
2762 repeats=.false., &
2763 type_of_var=logical_t, &
2764 default_l_val=.true., &
2765 lone_keyword_l_val=.true.)
2766 CALL section_add_keyword(subsection, keyword)
2767 CALL keyword_release(keyword)
2768 !
2769 CALL keyword_create(keyword, __location__, name="PROJECTED_AREA_2", &
2770 description="Projected area squared density, A*A(r)", &
2771 repeats=.false., &
2772 type_of_var=logical_t, &
2773 default_l_val=.false., &
2774 lone_keyword_l_val=.true.)
2775 CALL section_add_keyword(subsection, keyword)
2776 CALL keyword_release(keyword)
2777 !
2778 CALL keyword_create(keyword, __location__, name="WINDING_NUMBER_2", &
2779 description="Winding number squared density, W*W(r)", &
2780 repeats=.false., &
2781 type_of_var=logical_t, &
2782 default_l_val=.false., &
2783 lone_keyword_l_val=.true.)
2784 CALL section_add_keyword(subsection, keyword)
2785 CALL keyword_release(keyword)
2786 !
2787 CALL keyword_create(keyword, __location__, name="WINDING_CYCLE_2", &
2788 description="Winding number squared density, W^2(r)", &
2789 repeats=.false., &
2790 type_of_var=logical_t, &
2791 default_l_val=.false., &
2792 lone_keyword_l_val=.true.)
2793 CALL section_add_keyword(subsection, keyword)
2794 CALL keyword_release(keyword)
2795 !
2796 CALL keyword_create(keyword, __location__, name="MOMENT_OF_INERTIA", &
2797 description="Moment of inertia density", &
2798 repeats=.false., &
2799 type_of_var=logical_t, &
2800 default_l_val=.false., &
2801 lone_keyword_l_val=.true.)
2802 CALL section_add_keyword(subsection, keyword)
2803 CALL keyword_release(keyword)
2804
2805 CALL section_add_subsection(section, subsection)
2806 CALL section_release(subsection)
2807 ! end of subsection RHO
2808
2809 CALL create_coord_section(subsection, "HELIUM")
2810 CALL section_add_subsection(section, subsection)
2811 CALL section_release(subsection)
2812
2813 CALL section_create(subsection, __location__, name="PERM", &
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>", &
2819 type_of_var=integer_t, n_var=-1)
2820 CALL section_add_keyword(subsection, keyword)
2821 CALL keyword_release(keyword)
2822 CALL section_add_subsection(section, subsection)
2823 CALL section_release(subsection)
2824
2825 CALL section_create(subsection, __location__, name="AVERAGES", &
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)
2832 CALL section_add_keyword(subsection, keyword)
2833 CALL keyword_release(keyword)
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)
2838 CALL section_add_keyword(subsection, keyword)
2839 CALL keyword_release(keyword)
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)
2844 CALL section_add_keyword(subsection, keyword)
2845 CALL keyword_release(keyword)
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)
2850 CALL section_add_keyword(subsection, keyword)
2851 CALL keyword_release(keyword)
2852 CALL keyword_create(keyword, __location__, name="RDF", &
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)
2856 CALL section_add_keyword(subsection, keyword)
2857 CALL keyword_release(keyword)
2858 CALL keyword_create(keyword, __location__, name="RHO", &
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)
2862 CALL section_add_keyword(subsection, keyword)
2863 CALL keyword_release(keyword)
2864 CALL keyword_create(keyword, __location__, name="IWEIGHT", &
2865 description="Weight for the restarted quantities "// &
2866 "(number of MC steps used to calculate the accumulated averages)", &
2867 repeats=.false., &
2868 default_i_val=0)
2869 CALL section_add_keyword(subsection, keyword)
2870 CALL keyword_release(keyword)
2871 CALL section_add_subsection(section, subsection)
2872 CALL section_release(subsection)
2873
2874 CALL section_create(subsection, __location__, name="FORCE", &
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, &
2882 n_var=-1)
2883 CALL section_add_keyword(subsection, keyword)
2884 CALL keyword_release(keyword)
2885 CALL section_add_subsection(section, subsection)
2886 CALL section_release(subsection)
2887
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)
2896 CALL section_add_keyword(subsection, keyword)
2897 CALL keyword_release(keyword)
2898 CALL section_add_subsection(section, subsection)
2899 CALL section_release(subsection)
2900
2901 CALL section_create(subsection, __location__, name="PRINT", &
2902 description="The section that controls the output of the helium code", &
2903 n_keywords=16, n_subsections=0, repeats=.false.)
2904
2905 ! *************************************************************************
2906 !> Printkeys for properties output
2907 ! *************************************************************************
2908 NULLIFY (print_key)
2909
2910 ! Properties printed at SILENT print level
2911 !
2912
2913 ! Properties printed at LOW print level
2914 !
2915 CALL cp_print_key_section_create(print_key, __location__, "ENERGY", &
2916 description="Controls the output of helium energies"// &
2917 " (averaged over MC step)", &
2918 print_level=low_print_level, common_iter_levels=1)
2919 CALL section_add_subsection(subsection, print_key)
2920 CALL section_release(print_key)
2921 !
2922 CALL cp_print_key_section_create(print_key, __location__, "PROJECTED_AREA_2_AVG", &
2923 description="Controls the output of the average projected area squared vector", &
2924 print_level=low_print_level, common_iter_levels=1)
2925 CALL section_add_subsection(subsection, print_key)
2926 CALL section_release(print_key)
2927 !
2928 CALL cp_print_key_section_create(print_key, __location__, "WINDING_NUMBER_2_AVG", &
2929 description="Controls the output of the average winding number vector squared", &
2930 print_level=low_print_level, common_iter_levels=1)
2931 CALL section_add_subsection(subsection, print_key)
2932 CALL section_release(print_key)
2933 !
2934 CALL cp_print_key_section_create(print_key, __location__, "MOMENT_OF_INERTIA_AVG", &
2935 description="Controls the output of the average moment of inertia vector", &
2936 print_level=low_print_level, common_iter_levels=1)
2937 CALL section_add_subsection(subsection, print_key)
2938 CALL section_release(print_key)
2939
2940 ! Properties printed at MEDIUM print level
2941 !
2942 CALL cp_print_key_section_create(print_key, __location__, "RDF", &
2943 description="Controls the output of helium radial distribution functions", &
2944 print_level=medium_print_level, common_iter_levels=1)
2945 CALL section_add_subsection(subsection, print_key)
2946 CALL section_release(print_key)
2947
2948 CALL cp_print_key_section_create(print_key, __location__, "RHO", &
2949 description="Controls the output of the helium density "// &
2950 "(Gaussian cube file format)", &
2951 each_iter_names=s2a("PINT"), each_iter_values=[100], &
2952 print_level=medium_print_level, common_iter_levels=1, &
2953 add_last=add_last_numeric)
2954 CALL keyword_create(keyword, __location__, name="BACKUP_COPIES", &
2955 description="Specifies the maximum number of backup copies.", &
2956 usage="BACKUP_COPIES {int}", &
2957 default_i_val=1)
2958 CALL section_add_keyword(print_key, keyword)
2959 CALL keyword_release(keyword)
2960 CALL section_add_subsection(subsection, print_key)
2961 CALL section_release(print_key)
2962 !
2963 CALL cp_print_key_section_create(print_key, __location__, "PROJECTED_AREA", &
2964 description="Controls the output of the projected area vector", &
2965 print_level=medium_print_level, common_iter_levels=1)
2966 CALL section_add_subsection(subsection, print_key)
2967 CALL section_release(print_key)
2968 !
2969 CALL cp_print_key_section_create(print_key, __location__, "WINDING_NUMBER", &
2970 description="Controls the output of the winding number vector", &
2971 print_level=medium_print_level, common_iter_levels=1)
2972 CALL section_add_subsection(subsection, print_key)
2973 CALL section_release(print_key)
2974 !
2975 CALL cp_print_key_section_create(print_key, __location__, "MOMENT_OF_INERTIA", &
2976 description="Controls the output of the moment of inertia vector", &
2977 print_level=medium_print_level, common_iter_levels=1)
2978 CALL section_add_subsection(subsection, print_key)
2979 CALL section_release(print_key)
2980 !
2981 CALL cp_print_key_section_create(print_key, __location__, "PLENGTH", &
2982 description="Controls the output of the helium permutation length", &
2983 print_level=medium_print_level, common_iter_levels=1)
2984 CALL section_add_subsection(subsection, print_key)
2985 CALL section_release(print_key)
2986
2987 CALL cp_print_key_section_create(print_key, __location__, "ACTION", &
2988 description="Controls the output of the total helium action", &
2989 print_level=medium_print_level, common_iter_levels=1)
2990 CALL section_add_subsection(subsection, print_key)
2991 CALL section_release(print_key)
2992
2993 ! Properties printed at HIGH print level
2994 !
2995 CALL cp_print_key_section_create(print_key, __location__, "COORDINATES", &
2996 description="Controls the output of helium coordinates", &
2997 print_level=high_print_level, common_iter_levels=1)
2998 CALL keyword_create(keyword, __location__, name="FORMAT", &
2999 description="Output file format for the coordinates", &
3000 usage="FORMAT (PDB|XYZ)", &
3001 default_i_val=fmt_id_pdb, &
3002 enum_c_vals=s2a("PDB", "XYZ"), &
3003 enum_i_vals=[fmt_id_pdb, fmt_id_xyz], &
3004 enum_desc=s2a("Bead coordinates and connectivity is written in PDB format", &
3005 "Only bead coordinates are written in XYZ format"))
3006 CALL section_add_keyword(print_key, keyword)
3007 CALL keyword_release(keyword)
3008 CALL section_add_subsection(subsection, print_key)
3009 CALL section_release(print_key)
3010 !
3011 CALL cp_print_key_section_create(print_key, __location__, "PERM", &
3012 description="Controls the output of the helium permutation state", &
3013 print_level=high_print_level, common_iter_levels=1)
3014 CALL keyword_create(keyword, __location__, name="FORMAT", &
3015 description="Output format for the permutation", &
3016 usage="FORMAT (CYCLE|PLAIN)", &
3017 default_i_val=perm_cycle, &
3018 enum_c_vals=s2a("CYCLE", "PLAIN"), &
3019 enum_i_vals=[perm_cycle, perm_plain], &
3020 enum_desc=s2a( &
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)"))
3024 CALL section_add_keyword(print_key, keyword)
3025 CALL keyword_release(keyword)
3026 CALL section_add_subsection(subsection, print_key)
3027 CALL section_release(print_key)
3028
3029 CALL cp_print_key_section_create(print_key, __location__, "FORCES", &
3030 description="Controls the output of the helium forces on the solute", &
3031 print_level=high_print_level, common_iter_levels=1)
3032 CALL section_add_subsection(subsection, print_key)
3033 CALL section_release(print_key)
3034
3035 ! Properties printed at DEBUG print level
3036 !
3037 CALL cp_print_key_section_create(print_key, __location__, "ACCEPTS", &
3038 description="Controls the output of the helium acceptance data", &
3039 print_level=debug_print_level, common_iter_levels=1)
3040 CALL section_add_subsection(subsection, print_key)
3041 CALL section_release(print_key)
3042 !
3043 CALL cp_print_key_section_create(print_key, __location__, "FORCES_INST", &
3044 description="Controls the output of the instantaneous helium forces on the solute", &
3045 print_level=debug_print_level, common_iter_levels=1)
3046 CALL section_add_subsection(subsection, print_key)
3047 CALL section_release(print_key)
3048
3049 CALL section_add_subsection(section, subsection)
3050 CALL section_release(subsection)
3051
3052 RETURN
3053 END SUBROUTINE create_helium_section
3054
3055END MODULE input_cp2k_motion
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
unit conversion facility
Definition cp_units.F:30
real(kind=dp) function, public cp_unit_to_cp2k(value, unit_str, defaults, power)
converts to the internal cp2k units to the given unit
Definition cp_units.F:1222
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public propagator_cmd
integer, parameter, public helium_solute_intpot_mwater
integer, parameter, public do_mc_virial
integer, parameter, public fix_xz
integer, parameter, public helium_forces_average
integer, parameter, public do_mc_gemc_nvt
integer, parameter, public helium_mdist_exponential
integer, parameter, public debug_lbfgs
integer, parameter, public helium_sampling_ceperley
integer, parameter, public ls_3pnt
integer, parameter, public helium_cell_shape_octahedron
integer, parameter, public bfgs_direct
integer, parameter, public dimer_init_random
integer, parameter, public default_minimization_method_id
integer, parameter, public low_lbfgs
integer, parameter, public helium_solute_intpot_none
integer, parameter, public high_lbfgs
integer, parameter, public perm_cycle
integer, parameter, public propagator_rpmd
integer, parameter, public integrate_exact
integer, parameter, public default_ts_method_id
integer, parameter, public medium_lbfgs
integer, parameter, public default_lbfgs_method_id
integer, parameter, public dimer_init_molden
integer, parameter, public perm_plain
integer, parameter, public helium_forces_last
integer, parameter, public helium_mdist_gaussian
integer, parameter, public fix_y
integer, parameter, public fix_none
integer, parameter, public bfgs_inverse
integer, parameter, public helium_mdist_quadratic
integer, parameter, public helium_mdist_uniform
integer, parameter, public fix_z
integer, parameter, public default_bfgs_method_id
integer, parameter, public default_cg_method_id
integer, parameter, public default_dimer_method_id
integer, parameter, public transformation_stage
integer, parameter, public helium_sampling_worm
integer, parameter, public matrix_init_cholesky
integer, parameter, public silent_lbfgs
integer, parameter, public ls_2pnt
integer, parameter, public ls_none
integer, parameter, public integrate_numeric
integer, parameter, public ls_fit
integer, parameter, public helium_mdist_singlev
integer, parameter, public ls_gold
integer, parameter, public propagator_pimd
integer, parameter, public do_mc_gemc_npt
integer, parameter, public helium_cell_shape_cube
integer, parameter, public fmt_id_pdb
integer, parameter, public gaussian
integer, parameter, public matrix_init_diagonal
integer, parameter, public fix_xy
integer, parameter, public do_mc_traditional
integer, parameter, public transformation_normal
integer, parameter, public helium_mdist_linear
integer, parameter, public helium_solute_intpot_nnp
integer, parameter, public propagator_bcmd
integer, parameter, public fix_yz
integer, parameter, public fix_x
integer, parameter, public fmt_id_xyz
integer, parameter, public numerical
subroutine, public create_constraint_section(section)
Create the constraint section. This section is useful to impose constraints.
subroutine, public create_fe_section(section)
creates the free energy section
subroutine, public create_md_section(section)
...
subroutine, public add_format_keyword(keyword, section, pos, description)
creates the FORMAT keyword
subroutine, public create_motion_print_section(section)
creates the motionprint section
subroutine, public create_motion_section(section)
creates the motion section
subroutine, public create_band_section(section)
creates the section for a BAND run
builds the subsystem section of the input
subroutine, public create_rng_section(section)
Creates the random number restart section.
subroutine, public create_gle_section(section)
...
subroutine, public create_tmc_section(section)
creates the TreeMonteCarlo subsection
represents keywords in an input
subroutine, public keyword_release(keyword)
releases the given keyword (see doc/ReferenceCounting.html)
subroutine, public keyword_create(keyword, location, name, description, usage, type_of_var, n_var, repeats, variants, default_val, default_l_val, default_r_val, default_lc_val, default_c_val, default_i_val, default_l_vals, default_r_vals, default_c_vals, default_i_vals, lone_keyword_val, lone_keyword_l_val, lone_keyword_r_val, lone_keyword_c_val, lone_keyword_i_val, lone_keyword_l_vals, lone_keyword_r_vals, lone_keyword_c_vals, lone_keyword_i_vals, enum_c_vals, enum_i_vals, enum, enum_strict, enum_desc, unit_str, citations, deprecation_notice, removed)
creates a keyword object
objects that represent the structure of input sections and the data contained in an input section
subroutine, public section_create(section, location, name, description, n_keywords, n_subsections, repeats, citations, deprecation_notice)
creates a list of keywords
subroutine, public section_add_keyword(section, keyword)
adds a keyword to the given section
subroutine, public section_add_subsection(section, subsection)
adds a subsection to the given section
recursive subroutine, public section_release(section)
releases the given keyword list (see doc/ReferenceCounting.html)
a wrapper for basic fortran types.
integer, parameter, public real_t
integer, parameter, public lchar_t
integer, parameter, public logical_t
integer, parameter, public char_t
integer, parameter, public integer_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Utilities for string manipulations.
character(len=1), parameter, public newline
represent a keyword in the input
represent a section of the input file