30#include "./base/base_uses.f90"
35 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
36 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'input_cp2k_embed'
51 TYPE(
section_type),
POINTER :: sub2section, sub3section, subsection
53 cpassert(.NOT.
ASSOCIATED(section))
55 description=
"This section contains all information to run embedded "// &
57 n_keywords=1, n_subsections=0, repeats=.false., &
59 NULLIFY (keyword, subsection)
62 description=
"Select DFET or DMFET.", &
63 usage=
"EMBED_METHOD DFET", &
65 enum_c_vals=
s2a(
"DFET",
"DMFET"), &
66 enum_desc=
s2a(
"DFET",
"DMFET"), &
72 CALL keyword_create(keyword, __location__, name=
"GROUP_PARTITION", &
73 description=
"gives the exact number of processors for each group."// &
74 " If not specified processors allocated will be equally distributed for"// &
75 " the specified subforce_eval, trying to build a number of groups equal to the"// &
76 " number of subforce_eval specified.", &
77 usage=
"group_partition 2 2 4 2 4 ", type_of_var=
integer_t, n_var=-1)
81 CALL keyword_create(keyword, __location__, name=
"NGROUPS", variants=(/
"NGROUP"/), &
82 description=
"Gives the wanted number of groups. Currently must be set to 1", &
83 usage=
"ngroups 4", type_of_var=
integer_t, default_i_val=1)
88 NULLIFY (sub2section, sub3section)
90 description=
"Defines the mapping of atoms for the different force_eval with the mixed force_eval."// &
91 " The default is to have a mapping 1-1 between atom index (i.e. all force_eval share the same"// &
92 " geometrical structure). The mapping is based on defining fragments and the mapping the"// &
93 " fragments between the several force_eval and the mixed force_eval", &
94 n_keywords=1, n_subsections=0, repeats=.true.)
97 CALL section_create(sub2section, __location__, name=
"FORCE_EVAL_EMBED", &
98 description=
"Defines the fragments for the embedding force_eval (reference)", &
99 n_keywords=1, n_subsections=0, repeats=.true.)
102 description=
"Fragment definition", &
103 n_keywords=1, n_subsections=0, repeats=.true.)
105 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
106 description=
"Defines the index of the fragment defined", &
107 usage=
"<INTEGER>", type_of_var=
integer_t, n_var=1)
111 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
112 description=
"Starting and ending atomic index defining one fragment must be provided", &
113 usage=
"{Integer} {Integer}", type_of_var=
integer_t, n_var=2, repeats=.true.)
123 CALL section_create(sub2section, __location__, name=
"FORCE_EVAL", &
124 description=
"Defines the fragments and the mapping for each force_eval (an integer index (ID) "// &
125 "needs to be provided as parameter)", &
126 n_keywords=1, n_subsections=0, repeats=.true.)
129 keyword, __location__, name=
"DEFINE_FRAGMENTS", &
130 description=
"Specify the fragments definition of the force_eval through the fragments of the"// &
131 " force_eval_embed. This avoids the pedantic definition of the fragments for the force_eval,"// &
132 " assuming the order of the fragments for the specified force_eval is the same as the sequence"// &
133 " of integers provided. Easier to USE should be preferred to the specification of the single fragments.", &
134 usage=
"DEFINE_FRAGMENTS <INTEGER> .. <INTEGER>", type_of_var=
integer_t, n_var=-1)
138 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
139 description=
"Defines the index of the force_eval for which fragments and mappings are provided", &
140 usage=
"<INTEGER>", type_of_var=
integer_t, n_var=1)
145 description=
"Fragment definition", &
146 n_keywords=1, n_subsections=0, repeats=.true.)
148 CALL keyword_create(keyword, __location__, name=
"_SECTION_PARAMETERS_", &
149 description=
"Defines the index of the fragment defined", &
150 usage=
"<INTEGER>", type_of_var=
integer_t, n_var=1)
154 CALL keyword_create(keyword, __location__, name=
"_DEFAULT_KEYWORD_", &
155 description=
"Starting and ending atomic index defining one fragment must be provided", &
156 usage=
"{Integer} {Integer}", type_of_var=
integer_t, n_var=2, repeats=.false.)
161 description=
"Provides the index of the fragment of the MIXED force_eval mapped on the"// &
162 " locally defined fragment.", &
163 usage=
"MAP <INTEGER>", type_of_var=
integer_t, n_var=1, repeats=.false.)
175 CALL create_print_embed_section(subsection)
185 SUBROUTINE create_print_embed_section(section)
190 cpassert(.NOT.
ASSOCIATED(section))
192 description=
"Section of possible print options in EMBED env.", &
193 n_keywords=0, n_subsections=1, repeats=.false.)
198 description=
"Controls the printing of information during the evaluation of "// &
199 "the embedding environment. ", &
204 END SUBROUTINE create_print_embed_section
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public huang2011
integer, save, public heaton_burgess2007
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer, parameter, public low_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
Utilities for string manipulations.