(git:b195825)
qs_fb_input.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 MODULE qs_fb_input
9  USE bibliography, ONLY: rayson2009
10  USE cp_units, ONLY: cp_unit_to_cp2k
13  keyword_type
16  section_type
17  USE input_val_types, ONLY: logical_t,&
18  real_t
19  USE kinds, ONLY: dp
20 #include "./base/base_uses.f90"
21 
22  IMPLICIT NONE
23  PRIVATE
24 
25  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_fb_input'
26 
28 
29 CONTAINS
30 
31 ! **************************************************************************************************
32 !> \brief Input section for filter matrix diagonalisation method
33 !> \param section : section to be created
34 !> \author Lianheng Tong (LT) lianheng.tong@kcl.ac.uk
35 ! **************************************************************************************************
36  SUBROUTINE create_filtermatrix_section(section)
37  TYPE(section_type), POINTER :: section
38 
39  TYPE(keyword_type), POINTER :: keyword
40 
41  cpassert(.NOT. ASSOCIATED(section))
42 
43  CALL section_create(section, __location__, name="FILTER_MATRIX", &
44  description=" ", &
45  n_keywords=1, n_subsections=0, repeats=.false.)
46 
47  NULLIFY (keyword)
48 
49  CALL keyword_create(keyword, __location__, &
50  name="FILTER_TEMPERATURE", &
51  description="Temperature used for the filter function used "// &
52  "to construct the filter matrix.", &
53  repeats=.false., &
54  n_var=1, &
55  type_of_var=real_t, &
56  default_r_val=cp_unit_to_cp2k(value=10000.0_dp, &
57  unit_str="K"), &
58  unit_str="K", &
59  usage="FILTER_TEMPERATURE [K] 10000", &
60  citations=(/rayson2009/))
61  CALL section_add_keyword(section, keyword)
62  CALL keyword_release(keyword)
63 
64  CALL keyword_create(keyword, __location__, &
65  name="AUTO_CUTOFF_SCALE", &
66  description="Scalar constant multiplied to maximum orbital "// &
67  "size of each atom, used for automatically "// &
68  "creating cutoff radii for atomic matrices", &
69  repeats=.false., &
70  n_var=1, &
71  type_of_var=real_t, &
72  default_r_val=0.5_dp, &
73  usage="AUTO_CUTOFF_SCALE 0.5_dp", &
74  citations=(/rayson2009/))
75  CALL section_add_keyword(section, keyword)
76  CALL keyword_release(keyword)
77 
78  CALL keyword_create(keyword, __location__, &
79  name="EPS_FB", &
80  description="Default tolerance used in generating the filter "// &
81  "matrix. Anything less than EPS_FB will be "// &
82  "regarded as zero", &
83  repeats=.false., &
84  n_var=1, &
85  type_of_var=real_t, &
86  default_r_val=1.e-12_dp, &
87  usage="EPS_FB 1.e-12", &
88  citations=(/rayson2009/))
89  CALL section_add_keyword(section, keyword)
90  CALL keyword_release(keyword)
91 
92  CALL keyword_create(keyword, __location__, &
93  name="COLLECTIVE_COMMUNICATION", &
94  description="If set to TRUE, then all MPI communications "// &
95  "required for the construction of the "// &
96  "filter matrix is done at the start and end "// &
97  "of each filter matrix calculation. This "// &
98  "makes communications more efficient, at "// &
99  "the expense of using more memory. If you "// &
100  "find the fb_fltrmat_add_blkcol_mpi times "// &
101  "at the end of CP2K output is high, then "// &
102  "run again with this option set to .TRUE.", &
103  repeats=.false., &
104  n_var=1, &
105  type_of_var=logical_t, &
106  default_l_val=.false., &
107  usage="COLLECTIVE_COMMUNICATION T")
108  CALL section_add_keyword(section, keyword)
109  CALL keyword_release(keyword)
110 
111  END SUBROUTINE create_filtermatrix_section
112 
113 END MODULE qs_fb_input
collects all references to literature in CP2K as new algorithms / method are included from literature...
Definition: bibliography.F:28
integer, save, public rayson2009
Definition: bibliography.F:43
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
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
a wrapper for basic fortran types.
integer, parameter, public real_t
integer, parameter, public logical_t
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
subroutine, public create_filtermatrix_section(section)
Input section for filter matrix diagonalisation method.
Definition: qs_fb_input.F:37