(git:374b731)
Loading...
Searching...
No Matches
input_cp2k_resp.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief function that builds the resp section of the input
10!> \par History
11!> 02.2007 created
12!> \author Joost VandeVondele
13! **************************************************************************************************
15 USE bibliography, ONLY: campana2009,&
16 golze2015,&
22 USE cp_units, ONLY: cp_unit_to_cp2k
23 USE input_constants, ONLY: &
34 USE input_val_types, ONLY: char_t,&
35 integer_t,&
36 real_t
37 USE kinds, ONLY: dp
38 USE string_utilities, ONLY: s2a
39#include "./base/base_uses.f90"
40
41 IMPLICIT NONE
42 PRIVATE
43
44 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .true.
45 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_resp'
46
47 PUBLIC :: create_resp_section
48
49CONTAINS
50
51! **************************************************************************************************
52!> \brief Creates the RESP section
53!> \param section the section to create
54!> \author Joost VandeVondele
55! **************************************************************************************************
56 SUBROUTINE create_resp_section(section)
57 TYPE(section_type), POINTER :: section
58
59 TYPE(keyword_type), POINTER :: keyword
60 TYPE(section_type), POINTER :: subsection
61
62 cpassert(.NOT. ASSOCIATED(section))
63 CALL section_create(section, __location__, name="RESP", &
64 description="Requests a RESP fit of charges. When using a periodic "// &
65 "Poisson solver and a periodic cell, the periodic RESP routines are "// &
66 "used. If the Hartree potential matches with the one of an isolated "// &
67 "system (i.e. isolated Poisson solver and big, nonperiodic cells), "// &
68 "the nonperiodic RESP routines are automatically used. All restraints "// &
69 "are harmonic!", &
70 n_keywords=2, n_subsections=2, repeats=.false., citations=(/golze2015/))
71
72 NULLIFY (keyword, subsection)
73
74 CALL keyword_create(keyword, __location__, name="stride", &
75 description="The stride (X,Y,Z) used to write the cube file "// &
76 "(larger values result in smaller cube files). You can provide "// &
77 "3 numbers (for X,Y,Z) or 1 number valid for all components.", &
78 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=integer_t)
79 CALL section_add_keyword(section, keyword)
80 CALL keyword_release(keyword)
81
82 CALL keyword_create(keyword, __location__, name="INTEGER_TOTAL_CHARGE", &
83 description="Forces the total charge to be integer", &
84 usage="INTEGER_TOTAL_CHARGE TRUE", &
85 default_l_val=.true.)
86 CALL section_add_keyword(section, keyword)
87 CALL keyword_release(keyword)
88
89 CALL keyword_create(keyword, __location__, name="RESTRAIN_HEAVIES_TO_ZERO", &
90 description="Restrain non-hydrogen atoms to zero.", &
91 usage="RESTRAIN_HEAVIES_TO_ZERO FALSE", &
92 default_l_val=.true., lone_keyword_l_val=.true.)
93 CALL section_add_keyword(section, keyword)
94 CALL keyword_release(keyword)
95
96 CALL keyword_create(keyword, __location__, name="RESTRAIN_HEAVIES_STRENGTH", &
97 description="If defined, enforce the restraint of non-hydrogen "// &
98 "atoms to zero. Its value is the strength of the restraint on "// &
99 "the heavy atoms.", &
100 usage="RESTRAIN_HEAVIES_STRENGTH 0.0001 ", &
101 default_r_val=1.0e-6_dp)
102 CALL section_add_keyword(section, keyword)
103 CALL keyword_release(keyword)
104
105 CALL keyword_create(keyword, __location__, name="WIDTH", &
106 description="Specifies the value of the width of the Gaussian "// &
107 "charge distribution carried by each atom. Needs only "// &
108 "to be specified when using a periodic Poisson solver.", &
109 usage="WIDTH <real> ", n_var=1, type_of_var=real_t, &
110 default_r_val=cp_unit_to_cp2k(value=11.249_dp, unit_str="angstrom^-2"), &
111 unit_str="angstrom^-2")
112 CALL section_add_keyword(section, keyword)
113 CALL keyword_release(keyword)
114
115 CALL keyword_create(keyword, __location__, name="USE_REPEAT_METHOD", &
116 description="Fits the variance of the potential, i.e. the deviation "// &
117 "from the mean value of the potential within the selected "// &
118 "range. The evaluation of the potentials is still treated "// &
119 "within the GPW approach as described in [Golze2015]. "// &
120 "When used in conjunction with INTEGER_TOTAL_CHARGE = T "// &
121 "and SPHERE_SAMPLING, the results will be very similar to "// &
122 "the REPEAT charges given in [Campana2009]. In most "// &
123 "cases switching on this option gives reasonable "// &
124 "atomic charges without the need to define any "// &
125 "restraints. Note that by switching on this option, "// &
126 "RESTRAIN_HEAVIES_TO_ZERO will be switched off. ", &
127 usage="USE_REPEAT_METHOD", &
128 default_l_val=.false., lone_keyword_l_val=.true., &
129 citations=(/campana2009/))
130 CALL section_add_keyword(section, keyword)
131 CALL keyword_release(keyword)
132
133 CALL create_constraint_section(subsection)
134 CALL section_add_subsection(section, subsection)
135 CALL section_release(subsection)
136
137 CALL create_restraint_section(subsection)
138 CALL section_add_subsection(section, subsection)
139 CALL section_release(subsection)
140
141 CALL create_sphere_sampling_section(subsection)
142 CALL section_add_subsection(section, subsection)
143 CALL section_release(subsection)
144
145 CALL create_slab_sampling_section(subsection)
146 CALL section_add_subsection(section, subsection)
147 CALL section_release(subsection)
148
149 CALL create_print_resp_section(subsection)
150 CALL section_add_subsection(section, subsection)
151 CALL section_release(subsection)
152
153 END SUBROUTINE create_resp_section
154
155! **************************************************************************************************
156!> \brief specifies constraints to be satisfied in a resp fit
157!> \param section the section to create
158!> \author Joost VandeVondele
159! **************************************************************************************************
160 SUBROUTINE create_constraint_section(section)
161 TYPE(section_type), POINTER :: section
162
163 TYPE(keyword_type), POINTER :: keyword
164
165 cpassert(.NOT. ASSOCIATED(section))
166 CALL section_create(section, __location__, name="CONSTRAINT", &
167 description="specifies a linear constraint on the fitted charges. "// &
168 "This can be used to give equal values to equivalent atoms. "// &
169 "sum over atom_list c_i * q_i = t", &
170 n_keywords=1, n_subsections=0, repeats=.true.)
171
172 NULLIFY (keyword)
173
174 CALL keyword_create(keyword, __location__, name="TARGET", &
175 description="the target value for the constraint", &
176 usage="TARGET 0.0", &
177 n_var=1, default_r_val=0.0_dp)
178 CALL section_add_keyword(section, keyword)
179 CALL keyword_release(keyword)
180
181 CALL keyword_create(keyword, __location__, name="EQUAL_CHARGES", &
182 description="All atoms in ATOM_LIST are constrained to have the "// &
183 "same charges. When using this keyword, TARGET and ATOM_COEF do "// &
184 "not need to be set and will be ignored. Instead of using this "// &
185 "keyword, the constraint section could be repeated.", &
186 usage="EQUAL_CHARGES", &
187 default_l_val=.false., lone_keyword_l_val=.true.)
188 CALL section_add_keyword(section, keyword)
189 CALL keyword_release(keyword)
190
191 CALL keyword_create(keyword, __location__, name="ATOM_LIST", &
192 description="Defines the list of atoms involved in this constraint", &
193 usage="ATOM_LIST 3 4", &
194 type_of_var=integer_t, n_var=-1, repeats=.true.)
195 CALL section_add_keyword(section, keyword)
196 CALL keyword_release(keyword)
197
198 CALL keyword_create(keyword, __location__, name="ATOM_COEF", &
199 description="Defines the coefficient of the atom in this "// &
200 "linear constraint", &
201 usage="ATOM_COEF 1.0 -1.0", &
202 type_of_var=real_t, n_var=-1)
203 CALL section_add_keyword(section, keyword)
204 CALL keyword_release(keyword)
205
206 END SUBROUTINE create_constraint_section
207
208! **************************************************************************************************
209!> \brief specifies restraints to be added to a resp fit
210!> \param section the section to create
211!> \author Joost VandeVondele
212! **************************************************************************************************
213 SUBROUTINE create_restraint_section(section)
214 TYPE(section_type), POINTER :: section
215
216 TYPE(keyword_type), POINTER :: keyword
217
218 cpassert(.NOT. ASSOCIATED(section))
219 CALL section_create(section, __location__, name="RESTRAINT", &
220 description="specifies a restraint on the fitted charges. "// &
221 "This can be used to restrain values to zero. "// &
222 "s*(sum over atom_list q_i - t)**2", &
223 n_keywords=1, n_subsections=0, repeats=.true.)
224
225 NULLIFY (keyword)
226
227 CALL keyword_create(keyword, __location__, name="TARGET", &
228 description="the target value for the restraint", &
229 usage="TARGET 0.0", &
230 n_var=1, default_r_val=0.0_dp)
231 CALL section_add_keyword(section, keyword)
232 CALL keyword_release(keyword)
233
234 CALL keyword_create(keyword, __location__, name="STRENGTH", &
235 description="the target value for the constraint", &
236 usage="STRENGTH 0.001", &
237 n_var=1, default_r_val=0.001_dp)
238 CALL section_add_keyword(section, keyword)
239 CALL keyword_release(keyword)
240
241 CALL keyword_create(keyword, __location__, name="ATOM_LIST", &
242 description="Defines the list of atoms involved in this restraint", &
243 usage="ATOM_LIST 3 4", &
244 type_of_var=integer_t, n_var=-1, repeats=.true.)
245 CALL section_add_keyword(section, keyword)
246 CALL keyword_release(keyword)
247
248 CALL keyword_create(keyword, __location__, name="ATOM_COEF", &
249 description="Defines the coefficient of the atom in this "// &
250 "linear restraint. If given, the restraint will be: "// &
251 "s*(sum over atom_list c_i * q_i - t)**2 ", &
252 usage="ATOM_COEF 1.0 -1.0", &
253 type_of_var=real_t, n_var=-1)
254 CALL section_add_keyword(section, keyword)
255 CALL keyword_release(keyword)
256
257 END SUBROUTINE create_restraint_section
258
259! **************************************************************************************************
260!> \brief specifies the parameter for sampling the resp fitting points for
261!> molecular structures; sampling in spheres around the atoms
262!> \param section the section to create
263!> \author Dorothea Golze
264! **************************************************************************************************
265 SUBROUTINE create_sphere_sampling_section(section)
266 TYPE(section_type), POINTER :: section
267
268 TYPE(keyword_type), POINTER :: keyword
269
270 cpassert(.NOT. ASSOCIATED(section))
271 CALL section_create(section, __location__, name="SPHERE_SAMPLING", &
272 description="Specifies the parameter for sampling the RESP fitting points "// &
273 "for molecular structures, i.e. systems that do not involve "// &
274 "surfaces. Fitting points are sampled in spheres around the "// &
275 "atom. All grid points in the shell defined by rmin and rmax "// &
276 "are accepted for fitting. Default is that rmin is the vdW "// &
277 "radius and rmax=100.0*vdW_radius, which can be overwritten "// &
278 "by the keywords below.", &
279 n_keywords=1, n_subsections=0, repeats=.false.)
280
281 NULLIFY (keyword)
282
283 CALL keyword_create(keyword, __location__, name="X_LOW", &
284 description="Specifies the lower boundary of the box along X used to "// &
285 "sample the potential. Only valid for nonperiodic RESP fitting.", &
286 usage="X_LOW -15.", type_of_var=real_t, n_var=1, unit_str='angstrom')
287 CALL section_add_keyword(section, keyword)
288 CALL keyword_release(keyword)
289
290 CALL keyword_create(keyword, __location__, name="X_HI", &
291 description="Specifies the upper boundary of the box along X used to "// &
292 "sample the potential. Only valid for nonperiodic RESP fitting.", &
293 usage="X_HI 5.", type_of_var=real_t, n_var=1, unit_str='angstrom')
294 CALL section_add_keyword(section, keyword)
295 CALL keyword_release(keyword)
296
297 CALL keyword_create(keyword, __location__, name="Y_LOW", &
298 description="Specifies the lower boundary of the box along Y used to "// &
299 "sample the potential. Only valid for nonperiodic RESP fitting.", &
300 usage="Y_LOW -15.", type_of_var=real_t, n_var=1, unit_str='angstrom')
301 CALL section_add_keyword(section, keyword)
302 CALL keyword_release(keyword)
303
304 CALL keyword_create(keyword, __location__, name="Y_HI", &
305 description="Specifies the upper boundary of the box along Y used to "// &
306 "sample the potential. Only valid for nonperiodic RESP fitting.", &
307 usage="Y_HI 5.", type_of_var=real_t, n_var=1, unit_str='angstrom')
308 CALL section_add_keyword(section, keyword)
309 CALL keyword_release(keyword)
310
311 CALL keyword_create(keyword, __location__, name="Z_LOW", &
312 description="Specifies the lower boundary of the box along Z used to "// &
313 "sample the potential. Only valid for nonperiodic RESP fitting.", &
314 usage="Z_LOW -15.", type_of_var=real_t, n_var=1, unit_str='angstrom')
315 CALL section_add_keyword(section, keyword)
316 CALL keyword_release(keyword)
317
318 CALL keyword_create(keyword, __location__, name="Z_HI", &
319 description="Specifies the upper boundary of the box along Z used to "// &
320 "sample the potential. Only valid for nonperiodic RESP fitting.", &
321 usage="Z_HI 5.", type_of_var=real_t, n_var=1, unit_str='angstrom')
322 CALL section_add_keyword(section, keyword)
323 CALL keyword_release(keyword)
324
325 CALL keyword_create(keyword, __location__, name="AUTO_VDW_RADII_TABLE", &
326 description="Select which vdW radii table to use for automatic "// &
327 "determination of RMIN_KIND and RMAX_KIND if those "// &
328 "are not declared explicitly", &
329 usage="AUTO_VDW_RADII_TABLE UFF", &
330 default_i_val=use_cambridge_vdw_radii, &
331 enum_c_vals=s2a("CAMBRIDGE", &
332 "UFF"), &
333 enum_desc=s2a("Cambridge Structural Database", &
334 "Universal Force Field: "// &
335 "Rappe et al. J. Am. Chem. Soc. 114, 10024 (1992)"), &
336 enum_i_vals=(/use_cambridge_vdw_radii, &
338 citations=(/rappe1992/))
339 CALL section_add_keyword(section, keyword)
340 CALL keyword_release(keyword)
341
342 CALL keyword_create(keyword, __location__, name="AUTO_RMAX_SCALE", &
343 description="IF RMAX or RMAX_KIND keywords are not present, defines the "// &
344 "maximumn distance a fit point is away from an atom based on "// &
345 "the formula: rmax(kind) = AUTO_RMAX_SCALE * vdW_radius(kind). "// &
346 "The van der Waals radiii of the elements are based on data from "// &
347 "table chosen by AUTO_VDW_RADII_TABLE.", &
348 usage="AUTO_RMAX_SCALE 60.0", &
349 default_r_val=100.0_dp)
350 CALL section_add_keyword(section, keyword)
351 CALL keyword_release(keyword)
352
353 CALL keyword_create(keyword, __location__, name="AUTO_RMIN_SCALE", &
354 description="IF RMIN or RMIN_KIND keywords are not present, defines the "// &
355 "minimum distance a fit point is away from an atom based on "// &
356 "the formula: rmin(kind) = AUTO_RMIN_SCALE * vdW_radius(kind). "// &
357 "The van der Waals radii of the elements are based on data from "// &
358 "table chosen by AUTO_VDW_RADII_TABLE.", &
359 usage="AUTO_RMIN_SCALE 1.5", &
360 default_r_val=1.0_dp)
361 CALL section_add_keyword(section, keyword)
362 CALL keyword_release(keyword)
363
364 CALL keyword_create(keyword, __location__, name="RMAX", &
365 description="Specifies the maximum distance a fit point is away from an atom. "// &
366 "Valid for all atomic kinds for which no RMAX_KIND are specified.", &
367 usage="RMAX 2.5", &
368 default_r_val=cp_unit_to_cp2k(value=2.5_dp, unit_str="angstrom"), &
369 unit_str='angstrom')
370 CALL section_add_keyword(section, keyword)
371 CALL keyword_release(keyword)
372
373 CALL keyword_create(keyword, __location__, name="RMIN", &
374 description="Specifies the minimum distance a fit point is away from an atom. "// &
375 "Valid for all atomic kinds for which no RMIN_KIND are specified.", &
376 usage="RMIN 2.1", &
377 default_r_val=cp_unit_to_cp2k(value=2.1_dp, unit_str="angstrom"), &
378 unit_str='angstrom')
379 CALL section_add_keyword(section, keyword)
380 CALL keyword_release(keyword)
381
382 CALL keyword_create(keyword, __location__, name="RMAX_KIND", &
383 description="Specifies the maximum distance a fit point is away from an atom "// &
384 "of a given kind", &
385 usage="RMAX 2.5 Br", repeats=.true., &
386 n_var=-1, type_of_var=char_t)
387 CALL section_add_keyword(section, keyword)
388 CALL keyword_release(keyword)
389
390 CALL keyword_create(keyword, __location__, name="RMIN_KIND", &
391 description="Specifies the minimum distance a fit point is away from an atom "// &
392 "of a given kind", &
393 usage="RMIN 2.1 Br", repeats=.true., &
394 n_var=-1, type_of_var=char_t)
395 CALL section_add_keyword(section, keyword)
396 CALL keyword_release(keyword)
397
398 END SUBROUTINE create_sphere_sampling_section
399
400! **************************************************************************************************
401!> \brief specifies the parameter for sampling the resp fitting points for
402!> slab-like periodic systems, i.e. systems that involve surfaces
403!> \param section the section to create
404!> \author Dorothea Golze
405! **************************************************************************************************
406 SUBROUTINE create_slab_sampling_section(section)
407 TYPE(section_type), POINTER :: section
408
409 TYPE(keyword_type), POINTER :: keyword
410
411 cpassert(.NOT. ASSOCIATED(section))
412 CALL section_create(section, __location__, name="SLAB_SAMPLING", &
413 description="Specifies the parameter for sampling the RESP fitting "// &
414 "points for slab-like periodic systems, i.e. systems that "// &
415 "involve surfaces. This section can only be used with periodic "// &
416 "Poisson solver and cell. To see, which grid points were "// &
417 "used, switch on COORD_FIT_POINTS in the PRINT section.", &
418 n_keywords=1, n_subsections=0, repeats=.true.)
419
420 NULLIFY (keyword)
421
422 CALL keyword_create(keyword, __location__, name="ATOM_LIST", &
423 description="Specifies the list of indexes of atoms used to define "// &
424 "the region for the RESP fitting. The list should "// &
425 "contain indexes of atoms of the first surface layer.", &
426 usage="ATOM_LIST 1 2 3 or 1..3", &
427 type_of_var=integer_t, n_var=-1, repeats=.true.)
428 CALL section_add_keyword(section, keyword)
429 CALL keyword_release(keyword)
430
431 CALL keyword_create(keyword, __location__, name="RANGE", &
432 description="Range where the fitting points are sampled. A range of "// &
433 "3 to 5 Angstroms means that the fitting points are sampled in the region "// &
434 "of 3 to 5 Angstroms above the surface which is defined by atom indexes given "// &
435 "in ATOM_LIST.", &
436 usage="RANGE <real> <real>", unit_str="angstrom", n_var=2, type_of_var=real_t)
437 CALL section_add_keyword(section, keyword)
438 CALL keyword_release(keyword)
439
440 CALL keyword_create(keyword, __location__, name="LENGTH", &
441 description="Length of the sampling box, i.e. a box of this length and "// &
442 "the height specified by RANGE is defined above each surface atom given "// &
443 "in ATOM_LIST. The grid points in the boxes are accepted as fitting point. "// &
444 "Should be in the range of the nearest neighbour distance (a bit larger to be "// &
445 "on the safe side). Allows for a refined sampling of grid points in case of "// &
446 "corrugated surfaces.", &
447 usage="LENGTH <real> ", unit_str="angstrom", n_var=1, type_of_var=real_t, &
448 default_r_val=cp_unit_to_cp2k(value=3.0_dp, unit_str="angstrom"))
449 CALL section_add_keyword(section, keyword)
450 CALL keyword_release(keyword)
451
452 CALL keyword_create(keyword, __location__, name="SURF_DIRECTION", &
453 description="Specifies what above the surface means. Defines the direction.", &
454 usage="SURF_DIRECTION Z", &
455 enum_c_vals=s2a("X", "Y", "Z", "-X", "-Y", "-Z"), &
456 enum_i_vals=(/do_resp_x_dir, do_resp_y_dir, do_resp_z_dir, &
458 enum_desc=s2a("surface layers are piled up in x-direction", &
459 "surface layers are piled up in y-direction", &
460 "surface layers are piled up in z-direction", &
461 "surface layers are piled up in -x-direction", &
462 "surface layers are piled up in -y-direction", &
463 "surface layers are piled up in -z-direction"), &
464 default_i_val=do_resp_z_dir)
465 CALL section_add_keyword(section, keyword)
466 CALL keyword_release(keyword)
467
468 END SUBROUTINE create_slab_sampling_section
469
470! **************************************************************************************************
471!> \brief create the resp print section
472!> \param section the section to create
473!> \author Dorothea Golze
474! **************************************************************************************************
475 SUBROUTINE create_print_resp_section(section)
476 TYPE(section_type), POINTER :: section
477
478 TYPE(keyword_type), POINTER :: keyword
479 TYPE(section_type), POINTER :: print_key
480
481 cpassert(.NOT. ASSOCIATED(section))
482 NULLIFY (print_key, keyword)
483 CALL section_create(section, __location__, name="print", &
484 description="Section of possible print options specific for the RESP code.", &
485 n_keywords=0, n_subsections=1, repeats=.false.)
486
487 CALL cp_print_key_section_create(print_key, __location__, "PROGRAM_RUN_INFO", &
488 description="Controls the printing of information regarding the run.", &
489 print_level=low_print_level, filename="__STD_OUT__")
490 CALL section_add_subsection(section, print_key)
491 CALL section_release(print_key)
492
493 CALL cp_print_key_section_create(print_key, __location__, "COORD_FIT_POINTS", &
494 description="Controls the printing of the coordinates of the "// &
495 "grid points used for periodic RESP fitting. This section "// &
496 "is intended to be only used for testing (you can get large files).", &
497 print_level=high_print_level, add_last=add_last_numeric, &
498 filename="RESP_FIT_POINTS", &
499 common_iter_levels=3)
500 CALL section_add_subsection(section, print_key)
501 CALL section_release(print_key)
502
503 CALL cp_print_key_section_create(print_key, __location__, "RESP_CHARGES_TO_FILE", &
504 description="Controls the printing of the RESP charges "// &
505 "to a file.", &
506 print_level=high_print_level, add_last=add_last_numeric, &
507 filename="RESP_CHARGES", &
508 common_iter_levels=3)
509 CALL section_add_subsection(section, print_key)
510 CALL section_release(print_key)
511
512 CALL cp_print_key_section_create(print_key, __location__, "V_RESP_CUBE", &
513 description="Controls the printing of the potential generated "// &
514 "by the RESP CHARGES to a cube file. Prints the relative "// &
515 "root-mean-square (RRMS) and root-mean-square (RMS) errors.", &
516 print_level=high_print_level, add_last=add_last_numeric, &
517 filename="RESP_POTENTIAL", &
518 common_iter_levels=3)
519 CALL keyword_create(keyword, __location__, name="stride", &
520 description="The stride (X,Y,Z) used to write the cube file "// &
521 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
522 " 1 number valid for all components.", &
523 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=(/2, 2, 2/), type_of_var=integer_t)
524 CALL section_add_keyword(print_key, keyword)
525 CALL keyword_release(keyword)
526 CALL keyword_create(keyword, __location__, name="APPEND", &
527 description="append the cube files when they already exist", &
528 default_l_val=.false., lone_keyword_l_val=.true.)
529 CALL section_add_keyword(print_key, keyword)
530 CALL keyword_release(keyword)
531 CALL section_add_subsection(section, print_key)
532 CALL section_release(print_key)
533 END SUBROUTINE create_print_resp_section
534
535END MODULE input_cp2k_resp
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public golze2015
integer, save, public rappe1992
integer, save, public campana2009
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public low_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:1150
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_resp_minus_x_dir
integer, parameter, public do_resp_minus_y_dir
integer, parameter, public do_resp_z_dir
integer, parameter, public do_resp_minus_z_dir
integer, parameter, public use_uff_vdw_radii
integer, parameter, public do_resp_y_dir
integer, parameter, public do_resp_x_dir
integer, parameter, public use_cambridge_vdw_radii
integer, parameter, public gaussian
function that builds the resp section of the input
subroutine, public create_resp_section(section)
Creates the RESP section.
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)
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 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.
represent a keyword in the input
represent a section of the input file