29#include "./base/base_uses.f90"
34 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_kpoints'
67 cpassert(.NOT.
ASSOCIATED(section))
69 description=
"Sets up the kpoints.", &
70 n_keywords=1, n_subsections=0, repeats=.false.)
74 description=
"Kpoint scheme to be used. Available options are:"//
newline// &
77 "- `MONKHORST-PACK`"//
newline// &
81 "For `MONKHORST-PACK` the number of k points in all 3 dimensions has to"// &
82 " be supplied along with the keyword. For `MACDONALD` also the list of shifts."// &
83 " E.g. `MONKHORST-PACK 12 12 8`, `MACDONALD 4 4 4 0.25 0.25 0.25`", &
84 usage=
"SCHEME {KPMETHOD} {integer} {integer} ..", &
86 n_var=-1, type_of_var=
char_t)
91 description=
"Specify kpoint coordinates and weight. ", &
92 usage=
"KPOINT x y z w", repeats=.true., &
93 n_var=4, type_of_var=
real_t)
98 description=
"Special k-points are defined either in units"// &
99 " of reciprocal lattice vectors or in Cartesian coordinates in uints of 2Pi/len."// &
100 " B_VECTOR: in multiples of the reciprocal lattice vectors (b)."// &
101 " CART_ANGSTROM: In units of 2*Pi/Angstrom."// &
102 " CART_BOHR: In units of 2*Pi/Bohr.", &
103 usage=
"UNITS <value>", type_of_var=
char_t, default_c_val=
"B_VECTOR")
108 description=
"Use symmetry to reduce the number of kpoints.", &
109 usage=
"SYMMETRY <LOGICAL>", &
110 default_l_val=.false., lone_keyword_l_val=.true.)
115 description=
"Use full non-reduced kpoint grid.", &
116 usage=
"FULL_GRID <LOGICAL>", &
117 default_l_val=.false., lone_keyword_l_val=.true.)
122 description=
"Verbose output information.", &
123 usage=
"VERBOSE <LOGICAL>", &
124 default_l_val=.false., lone_keyword_l_val=.true.)
129 description=
"Accuracy in symmetry determination.", &
130 usage=
"EPS_GEO <real>", &
131 default_r_val=1.0e-6_dp)
135 CALL keyword_create(keyword, __location__, name=
"PARALLEL_GROUP_SIZE", &
136 description=
"Number of processors to be used for a single kpoint."// &
137 " This number must divide the total number of processes."// &
138 " The number of groups must divide the total number of kpoints."// &
139 " Value=-1 (smallest possible number of processes per group, satisfying the constraints)."// &
140 " Value=0 (all processes)."// &
141 " Value=n (exactly n processes).", &
142 usage=
"PARALLEL_GROUP_SIZE <integer>", &
147 CALL keyword_create(keyword, __location__, name=
"WAVEFUNCTIONS", &
148 description=
"Use real/complex wavefunctions if possible.", &
149 usage=
"WAVEFUNCTIONS REAL", &
151 enum_c_vals=
s2a(
"REAL",
"COMPLEX"), &
152 enum_desc=
s2a(
"Use real wavefunctions (if possible by kpoints specified).", &
153 "Use complex wavefunctions (default)."), &
168 CHARACTER(LEN=*),
OPTIONAL :: section_name
170 CHARACTER(len=default_path_length) :: my_section_name
173 IF (
PRESENT(section_name))
THEN
174 my_section_name = section_name
176 my_section_name =
"KPOINT_SET"
179 cpassert(.NOT.
ASSOCIATED(section))
180 CALL section_create(section, __location__, name=my_section_name, &
181 description=
"Specifies a k-point line to be calculated.", &
182 n_keywords=0, n_subsections=0, repeats=.true.)
185 CALL keyword_create(keyword, __location__, name=
"SPECIAL_POINT", &
186 description=
"Name and coordinates of a special k-point", &
187 usage=
"SPECIAL_POINT GAMMA 0.0 0.0 0.0", n_var=-1, type_of_var=
char_t, repeats=.true.)
192 description=
"Number of k-points along the line.", &
198 description=
"Special k-points are defined either in units"// &
199 " of reciprocal lattice vectors or in Cartesian coordinates in uints of 2Pi/len."// &
200 " B_VECTOR: in multiples of the reciprocal lattice vectors (b)."// &
201 " CART_ANGSTROM: In units of 2*Pi/Angstrom."// &
202 " CART_BOHR: In units of 2*Pi/Bohr.", &
203 usage=
"UNITS <value>", type_of_var=
char_t, default_c_val=
"B_VECTOR")
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public monkhorst1976
integer, save, public macdonald1978
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_path_length
Utilities for string manipulations.
character(len=1), parameter, public newline