37#include "./base/base_uses.f90"
42 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_voronoi'
58 cpassert(.NOT.
ASSOCIATED(print_key))
62 description=
"Controls the Voronoi integration of the total electron density"// &
63 " for the computation of electromagnetic moments, see [Thomas2015],"// &
64 " [Brehm2020], and [Brehm2021]"// &
65 " (via LibVori see <https://brehm-research.de/voronoi>).", &
71 description=
"Appends frames to already existing .voronoi file.", &
72 default_l_val=.false., lone_keyword_l_val=.true.)
77 description=
"Performs a sanity check before each Voronoi integration, i.e.,"// &
78 " checks if every grid point is located in exactly one Voronoi cell.", &
79 usage=
"SANITY_CHECK T", default_l_val=.false., lone_keyword_l_val=.true.)
84 description=
"Specify this keyword to overwrite any existing ""properties.emp"" file if"// &
85 " it already exists. By default, the data is appended to an existing .emp file.", &
86 usage=
"OVERWRITE T", default_l_val=.false., lone_keyword_l_val=.true.)
91 description=
"Skips the first step of a MD run (avoids duplicate step if restarted).", &
92 usage=
"SKIP_FIRST T", default_l_val=.false., lone_keyword_l_val=.true.)
97 description=
"Switches on verbose screen output of the Voronoi integration.", &
98 usage=
"VERBOSE T", default_l_val=.false., lone_keyword_l_val=.true.)
103 description=
"Writes the resulting electromagnetic moments to a binary file ""properties.emp""."// &
104 " The file name cannot be changed.", &
105 usage=
"OUTPUT_EMP T", default_l_val=.false., lone_keyword_l_val=.true.)
110 description=
"Writes the resulting electromagnetic moments to text files (*.voronoi)."// &
111 " The file name is specified via FILENAME.", &
112 usage=
"OUTPUT_TEXT T", default_l_val=.true., lone_keyword_l_val=.true.)
116 CALL keyword_create(keyword, __location__, name=
"REFINEMENT_FACTOR", &
117 description=
"Sets the refinement factor for the Voronoi integration.", &
118 usage=
"REFINEMENT_FACTOR 2", n_var=1, default_i_val=1, type_of_var=
integer_t)
122 CALL keyword_create(keyword, __location__, name=
"VORONOI_RADII", &
123 description=
"Which atomic radii to use for the radical Voronoi tessellation.", &
124 usage=
"VORONOI_RADII {UNITY,VDW,COVALENT,USER}", repeats=.false., n_var=1, &
126 enum_c_vals=
s2a(
"UNITY",
"VDW",
"COVALENT",
"USER"), &
127 enum_desc=
s2a(
"Use unity radii (non-radical Voronoi tessellation)",
"Use VdW atom radii", &
128 "Use covalent atom radii",
"Use user-specified atom radii"), &
134 description=
"Defines user atom radii for the radical Voronoi tessellation (one per atom).", &
135 usage=
"USER_RADII {real} {real} {real}", repeats=.false., &
136 unit_str=
"angstrom", &
137 type_of_var=
real_t, n_var=-1)
141 CALL keyword_create(keyword, __location__, name=
"MOLECULAR_PROPERTIES", &
142 description=
"Calculation of molecular properties from Voronoi integration.", &
143 usage=
"MOLECULAR_PROPERTIES T", default_l_val=.false., lone_keyword_l_val=.true.)
147 CALL keyword_create(keyword, __location__, name=
"MOLPROP_FILE_NAME", &
148 description=
"Root of the file name where to print molecular properties."// &
149 " filename.molprop is used.", &
150 usage=
"MOLPROP_FILE_NAME <FILENAME>", &
151 default_lc_val=
"__STD_OUT__", type_of_var=
lchar_t)
156 description=
"The Voronoi tessellation can have issues with highly symmetric structures."// &
157 " This keyword displaces all atoms pseudo-randomly by a tiny amount (see JITTER_AMPLITUDE)"// &
158 " to break symmetry. The displacement is constant over time, so that no temporal noise is"// &
159 " introduced. The displacement is not visible to other CP2k routines (FORCE_EVAL, output)."// &
160 " It is only applied internally in the library for the Voronoi tessellation.", &
161 usage=
"JITTER T", default_l_val=.true., lone_keyword_l_val=.true.)
166 description=
"Sets the random seed for the jitter. The pseudo-random number generator"// &
167 " is re-initialized for each Voronoi tessellation so that the jitter is constant over"// &
168 " simulation time (no temporal noise).", &
169 usage=
"JITTER_SEED 1234", n_var=1, default_i_val=0, type_of_var=
integer_t)
173 CALL keyword_create(keyword, __location__, name=
"JITTER_AMPLITUDE", &
174 description=
"Sets the maximum displacement amplitude for the jitter.", &
175 usage=
"JITTER_AMPLITUDE 0.01", unit_str=
"angstrom", n_var=1, default_r_val=1.e-3_dp*
bohr, &
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public brehm2021
integer, save, public brehm2020
integer, save, public thomas2015
integer, save, public brehm2018
integer, save, public rycroft2009
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
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
Defines the basic variable types.
integer, parameter, public dp
Definition of physical constants:
real(kind=dp), parameter, public bohr
Utilities for string manipulations.