(git:1155b05)
Loading...
Searching...
No Matches
input_cp2k_negf.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!> \brief Input section for NEGF based quantum transport calculations.
10! **************************************************************************************************
11
13 USE bibliography, ONLY: bailey2006,&
32 USE input_val_types, ONLY: char_t,&
33 integer_t,&
34 real_t
35 USE kinds, ONLY: dp
36 USE physcon, ONLY: kelvin
38 USE string_utilities, ONLY: s2a
39#include "./base/base_uses.f90"
40
41 IMPLICIT NONE
42 PRIVATE
43
44 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_negf'
45
46 PUBLIC :: create_negf_section
47
48CONTAINS
49
50! **************************************************************************************************
51!> \brief Create NEGF input section.
52!> \param section input section
53!> \par History
54!> * 02.2017 created [Sergey Chulkov]
55! **************************************************************************************************
56 SUBROUTINE create_negf_section(section)
57 TYPE(section_type), POINTER :: section
58
59 TYPE(keyword_type), POINTER :: keyword
60 TYPE(section_type), POINTER :: print_key, subsection
61
62 cpassert(.NOT. ASSOCIATED(section))
63 CALL section_create(section, __location__, name="NEGF", &
64 description="Parameters which control quantum transport calculation"// &
65 " based on Non-Equilibrium Green Function method.", &
66 citations=[bailey2006, papior2017], &
67 n_keywords=18, n_subsections=6, repeats=.false.)
68
69 NULLIFY (keyword, print_key, subsection)
70
71 CALL create_contact_section(subsection)
72 CALL section_add_subsection(section, subsection)
73 CALL section_release(subsection)
74
75 CALL create_scattering_region_section(subsection)
76 CALL section_add_subsection(section, subsection)
77 CALL section_release(subsection)
78
79 ! mixing section
80 CALL create_mixing_section(subsection, ls_scf=.false.)
81 CALL section_add_subsection(section, subsection)
82 CALL section_release(subsection)
83
84 CALL keyword_create(keyword, __location__, name="DISABLE_CACHE", &
85 description="Do not keep contact self-energy matrices for future reuse", &
86 default_l_val=.false., lone_keyword_l_val=.true.)
87 CALL section_add_keyword(section, keyword)
88 CALL keyword_release(keyword)
89
90 ! convergence thresholds
91 CALL keyword_create(keyword, __location__, name="EPS_DENSITY", &
92 description="Target accuracy for electronic density.", &
93 n_var=1, type_of_var=real_t, default_r_val=1.0e-5_dp)
94 CALL section_add_keyword(section, keyword)
95 CALL keyword_release(keyword)
96
97 CALL keyword_create(keyword, __location__, name="EPS_GREEN", &
98 description="Target accuracy for surface Green's functions.", &
99 n_var=1, type_of_var=real_t, default_r_val=1.0e-5_dp)
100 CALL section_add_keyword(section, keyword)
101 CALL keyword_release(keyword)
102
103 CALL keyword_create(keyword, __location__, name="EPS_SCF", &
104 description="Target accuracy for SCF convergence.", &
105 n_var=1, type_of_var=real_t, default_r_val=1.0e-5_dp)
106 CALL section_add_keyword(section, keyword)
107 CALL keyword_release(keyword)
108
109 CALL keyword_create(keyword, __location__, name="EPS_GEO", &
110 description="Accuracy in mapping atoms between different force environments.", &
111 n_var=1, type_of_var=real_t, unit_str="angstrom", &
112 default_r_val=1.0e-6_dp)
113 CALL section_add_keyword(section, keyword)
114 CALL keyword_release(keyword)
115
116 CALL keyword_create(keyword, __location__, name="ENERGY_LBOUND", &
117 description="Lower bound energy of the conductance band.", &
118 n_var=1, type_of_var=real_t, unit_str="hartree", &
119 default_r_val=-5.0_dp)
120 CALL section_add_keyword(section, keyword)
121 CALL keyword_release(keyword)
122
123 CALL keyword_create(keyword, __location__, name="ETA", &
124 description="Infinitesimal offset from the real axis.", &
125 n_var=1, type_of_var=real_t, unit_str="hartree", &
126 default_r_val=1.0e-5_dp)
127 CALL section_add_keyword(section, keyword)
128 CALL keyword_release(keyword)
129
130 CALL keyword_create(keyword, __location__, name="HOMO_LUMO_GAP", &
131 description="The gap between the HOMO and some fictitious LUMO. This option is used as"// &
132 " an initial offset to determine the actual Fermi level of bulk contacts."// &
133 " It does not need to be exact HOMO-LUMO gap, just some value to start with.", &
134 n_var=1, type_of_var=real_t, unit_str="hartree", &
135 default_r_val=0.2_dp)
136 CALL section_add_keyword(section, keyword)
137 CALL keyword_release(keyword)
138
139 CALL keyword_create(keyword, __location__, name="DELTA_NPOLES", &
140 description="Number of poles of Fermi function to consider.", &
141 n_var=1, type_of_var=integer_t, &
142 default_i_val=4)
143 CALL section_add_keyword(section, keyword)
144 CALL keyword_release(keyword)
145
146 CALL keyword_create(keyword, __location__, name="GAMMA_KT", &
147 description="Offset from the axis (in terms of k*T)"// &
148 " where poles of the Fermi function reside.", &
149 n_var=1, type_of_var=integer_t, &
150 default_i_val=20)
151 CALL section_add_keyword(section, keyword)
152 CALL keyword_release(keyword)
153
154 CALL keyword_create(keyword, __location__, name="INTEGRATION_METHOD", &
155 description="Method to integrate Green's functions along a closed-circuit contour.", &
156 default_i_val=negfint_method_cc, &
157 enum_c_vals=s2a("CLENSHAW-CURTIS", "SIMPSON"), &
158 enum_desc=s2a( &
159 "Adaptive Clenshaw-Curtis quadrature method. Requires FFTW3 library.", &
160 "Adaptive Simpson method. Works without FFTW3."), &
162 CALL section_add_keyword(section, keyword)
163 CALL keyword_release(keyword)
164
165 CALL keyword_create(keyword, __location__, name="INTEGRATION_MIN_POINTS", &
166 description="Initial (minimal) number of grid point for adaptive numerical integration.", &
167 n_var=1, type_of_var=integer_t, &
168 default_i_val=16)
169 CALL section_add_keyword(section, keyword)
170 CALL keyword_release(keyword)
171
172 CALL keyword_create(keyword, __location__, name="INTEGRATION_MAX_POINTS", &
173 description="Maximal number of grid point for adaptive numerical integration.", &
174 n_var=1, type_of_var=integer_t, &
175 default_i_val=512)
176 CALL section_add_keyword(section, keyword)
177 CALL keyword_release(keyword)
178
179 CALL keyword_create(keyword, __location__, name="MAX_SCF", &
180 description="Maximum number of SCF iterations to be performed.", &
181 n_var=1, type_of_var=integer_t, &
182 default_i_val=30)
183 CALL section_add_keyword(section, keyword)
184 CALL keyword_release(keyword)
185
186 CALL keyword_create(keyword, __location__, name="NPROC_POINT", &
187 description="Number of MPI processes to be used per energy point."// &
188 " Default is to use all processors (0).", &
189 n_var=1, type_of_var=integer_t, &
190 default_i_val=0)
191 CALL section_add_keyword(section, keyword)
192 CALL keyword_release(keyword)
193
194 CALL keyword_create(keyword, __location__, name="V_SHIFT", &
195 description="Initial value of the Hartree potential shift", &
196 n_var=1, type_of_var=real_t, unit_str="hartree", &
197 default_r_val=0.0_dp)
198 CALL section_add_keyword(section, keyword)
199 CALL keyword_release(keyword)
200
201 CALL keyword_create(keyword, __location__, name="V_SHIFT_OFFSET", &
202 description="Initial offset to determine the optimal shift in Hartree potential.", &
203 n_var=1, type_of_var=real_t, default_r_val=0.10_dp)
204 CALL section_add_keyword(section, keyword)
205 CALL keyword_release(keyword)
206
207 CALL keyword_create(keyword, __location__, name="V_SHIFT_MAX_ITERS", &
208 description="Maximal number of iteration to determine the optimal shift in Hartree potential.", &
209 n_var=1, type_of_var=integer_t, default_i_val=30)
210 CALL section_add_keyword(section, keyword)
211 CALL keyword_release(keyword)
212 CALL keyword_create(keyword, __location__, name="UPDATE_HS", &
213 description="Change the atomic Hamiltonian during NEGF self-consistent cycle."// &
214 " If .FALSE., only the density matrix is updated.", &
215 default_l_val=.true., lone_keyword_l_val=.true.)
216 CALL section_add_keyword(section, keyword)
217 CALL keyword_release(keyword)
218
219 ! PRINT subsection
220 CALL section_create(subsection, __location__, "PRINT", "Printing of information during the NEGF.", &
221 repeats=.false.)
222
223 CALL create_print_program_run_info_section(print_key)
224 CALL section_add_subsection(subsection, print_key)
225 CALL section_release(print_key)
226
227 CALL create_print_dos_section(print_key, "DOS", "the Density of States (DOS) in the scattering region")
228 CALL section_add_subsection(subsection, print_key)
229 CALL section_release(print_key)
230
231 CALL create_print_dos_section(print_key, "TRANSMISSION", "the transmission coefficient")
232 CALL section_add_subsection(subsection, print_key)
233 CALL section_release(print_key)
234
235 ! RESTART subsection
236 CALL cp_print_key_section_create(print_key, __location__, "RESTART", &
237 description="Controls the dumping of the restart files during NEGF SCF."// &
238 " By default keeps a short history of three restarts.", &
239 print_level=low_print_level, common_iter_levels=3, &
240 each_iter_names=s2a("NEGF_SCF"), each_iter_values=[20], &
241 add_last=add_last_numeric, filename="RESTART")
242 CALL section_add_subsection(subsection, print_key)
243 CALL section_release(print_key)
244
245 CALL section_add_subsection(section, subsection)
246 CALL section_release(subsection)
247
248 END SUBROUTINE create_negf_section
249
250! **************************************************************************************************
251!> \brief Create NEGF%CONTACT input section.
252!> \param section input section
253!> \par History
254!> * 09.2017 split from create_negf_section() [Sergey Chulkov]
255! **************************************************************************************************
256 SUBROUTINE create_contact_section(section)
257 TYPE(section_type), POINTER :: section
258
259 TYPE(keyword_type), POINTER :: keyword
260 TYPE(section_type), POINTER :: print_key, subsection, subsection2
261
262 cpassert(.NOT. ASSOCIATED(section))
263
264 CALL section_create(section, __location__, name="CONTACT", &
265 description="Section defining the contact region of NEGF setup.", &
266 n_keywords=5, n_subsections=3, repeats=.true.)
267
268 NULLIFY (keyword, print_key, subsection, subsection2)
269
270 CALL create_atomlist_section(subsection, "BULK_REGION", &
271 "the bulk contact adjacent to the screening region.", .false.)
272 CALL section_add_subsection(section, subsection)
273 CALL create_atomlist_section(subsection2, "CELL", &
274 "a single bulk contact unit cell. Bulk Hamiltonian will be contstructed "// &
275 "using two such unit cells instead of performing k-point bulk calculation. "// &
276 "FORCE_EVAL_SECTION must be 0.", .true.)
277 CALL section_add_subsection(subsection, subsection2)
278 CALL section_release(subsection2)
279 CALL section_release(subsection)
280
281 CALL create_atomlist_section(subsection, "SCREENING_REGION", &
282 "the given contact adjacent to the scattering region.", .false.)
283 CALL section_add_subsection(section, subsection)
284 CALL section_release(subsection)
285
286 CALL keyword_create(keyword, __location__, name="FORCE_EVAL_SECTION", &
287 description=" Index of the FORCE_EVAL section which will be used for bulk calculation.", &
288 n_var=1, type_of_var=integer_t, default_i_val=0)
289 CALL section_add_keyword(section, keyword)
290 CALL keyword_release(keyword)
291
292 CALL keyword_create(keyword, __location__, name="ELECTRIC_POTENTIAL", &
293 description="External electrostatic potential applied to the given contact.", &
294 n_var=1, type_of_var=real_t, unit_str="hartree", &
295 default_r_val=0.0_dp)
296 CALL section_add_keyword(section, keyword)
297 CALL keyword_release(keyword)
298
299 CALL keyword_create(keyword, __location__, name="FERMI_LEVEL", &
300 description="Contact Fermi level at the given temperature."// &
301 " If this keyword is not given explicitly, the Fermi level"// &
302 " will be automatically computed prior the actual NEGF calculation.", &
303 n_var=1, type_of_var=real_t, unit_str="hartree", &
304 default_r_val=0.0_dp)
305 CALL section_add_keyword(section, keyword)
306 CALL keyword_release(keyword)
307
308 CALL keyword_create(keyword, __location__, name="REFINE_FERMI_LEVEL", &
309 description="Compute the Fermi level using the value from the FERMI_LEVEL keyword"// &
310 " as a starting point. By default the Fermi level is computed only"// &
311 " when the keyword FERMI_LEVEL is not given explicitly.", &
312 default_l_val=.false., lone_keyword_l_val=.true.)
313 CALL section_add_keyword(section, keyword)
314 CALL keyword_release(keyword)
315
316 CALL keyword_create(keyword, __location__, name="FERMI_LEVEL_SHIFTED", &
317 description="Used to shift the zero-energy level of an electrode to the common zero-energy level."// &
318 " If this keyword is specified, the Fermi level,"// &
319 " calculated by standard DFT or NEGF (using the REFINE_FERMI_LEVEL keyword),"// &
320 " or previously specified using the FERMI_LEVEL keyword,"// &
321 " is changed to this value. All diagonal elements of the Hamiltonian are shifted accordingly.", &
322 n_var=1, type_of_var=real_t, unit_str="hartree", &
323 default_r_val=0.0_dp)
324 CALL section_add_keyword(section, keyword)
325 CALL keyword_release(keyword)
326
327 CALL keyword_create(keyword, __location__, name="TEMPERATURE", &
328 description="Electronic temperature.", &
329 n_var=1, type_of_var=real_t, unit_str="K", &
330 default_r_val=300.0_dp/kelvin)
331 CALL section_add_keyword(section, keyword)
332 CALL keyword_release(keyword)
333
334 ! PRINT subsection
335 CALL section_create(subsection, __location__, "PRINT", "Print properties for the given contact.", &
336 repeats=.false.)
337
338 CALL create_print_dos_section(print_key, "DOS", "the Density of States (DOS)")
339 CALL section_add_subsection(subsection, print_key)
340 CALL section_release(print_key)
341
342 CALL section_add_subsection(section, subsection)
343 CALL section_release(subsection)
344
345 ! RESTART subsection
346 CALL section_create(subsection, __location__, "RESTART", &
347 "Controls reading and writing of the restart files for the specified contact.", repeats=.false.)
348
349 CALL keyword_create(keyword, __location__, name="FILENAME", &
350 description=' Controls part of the filename for output. '// &
351 ' Use filename to obtain projectname-filename. '// &
352 ' Use ./filename to get filename.'// &
353 ' A middle name (contact number, type of matrix, spin if 2 spins) and extension '// &
354 ' are always added to the filename.', &
355 usage="FILENAME ./filename ", &
356 default_lc_val="")
357 CALL section_add_keyword(subsection, keyword)
358 CALL keyword_release(keyword)
359
360 CALL keyword_create(keyword, __location__, name="READ_WRITE_HS", &
361 description="Requests reading of the electrode Hamiltonian and overlap matrices from a file."// &
362 " If at least one of these files doesn't exist, all Hamiltonian and overlap matrices"// &
363 " are calculated and saved. If no name is specified by FILENAME, the default file names are"// &
364 " projectname-Nn-H00, projectname-Nn-H01, projectname-Nn-S00, projectname-Nn-S01"// &
365 " for restricted calculations with identical spin population, or"// &
366 " projectname-Nn-H00-Ss, projectname-Nn-H01-Ss, projectname-Nn-S00-Ss, projectname-Nn-S01-Ss"// &
367 " for unrestricted calculations with two spin components,"// &
368 " where n is the number of the contact and s is the spin index."// &
369 " Otherwise, projectname is modified. Note that the code does not distinguish"// &
370 " between the files created by a separate electrode or the entire system.", &
371 default_l_val=.false., lone_keyword_l_val=.true.)
372 CALL section_add_keyword(subsection, keyword)
373 CALL keyword_release(keyword)
374
375 CALL section_add_subsection(section, subsection)
376 CALL section_release(subsection)
377
378 END SUBROUTINE create_contact_section
379
380! **************************************************************************************************
381!> \brief Create a scattering region section.
382!> \param section NEGF section
383!> \par History
384!> * 02.2026 created [Dmitry Ryndyk]
385! **************************************************************************************************
386 SUBROUTINE create_scattering_region_section(section)
387 TYPE(section_type), POINTER :: section
388
389 TYPE(keyword_type), POINTER :: keyword
390 TYPE(section_type), POINTER :: subsection
391
392 cpassert(.NOT. ASSOCIATED(section))
393
394 CALL section_create(section, __location__, name="SCATTERING_REGION", &
395 description="Section defining the scattering region of NEGF setup.", &
396 n_keywords=2, n_subsections=1, repeats=.false.)
397
398 NULLIFY (keyword, subsection)
399
400 CALL keyword_create(keyword, __location__, name="LIST", &
401 description="Specifies a list of atoms.", &
402 usage="LIST {integer} {integer} .. {integer}", repeats=.true., &
403 n_var=-1, type_of_var=integer_t)
404 CALL section_add_keyword(section, keyword)
405 CALL keyword_release(keyword)
406
407 CALL keyword_create(keyword, __location__, name="MOLNAME", &
408 description="Specifies a list of named molecular fragments.", &
409 usage="MOLNAME WAT MEOH", repeats=.true., &
410 n_var=-1, type_of_var=char_t)
411 CALL section_add_keyword(section, keyword)
412 CALL keyword_release(keyword)
413
414 ! RESTART subsection
415 CALL section_create(subsection, __location__, "RESTART", &
416 "Controls reading and writing of the initial restart files for the scattering region,"// &
417 " including the coupling to the electrodes.", repeats=.false.)
418 CALL keyword_create(keyword, __location__, name="FILENAME", &
419 description=' Controls part of the filename. '// &
420 ' Use filename to obtain projectname-filename. '// &
421 ' Use ./filename to get filename.'// &
422 ' A middle name (type of matrix, contact number for coupling matrices, spin if 2 spins)'// &
423 ' and extension are always added to the filename.', &
424 usage="FILENAME ./filename ", &
425 default_lc_val="")
426 CALL section_add_keyword(subsection, keyword)
427 CALL keyword_release(keyword)
428 CALL keyword_create(keyword, __location__, name="READ_WRITE_HS", &
429 description="Requests reading of the Hamiltonian and overlap matrices from a file."// &
430 " For the scattering region, including the coupling to the electrodes."// &
431 " If at least one of these files doesn't exist, all Hamiltonian and overlap matrices"// &
432 " are calculated and saved. If no name is specified by FILENAME, the default file names are"// &
433 " projectname-H, projectname-H-Nn, projectname-S, projectname-S-Nn"// &
434 " for restricted calculations with identical spin population, or"// &
435 " projectname-H-Ss, projectname-H-Nn-Ss, projectname-S-Ss, projectname-S-Nn-Ss"// &
436 " for unrestricted calculations with two spin components,"// &
437 " where n is the number of the contact and s is the spin index."// &
438 " Otherwise, projectname is modified.", &
439 default_l_val=.false., lone_keyword_l_val=.true.)
440 CALL section_add_keyword(subsection, keyword)
441 CALL keyword_release(keyword)
442 CALL section_add_subsection(section, subsection)
443 CALL section_release(subsection)
444
445 END SUBROUTINE create_scattering_region_section
446
447! **************************************************************************************************
448!> \brief Create an atomic list section.
449!> \param section NEGF section
450!> \param name name of the new section
451!> \param description section description
452!> \param repeats whether the section can be repeated
453!> \par History
454!> * 02.2017 created [Sergey Chulkov]
455! **************************************************************************************************
456 SUBROUTINE create_atomlist_section(section, name, description, repeats)
457 TYPE(section_type), POINTER :: section
458 CHARACTER(len=*), INTENT(in) :: name, description
459 LOGICAL, INTENT(in) :: repeats
460
461 TYPE(keyword_type), POINTER :: keyword
462
463 cpassert(.NOT. ASSOCIATED(section))
464
465 CALL section_create(section, __location__, name=trim(adjustl(name)), &
466 description="Atoms belonging to "//trim(adjustl(description)), &
467 n_keywords=2, n_subsections=0, repeats=repeats)
468
469 NULLIFY (keyword)
470
471 CALL keyword_create(keyword, __location__, name="LIST", &
472 description="Specifies a list of atoms.", &
473 usage="LIST {integer} {integer} .. {integer}", repeats=.true., &
474 n_var=-1, type_of_var=integer_t)
475 CALL section_add_keyword(section, keyword)
476 CALL keyword_release(keyword)
477
478 CALL keyword_create(keyword, __location__, name="MOLNAME", &
479 description="Specifies a list of named molecular fragments.", &
480 usage="MOLNAME WAT MEOH", repeats=.true., &
481 n_var=-1, type_of_var=char_t)
482 CALL section_add_keyword(section, keyword)
483 CALL keyword_release(keyword)
484 END SUBROUTINE create_atomlist_section
485
486! **************************************************************************************************
487!> \brief Create the PROGRAM_RUN_INFO print section.
488!> \param section section to create
489!> \par History
490!> * 11.2020 created [Dmitry Ryndyk]
491! **************************************************************************************************
492 SUBROUTINE create_print_program_run_info_section(section)
493
494 TYPE(section_type), POINTER :: section
495
496 TYPE(keyword_type), POINTER :: keyword
497
498 CALL cp_print_key_section_create(section, __location__, "PROGRAM_RUN_INFO", &
499 description="Controls the printing of basic information during the NEGF.", &
500 print_level=low_print_level, filename="__STD_OUT__")
501 NULLIFY (keyword)
502
503 CALL keyword_create(keyword, __location__, name="_SECTION_PARAMETERS_", &
504 description="Level starting at which this property is printed", &
505 usage="_SECTION_PARAMETERS_", &
506 default_i_val=low_print_level, lone_keyword_i_val=low_print_level, &
507 enum_c_vals=s2a("on", "off", "silent", "low", "medium", "high", "debug"), &
508 enum_i_vals=[silent_print_level - 1, debug_print_level + 1, &
511 CALL section_add_keyword(section, keyword)
512 CALL keyword_release(keyword)
513
514 CALL keyword_create(keyword, __location__, name="PRINT_LEVEL", &
515 variants=["IOLEVEL"], &
516 description="Determines the verbose level for this section "// &
517 "additionally to GLOBAL%PRINT_LEVEL and SECTION_PARAMETERS, "// &
518 "which switch on printing.", &
519 usage="PRINT_LEVEL HIGH", &
520 default_i_val=low_print_level, enum_c_vals= &
521 s2a("SILENT", "LOW", "MEDIUM", "HIGH", "DEBUG"), &
522 enum_desc=s2a("No output", &
523 "Little output", "Quite some output", "Lots of output", &
524 "Everything is written out, useful for debugging purposes only"), &
527 CALL section_add_keyword(section, keyword)
528 CALL keyword_release(keyword)
529
530 END SUBROUTINE create_print_program_run_info_section
531
532! **************************************************************************************************
533!> \brief Create the DOS/TRANSMISSION print section.
534!> \param section section to create
535!> \param name name of the new section
536!> \param description section description
537!> \par History
538!> * 11.2017 created [Sergey Chulkov]
539! **************************************************************************************************
540 SUBROUTINE create_print_dos_section(section, name, description)
541 TYPE(section_type), POINTER :: section
542 CHARACTER(len=*), INTENT(in) :: name, description
543
544 TYPE(keyword_type), POINTER :: keyword
545
546 CALL cp_print_key_section_create(section, __location__, trim(adjustl(name)), &
547 description="Controls the printing of "//trim(adjustl(description))//".", &
548 print_level=high_print_level, filename="__STD_OUT__")
549 NULLIFY (keyword)
550
551 CALL keyword_create(keyword, __location__, name="FROM_ENERGY", &
552 description="Energy point to start with.", &
553 n_var=1, type_of_var=real_t, unit_str="hartree", &
554 default_r_val=-1.0_dp)
555 CALL section_add_keyword(section, keyword)
556 CALL keyword_release(keyword)
557
558 CALL keyword_create(keyword, __location__, name="TILL_ENERGY", &
559 description="Energy point to end with.", &
560 n_var=1, type_of_var=real_t, unit_str="hartree", &
561 default_r_val=1.0_dp)
562 CALL section_add_keyword(section, keyword)
563 CALL keyword_release(keyword)
564
565 CALL keyword_create(keyword, __location__, name="N_GRIDPOINTS", &
566 description="Number of points to compute.", &
567 n_var=1, type_of_var=integer_t, default_i_val=201)
568 CALL section_add_keyword(section, keyword)
569 CALL keyword_release(keyword)
570 END SUBROUTINE create_print_dos_section
571END MODULE input_cp2k_negf
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public papior2017
integer, save, public bailey2006
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
integer, parameter, public silent_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
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public negfint_method_simpson
integer, parameter, public negfint_method_cc
Input section for NEGF based quantum transport calculations.
subroutine, public create_negf_section(section)
Create NEGF input 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, 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 char_t
integer, parameter, public integer_t
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Definition of physical constants:
Definition physcon.F:68
real(kind=dp), parameter, public kelvin
Definition physcon.F:165
module that contains the definitions of the scf types
subroutine, public create_mixing_section(section, ls_scf)
Create CP2K input section for the mixing of the density matrix to be used only with diagonalization m...
Utilities for string manipulations.
represent a keyword in the input
represent a section of the input file