|
CP2K 2.4 (Revision 12889)
|
00001 !-----------------------------------------------------------------------------! 00002 ! CP2K: A general program to perform molecular dynamics simulations ! 00003 ! Copyright (C) 2000 - 2013 CP2K developers group ! 00004 !-----------------------------------------------------------------------------! 00005 00006 ! ***************************************************************************** 00012 MODULE input_cp2k_resp 00013 USE cp_output_handling, ONLY: cp_print_key_section_create 00014 USE cp_units, ONLY: cp_unit_to_cp2k 00015 USE f77_blas 00016 USE input_constants 00017 USE input_keyword_types, ONLY: keyword_create,& 00018 keyword_release,& 00019 keyword_type 00020 USE input_section_types, ONLY: section_add_keyword,& 00021 section_add_subsection,& 00022 section_create,& 00023 section_release,& 00024 section_type 00025 USE input_val_types, ONLY: char_t,& 00026 integer_t,& 00027 real_t 00028 USE kinds, ONLY: dp 00029 USE string_utilities, ONLY: s2a 00030 #include "cp_common_uses.h" 00031 00032 IMPLICIT NONE 00033 PRIVATE 00034 00035 LOGICAL, PRIVATE, PARAMETER :: debug_this_module=.TRUE. 00036 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'input_cp2k_resp' 00037 00038 PUBLIC :: create_resp_section 00039 00040 CONTAINS 00041 00042 ! ***************************************************************************** 00049 SUBROUTINE create_resp_section(section,error) 00050 TYPE(section_type), POINTER :: section 00051 TYPE(cp_error_type), INTENT(inout) :: error 00052 00053 CHARACTER(len=*), PARAMETER :: routineN = 'create_resp_section', 00054 routineP = moduleN//':'//routineN 00055 00056 LOGICAL :: failure 00057 TYPE(keyword_type), POINTER :: keyword 00058 TYPE(section_type), POINTER :: subsection 00059 00060 failure=.FALSE. 00061 00062 CPPrecondition(.NOT.ASSOCIATED(section),cp_failure_level,routineP,error,failure) 00063 IF (.NOT. failure) THEN 00064 CALL section_create(section,name="RESP",& 00065 description="Requests a RESP fit of charges. When using a periodic "//& 00066 "Poisson solver and a periodic cell, the periodic RESP routines are "//& 00067 "used. If the Hartree potential matches with the one of an isolated "//& 00068 "system (i.e. isolated Poisson solver and big, nonperiodic cells), "//& 00069 "the nonperiodic RESP routines are automatically used. The subsections "//& 00070 "NONPERIODIC_SYS and PERIODIC_SYS do not request a nonperiodic or periodic "//& 00071 "solution, they only determine the sampling of the fitting points. All "//& 00072 "restraints are harmonic!",& 00073 n_keywords=2, n_subsections=2, repeats=.FALSE., required=.FALSE.,& 00074 error=error) 00075 00076 NULLIFY(keyword, subsection) 00077 00078 CALL keyword_create(keyword, name="stride",& 00079 description="The stride (X,Y,Z) used to write the cube file "//& 00080 "(larger values result in smaller cube files). You can provide "//& 00081 "3 numbers (for X,Y,Z) or 1 number valid for all components.",& 00082 usage="STRIDE 2 2 2",n_var=-1,default_i_vals=(/2,2,2/), type_of_var=integer_t,error=error) 00083 CALL section_add_keyword(section,keyword,error=error) 00084 CALL keyword_release(keyword,error=error) 00085 00086 CALL keyword_create(keyword, name="INTEGER_TOTAL_CHARGE",& 00087 description="Forces the total charge to be integer",& 00088 usage="INTEGER_TOTAL_CHARGE TRUE",& 00089 default_l_val=.TRUE., error=error) 00090 CALL section_add_keyword(section,keyword,error=error) 00091 CALL keyword_release(keyword,error=error) 00092 00093 CALL keyword_create(keyword, name="RESTRAIN_HEAVIES_TO_ZERO",& 00094 description="Restrain non-hydrogen atoms to zero.",& 00095 usage="RESTRAIN_HEAVIES_TO_ZERO FALSE",& 00096 default_l_val=.TRUE., error=error) 00097 CALL section_add_keyword(section,keyword,error=error) 00098 CALL keyword_release(keyword,error=error) 00099 00100 CALL keyword_create(keyword, name="RESTRAIN_HEAVIES_STRENGTH",& 00101 description="If defined, enforce the restraint of non-hydrogen "//& 00102 "atoms to zero. Its value is the strength of the restraint on "//& 00103 "the heavy atoms.",& 00104 usage="RESTRAIN_HEAVIES_STRENGTH 0.0001 ",& 00105 default_r_val=1.0E-6_dp ,error=error) 00106 CALL section_add_keyword(section,keyword,error=error) 00107 CALL keyword_release(keyword,error=error) 00108 00109 CALL keyword_create(keyword, name="WIDTH",& 00110 description="Specifies the value of the width of the Gaussian "//& 00111 "charge distribution carried by each atom. Needs only "//& 00112 "to be specified when using a periodic Poisson solver.",& 00113 usage="WIDTH <real> ",n_var=1,type_of_var=real_t,& 00114 default_r_val=cp_unit_to_cp2k(value=11.249_dp,unit_str="angstrom^-2",error=error), & 00115 unit_str="angstrom^-2",error=error) 00116 CALL section_add_keyword(section,keyword,error=error) 00117 CALL keyword_release(keyword,error=error) 00118 00119 CALL create_constraint_section(subsection,error) 00120 CALL section_add_subsection(section, subsection, error=error) 00121 CALL section_release(subsection,error=error) 00122 00123 CALL create_restraint_section(subsection,error) 00124 CALL section_add_subsection(section, subsection, error=error) 00125 CALL section_release(subsection,error=error) 00126 00127 CALL create_nonperiodic_sys_section(subsection,error) 00128 CALL section_add_subsection(section, subsection, error=error) 00129 CALL section_release(subsection,error=error) 00130 00131 CALL create_periodic_sys_section(subsection,error) 00132 CALL section_add_subsection(section, subsection, error=error) 00133 CALL section_release(subsection,error=error) 00134 00135 CALL create_print_resp_section(subsection, error=error) 00136 CALL section_add_subsection(section,subsection,error=error) 00137 CALL section_release(subsection,error=error) 00138 00139 END IF 00140 END SUBROUTINE create_resp_section 00141 00142 ! ***************************************************************************** 00149 SUBROUTINE create_constraint_section(section,error) 00150 TYPE(section_type), POINTER :: section 00151 TYPE(cp_error_type), INTENT(inout) :: error 00152 00153 CHARACTER(len=*), PARAMETER :: routineN = 'create_constraint_section', 00154 routineP = moduleN//':'//routineN 00155 00156 LOGICAL :: failure 00157 TYPE(keyword_type), POINTER :: keyword 00158 00159 failure=.FALSE. 00160 00161 CPPrecondition(.NOT.ASSOCIATED(section),cp_failure_level,routineP,error,failure) 00162 IF (.NOT. failure) THEN 00163 CALL section_create(section,name="CONSTRAINT",& 00164 description="specifies a linear constraint on the fitted charges."//& 00165 "This can be used to give equal values to equivalent atoms." //& 00166 "sum over atom_list c_i * q_i = t",& 00167 n_keywords=1, n_subsections=0, repeats=.TRUE., required=.TRUE.,& 00168 error=error) 00169 00170 NULLIFY(keyword) 00171 00172 CALL keyword_create(keyword, name="TARGET",& 00173 description="the target value for the constraint",& 00174 usage="TARGET 0.0",& 00175 n_var=1,default_r_val=0.0_dp,error=error) 00176 CALL section_add_keyword(section,keyword,error=error) 00177 CALL keyword_release(keyword,error=error) 00178 00179 CALL keyword_create(keyword, name="EQUAL_CHARGES",& 00180 description="All atoms in ATOM_LIST are constrained to have the "//& 00181 "same charges. When using this keyword, TARGET and ATOM_COEF do "//& 00182 "not need to be set and will be ignored. Instead of using this "//& 00183 "keyword, the constraint section could be repeated.",& 00184 usage="EQUAL_CHARGES",& 00185 default_l_val=.FALSE.,lone_keyword_l_val=.TRUE.,error=error) 00186 CALL section_add_keyword(section,keyword,error=error) 00187 CALL keyword_release(keyword,error=error) 00188 00189 CALL keyword_create(keyword,name="ATOM_LIST",& 00190 description="Defines the list of atoms involved in this constraint",& 00191 usage="ATOM_LIST 3 4",& 00192 type_of_var=integer_t, n_var=-1,required=.TRUE.,repeats=.TRUE.,& 00193 error=error) 00194 CALL section_add_keyword(section,keyword,error=error) 00195 CALL keyword_release(keyword,error=error) 00196 00197 CALL keyword_create(keyword,name="ATOM_COEF",& 00198 description="Defines the coefficient of the atom in this "//& 00199 "linear constraint",& 00200 usage="ATOM_COEF 1.0 -1.0",& 00201 type_of_var=real_t, n_var=-1, error=error) 00202 CALL section_add_keyword(section,keyword,error=error) 00203 CALL keyword_release(keyword,error=error) 00204 00205 END IF 00206 00207 END SUBROUTINE create_constraint_section 00208 00209 ! ***************************************************************************** 00216 SUBROUTINE create_restraint_section(section,error) 00217 TYPE(section_type), POINTER :: section 00218 TYPE(cp_error_type), INTENT(inout) :: error 00219 00220 CHARACTER(len=*), PARAMETER :: routineN = 'create_restraint_section', 00221 routineP = moduleN//':'//routineN 00222 00223 LOGICAL :: failure 00224 TYPE(keyword_type), POINTER :: keyword 00225 00226 failure=.FALSE. 00227 00228 CPPrecondition(.NOT.ASSOCIATED(section),cp_failure_level,routineP,error,failure) 00229 IF (.NOT. failure) THEN 00230 CALL section_create(section,name="RESTRAINT",& 00231 description="specifies a restraint on the fitted charges."//& 00232 "This can be used to restrain values to zero." //& 00233 "s*(sum over atom_list q_i - t)**2",& 00234 n_keywords=1, n_subsections=0, repeats=.TRUE., required=.TRUE.,& 00235 error=error) 00236 00237 NULLIFY(keyword) 00238 00239 CALL keyword_create(keyword, name="TARGET",& 00240 description="the target value for the restraint",& 00241 usage="TARGET 0.0",& 00242 n_var=1,default_r_val=0.0_dp,error=error) 00243 CALL section_add_keyword(section,keyword,error=error) 00244 CALL keyword_release(keyword,error=error) 00245 00246 CALL keyword_create(keyword, name="STRENGTH",& 00247 description="the target value for the constraint",& 00248 usage="STRENGTH 0.001",& 00249 n_var=1,default_r_val=0.001_dp,error=error) 00250 CALL section_add_keyword(section,keyword,error=error) 00251 CALL keyword_release(keyword,error=error) 00252 00253 CALL keyword_create(keyword,name="ATOM_LIST",& 00254 description="Defines the list of atoms involved in this restraint",& 00255 usage="ATOM_LIST 3 4",& 00256 type_of_var=integer_t, n_var=-1, required=.TRUE.,repeats=.TRUE.,& 00257 error=error) 00258 CALL section_add_keyword(section,keyword,error=error) 00259 CALL keyword_release(keyword,error=error) 00260 00261 CALL keyword_create(keyword,name="ATOM_COEF",& 00262 description="Defines the coefficient of the atom in this "//& 00263 "linear restraint. If given, the restraint will be: "//& 00264 "s*(sum over atom_list c_i * q_i - t)**2 ",& 00265 usage="ATOM_COEF 1.0 -1.0",& 00266 type_of_var=real_t, n_var=-1, error=error) 00267 CALL section_add_keyword(section,keyword,error=error) 00268 CALL keyword_release(keyword,error=error) 00269 00270 END IF 00271 00272 END SUBROUTINE create_restraint_section 00273 00274 ! ***************************************************************************** 00282 SUBROUTINE create_nonperiodic_sys_section(section,error) 00283 TYPE(section_type), POINTER :: section 00284 TYPE(cp_error_type), INTENT(inout) :: error 00285 00286 CHARACTER(len=*), PARAMETER :: 00287 routineN = 'create_nonperiodic_sys_section', 00288 routineP = moduleN//':'//routineN 00289 00290 LOGICAL :: failure 00291 TYPE(keyword_type), POINTER :: keyword 00292 00293 failure=.FALSE. 00294 00295 CPPrecondition(.NOT.ASSOCIATED(section),cp_failure_level,routineP,error,failure) 00296 IF (.NOT. failure) THEN 00297 CALL section_create(section,name="NONPERIODIC_SYS",& 00298 description="Specifies the parameter for sampling the RESP fitting points "//& 00299 "for non-periodic systems, i.e. systems that do not involve " //& 00300 "surfaces. This section can be used with periodic and nonperiodic "//& 00301 "Poisson solvers, it only affects the sampling of grid points. "//& 00302 "All grid points in the shell defined by rmin and rmax are accepted "//& 00303 "for fitting.",& 00304 n_keywords=1, n_subsections=0, repeats=.FALSE., required=.TRUE.,& 00305 error=error) 00306 00307 NULLIFY(keyword) 00308 00309 CALL keyword_create(keyword, name="X_LOW",& 00310 description="Specifies the lower boundary of the box along X used to sample the potential.",& 00311 usage="X_LOW -15.", type_of_var=real_t, n_var=1, unit_str='angstrom', error=error) 00312 CALL section_add_keyword(section,keyword,error=error) 00313 CALL keyword_release(keyword,error=error) 00314 00315 CALL keyword_create(keyword, name="X_HI",& 00316 description="Specifies the upper boundary of the box along X used to sample the potential.",& 00317 usage="X_HI 5.", type_of_var=real_t, n_var=1, unit_str='angstrom', error=error) 00318 CALL section_add_keyword(section,keyword,error=error) 00319 CALL keyword_release(keyword,error=error) 00320 00321 CALL keyword_create(keyword, name="Y_LOW",& 00322 description="Specifies the lower boundary of the box along Y used to sample the potential.",& 00323 usage="Y_LOW -15.", type_of_var=real_t, n_var=1, unit_str='angstrom', error=error) 00324 CALL section_add_keyword(section,keyword,error=error) 00325 CALL keyword_release(keyword,error=error) 00326 00327 CALL keyword_create(keyword, name="Y_HI",& 00328 description="Specifies the upper boundary of the box along Y used to sample the potential.",& 00329 usage="Y_HI 5.", type_of_var=real_t, n_var=1, unit_str='angstrom', error=error) 00330 CALL section_add_keyword(section,keyword,error=error) 00331 CALL keyword_release(keyword,error=error) 00332 00333 CALL keyword_create(keyword, name="Z_LOW",& 00334 description="Specifies the lower boundary of the box along Z used to sample the potential.",& 00335 usage="Z_LOW -15.", type_of_var=real_t, n_var=1, unit_str='angstrom', error=error) 00336 CALL section_add_keyword(section,keyword,error=error) 00337 CALL keyword_release(keyword,error=error) 00338 00339 CALL keyword_create(keyword, name="Z_HI",& 00340 description="Specifies the upper boundary of the box along Z used to sample the potential.",& 00341 usage="Z_HI 5.", type_of_var=real_t, n_var=1, unit_str='angstrom', error=error) 00342 CALL section_add_keyword(section,keyword,error=error) 00343 CALL keyword_release(keyword,error=error) 00344 00345 CALL keyword_create(keyword, name="RMAX",& 00346 description="Specifies the maximum distance a fit point is away from an atom. "//& 00347 "Valid for all atomic kinds for which no RMAX_KIND are specified.",& 00348 usage="RMAX 2.5",& 00349 default_r_val=cp_unit_to_cp2k(value=2.5_dp, unit_str="angstrom", error=error),& 00350 unit_str='angstrom', error=error) 00351 CALL section_add_keyword(section,keyword,error=error) 00352 CALL keyword_release(keyword,error=error) 00353 00354 CALL keyword_create(keyword, name="RMIN",& 00355 description="Specifies the minimum distance a fit point is away from an atom. "//& 00356 "Valid for all atomic kinds for which no RMIN_KIND are specified.",& 00357 usage="RMIN 2.1",& 00358 default_r_val=cp_unit_to_cp2k(value=2.1_dp, unit_str="angstrom", error=error),& 00359 unit_str='angstrom', error=error) 00360 CALL section_add_keyword(section,keyword,error=error) 00361 CALL keyword_release(keyword,error=error) 00362 00363 CALL keyword_create(keyword, name="RMAX_KIND",& 00364 description="Specifies the maximum distance a fit point is away from an atom "//& 00365 "of a given kind",& 00366 usage="RMAX 2.5 Br", required=.FALSE., repeats=.TRUE.,& 00367 n_var=-1,type_of_var=char_t, error=error) 00368 CALL section_add_keyword(section,keyword,error=error) 00369 CALL keyword_release(keyword,error=error) 00370 00371 CALL keyword_create(keyword, name="RMIN_KIND",& 00372 description="Specifies the minimum distance a fit point is away from an atom "//& 00373 "of a given kind",& 00374 usage="RMIN 2.1 Br", required=.FALSE., repeats=.TRUE.,& 00375 n_var=-1,type_of_var=char_t, error=error) 00376 CALL section_add_keyword(section,keyword,error=error) 00377 CALL keyword_release(keyword,error=error) 00378 00379 END IF 00380 00381 END SUBROUTINE create_nonperiodic_sys_section 00382 ! ***************************************************************************** 00390 SUBROUTINE create_periodic_sys_section(section,error) 00391 TYPE(section_type), POINTER :: section 00392 TYPE(cp_error_type), INTENT(inout) :: error 00393 00394 CHARACTER(len=*), PARAMETER :: routineN = 'create_periodic_sys_section', 00395 routineP = moduleN//':'//routineN 00396 00397 LOGICAL :: failure 00398 TYPE(keyword_type), POINTER :: keyword 00399 00400 failure=.FALSE. 00401 00402 CPPrecondition(.NOT.ASSOCIATED(section),cp_failure_level,routineP,error,failure) 00403 IF (.NOT. failure) THEN 00404 CALL section_create(section,name="PERIODIC_SYS",& 00405 description="Specifies the parameter for sampling the RESP fitting "//& 00406 "points for periodic systems, i.e. systems that involve " //& 00407 "surfaces. This section can only be used with periodic "//& 00408 "Poisson solver and cell. To see, which grid points were "//& 00409 "used, switch on COORD_FIT_POINTS in the PRINT section.",& 00410 n_keywords=1, n_subsections=0, repeats=.TRUE., required=.TRUE.,& 00411 error=error) 00412 00413 NULLIFY(keyword) 00414 00415 CALL keyword_create(keyword,name="ATOM_LIST",& 00416 description="Specifies the list of indexes of atoms used to define "//& 00417 "the region for the RESP fitting. The list should "//& 00418 "contain indexes of atoms of the first surface layer." ,& 00419 usage="ATOM_LIST 1 2 3 or 1..3",& 00420 type_of_var=integer_t, n_var=-1,required=.TRUE.,repeats=.TRUE.,& 00421 error=error) 00422 CALL section_add_keyword(section,keyword,error=error) 00423 CALL keyword_release(keyword,error=error) 00424 00425 CALL keyword_create(keyword, name="RANGE",& 00426 description="Range where the fitting points are sampled. A range of "//& 00427 "3 to 5 Angstroms means that the fitting points are sampled in the region "//& 00428 "of 3 to 5 Angstroms above the surface which is defined by atom indexes given "//& 00429 "in ATOM_LIST.",& 00430 usage="RANGE <real> <real>",unit_str="angstrom",n_var=2,type_of_var=real_t,& 00431 required=.TRUE.,error=error) 00432 CALL section_add_keyword(section,keyword,error=error) 00433 CALL keyword_release(keyword,error=error) 00434 00435 CALL keyword_create(keyword, name="LENGTH",& 00436 description="Length of the sampling box, i.e. a box of this length and "//& 00437 "the height specified by RANGE is defined above each surface atom given "//& 00438 "in ATOM_LIST. The grid points in the boxes are accepted as fitting point. "//& 00439 "Should be in the range of the nearest neighbour distance (a bit larger to be "//& 00440 "on the safe side). Allows for a refined sampling of grid points in case of "//& 00441 "corrugated surfaces.",& 00442 usage="LENGTH <real> ",unit_str="angstrom",n_var=1,type_of_var=real_t,& 00443 default_r_val=cp_unit_to_cp2k(value=3.0_dp,unit_str="angstrom", error=error),error=error) 00444 CALL section_add_keyword(section,keyword,error=error) 00445 CALL keyword_release(keyword,error=error) 00446 00447 CALL keyword_create(keyword, name="SURF_DIRECTION",& 00448 description="Specifies what above the surface means. Defines the direction.",& 00449 usage="SURF_DIRECTION Z",& 00450 enum_c_vals=s2a( "X", "Y", "Z", "-X", "-Y", "-Z"),& 00451 enum_i_vals=(/ do_resp_x_dir, do_resp_y_dir, do_resp_z_dir,& 00452 do_resp_minus_x_dir, do_resp_minus_y_dir, do_resp_minus_z_dir /),& 00453 enum_desc=s2a("surface layers are piled up in x-direction", & 00454 "surface layers are piled up in y-direction",& 00455 "surface layers are piled up in z-direction",& 00456 "surface layers are piled up in -x-direction",& 00457 "surface layers are piled up in -y-direction",& 00458 "surface layers are piled up in -z-direction"),& 00459 default_i_val=do_resp_z_dir, error=error) 00460 CALL section_add_keyword(section,keyword,error=error) 00461 CALL keyword_release(keyword,error=error) 00462 00463 END IF 00464 00465 END SUBROUTINE create_periodic_sys_section 00466 00467 ! ***************************************************************************** 00474 SUBROUTINE create_print_resp_section(section,error) 00475 TYPE(section_type), POINTER :: section 00476 TYPE(cp_error_type), INTENT(inout) :: error 00477 00478 CHARACTER(len=*), PARAMETER :: routineN = 'create_print_resp_section', 00479 routineP = moduleN//':'//routineN 00480 00481 LOGICAL :: failure 00482 TYPE(keyword_type), POINTER :: keyword 00483 TYPE(section_type), POINTER :: print_key 00484 00485 failure=.FALSE. 00486 CPPrecondition(.NOT.ASSOCIATED(section),cp_failure_level,routineP,error,failure) 00487 IF (.NOT. failure) THEN 00488 NULLIFY(print_key, keyword) 00489 CALL section_create(section,name="print",& 00490 description="Section of possible print options specific for the RESP code.",& 00491 n_keywords=0, n_subsections=1, repeats=.FALSE., required=.TRUE.,& 00492 error=error) 00493 00494 CALL cp_print_key_section_create(print_key,"PROGRAM_RUN_INFO",& 00495 description="Controls the printing of information regarding the run.",& 00496 print_level=low_print_level,filename="__STD_OUT__",& 00497 error=error) 00498 CALL section_add_subsection(section,print_key,error=error) 00499 CALL section_release(print_key,error=error) 00500 00501 CALL cp_print_key_section_create(print_key,"COORD_FIT_POINTS",& 00502 description="Controls the printing of the coordinates of the "// & 00503 "grid points used for periodic RESP fitting. This section "//& 00504 "is intended to be only used for testing (you can get large files).",& 00505 print_level=high_print_level,add_last=add_last_numeric,& 00506 filename="RESP_FIT_POINTS",& 00507 common_iter_levels=3, error=error) 00508 CALL section_add_subsection(section,print_key,error=error) 00509 CALL section_release(print_key,error=error) 00510 00511 CALL cp_print_key_section_create(print_key,"RESP_CHARGES_TO_FILE",& 00512 description="Controls the printing of the RESP charges "// & 00513 "to a file.",& 00514 print_level=high_print_level,add_last=add_last_numeric,& 00515 filename="RESP_CHARGES",& 00516 common_iter_levels=3, error=error) 00517 CALL section_add_subsection(section,print_key,error=error) 00518 CALL section_release(print_key,error=error) 00519 00520 CALL cp_print_key_section_create(print_key,"V_RESP_CUBE",& 00521 description="Controls the printing of the potential generated "//& 00522 "by the RESP CHARGES to a cube file. Prints the relative "//& 00523 "root-mean-square (RRMS) and root-mean-square (RMS) errors.",& 00524 print_level=high_print_level,add_last=add_last_numeric,& 00525 filename="RESP_POTENTIAL",& 00526 common_iter_levels=3, error=error) 00527 CALL keyword_create(keyword, name="stride",& 00528 description="The stride (X,Y,Z) used to write the cube file "//& 00529 "(larger values result in smaller cube files). You can provide 3 numbers (for X,Y,Z) or"//& 00530 " 1 number valid for all components.",& 00531 usage="STRIDE 2 2 2",n_var=-1,default_i_vals=(/2,2,2/), type_of_var=integer_t,error=error) 00532 CALL section_add_keyword(print_key,keyword,error=error) 00533 CALL keyword_release(keyword,error=error) 00534 CALL keyword_create(keyword, name="APPEND",& 00535 description="append the cube files when they already exist",& 00536 default_l_val=.FALSE., lone_keyword_l_val=.TRUE.,error=error) 00537 CALL section_add_keyword(print_key,keyword,error=error) 00538 CALL keyword_release(keyword,error=error) 00539 CALL section_add_subsection(section,print_key,error=error) 00540 CALL section_release(print_key,error=error) 00541 ENDIF 00542 END SUBROUTINE create_print_resp_section 00543 00544 END MODULE input_cp2k_resp
1.7.3