(git:9aade48)
Loading...
Searching...
No Matches
input_cp2k_loc.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!--------------------------------------------------------------------------------------------------!
8 USE bibliography, ONLY: hunt2003
14 USE input_constants, ONLY: &
29 USE input_val_types, ONLY: integer_t,&
30 lchar_t,&
31 real_t
32 USE kinds, ONLY: dp
33 USE string_utilities, ONLY: s2a
34#include "./base/base_uses.f90"
35
36 IMPLICIT NONE
37 PRIVATE
38
39 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_loc'
40
42
43CONTAINS
44
45! **************************************************************************************************
46!> \brief parameters fo the localization of wavefunctions
47!> \param section ...
48!> \par History
49!> 03.2005 created [MI]
50! **************************************************************************************************
51
52 SUBROUTINE create_localize_section(section)
53
54 TYPE(section_type), POINTER :: section
55
56 TYPE(keyword_type), POINTER :: keyword
57 TYPE(section_type), POINTER :: print_key, print_section, subsection
58
59 cpassert(.NOT. ASSOCIATED(section))
60
61 NULLIFY (keyword, print_key)
62 CALL section_create(section, __location__, name="LOCALIZE", &
63 description="Use one of the available methods to define the localization"// &
64 " and possibly to optimize it to a minimum or a maximum.", &
65 n_keywords=8, n_subsections=0, repeats=.false.)
66
67 CALL keyword_create(keyword, __location__, name="_SECTION_PARAMETERS_", &
68 description="controls the activation of the MOS localization procedure", &
69 usage="&LOCALIZE T", default_l_val=.false., lone_keyword_l_val=.true.)
70 CALL section_add_keyword(section, keyword)
71 CALL keyword_release(keyword)
72
73 CALL keyword_create(keyword, __location__, name="MAX_ITER", &
74 description="Maximum number of iterations used for localization methods", &
75 usage="MAX_ITER 2000", default_i_val=10000)
76 CALL section_add_keyword(section, keyword)
77 CALL keyword_release(keyword)
78
79 CALL keyword_create( &
80 keyword, __location__, name="MAX_CRAZY_ANGLE", &
81 description="Largest allowed angle for the crazy rotations algorithm (smaller is slower but more stable).", &
82 usage="MAX_CRAZY_ANGLE 0.1", unit_str="rad", default_r_val=0.2_dp)
83 CALL section_add_keyword(section, keyword)
84 CALL keyword_release(keyword)
85
86 CALL keyword_create(keyword, __location__, name="CRAZY_SCALE", &
87 description="scale angles", &
88 usage="CRAZY_SCALE 0.9", default_r_val=1.0_dp)
89 CALL section_add_keyword(section, keyword)
90 CALL keyword_release(keyword)
91
92 CALL keyword_create(keyword, __location__, name="CRAZY_USE_DIAG", &
93 description="Use diagonalization (slow) or pade based calculation of matrix exponentials.", &
94 usage="CRAZY_USE_DIAG ", default_l_val=.false., lone_keyword_l_val=.true.)
95 CALL section_add_keyword(section, keyword)
96 CALL keyword_release(keyword)
97
98 CALL keyword_create( &
99 keyword, __location__, name="USE_HISTORY", &
100 description="Generate an improved initial guess based on a history of results, which is useful during MD. "// &
101 "Will only work if the number of states to be localized remains constant.", &
102 usage="USE_HISTORY ", default_l_val=.false., lone_keyword_l_val=.true.)
103 CALL section_add_keyword(section, keyword)
104 CALL keyword_release(keyword)
105
106 CALL keyword_create(keyword, __location__, name="EACH", &
107 description="localize each n steps", &
108 default_i_val=1)
109 CALL section_add_keyword(section, keyword)
110 CALL keyword_release(keyword)
111
112 CALL keyword_create( &
113 keyword, __location__, name="EPS_OCCUPATION", &
114 description="Tolerance in the occupation number to select only fully occupied orbitals for the rotation", &
115 usage="EPS_OCCUPATION 1.E-5", default_r_val=1.0e-8_dp)
116 CALL section_add_keyword(section, keyword)
117 CALL keyword_release(keyword)
118
119 CALL keyword_create(keyword, __location__, name="OUT_ITER_EACH", &
120 description="Every how many iterations of the localization algorithm "// &
121 "(Jacobi) the tolerance value is printed out", &
122 usage="OUT_ITER_EACH 100", default_i_val=100)
123 CALL section_add_keyword(section, keyword)
124 CALL keyword_release(keyword)
125
126 CALL keyword_create(keyword, __location__, name="EPS_LOCALIZATION", &
127 description="Tolerance used in the convergence criterion of the localization methods.", &
128 usage="EPS_LOCALIZATION 1.0E-2", default_r_val=1.0e-4_dp)
129 CALL section_add_keyword(section, keyword)
130 CALL keyword_release(keyword)
131
132 CALL keyword_create(keyword, __location__, name="MIN_OR_MAX", &
133 description="Requires the maximization of the spread of the wfn", &
134 usage="MIN_OR_MAX (SPREADMIN|SPREADMAX)", &
135 enum_c_vals=["SPREADMIN", "SPREADMAX"], &
136 enum_i_vals=[do_loc_min, do_loc_max], &
137 default_i_val=do_loc_min)
138 CALL section_add_keyword(section, keyword)
139 CALL keyword_release(keyword)
140
141 CALL keyword_create( &
142 keyword, __location__, name="METHOD", &
143 description="Method of optimization if any", &
144 usage="METHOD (JACOBI|CRAZY|DIRECT|GAPO|L1SD|SCDM|CS|NONE)", &
145 enum_c_vals=s2a("NONE", "JACOBI", "CRAZY", "GAPO", "L1SD", "DIRECT", "SCDM", "CS"), &
146 enum_i_vals=[do_loc_none, &
148 do_loc_crazy, &
149 do_loc_gapo, &
152 do_loc_scdm, &
153 do_loc_cs], &
154 enum_desc=s2a("No localization is applied", &
155 "Using 2 x 2 rotations of the orbitals, slow but robust", &
156 "A new fast method is applied, might be slightly less robust than jacobi, but usually much faster", &
157 "Gradient ascent for partially occupied wannier functions", &
158 "Steepest descent minimization of an approximate l1 norm", &
159 "Using a direct minimisation approacha", &
160 "Use QR factorization", &
161 "Using the Cardoso-Souloumiac algorithm for complex matrices"), &
162 default_i_val=do_loc_jacobi)
163 CALL section_add_keyword(section, keyword)
164 CALL keyword_release(keyword)
165
166 CALL keyword_create(keyword, __location__, name="CPO_GUESS", &
167 description="Initial guess for coefficients if METHOD GAPO is used", &
168 usage="CPO_GUESS (ATOMIC|RESTART|RANDOM)", &
169 enum_c_vals=s2a("ATOMIC", "RESTART", "RANDOM"), &
171 default_i_val=do_loc_cpo_atomic)
172 CALL section_add_keyword(section, keyword)
173 CALL keyword_release(keyword)
174
175 CALL keyword_create(keyword, __location__, name="CPO_GUESS_SPACE", &
176 description="Orbital space from which initial guess for coefficients is determined "// &
177 "if METHOD GAPO and CPO_GUESS ATOMIC are employed", &
178 usage="CPO_GUESS_SPACE (WAN|ALL)", &
179 enum_c_vals=s2a("WAN", "ALL"), &
181 default_i_val=do_loc_cpo_space_wan)
182 CALL section_add_keyword(section, keyword)
183 CALL keyword_release(keyword)
184
185 CALL keyword_create(keyword, __location__, name="CG_PO", &
186 description="Use conjugate gradient in conjunction with METHOD GAPO. If FALSE, "// &
187 "steepest descent is used instead.", &
188 usage="CG_PO", default_l_val=.true., &
189 lone_keyword_l_val=.true.)
190 CALL section_add_keyword(section, keyword)
191 CALL keyword_release(keyword)
192
193 CALL keyword_create(keyword, __location__, name="JACOBI_FALLBACK", &
194 description="Use Jacobi method in case no convergence was achieved"// &
195 " by using the crazy rotations method.", &
196 usage="JACOBI_FALLBACK", default_l_val=.true., &
197 lone_keyword_l_val=.true.)
198 CALL section_add_keyword(section, keyword)
199 CALL keyword_release(keyword)
200
201 CALL keyword_create(keyword, __location__, name="JACOBI_REFINEMENT", &
202 description="Use Jacobi method to refine the localisation obtained by SCDM", &
203 usage="JACOBI_REFINEMENT", default_l_val=.false., &
204 lone_keyword_l_val=.true.)
205 CALL section_add_keyword(section, keyword)
206 CALL keyword_release(keyword)
207
208 CALL keyword_create(keyword, __location__, name="RESTART", &
209 description="Restart the localization from a set of orbitals"// &
210 " read from a localization restart file.", &
211 usage="RESTART", default_l_val=.false., &
212 lone_keyword_l_val=.true.)
213 CALL section_add_keyword(section, keyword)
214 CALL keyword_release(keyword)
215
216 CALL keyword_create(keyword, __location__, name="LOCHOMO_RESTART_FILE_NAME", &
217 description="File name where to read the MOS from "// &
218 "which to restart the localization procedure for occupied states", &
219 usage="LOCHOMO_RESTART_FILE_NAME <FILENAME>", &
220 type_of_var=lchar_t)
221 CALL section_add_keyword(section, keyword)
222 CALL keyword_release(keyword)
223
224 CALL keyword_create(keyword, __location__, name="LOCMIXD_RESTART_FILE_NAME", &
225 description="File name where to read the MOS from "// &
226 "which to restart the localization procedure for MIXED states", &
227 usage="LOCMIXD_RESTART_FILE_NAME <FILENAME>", &
228 type_of_var=lchar_t)
229 CALL section_add_keyword(section, keyword)
230 CALL keyword_release(keyword)
231
232 CALL keyword_create(keyword, __location__, name="LOCLUMO_RESTART_FILE_NAME", &
233 description="File name where to read the MOS from "// &
234 "which to restart the localization procedure for unoccupied states", &
235 usage="LOCLUMO_RESTART_FILE_NAME <FILENAME>", &
236 type_of_var=lchar_t)
237 CALL section_add_keyword(section, keyword)
238 CALL keyword_release(keyword)
239
240 CALL keyword_create(keyword, __location__, name="OPERATOR", &
241 description="Type of opertator which defines the spread functional", &
242 usage="OPERATOR (BERRY|BOYS|PIPEK)", &
243 enum_c_vals=s2a("BERRY", "BOYS", "PIPEK"), &
244 enum_i_vals=[op_loc_berry, op_loc_boys, op_loc_pipek], &
245 default_i_val=op_loc_berry)
246 CALL section_add_keyword(section, keyword)
247 CALL keyword_release(keyword)
248
249 CALL keyword_create(keyword, __location__, name="LIST", &
250 description="Indexes of the occupied wfn to be localized "// &
251 "This keyword can be repeated several times "// &
252 "(useful if you have to specify many indexes).", &
253 usage="LIST 1 2", &
254 n_var=-1, type_of_var=integer_t, repeats=.true.)
255 CALL section_add_keyword(section, keyword)
256 CALL keyword_release(keyword)
257
258 CALL keyword_create(keyword, __location__, name="LIST_UNOCCUPIED", &
259 description="Indexes of the unoccupied states to be localized, "// &
260 "up to now only valid in combination with GPW. "// &
261 "This keyword has to be present if unoccupied states should be localized. "// &
262 "This keyword can be repeated several times "// &
263 "(useful if you have to specify many indexes).", &
264 usage="LIST_UNOCCUPIED 1 2", &
265 n_var=-1, type_of_var=integer_t, repeats=.true.)
266 CALL section_add_keyword(section, keyword)
267 CALL keyword_release(keyword)
268
269 CALL keyword_create(keyword, __location__, name="NEXTRA", &
270 description="Number of orbitals above fully occupied MOs to be localized, "// &
271 "up to now only valid in combination with GPW. "// &
272 "This keyword has to be present for STATES MIXED option. "// &
273 "Otherwise, only the fully occupied MOs are localized.", &
274 usage="NEXTRA 5", default_i_val=0)
275 CALL section_add_keyword(section, keyword)
276 CALL keyword_release(keyword)
277
278 CALL keyword_create(keyword, __location__, name="STATES", &
279 description="Which states to localize, LUMO up to now only available in GPW", &
280 usage="STATES (HOMO|LUMO|MIXED|ALL)", &
281 enum_c_vals=s2a("OCCUPIED", "UNOCCUPIED", "MIXED", "ALL"), &
283 default_i_val=do_loc_homo)
284 CALL section_add_keyword(section, keyword)
285 CALL keyword_release(keyword)
286
287 CALL keyword_create( &
288 keyword, __location__, &
289 name="ENERGY_RANGE", &
290 description="Select the orbitals to be localized within the given energy range."// &
291 " This type of selection cannot be added on top of the selection through a LIST. It reads to reals that are"// &
292 " lower and higher boundaries of the energy range.", &
293 usage="ENERGY_RANGE lower_bound {real}, higher_bound {real}", &
294 repeats=.false., &
295 n_var=2, default_r_vals=[0._dp, 0._dp], unit_str='eV', &
296 type_of_var=real_t)
297 CALL section_add_keyword(section, keyword)
298 CALL keyword_release(keyword)
299
300 NULLIFY (print_section)
301 CALL section_create(print_section, __location__, name="PRINT", &
302 description="Collects all printing options related to the Wannier centers and "// &
303 "properties computed with Wannier centers.", &
304 n_keywords=0, n_subsections=1, repeats=.false.)
305 NULLIFY (print_key)
306 CALL cp_print_key_section_create(print_key, __location__, "program_run_info", &
307 description="Controls the printing basic info about the method", &
308 print_level=low_print_level, add_last=add_last_numeric, filename="__STD_OUT__")
309 CALL section_add_subsection(print_section, print_key)
310 CALL section_release(print_key)
311 ! Add printing of wannier infos
312 CALL print_wanniers(print_section)
313 NULLIFY (subsection)
314 ! Total Dipoles with wannier
315 CALL create_dipoles_section(subsection, "TOTAL_DIPOLE", debug_print_level + 1)
316 CALL section_add_subsection(print_section, subsection)
317 CALL section_release(subsection)
318 ! Molecular Dipoles with wannier
319 CALL create_dipoles_section(subsection, "MOLECULAR_DIPOLES", debug_print_level + 1)
320 CALL section_add_subsection(print_section, subsection)
321 CALL section_release(subsection)
322 ! Molecular Mulipole Moments with wannier
323 CALL cp_print_key_section_create(subsection, __location__, name="MOLECULAR_MOMENTS", &
324 description="Section controlling the calculation of molecular multipole moments.", &
325 print_level=debug_print_level + 1, filename="__STD_OUT__")
326 CALL keyword_create(keyword, __location__, name="ORDER", &
327 description="Maximum order of mulitpoles to be calculated.", &
328 usage="ORDER {integer}", default_i_val=2, type_of_var=integer_t)
329 CALL section_add_keyword(subsection, keyword)
330 CALL keyword_release(keyword)
331 !
332 CALL section_add_subsection(print_section, subsection)
333 CALL section_release(subsection)
334 !
335 CALL cp_print_key_section_create(subsection, __location__, name="LOCALIZED_MOMENTS", &
336 description="Section controlling the calculation of "// &
337 "localized moments", &
338 print_level=debug_print_level + 1, filename="__STD_OUT__")
339 !
340 CALL keyword_create(keyword, __location__, &
341 name="MAX_MOMENT", &
342 description="Maximum moment to be calculated.", &
343 usage="MAX_MOMENT {integer}", &
344 repeats=.false., &
345 n_var=1, &
346 type_of_var=integer_t, &
347 default_i_val=1)
348 CALL section_add_keyword(subsection, keyword)
349 CALL keyword_release(keyword)
350 !
351 CALL keyword_create(keyword, __location__, &
352 name="MAGNETIC", &
353 description="Calculate also magnetic moments.", &
354 usage="MAGNETIC .TRUE.", &
355 repeats=.false., &
356 n_var=1, &
357 default_l_val=.false., &
358 lone_keyword_l_val=.true.)
359 CALL section_add_keyword(subsection, keyword)
360 CALL keyword_release(keyword)
361 !
362 CALL keyword_create(keyword, __location__, &
363 name="VEL_REPRS", &
364 description="Calculate expectation values of the el. multipole "// &
365 "moments in their velocity representation during RTP. Implemented up "// &
366 "to el. quadrupole moment.", &
367 usage="VEL_REPRS .TRUE.", &
368 repeats=.false., &
369 n_var=1, &
370 default_l_val=.false., &
371 lone_keyword_l_val=.true.)
372 CALL section_add_keyword(subsection, keyword)
373 CALL keyword_release(keyword)
374 !
375 CALL keyword_create(keyword, __location__, &
376 name="COM_NL", &
377 description="Include non local commutator for velocity "// &
378 "representations. Necessary for origin independent results.", &
379 usage="COM_NL .TRUE.", &
380 repeats=.false., &
381 n_var=1, &
382 default_l_val=.false., &
383 lone_keyword_l_val=.true.)
384 CALL section_add_keyword(subsection, keyword)
385 CALL keyword_release(keyword)
386 !
387 CALL section_add_subsection(print_section, subsection)
388 CALL section_release(subsection)
389 ! Molecular States with wannier
390 CALL create_molecular_states_section(subsection)
391 CALL section_add_subsection(print_section, subsection)
392 CALL section_release(subsection)
393 ! Wannier States with wannier
394 CALL create_wannier_states_section(subsection)
395 CALL section_add_subsection(print_section, subsection)
396 CALL section_release(subsection)
397 !
398 CALL section_add_subsection(section, print_section)
399 CALL section_release(print_section)
400
401 END SUBROUTINE create_localize_section
402
403! **************************************************************************************************
404!> \brief Controls the printing of the basic info coming from the LOCALIZE
405!> section
406!> \param section ...
407!> \author teo
408! **************************************************************************************************
409 SUBROUTINE print_wanniers(section)
410 TYPE(section_type), POINTER :: section
411
412 TYPE(keyword_type), POINTER :: keyword
413 TYPE(section_type), POINTER :: print_key
414
415 cpassert(ASSOCIATED(section))
416 NULLIFY (print_key, keyword)
417 CALL cp_print_key_section_create(print_key, __location__, "WANNIER_CUBES", &
418 description="Controls the printing of the wannier functions ", &
419 print_level=high_print_level, add_last=add_last_numeric, filename="")
420 CALL keyword_create(keyword, __location__, name="stride", &
421 description="The stride (X,Y,Z) used to write the cube file "// &
422 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
423 " 1 number valid for all components.", &
424 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
425 CALL section_add_keyword(print_key, keyword)
426 CALL keyword_release(keyword)
427
428 CALL keyword_create(keyword, __location__, name="DENSITY", &
429 description="Controls the printing of the Wannier function "// &
430 "electronic densities", &
431 default_l_val=.false., lone_keyword_l_val=.true.)
432 CALL section_add_keyword(print_key, keyword)
433 CALL keyword_release(keyword)
434
435 CALL keyword_create(keyword, __location__, name="CUBES_LU_BOUNDS", &
436 variants=["CUBES_LU"], &
437 description="The lower and upper index of the states to be printed as cube", &
438 usage="CUBES_LU_BOUNDS integer integer", &
439 n_var=2, default_i_vals=[0, -2], type_of_var=integer_t)
440 CALL section_add_keyword(print_key, keyword)
441 CALL keyword_release(keyword)
442
443 CALL keyword_create(keyword, __location__, name="CUBES_LIST", &
444 description="Indexes of the states to be printed as cube files"// &
445 " This keyword can be repeated several times"// &
446 " (useful if you have to specify many indexes).", &
447 usage="CUBES_LIST 1 2", &
448 n_var=-1, type_of_var=integer_t, repeats=.true.)
449 CALL section_add_keyword(print_key, keyword)
450 CALL keyword_release(keyword)
451 CALL keyword_create(keyword, __location__, name="APPEND", &
452 description="append the cube files when they already exist", &
453 default_l_val=.false., lone_keyword_l_val=.true.)
454 CALL section_add_keyword(print_key, keyword)
455 CALL keyword_release(keyword)
456
457 CALL section_add_subsection(section, print_key)
458 CALL section_release(print_key)
459
460 NULLIFY (print_key)
461 CALL cp_print_key_section_create(print_key, __location__, "WANNIER_CENTERS", &
462 description="Controls the printing of the wannier functions", &
463 print_level=high_print_level, add_last=add_last_numeric, filename="", &
464 unit_str="angstrom")
465
466 CALL keyword_create(keyword, __location__, name="IONS+CENTERS", &
467 description="prints out the wannier centers together with the particles", &
468 usage="IONS+CENTERS", default_l_val=.false., &
469 lone_keyword_l_val=.true.)
470 CALL section_add_keyword(print_key, keyword)
471 CALL keyword_release(keyword)
472
473 CALL add_format_keyword(keyword, print_key, pos=.true., &
474 description="Specifies the format of the output file when IONS+CENTERS is enabled.")
475 CALL section_add_subsection(section, print_key)
476 CALL section_release(print_key)
477
478 NULLIFY (print_key)
479 CALL cp_print_key_section_create(print_key, __location__, "WANNIER_SPREADS", &
480 description="Controls the printing of the wannier functions", &
481 print_level=high_print_level, add_last=add_last_numeric, filename="")
482
483 CALL keyword_create(keyword, __location__, name="SECOND_MOMENTS", &
484 description="Prints out the upper triangular part of the position covariance matrix. "// &
485 "Default is to use a non-periodic position operator. ", &
486 usage="SECOND_MOMENTS", default_l_val=.false., &
487 lone_keyword_l_val=.true.)
488 CALL section_add_keyword(print_key, keyword)
489 CALL keyword_release(keyword)
490
491 CALL keyword_create(keyword, __location__, name="PERIODIC", &
492 description="For the covariance matrix, use the periodic position operator."// &
493 " Requires setting LMAXN1 in QS section to 6 or higher.", &
494 usage="PERIODIC", default_l_val=.false., &
495 lone_keyword_l_val=.true.)
496 CALL section_add_keyword(print_key, keyword)
497 CALL keyword_release(keyword)
498
499 CALL section_add_subsection(section, print_key)
500 CALL section_release(print_key)
501
502 NULLIFY (print_key)
503 CALL cp_print_key_section_create(print_key, __location__, "LOC_RESTART", &
504 description="Controls the printing of restart file for localized MOS", &
505 print_level=high_print_level, add_last=add_last_numeric, filename="")
506 CALL section_add_subsection(section, print_key)
507 CALL section_release(print_key)
508
509 END SUBROUTINE print_wanniers
510
511! **************************************************************************************************
512!> \brief creates the input section for the molecular states
513!> \param print_key ...
514!> \author teo
515! **************************************************************************************************
516 SUBROUTINE create_molecular_states_section(print_key)
517 TYPE(section_type), POINTER :: print_key
518
519 TYPE(keyword_type), POINTER :: keyword
520 TYPE(section_type), POINTER :: print_key2
521
522 cpassert(.NOT. ASSOCIATED(print_key))
523 NULLIFY (print_key2, keyword)
524 CALL cp_print_key_section_create(print_key, __location__, "MOLECULAR_STATES", &
525 description="Controls printing of molecular states ", &
526 print_level=high_print_level, filename=" ", citations=[hunt2003])
527
528 CALL keyword_create( &
529 keyword, __location__, name="CUBE_EVAL_RANGE", &
530 description="only write cubes if the energies of the corresponding molecular states lie in the given interval. "// &
531 "Default is all states.", &
532 usage="CUBE_EVAL_RANGE -1.0 1.0", unit_str="hartree", n_var=2, type_of_var=real_t)
533 CALL section_add_keyword(print_key, keyword)
534 CALL keyword_release(keyword)
535
536 CALL keyword_create(keyword, __location__, name="MARK_STATES", &
537 description="Can be used to mark given molecular states."// &
538 " Sets a mark to both, occupied and unoccupied states. "// &
539 "Occupied states are counted beginning with HOMO=1, "// &
540 "unoccupied states are counted beginning with LUMO=1, "// &
541 "This is only meaningful in combination with WFN_MIX. "// &
542 "First integer specifies the molecule, second integer specifies the state.", &
543 usage="MARK_STATES integer integer", &
544 n_var=2, default_i_vals=[-1, -1], type_of_var=integer_t, repeats=.true.)
545 CALL section_add_keyword(print_key, keyword)
546 CALL keyword_release(keyword)
547
548 CALL cp_print_key_section_create(print_key2, __location__, "cubes", &
549 description="Controls the printing of cube files", &
550 print_level=high_print_level, filename="")
551 CALL keyword_create(keyword, __location__, name="stride", &
552 description="The stride (X,Y,Z) used to write the cube file "// &
553 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
554 " 1 number valid for all components.", &
555 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
556 CALL section_add_keyword(print_key2, keyword)
557 CALL keyword_release(keyword)
558 CALL section_add_subsection(print_key, print_key2)
559 CALL section_release(print_key2)
560 END SUBROUTINE create_molecular_states_section
561
562! **************************************************************************************************
563!> \brief ...
564!> \param print_key ...
565! **************************************************************************************************
566 SUBROUTINE create_wannier_states_section(print_key)
567 TYPE(section_type), POINTER :: print_key
568
569 TYPE(keyword_type), POINTER :: keyword
570 TYPE(section_type), POINTER :: print_key2
571
572 cpassert(.NOT. ASSOCIATED(print_key))
573 NULLIFY (print_key2, keyword)
574 CALL cp_print_key_section_create(print_key, __location__, "WANNIER_STATES", &
575 description="Controls printing of Wannier states ", &
576 print_level=high_print_level, filename=" ")
577
578 CALL keyword_create( &
579 keyword, __location__, name="CUBE_EVAL_RANGE", &
580 description="only write cubes if the energies of the corresponding molecular states lie in the given interval. "// &
581 "Default is all states.", &
582 usage="CUBE_EVAL_RANGE -1.0 1.0", unit_str="hartree", n_var=2, type_of_var=real_t)
583 CALL section_add_keyword(print_key, keyword)
584 CALL keyword_release(keyword)
585
586 CALL keyword_create(keyword, __location__, name="MARK_STATES", &
587 description="Can be used to mark given molecular states."// &
588 " Sets a mark to both, occupied and unoccupied states. "// &
589 "Occupied states are counted beginning with HOMO=1, "// &
590 "unoccupied states are counted beginning with LUMO=1, "// &
591 "This is only meaningful in combination with WFN_MIX. "// &
592 "First integer specifies the molecule, second integer specifies the state.", &
593 usage="MARK_STATES integer integer", &
594 n_var=2, default_i_vals=[-1, -1], type_of_var=integer_t, repeats=.true.)
595 CALL section_add_keyword(print_key, keyword)
596 CALL keyword_release(keyword)
597
598 CALL keyword_create(keyword, __location__, name="CARTESIAN", &
599 description="Print the Wannier states in the Cartesian basis instead of the default spherical basis.", &
600 default_l_val=.false., lone_keyword_l_val=.true.)
601 CALL section_add_keyword(print_key, keyword)
602 CALL keyword_release(keyword)
603
604 CALL cp_print_key_section_create(print_key2, __location__, "cubes", &
605 description="Controls the printing of cube files", &
606 print_level=high_print_level, filename="")
607 CALL keyword_create(keyword, __location__, name="stride", &
608 description="The stride (X,Y,Z) used to write the cube file "// &
609 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"// &
610 " 1 number valid for all components.", &
611 usage="STRIDE 2 2 2", n_var=-1, default_i_vals=[2, 2, 2], type_of_var=integer_t)
612 CALL section_add_keyword(print_key2, keyword)
613 CALL keyword_release(keyword)
614 CALL section_add_subsection(print_key, print_key2)
615 CALL section_release(print_key2)
616 END SUBROUTINE create_wannier_states_section
617
618END MODULE input_cp2k_loc
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public hunt2003
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 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
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public op_loc_pipek
integer, parameter, public do_loc_jacobi
integer, parameter, public do_loc_l1_norm_sd
integer, parameter, public do_loc_mixed
integer, parameter, public do_loc_cpo_space_nmo
integer, parameter, public do_loc_none
integer, parameter, public do_loc_scdm
integer, parameter, public op_loc_berry
integer, parameter, public do_loc_crazy
integer, parameter, public do_loc_cs
integer, parameter, public do_loc_gapo
integer, parameter, public op_loc_boys
integer, parameter, public do_loc_cpo_random
integer, parameter, public do_loc_lumo
integer, parameter, public do_loc_min
integer, parameter, public do_loc_cpo_restart
integer, parameter, public do_loc_homo
integer, parameter, public do_loc_cpo_space_wan
integer, parameter, public do_loc_max
integer, parameter, public do_loc_direct
integer, parameter, public do_loc_cpo_atomic
integer, parameter, public do_loc_both
subroutine, public create_localize_section(section)
parameters fo the localization of wavefunctions
subroutine, public print_wanniers(section)
Controls the printing of the basic info coming from the LOCALIZE section.
creates the mm section of the input
subroutine, public create_dipoles_section(print_key, label, print_level)
creates the input section for the qs part
subroutine, public add_format_keyword(keyword, section, pos, description)
creates the FORMAT keyword
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 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