|
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 ! ***************************************************************************** 00013 MODULE force_field_types 00014 00015 USE damping_dipole_types, ONLY: damping_info_type 00016 USE f77_blas 00017 USE input_constants, ONLY: do_ff_undef 00018 USE kinds, ONLY: default_path_length,& 00019 default_string_length,& 00020 dp 00021 USE pair_potential_types, ONLY: pair_potential_p_release,& 00022 pair_potential_p_type 00023 USE shell_potential_types, ONLY: shell_p_release,& 00024 shell_p_type 00025 #include "cp_common_uses.h" 00026 00027 IMPLICIT NONE 00028 00029 PRIVATE 00030 00031 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'force_field_types' 00032 00033 ! *** Define the derived structure types *** 00034 00035 ! ***************************************************************************** 00036 TYPE bond_kind_type 00037 INTEGER :: id_type 00038 REAL(KIND = dp) :: k(3),r0,cs 00039 INTEGER :: kind_number 00040 END TYPE bond_kind_type 00041 00042 ! ***************************************************************************** 00043 TYPE bend_kind_type 00044 INTEGER :: id_type 00045 REAL(KIND = dp) :: k,theta0,cb 00046 REAL(KIND = dp) :: r012,r032,kbs12,kbs32,kss 00047 INTEGER :: kind_number 00048 END TYPE bend_kind_type 00049 00050 ! ***************************************************************************** 00051 TYPE ub_kind_type 00052 INTEGER :: id_type 00053 REAL(KIND = dp) :: k(3),r0 00054 INTEGER :: kind_number 00055 END TYPE ub_kind_type 00056 00057 ! ***************************************************************************** 00058 TYPE torsion_kind_type 00059 INTEGER :: id_type 00060 INTEGER :: nmul 00061 INTEGER, POINTER :: m(:) 00062 REAL(KIND = dp), POINTER :: k(:),phi0(:) 00063 INTEGER :: kind_number 00064 END TYPE torsion_kind_type 00065 00066 ! ***************************************************************************** 00067 TYPE impr_kind_type 00068 INTEGER :: id_type 00069 REAL(KIND = dp) :: k,phi0 00070 INTEGER :: kind_number 00071 END TYPE impr_kind_type 00072 00073 ! ***************************************************************************** 00074 TYPE opbend_kind_type 00075 INTEGER :: id_type 00076 REAL(KIND = dp) :: k,phi0 00077 INTEGER :: kind_number 00078 END TYPE opbend_kind_type 00079 00080 ! ***************************************************************************** 00081 TYPE input_info_type 00082 CHARACTER (LEN=default_string_length), POINTER :: charge_atm(:) 00083 REAL(KIND=dp), POINTER :: charge(:) 00084 CHARACTER (LEN=default_string_length), POINTER :: apol_atm(:) 00085 REAL(KIND=dp), POINTER :: apol(:) 00086 CHARACTER (LEN=default_string_length), POINTER :: cpol_atm(:) 00087 REAL(KIND=dp), POINTER :: cpol(:) 00088 INTEGER, POINTER :: bond_kind(:) 00089 CHARACTER (LEN=default_string_length), POINTER :: bond_a(:) 00090 CHARACTER (LEN=default_string_length), POINTER :: bond_b(:) 00091 REAL(KIND=dp), POINTER :: bond_k(:,:) 00092 REAL(KIND=dp), POINTER :: bond_r0(:) 00093 REAL(KIND=dp), POINTER :: bond_cs(:) 00094 INTEGER, POINTER :: bend_kind(:) 00095 CHARACTER (LEN=default_string_length), POINTER :: bend_a(:) 00096 CHARACTER (LEN=default_string_length), POINTER :: bend_b(:) 00097 CHARACTER (LEN=default_string_length), POINTER :: bend_c(:) 00098 REAL(KIND=dp), POINTER :: bend_k(:) 00099 REAL(KIND=dp), POINTER :: bend_theta0(:) 00100 REAL(KIND=dp), POINTER :: bend_cb(:) 00101 REAL(KIND=dp), POINTER, DIMENSION(:) :: bend_r012, 00102 bend_r032, 00103 bend_kbs12, 00104 bend_kbs32, 00105 bend_kss 00106 INTEGER, POINTER :: ub_kind(:) 00107 CHARACTER (LEN=default_string_length), POINTER :: ub_a(:) 00108 CHARACTER (LEN=default_string_length), POINTER :: ub_b(:) 00109 CHARACTER (LEN=default_string_length), POINTER :: ub_c(:) 00110 REAL(KIND=dp), POINTER :: ub_k(:,:) 00111 REAL(KIND=dp), POINTER :: ub_r0(:) 00112 INTEGER, POINTER :: torsion_kind(:) 00113 CHARACTER (LEN=default_string_length), POINTER :: torsion_a(:) 00114 CHARACTER (LEN=default_string_length), POINTER :: torsion_b(:) 00115 CHARACTER (LEN=default_string_length), POINTER :: torsion_c(:) 00116 CHARACTER (LEN=default_string_length), POINTER :: torsion_d(:) 00117 REAL(KIND=dp), POINTER :: torsion_k(:) 00118 INTEGER, POINTER :: torsion_m(:) 00119 REAL(KIND=dp), POINTER :: torsion_phi0(:) 00120 INTEGER, POINTER :: impr_kind(:) 00121 CHARACTER (LEN=default_string_length), POINTER :: impr_a(:) 00122 CHARACTER (LEN=default_string_length), POINTER :: impr_b(:) 00123 CHARACTER (LEN=default_string_length), POINTER :: impr_c(:) 00124 CHARACTER (LEN=default_string_length), POINTER :: impr_d(:) 00125 REAL(KIND=dp), POINTER :: impr_k(:) 00126 REAL(KIND=dp), POINTER :: impr_phi0(:) 00127 INTEGER, POINTER :: opbend_kind(:) 00128 CHARACTER (LEN=default_string_length), POINTER :: opbend_a(:) 00129 CHARACTER (LEN=default_string_length), POINTER :: opbend_b(:) 00130 CHARACTER (LEN=default_string_length), POINTER :: opbend_c(:) 00131 CHARACTER (LEN=default_string_length), POINTER :: opbend_d(:) 00132 REAL(KIND=dp), POINTER :: opbend_k(:) 00133 REAL(KIND=dp), POINTER :: opbend_phi0(:) 00134 TYPE (pair_potential_p_type), POINTER :: nonbonded 00135 TYPE (pair_potential_p_type), POINTER :: nonbonded14 00136 TYPE (shell_p_type), DIMENSION(:), POINTER :: shell_list 00137 TYPE (damping_info_type),DIMENSION(:), POINTER :: damping_list 00138 END TYPE input_info_type 00139 00140 ! ***************************************************************************** 00141 TYPE charmm_info_type 00142 CHARACTER (LEN=default_string_length), POINTER :: bond_a(:) 00143 CHARACTER (LEN=default_string_length), POINTER :: bond_b(:) 00144 REAL(KIND=dp), POINTER :: bond_k(:) 00145 REAL(KIND=dp), POINTER :: bond_r0(:) 00146 CHARACTER (LEN=default_string_length), POINTER :: bend_a(:) 00147 CHARACTER (LEN=default_string_length), POINTER :: bend_b(:) 00148 CHARACTER (LEN=default_string_length), POINTER :: bend_c(:) 00149 REAL(KIND=dp), POINTER :: bend_k(:) 00150 REAL(KIND=dp), POINTER :: bend_theta0(:) 00151 CHARACTER (LEN=default_string_length), POINTER :: ub_a(:) 00152 CHARACTER (LEN=default_string_length), POINTER :: ub_b(:) 00153 CHARACTER (LEN=default_string_length), POINTER :: ub_c(:) 00154 REAL(KIND=dp), POINTER :: ub_k(:) 00155 REAL(KIND=dp), POINTER :: ub_r0(:) 00156 CHARACTER (LEN=default_string_length), POINTER :: torsion_a(:) 00157 CHARACTER (LEN=default_string_length), POINTER :: torsion_b(:) 00158 CHARACTER (LEN=default_string_length), POINTER :: torsion_c(:) 00159 CHARACTER (LEN=default_string_length), POINTER :: torsion_d(:) 00160 REAL(KIND=dp), POINTER :: torsion_k(:) 00161 INTEGER, POINTER :: torsion_m(:) 00162 REAL(KIND=dp), POINTER :: torsion_phi0(:) 00163 CHARACTER (LEN=default_string_length), POINTER :: impr_a(:) 00164 CHARACTER (LEN=default_string_length), POINTER :: impr_b(:) 00165 CHARACTER (LEN=default_string_length), POINTER :: impr_c(:) 00166 CHARACTER (LEN=default_string_length), POINTER :: impr_d(:) 00167 REAL(KIND=dp), POINTER :: impr_k(:) 00168 REAL(KIND=dp), POINTER :: impr_phi0(:) 00169 CHARACTER (LEN=default_string_length), POINTER :: nonbond_a(:) 00170 REAL (KIND=dp), POINTER :: nonbond_eps(:) 00171 REAL (KIND=dp), POINTER :: nonbond_rmin2(:) 00172 CHARACTER (LEN=default_string_length), POINTER :: nonbond_a_14(:) 00173 REAL (KIND=dp), POINTER :: nonbond_eps_14(:) 00174 REAL (KIND=dp), POINTER :: nonbond_rmin2_14(:) 00175 END TYPE charmm_info_type 00176 00177 ! ***************************************************************************** 00178 TYPE amber_info_type 00179 CHARACTER (LEN=default_string_length), POINTER :: bond_a(:) 00180 CHARACTER (LEN=default_string_length), POINTER :: bond_b(:) 00181 REAL(KIND=dp), POINTER :: bond_k(:) 00182 REAL(KIND=dp), POINTER :: bond_r0(:) 00183 CHARACTER (LEN=default_string_length), POINTER :: bend_a(:) 00184 CHARACTER (LEN=default_string_length), POINTER :: bend_b(:) 00185 CHARACTER (LEN=default_string_length), POINTER :: bend_c(:) 00186 REAL(KIND=dp), POINTER :: bend_k(:) 00187 REAL(KIND=dp), POINTER :: bend_theta0(:) 00188 CHARACTER (LEN=default_string_length), POINTER :: torsion_a(:) 00189 CHARACTER (LEN=default_string_length), POINTER :: torsion_b(:) 00190 CHARACTER (LEN=default_string_length), POINTER :: torsion_c(:) 00191 CHARACTER (LEN=default_string_length), POINTER :: torsion_d(:) 00192 REAL(KIND=dp), POINTER :: torsion_k(:) 00193 REAL(KIND=dp), POINTER :: torsion_m(:) 00194 REAL(KIND=dp), POINTER :: torsion_phi0(:) 00195 CHARACTER (LEN=default_string_length), POINTER :: nonbond_a(:) 00196 REAL (KIND=dp), POINTER :: nonbond_eps(:) 00197 REAL (KIND=dp), POINTER :: nonbond_rmin2(:) 00198 END TYPE amber_info_type 00199 00200 ! ***************************************************************************** 00201 TYPE gromos_info_type 00202 INTEGER :: ff_gromos_type 00203 REAL(KIND=dp), POINTER :: solvent_k(:) 00204 REAL(KIND=dp), POINTER :: solvent_r0(:) 00205 REAL(KIND=dp), POINTER :: bond_k(:) 00206 REAL(KIND=dp), POINTER :: bond_r0(:) 00207 REAL(KIND=dp), POINTER :: bend_k(:) 00208 REAL(KIND=dp), POINTER :: bend_theta0(:) 00209 REAL(KIND=dp), POINTER :: torsion_k(:) 00210 INTEGER, POINTER :: torsion_m(:) 00211 REAL(KIND=dp), POINTER :: torsion_phi0(:) 00212 REAL(KIND=dp), POINTER :: impr_k(:) 00213 REAL(KIND=dp), POINTER :: impr_phi0(:) 00214 CHARACTER (LEN=default_string_length), POINTER :: nonbond_a(:) 00215 REAL (KIND=dp), POINTER :: nonbond_c6(:,:) 00216 REAL (KIND=dp), POINTER :: nonbond_c12(:,:) 00217 CHARACTER (LEN=default_string_length), POINTER :: nonbond_a_14(:) 00218 REAL (KIND=dp), POINTER :: nonbond_c6_14(:,:) 00219 REAL (KIND=dp), POINTER :: nonbond_c12_14(:,:) 00220 END TYPE gromos_info_type 00221 00222 ! ***************************************************************************** 00223 TYPE force_field_type 00224 LOGICAL :: shift_cutoff, 00225 do_nonbonded, 00226 electrostatics, 00227 multiple_potential, 00228 ignore_missing_critical 00229 INTEGER :: ff_type 00230 REAL(KIND=dp) :: rcut_nb 00231 REAL(KIND=dp) :: ei_scale14 00232 REAL(KIND=dp) :: vdw_scale14 00233 REAL(KIND=dp) :: eps_spline, 00234 max_energy, 00235 emax_spline, 00236 rlow_nb 00237 INTEGER :: npoints 00238 CHARACTER (LEN=default_path_length) :: ff_file_name 00239 TYPE (input_info_type),POINTER :: inp_info 00240 TYPE (charmm_info_type),POINTER :: chm_info 00241 TYPE (gromos_info_type),POINTER :: gro_info 00242 TYPE (amber_info_type), POINTER :: amb_info 00243 END TYPE force_field_type 00244 00245 ! *** Public subroutines *** 00246 00247 PUBLIC :: allocate_bend_kind_set,& 00248 allocate_bond_kind_set,& 00249 allocate_ub_kind_set,& 00250 allocate_torsion_kind_set,& 00251 allocate_impr_kind_set,& 00252 allocate_opbend_kind_set,& 00253 init_ff_type,& 00254 deallocate_ff_type,& 00255 deallocate_bend_kind_set,& 00256 deallocate_bond_kind_set,& 00257 torsion_kind_dealloc_ref,& 00258 impr_kind_dealloc_ref,& 00259 init_inp_info,& 00260 deallocate_inp_info 00261 00262 ! *** Public data types *** 00263 00264 PUBLIC :: bend_kind_type,& 00265 bond_kind_type,& 00266 impr_kind_type,& 00267 torsion_kind_type,& 00268 opbend_kind_type,& 00269 ub_kind_type,& 00270 ub_kind_dealloc_ref,& 00271 charmm_info_type,& 00272 amber_info_type,& 00273 gromos_info_type,& 00274 input_info_type,& 00275 force_field_type 00276 00277 CONTAINS 00278 00279 ! ***************************************************************************** 00282 SUBROUTINE allocate_bend_kind_set(bend_kind_set,nkind,error) 00283 00284 TYPE(bend_kind_type), DIMENSION(:), 00285 POINTER :: bend_kind_set 00286 INTEGER, INTENT(IN) :: nkind 00287 TYPE(cp_error_type), INTENT(inout) :: error 00288 00289 CHARACTER(LEN=*), PARAMETER :: routineN = 'allocate_bend_kind_set', 00290 routineP = moduleN//':'//routineN 00291 00292 INTEGER :: ikind, stat 00293 LOGICAL :: failure 00294 00295 failure = .FALSE. 00296 IF (.NOT.failure) THEN 00297 NULLIFY(bend_kind_set) 00298 ALLOCATE (bend_kind_set(nkind),STAT=stat) 00299 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00300 DO ikind=1,nkind 00301 bend_kind_set(ikind)%id_type = do_ff_undef 00302 bend_kind_set(ikind)%k = 0.0_dp 00303 bend_kind_set(ikind)%theta0 = 0.0_dp 00304 bend_kind_set(ikind)%cb = 0.0_dp 00305 bend_kind_set(ikind)%r012 = 0.0_dp 00306 bend_kind_set(ikind)%r032 = 0.0_dp 00307 bend_kind_set(ikind)%kbs12 = 0.0_dp 00308 bend_kind_set(ikind)%kbs32 = 0.0_dp 00309 bend_kind_set(ikind)%kss = 0.0_dp 00310 bend_kind_set(ikind)%kind_number = ikind 00311 END DO 00312 END IF 00313 END SUBROUTINE allocate_bend_kind_set 00314 00315 ! ***************************************************************************** 00318 SUBROUTINE allocate_bond_kind_set(bond_kind_set,nkind,error) 00319 00320 TYPE(bond_kind_type), DIMENSION(:), 00321 POINTER :: bond_kind_set 00322 INTEGER, INTENT(IN) :: nkind 00323 TYPE(cp_error_type), INTENT(inout) :: error 00324 00325 CHARACTER(LEN=*), PARAMETER :: routineN = 'allocate_bond_kind_set', 00326 routineP = moduleN//':'//routineN 00327 00328 INTEGER :: ikind, stat 00329 LOGICAL :: failure 00330 00331 failure = .FALSE. 00332 NULLIFY(bond_kind_set) 00333 IF (.NOT.failure) THEN 00334 ALLOCATE (bond_kind_set(nkind),STAT=stat) 00335 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00336 DO ikind=1,nkind 00337 bond_kind_set(ikind)%id_type = do_ff_undef 00338 bond_kind_set(ikind)%k(:) = 0.0_dp 00339 bond_kind_set(ikind)%r0 = 0.0_dp 00340 bond_kind_set(ikind)%cs = 0.0_dp 00341 bond_kind_set(ikind)%kind_number = ikind 00342 END DO 00343 END IF 00344 END SUBROUTINE allocate_bond_kind_set 00345 00346 ! ***************************************************************************** 00349 SUBROUTINE allocate_torsion_kind_set(torsion_kind_set,nkind,error) 00350 00351 TYPE(torsion_kind_type), DIMENSION(:), 00352 POINTER :: torsion_kind_set 00353 INTEGER, INTENT(IN) :: nkind 00354 TYPE(cp_error_type), INTENT(inout) :: error 00355 00356 CHARACTER(LEN=*), PARAMETER :: routineN = 'allocate_torsion_kind_set', 00357 routineP = moduleN//':'//routineN 00358 00359 INTEGER :: ikind, stat 00360 LOGICAL :: failure 00361 00362 failure = .FALSE. 00363 NULLIFY(torsion_kind_set) 00364 IF (.NOT.failure) THEN 00365 ALLOCATE (torsion_kind_set(nkind),STAT=stat) 00366 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00367 00368 DO ikind=1,nkind 00369 torsion_kind_set(ikind)%id_type = do_ff_undef 00370 torsion_kind_set(ikind)%nmul = 0 00371 NULLIFY(torsion_kind_set(ikind)%k) 00372 NULLIFY(torsion_kind_set(ikind)%m) 00373 NULLIFY(torsion_kind_set(ikind)%phi0) 00374 torsion_kind_set(ikind)%kind_number = ikind 00375 END DO 00376 END IF 00377 END SUBROUTINE allocate_torsion_kind_set 00378 00379 ! ***************************************************************************** 00382 SUBROUTINE allocate_ub_kind_set(ub_kind_set,nkind,error) 00383 00384 TYPE(ub_kind_type), DIMENSION(:), 00385 POINTER :: ub_kind_set 00386 INTEGER, INTENT(IN) :: nkind 00387 TYPE(cp_error_type), INTENT(inout) :: error 00388 00389 CHARACTER(LEN=*), PARAMETER :: routineN = 'allocate_ub_kind_set', 00390 routineP = moduleN//':'//routineN 00391 00392 INTEGER :: ikind, stat 00393 LOGICAL :: failure 00394 00395 failure = .FALSE. 00396 NULLIFY(ub_kind_set) 00397 ALLOCATE (ub_kind_set(nkind),STAT=stat) 00398 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00399 DO ikind=1,nkind 00400 ub_kind_set(ikind)%id_type = do_ff_undef 00401 ub_kind_set(ikind)%k = 0.0_dp 00402 ub_kind_set(ikind)%r0 = 0.0_dp 00403 ub_kind_set(ikind)%kind_number = ikind 00404 END DO 00405 END SUBROUTINE allocate_ub_kind_set 00406 00407 ! ***************************************************************************** 00410 SUBROUTINE allocate_impr_kind_set(impr_kind_set,nkind,error) 00411 00412 TYPE(impr_kind_type), DIMENSION(:), 00413 POINTER :: impr_kind_set 00414 INTEGER, INTENT(IN) :: nkind 00415 TYPE(cp_error_type), INTENT(inout) :: error 00416 00417 CHARACTER(LEN=*), PARAMETER :: routineN = 'allocate_impr_kind_set', 00418 routineP = moduleN//':'//routineN 00419 00420 INTEGER :: ikind, stat 00421 LOGICAL :: failure 00422 00423 failure = .FALSE. 00424 NULLIFY(impr_kind_set) 00425 ALLOCATE (impr_kind_set(nkind),STAT=stat) 00426 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00427 DO ikind=1,nkind 00428 impr_kind_set(ikind)%id_type = do_ff_undef 00429 impr_kind_set(ikind)%k = 0.0_dp 00430 impr_kind_set(ikind)%phi0 = 0.0_dp 00431 impr_kind_set(ikind)%kind_number = ikind 00432 END DO 00433 END SUBROUTINE allocate_impr_kind_set 00434 00435 ! ***************************************************************************** 00438 SUBROUTINE allocate_opbend_kind_set(opbend_kind_set,nkind,error) 00439 00440 TYPE(opbend_kind_type), DIMENSION(:), 00441 POINTER :: opbend_kind_set 00442 INTEGER, INTENT(IN) :: nkind 00443 TYPE(cp_error_type), INTENT(inout) :: error 00444 00445 CHARACTER(LEN=*), PARAMETER :: routineN = 'allocate_opbend_kind_set', 00446 routineP = moduleN//':'//routineN 00447 00448 INTEGER :: ikind, stat 00449 LOGICAL :: failure 00450 00451 failure = .FALSE. 00452 NULLIFY(opbend_kind_set) 00453 ALLOCATE (opbend_kind_set(nkind),STAT=stat) 00454 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00455 DO ikind=1,nkind 00456 opbend_kind_set(ikind)%id_type = do_ff_undef 00457 opbend_kind_set(ikind)%k = 0.0_dp 00458 opbend_kind_set(ikind)%phi0 = 0.0_dp 00459 opbend_kind_set(ikind)%kind_number = ikind 00460 END DO 00461 END SUBROUTINE allocate_opbend_kind_set 00462 00463 ! ***************************************************************************** 00467 SUBROUTINE init_ff_type (ff_type,error) 00468 TYPE(force_field_type), INTENT(INOUT) :: ff_type 00469 TYPE(cp_error_type), INTENT(inout) :: error 00470 00471 CHARACTER(LEN=*), PARAMETER :: routineN = 'init_ff_type', 00472 routineP = moduleN//':'//routineN 00473 00474 INTEGER :: stat 00475 LOGICAL :: failure 00476 00477 failure = .FALSE. 00478 00479 !----------------------------------------------------------------------------- 00480 ! 1. Initialize 00481 !----------------------------------------------------------------------------- 00482 NULLIFY(ff_type%inp_info,ff_type%chm_info,ff_type%amb_info,ff_type%gro_info) 00483 ALLOCATE(ff_type%inp_info,STAT=stat) 00484 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00485 ALLOCATE(ff_type%chm_info,STAT=stat) 00486 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00487 ALLOCATE(ff_type%gro_info,STAT=stat) 00488 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00489 ALLOCATE(ff_type%amb_info,STAT=stat) 00490 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00491 00492 !----------------------------------------------------------------------------- 00493 ! 2. Initialize and Nullify things in ff_type%inp_info 00494 !----------------------------------------------------------------------------- 00495 CALL init_inp_info(ff_type%inp_info) 00496 00497 !----------------------------------------------------------------------------- 00498 ! 3. Initialize and Nullify things in ff_type%chm_info 00499 !----------------------------------------------------------------------------- 00500 CALL init_chm_info(ff_type%chm_info) 00501 00502 !----------------------------------------------------------------------------- 00503 ! 4. Initialize and Nullify things in ff_type%gro_info 00504 !----------------------------------------------------------------------------- 00505 CALL init_gromos_info(ff_type%gro_info) 00506 00507 !----------------------------------------------------------------------------- 00508 ! 5. Initialize and Nullify things in ff_type%amb_info 00509 !----------------------------------------------------------------------------- 00510 CALL init_amber_info(ff_type%amb_info) 00511 00512 END SUBROUTINE init_ff_type 00513 00514 ! ***************************************************************************** 00518 SUBROUTINE init_gromos_info(gro_info) 00519 TYPE(gromos_info_type), POINTER :: gro_info 00520 00521 NULLIFY(gro_info%solvent_k) 00522 NULLIFY(gro_info%solvent_r0) 00523 NULLIFY(gro_info%bond_k) 00524 NULLIFY(gro_info%bond_r0) 00525 NULLIFY(gro_info%bend_k) 00526 NULLIFY(gro_info%bend_theta0) 00527 NULLIFY(gro_info%torsion_k) 00528 NULLIFY(gro_info%torsion_m) 00529 NULLIFY(gro_info%torsion_phi0) 00530 NULLIFY(gro_info%impr_k) 00531 NULLIFY(gro_info%impr_phi0) 00532 NULLIFY(gro_info%nonbond_a) 00533 NULLIFY(gro_info%nonbond_c6) 00534 NULLIFY(gro_info%nonbond_c12) 00535 NULLIFY(gro_info%nonbond_a_14) 00536 NULLIFY(gro_info%nonbond_c6_14) 00537 NULLIFY(gro_info%nonbond_c12_14) 00538 00539 END SUBROUTINE init_gromos_info 00540 00541 ! ***************************************************************************** 00547 SUBROUTINE init_chm_info(chm_info) 00548 TYPE(charmm_info_type), POINTER :: chm_info 00549 00550 NULLIFY(chm_info%bond_a) 00551 NULLIFY(chm_info%bond_b) 00552 NULLIFY(chm_info%bond_k) 00553 NULLIFY(chm_info%bond_r0) 00554 NULLIFY(chm_info%bend_a) 00555 NULLIFY(chm_info%bend_b) 00556 NULLIFY(chm_info%bend_c) 00557 NULLIFY(chm_info%bend_k) 00558 NULLIFY(chm_info%bend_theta0) 00559 NULLIFY(chm_info%ub_a) 00560 NULLIFY(chm_info%ub_b) 00561 NULLIFY(chm_info%ub_c) 00562 NULLIFY(chm_info%ub_k) 00563 NULLIFY(chm_info%ub_r0) 00564 NULLIFY(chm_info%torsion_a) 00565 NULLIFY(chm_info%torsion_b) 00566 NULLIFY(chm_info%torsion_c) 00567 NULLIFY(chm_info%torsion_d) 00568 NULLIFY(chm_info%torsion_k) 00569 NULLIFY(chm_info%torsion_m) 00570 NULLIFY(chm_info%torsion_phi0) 00571 NULLIFY(chm_info%impr_a) 00572 NULLIFY(chm_info%impr_b) 00573 NULLIFY(chm_info%impr_c) 00574 NULLIFY(chm_info%impr_d) 00575 NULLIFY(chm_info%impr_k) 00576 NULLIFY(chm_info%impr_phi0) 00577 NULLIFY(chm_info%nonbond_a) 00578 NULLIFY(chm_info%nonbond_eps) 00579 NULLIFY(chm_info%nonbond_rmin2) 00580 NULLIFY(chm_info%nonbond_a_14) 00581 NULLIFY(chm_info%nonbond_eps_14) 00582 NULLIFY(chm_info%nonbond_rmin2_14) 00583 00584 END SUBROUTINE init_chm_info 00585 00586 ! ***************************************************************************** 00592 SUBROUTINE init_amber_info(amb_info) 00593 TYPE(amber_info_type), POINTER :: amb_info 00594 00595 NULLIFY(amb_info%bond_a) 00596 NULLIFY(amb_info%bond_b) 00597 NULLIFY(amb_info%bond_k) 00598 NULLIFY(amb_info%bond_r0) 00599 NULLIFY(amb_info%bend_a) 00600 NULLIFY(amb_info%bend_b) 00601 NULLIFY(amb_info%bend_c) 00602 NULLIFY(amb_info%bend_k) 00603 NULLIFY(amb_info%bend_theta0) 00604 NULLIFY(amb_info%torsion_a) 00605 NULLIFY(amb_info%torsion_b) 00606 NULLIFY(amb_info%torsion_c) 00607 NULLIFY(amb_info%torsion_d) 00608 NULLIFY(amb_info%torsion_k) 00609 NULLIFY(amb_info%torsion_m) 00610 NULLIFY(amb_info%torsion_phi0) 00611 NULLIFY(amb_info%nonbond_a) 00612 NULLIFY(amb_info%nonbond_eps) 00613 NULLIFY(amb_info%nonbond_rmin2) 00614 00615 END SUBROUTINE init_amber_info 00616 00617 ! ***************************************************************************** 00623 SUBROUTINE init_inp_info(inp_info) 00624 TYPE(input_info_type), POINTER :: inp_info 00625 00626 NULLIFY(inp_info%charge_atm) 00627 NULLIFY(inp_info%charge) 00628 NULLIFY(inp_info%apol_atm) 00629 NULLIFY(inp_info%apol) 00630 NULLIFY(inp_info%cpol_atm) 00631 NULLIFY(inp_info%cpol) 00632 NULLIFY(inp_info%bond_kind) 00633 NULLIFY(inp_info%bond_a) 00634 NULLIFY(inp_info%bond_b) 00635 NULLIFY(inp_info%bond_k) 00636 NULLIFY(inp_info%bond_r0) 00637 NULLIFY(inp_info%bond_cs) 00638 NULLIFY(inp_info%bend_kind) 00639 NULLIFY(inp_info%bend_a) 00640 NULLIFY(inp_info%bend_b) 00641 NULLIFY(inp_info%bend_c) 00642 NULLIFY(inp_info%bend_k) 00643 NULLIFY(inp_info%bend_theta0) 00644 NULLIFY(inp_info%bend_cb) 00645 NULLIFY(inp_info%bend_r012) 00646 NULLIFY(inp_info%bend_r032) 00647 NULLIFY(inp_info%bend_kbs12) 00648 NULLIFY(inp_info%bend_kbs32) 00649 NULLIFY(inp_info%bend_kss) 00650 NULLIFY(inp_info%ub_kind) 00651 NULLIFY(inp_info%ub_a) 00652 NULLIFY(inp_info%ub_b) 00653 NULLIFY(inp_info%ub_c) 00654 NULLIFY(inp_info%ub_k) 00655 NULLIFY(inp_info%ub_r0) 00656 NULLIFY(inp_info%torsion_kind) 00657 NULLIFY(inp_info%torsion_a) 00658 NULLIFY(inp_info%torsion_b) 00659 NULLIFY(inp_info%torsion_c) 00660 NULLIFY(inp_info%torsion_d) 00661 NULLIFY(inp_info%torsion_k) 00662 NULLIFY(inp_info%torsion_m) 00663 NULLIFY(inp_info%torsion_phi0) 00664 NULLIFY(inp_info%impr_kind) 00665 NULLIFY(inp_info%impr_a) 00666 NULLIFY(inp_info%impr_b) 00667 NULLIFY(inp_info%impr_c) 00668 NULLIFY(inp_info%impr_d) 00669 NULLIFY(inp_info%impr_k) 00670 NULLIFY(inp_info%impr_phi0) 00671 NULLIFY(inp_info%opbend_kind) 00672 NULLIFY(inp_info%opbend_a) 00673 NULLIFY(inp_info%opbend_b) 00674 NULLIFY(inp_info%opbend_c) 00675 NULLIFY(inp_info%opbend_d) 00676 NULLIFY(inp_info%opbend_k) 00677 NULLIFY(inp_info%opbend_phi0) 00678 NULLIFY(inp_info%nonbonded) 00679 NULLIFY(inp_info%nonbonded14) 00680 NULLIFY(inp_info%shell_list) 00681 NULLIFY(inp_info%damping_list) 00682 00683 END SUBROUTINE init_inp_info 00684 00685 ! ***************************************************************************** 00688 SUBROUTINE deallocate_ff_type (ff_type,error) 00689 TYPE(force_field_type), INTENT(INOUT) :: ff_type 00690 TYPE(cp_error_type), INTENT(inout) :: error 00691 00692 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_ff_type', 00693 routineP = moduleN//':'//routineN 00694 00695 INTEGER :: stat 00696 LOGICAL :: failure 00697 00698 failure = .FALSE. 00699 00700 !----------------------------------------------------------------------------- 00701 ! 1. DEALLOCATE things in ff_type%inp_info 00702 !----------------------------------------------------------------------------- 00703 CALL deallocate_inp_info(ff_type%inp_info, error=error) 00704 00705 !----------------------------------------------------------------------------- 00706 ! 2. DEALLOCATE things in ff_type%chm_info 00707 !----------------------------------------------------------------------------- 00708 CALL deallocate_chm_info(ff_type%chm_info,error) 00709 00710 !----------------------------------------------------------------------------- 00711 ! 3. DEALLOCATE things in ff_type%gro_info 00712 !----------------------------------------------------------------------------- 00713 CALL deallocate_gromos_info(ff_type%gro_info,error) 00714 00715 !----------------------------------------------------------------------------- 00716 ! 4. DEALLOCATE things in ff_type%amb_info 00717 !----------------------------------------------------------------------------- 00718 CALL deallocate_amb_info(ff_type%amb_info,error) 00719 00720 !----------------------------------------------------------------------------- 00721 ! 5. DEALLOCATE things in ff_type 00722 !----------------------------------------------------------------------------- 00723 IF(ASSOCIATED(ff_type%inp_info)) THEN 00724 DEALLOCATE(ff_type%inp_info,STAT=stat) 00725 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00726 END IF 00727 IF(ASSOCIATED(ff_type%chm_info)) THEN 00728 DEALLOCATE(ff_type%chm_info,STAT=stat) 00729 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00730 END IF 00731 IF(ASSOCIATED(ff_type%gro_info)) THEN 00732 DEALLOCATE(ff_type%gro_info,STAT=stat) 00733 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00734 END IF 00735 IF(ASSOCIATED(ff_type%amb_info)) THEN 00736 DEALLOCATE(ff_type%amb_info,STAT=stat) 00737 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00738 END IF 00739 00740 END SUBROUTINE deallocate_ff_type 00741 00742 ! ***************************************************************************** 00746 SUBROUTINE deallocate_gromos_info(gro_info,error) 00747 TYPE(gromos_info_type), POINTER :: gro_info 00748 TYPE(cp_error_type), INTENT(inout) :: error 00749 00750 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_gromos_info', 00751 routineP = moduleN//':'//routineN 00752 00753 INTEGER :: stat 00754 LOGICAL :: failure 00755 00756 failure = .FALSE. 00757 IF(ASSOCIATED(gro_info%solvent_k)) THEN 00758 DEALLOCATE(gro_info%solvent_k,STAT=stat) 00759 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00760 END IF 00761 IF(ASSOCIATED(gro_info%solvent_r0)) THEN 00762 DEALLOCATE(gro_info%solvent_r0,STAT=stat) 00763 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00764 END IF 00765 IF(ASSOCIATED(gro_info%bond_k)) THEN 00766 DEALLOCATE(gro_info%bond_k,STAT=stat) 00767 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00768 END IF 00769 IF(ASSOCIATED(gro_info%bond_r0)) THEN 00770 DEALLOCATE(gro_info%bond_r0,STAT=stat) 00771 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00772 END IF 00773 IF(ASSOCIATED(gro_info%bend_k)) THEN 00774 DEALLOCATE(gro_info%bend_k,STAT=stat) 00775 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00776 END IF 00777 IF(ASSOCIATED(gro_info%bend_theta0)) THEN 00778 DEALLOCATE(gro_info%bend_theta0,STAT=stat) 00779 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00780 END IF 00781 IF(ASSOCIATED(gro_info%torsion_k)) THEN 00782 DEALLOCATE(gro_info%torsion_k,STAT=stat) 00783 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00784 END IF 00785 IF(ASSOCIATED(gro_info%torsion_m)) THEN 00786 DEALLOCATE(gro_info%torsion_m,STAT=stat) 00787 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00788 END IF 00789 IF(ASSOCIATED(gro_info%torsion_phi0)) THEN 00790 DEALLOCATE(gro_info%torsion_phi0,STAT=stat) 00791 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00792 END IF 00793 IF(ASSOCIATED(gro_info%impr_k)) THEN 00794 DEALLOCATE(gro_info%impr_k,STAT=stat) 00795 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00796 END IF 00797 IF(ASSOCIATED(gro_info%impr_phi0)) THEN 00798 DEALLOCATE(gro_info%impr_phi0,STAT=stat) 00799 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00800 END IF 00801 IF(ASSOCIATED(gro_info%nonbond_a)) THEN 00802 DEALLOCATE(gro_info%nonbond_a,STAT=stat) 00803 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00804 END IF 00805 IF(ASSOCIATED(gro_info%nonbond_c6)) THEN 00806 DEALLOCATE(gro_info%nonbond_c6,STAT=stat) 00807 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00808 END IF 00809 IF(ASSOCIATED(gro_info%nonbond_c12)) THEN 00810 DEALLOCATE(gro_info%nonbond_c12,STAT=stat) 00811 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00812 END IF 00813 IF(ASSOCIATED(gro_info%nonbond_a_14)) THEN 00814 DEALLOCATE(gro_info%nonbond_a_14,STAT=stat) 00815 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00816 END IF 00817 IF(ASSOCIATED(gro_info%nonbond_c6_14)) THEN 00818 DEALLOCATE(gro_info%nonbond_c6_14,STAT=stat) 00819 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00820 END IF 00821 IF(ASSOCIATED(gro_info%nonbond_c12_14)) THEN 00822 DEALLOCATE(gro_info%nonbond_c12_14,STAT=stat) 00823 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00824 END IF 00825 00826 END SUBROUTINE deallocate_gromos_info 00827 00828 ! ***************************************************************************** 00834 SUBROUTINE deallocate_chm_info(chm_info,error) 00835 TYPE(charmm_info_type), POINTER :: chm_info 00836 TYPE(cp_error_type), INTENT(inout) :: error 00837 00838 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_chm_info', 00839 routineP = moduleN//':'//routineN 00840 00841 INTEGER :: stat 00842 LOGICAL :: failure 00843 00844 failure = .FALSE. 00845 IF(ASSOCIATED(chm_info%bond_a)) THEN 00846 DEALLOCATE(chm_info%bond_a,STAT=stat) 00847 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00848 END IF 00849 IF(ASSOCIATED(chm_info%bond_b)) THEN 00850 DEALLOCATE(chm_info%bond_b,STAT=stat) 00851 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00852 END IF 00853 IF(ASSOCIATED(chm_info%bond_k)) THEN 00854 DEALLOCATE(chm_info%bond_k,STAT=stat) 00855 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00856 END IF 00857 IF(ASSOCIATED(chm_info%bond_r0)) THEN 00858 DEALLOCATE(chm_info%bond_r0,STAT=stat) 00859 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00860 END IF 00861 IF(ASSOCIATED(chm_info%bend_a)) THEN 00862 DEALLOCATE(chm_info%bend_a,STAT=stat) 00863 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00864 END IF 00865 IF(ASSOCIATED(chm_info%bend_b)) THEN 00866 DEALLOCATE(chm_info%bend_b,STAT=stat) 00867 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00868 END IF 00869 IF(ASSOCIATED(chm_info%bend_c)) THEN 00870 DEALLOCATE(chm_info%bend_c,STAT=stat) 00871 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00872 END IF 00873 IF(ASSOCIATED(chm_info%bend_k)) THEN 00874 DEALLOCATE(chm_info%bend_k,STAT=stat) 00875 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00876 END IF 00877 IF(ASSOCIATED(chm_info%bend_theta0)) THEN 00878 DEALLOCATE(chm_info%bend_theta0,STAT=stat) 00879 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00880 END IF 00881 IF(ASSOCIATED(chm_info%ub_a)) THEN 00882 DEALLOCATE(chm_info%ub_a,STAT=stat) 00883 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00884 END IF 00885 IF(ASSOCIATED(chm_info%ub_b)) THEN 00886 DEALLOCATE(chm_info%ub_b,STAT=stat) 00887 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00888 END IF 00889 IF(ASSOCIATED(chm_info%ub_c)) THEN 00890 DEALLOCATE(chm_info%ub_c,STAT=stat) 00891 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00892 END IF 00893 IF(ASSOCIATED(chm_info%ub_k)) THEN 00894 DEALLOCATE(chm_info%ub_k,STAT=stat) 00895 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00896 END IF 00897 IF(ASSOCIATED(chm_info%ub_r0)) THEN 00898 DEALLOCATE(chm_info%ub_r0,STAT=stat) 00899 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00900 END IF 00901 IF(ASSOCIATED(chm_info%torsion_a)) THEN 00902 DEALLOCATE(chm_info%torsion_a,STAT=stat) 00903 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00904 END IF 00905 IF(ASSOCIATED(chm_info%torsion_b)) THEN 00906 DEALLOCATE(chm_info%torsion_b,STAT=stat) 00907 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00908 END IF 00909 IF(ASSOCIATED(chm_info%torsion_c)) THEN 00910 DEALLOCATE(chm_info%torsion_c,STAT=stat) 00911 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00912 END IF 00913 IF(ASSOCIATED(chm_info%torsion_d)) THEN 00914 DEALLOCATE(chm_info%torsion_d,STAT=stat) 00915 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00916 END IF 00917 IF(ASSOCIATED(chm_info%torsion_k)) THEN 00918 DEALLOCATE(chm_info%torsion_k,STAT=stat) 00919 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00920 END IF 00921 IF(ASSOCIATED(chm_info%torsion_m)) THEN 00922 DEALLOCATE(chm_info%torsion_m,STAT=stat) 00923 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00924 END IF 00925 IF(ASSOCIATED(chm_info%torsion_phi0)) THEN 00926 DEALLOCATE(chm_info%torsion_phi0,STAT=stat) 00927 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00928 END IF 00929 IF(ASSOCIATED(chm_info%impr_a)) THEN 00930 DEALLOCATE(chm_info%impr_a,STAT=stat) 00931 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00932 END IF 00933 IF(ASSOCIATED(chm_info%impr_b)) THEN 00934 DEALLOCATE(chm_info%impr_b,STAT=stat) 00935 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00936 END IF 00937 IF(ASSOCIATED(chm_info%impr_c)) THEN 00938 DEALLOCATE(chm_info%impr_c,STAT=stat) 00939 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00940 END IF 00941 IF(ASSOCIATED(chm_info%impr_d)) THEN 00942 DEALLOCATE(chm_info%impr_d,STAT=stat) 00943 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00944 END IF 00945 IF(ASSOCIATED(chm_info%impr_k)) THEN 00946 DEALLOCATE(chm_info%impr_k,STAT=stat) 00947 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00948 END IF 00949 IF(ASSOCIATED(chm_info%impr_phi0)) THEN 00950 DEALLOCATE(chm_info%impr_phi0,STAT=stat) 00951 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00952 END IF 00953 IF(ASSOCIATED(chm_info%nonbond_a)) THEN 00954 DEALLOCATE(chm_info%nonbond_a,STAT=stat) 00955 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00956 END IF 00957 IF(ASSOCIATED(chm_info%nonbond_eps)) THEN 00958 DEALLOCATE(chm_info%nonbond_eps,STAT=stat) 00959 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00960 END IF 00961 IF(ASSOCIATED(chm_info%nonbond_rmin2)) THEN 00962 DEALLOCATE(chm_info%nonbond_rmin2,STAT=stat) 00963 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00964 END IF 00965 IF(ASSOCIATED(chm_info%nonbond_a_14)) THEN 00966 DEALLOCATE(chm_info%nonbond_a_14,STAT=stat) 00967 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00968 END IF 00969 IF(ASSOCIATED(chm_info%nonbond_eps_14)) THEN 00970 DEALLOCATE(chm_info%nonbond_eps_14,STAT=stat) 00971 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00972 END IF 00973 IF(ASSOCIATED(chm_info%nonbond_rmin2_14)) THEN 00974 DEALLOCATE(chm_info%nonbond_rmin2_14,STAT=stat) 00975 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 00976 END IF 00977 00978 END SUBROUTINE deallocate_chm_info 00979 00980 ! ***************************************************************************** 00986 SUBROUTINE deallocate_amb_info(amb_info,error) 00987 TYPE(amber_info_type), POINTER :: amb_info 00988 TYPE(cp_error_type), INTENT(inout) :: error 00989 00990 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_amb_info', 00991 routineP = moduleN//':'//routineN 00992 00993 INTEGER :: stat 00994 LOGICAL :: failure 00995 00996 failure = .FALSE. 00997 IF(ASSOCIATED(amb_info%bond_a)) THEN 00998 DEALLOCATE(amb_info%bond_a,STAT=stat) 00999 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01000 END IF 01001 IF(ASSOCIATED(amb_info%bond_b)) THEN 01002 DEALLOCATE(amb_info%bond_b,STAT=stat) 01003 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01004 END IF 01005 IF(ASSOCIATED(amb_info%bond_k)) THEN 01006 DEALLOCATE(amb_info%bond_k,STAT=stat) 01007 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01008 END IF 01009 IF(ASSOCIATED(amb_info%bond_r0)) THEN 01010 DEALLOCATE(amb_info%bond_r0,STAT=stat) 01011 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01012 END IF 01013 IF(ASSOCIATED(amb_info%bend_a)) THEN 01014 DEALLOCATE(amb_info%bend_a,STAT=stat) 01015 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01016 END IF 01017 IF(ASSOCIATED(amb_info%bend_b)) THEN 01018 DEALLOCATE(amb_info%bend_b,STAT=stat) 01019 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01020 END IF 01021 IF(ASSOCIATED(amb_info%bend_c)) THEN 01022 DEALLOCATE(amb_info%bend_c,STAT=stat) 01023 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01024 END IF 01025 IF(ASSOCIATED(amb_info%bend_k)) THEN 01026 DEALLOCATE(amb_info%bend_k,STAT=stat) 01027 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01028 END IF 01029 IF(ASSOCIATED(amb_info%bend_theta0)) THEN 01030 DEALLOCATE(amb_info%bend_theta0,STAT=stat) 01031 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01032 END IF 01033 IF(ASSOCIATED(amb_info%torsion_a)) THEN 01034 DEALLOCATE(amb_info%torsion_a,STAT=stat) 01035 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01036 END IF 01037 IF(ASSOCIATED(amb_info%torsion_b)) THEN 01038 DEALLOCATE(amb_info%torsion_b,STAT=stat) 01039 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01040 END IF 01041 IF(ASSOCIATED(amb_info%torsion_c)) THEN 01042 DEALLOCATE(amb_info%torsion_c,STAT=stat) 01043 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01044 END IF 01045 IF(ASSOCIATED(amb_info%torsion_d)) THEN 01046 DEALLOCATE(amb_info%torsion_d,STAT=stat) 01047 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01048 END IF 01049 IF(ASSOCIATED(amb_info%torsion_k)) THEN 01050 DEALLOCATE(amb_info%torsion_k,STAT=stat) 01051 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01052 END IF 01053 IF(ASSOCIATED(amb_info%torsion_m)) THEN 01054 DEALLOCATE(amb_info%torsion_m,STAT=stat) 01055 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01056 END IF 01057 IF(ASSOCIATED(amb_info%torsion_phi0)) THEN 01058 DEALLOCATE(amb_info%torsion_phi0,STAT=stat) 01059 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01060 END IF 01061 IF(ASSOCIATED(amb_info%nonbond_a)) THEN 01062 DEALLOCATE(amb_info%nonbond_a,STAT=stat) 01063 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01064 END IF 01065 IF(ASSOCIATED(amb_info%nonbond_eps)) THEN 01066 DEALLOCATE(amb_info%nonbond_eps,STAT=stat) 01067 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01068 END IF 01069 IF(ASSOCIATED(amb_info%nonbond_rmin2)) THEN 01070 DEALLOCATE(amb_info%nonbond_rmin2,STAT=stat) 01071 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01072 END IF 01073 01074 END SUBROUTINE deallocate_amb_info 01075 01076 ! ***************************************************************************** 01082 SUBROUTINE deallocate_inp_info(inp_info, error) 01083 TYPE(input_info_type), POINTER :: inp_info 01084 TYPE(cp_error_type), INTENT(inout) :: error 01085 01086 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_inp_info', 01087 routineP = moduleN//':'//routineN 01088 01089 INTEGER :: stat 01090 LOGICAL :: failure 01091 01092 failure = .FALSE. 01093 IF(ASSOCIATED(inp_info%charge_atm)) THEN 01094 DEALLOCATE(inp_info%charge_atm,STAT=stat) 01095 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01096 END IF 01097 IF(ASSOCIATED(inp_info%charge)) THEN 01098 DEALLOCATE(inp_info%charge,STAT=stat) 01099 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01100 END IF 01101 IF(ASSOCIATED(inp_info%apol_atm)) THEN 01102 DEALLOCATE(inp_info%apol_atm,STAT=stat) 01103 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01104 END IF 01105 IF(ASSOCIATED(inp_info%apol)) THEN 01106 DEALLOCATE(inp_info%apol,STAT=stat) 01107 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01108 END IF 01109 IF(ASSOCIATED(inp_info%cpol_atm)) THEN 01110 DEALLOCATE(inp_info%cpol_atm,STAT=stat) 01111 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01112 END IF 01113 IF(ASSOCIATED(inp_info%cpol)) THEN 01114 DEALLOCATE(inp_info%cpol,STAT=stat) 01115 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01116 END IF 01117 IF(ASSOCIATED(inp_info%bond_kind)) THEN 01118 DEALLOCATE(inp_info%bond_kind,STAT=stat) 01119 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01120 END IF 01121 IF(ASSOCIATED(inp_info%bond_a)) THEN 01122 DEALLOCATE(inp_info%bond_a,STAT=stat) 01123 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01124 END IF 01125 IF(ASSOCIATED(inp_info%bond_b)) THEN 01126 DEALLOCATE(inp_info%bond_b,STAT=stat) 01127 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01128 END IF 01129 IF(ASSOCIATED(inp_info%bond_k)) THEN 01130 DEALLOCATE(inp_info%bond_k,STAT=stat) 01131 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01132 END IF 01133 IF(ASSOCIATED(inp_info%bond_r0)) THEN 01134 DEALLOCATE(inp_info%bond_r0,STAT=stat) 01135 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01136 END IF 01137 IF(ASSOCIATED(inp_info%bond_cs)) THEN 01138 DEALLOCATE(inp_info%bond_cs,STAT=stat) 01139 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01140 END IF 01141 IF(ASSOCIATED(inp_info%bend_kind)) THEN 01142 DEALLOCATE(inp_info%bend_kind,STAT=stat) 01143 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01144 END IF 01145 IF(ASSOCIATED(inp_info%bend_a)) THEN 01146 DEALLOCATE(inp_info%bend_a,STAT=stat) 01147 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01148 END IF 01149 IF(ASSOCIATED(inp_info%bend_b)) THEN 01150 DEALLOCATE(inp_info%bend_b,STAT=stat) 01151 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01152 END IF 01153 IF(ASSOCIATED(inp_info%bend_c)) THEN 01154 DEALLOCATE(inp_info%bend_c,STAT=stat) 01155 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01156 END IF 01157 IF(ASSOCIATED(inp_info%bend_k)) THEN 01158 DEALLOCATE(inp_info%bend_k,STAT=stat) 01159 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01160 END IF 01161 IF(ASSOCIATED(inp_info%bend_theta0)) THEN 01162 DEALLOCATE(inp_info%bend_theta0,STAT=stat) 01163 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01164 END IF 01165 IF(ASSOCIATED(inp_info%bend_cb)) THEN 01166 DEALLOCATE(inp_info%bend_cb,STAT=stat) 01167 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01168 END IF 01169 IF(ASSOCIATED(inp_info%bend_r012)) THEN 01170 DEALLOCATE(inp_info%bend_r012,STAT=stat) 01171 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01172 END IF 01173 IF(ASSOCIATED(inp_info%bend_r032)) THEN 01174 DEALLOCATE(inp_info%bend_r032,STAT=stat) 01175 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01176 END IF 01177 IF(ASSOCIATED(inp_info%bend_kbs12)) THEN 01178 DEALLOCATE(inp_info%bend_kbs12,STAT=stat) 01179 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01180 END IF 01181 IF(ASSOCIATED(inp_info%bend_kbs32)) THEN 01182 DEALLOCATE(inp_info%bend_kbs32,STAT=stat) 01183 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01184 END IF 01185 IF(ASSOCIATED(inp_info%bend_kss)) THEN 01186 DEALLOCATE(inp_info%bend_kss,STAT=stat) 01187 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01188 END IF 01189 IF(ASSOCIATED(inp_info%ub_kind)) THEN 01190 DEALLOCATE(inp_info%ub_kind,STAT=stat) 01191 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01192 END IF 01193 IF(ASSOCIATED(inp_info%ub_a)) THEN 01194 DEALLOCATE(inp_info%ub_a,STAT=stat) 01195 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01196 END IF 01197 IF(ASSOCIATED(inp_info%ub_b)) THEN 01198 DEALLOCATE(inp_info%ub_b,STAT=stat) 01199 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01200 END IF 01201 IF(ASSOCIATED(inp_info%ub_c)) THEN 01202 DEALLOCATE(inp_info%ub_c,STAT=stat) 01203 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01204 END IF 01205 IF(ASSOCIATED(inp_info%ub_k)) THEN 01206 DEALLOCATE(inp_info%ub_k,STAT=stat) 01207 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01208 END IF 01209 IF(ASSOCIATED(inp_info%ub_r0)) THEN 01210 DEALLOCATE(inp_info%ub_r0,STAT=stat) 01211 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01212 END IF 01213 IF(ASSOCIATED(inp_info%torsion_kind)) THEN 01214 DEALLOCATE(inp_info%torsion_kind,STAT=stat) 01215 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01216 END IF 01217 IF(ASSOCIATED(inp_info%torsion_a)) THEN 01218 DEALLOCATE(inp_info%torsion_a,STAT=stat) 01219 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01220 END IF 01221 IF(ASSOCIATED(inp_info%torsion_b)) THEN 01222 DEALLOCATE(inp_info%torsion_b,STAT=stat) 01223 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01224 END IF 01225 IF(ASSOCIATED(inp_info%torsion_c)) THEN 01226 DEALLOCATE(inp_info%torsion_c,STAT=stat) 01227 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01228 END IF 01229 IF(ASSOCIATED(inp_info%torsion_d)) THEN 01230 DEALLOCATE(inp_info%torsion_d,STAT=stat) 01231 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01232 END IF 01233 IF(ASSOCIATED(inp_info%torsion_k)) THEN 01234 DEALLOCATE(inp_info%torsion_k,STAT=stat) 01235 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01236 END IF 01237 IF(ASSOCIATED(inp_info%torsion_m)) THEN 01238 DEALLOCATE(inp_info%torsion_m,STAT=stat) 01239 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01240 END IF 01241 IF(ASSOCIATED(inp_info%torsion_phi0)) THEN 01242 DEALLOCATE(inp_info%torsion_phi0,STAT=stat) 01243 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01244 END IF 01245 IF(ASSOCIATED(inp_info%impr_kind)) THEN 01246 DEALLOCATE(inp_info%impr_kind,STAT=stat) 01247 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01248 END IF 01249 IF(ASSOCIATED(inp_info%impr_a)) THEN 01250 DEALLOCATE(inp_info%impr_a,STAT=stat) 01251 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01252 END IF 01253 IF(ASSOCIATED(inp_info%impr_b)) THEN 01254 DEALLOCATE(inp_info%impr_b,STAT=stat) 01255 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01256 END IF 01257 IF(ASSOCIATED(inp_info%impr_c)) THEN 01258 DEALLOCATE(inp_info%impr_c,STAT=stat) 01259 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01260 END IF 01261 IF(ASSOCIATED(inp_info%impr_d)) THEN 01262 DEALLOCATE(inp_info%impr_d,STAT=stat) 01263 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01264 END IF 01265 IF(ASSOCIATED(inp_info%impr_k)) THEN 01266 DEALLOCATE(inp_info%impr_k,STAT=stat) 01267 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01268 END IF 01269 IF(ASSOCIATED(inp_info%impr_phi0)) THEN 01270 DEALLOCATE(inp_info%impr_phi0,STAT=stat) 01271 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01272 END IF 01273 IF(ASSOCIATED(inp_info%opbend_kind)) THEN 01274 DEALLOCATE(inp_info%opbend_kind,STAT=stat) 01275 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01276 END IF 01277 IF(ASSOCIATED(inp_info%opbend_a)) THEN 01278 DEALLOCATE(inp_info%opbend_a,STAT=stat) 01279 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01280 END IF 01281 IF(ASSOCIATED(inp_info%opbend_b)) THEN 01282 DEALLOCATE(inp_info%opbend_b,STAT=stat) 01283 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01284 END IF 01285 IF(ASSOCIATED(inp_info%opbend_c)) THEN 01286 DEALLOCATE(inp_info%opbend_c,STAT=stat) 01287 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01288 END IF 01289 IF(ASSOCIATED(inp_info%opbend_d)) THEN 01290 DEALLOCATE(inp_info%opbend_d,STAT=stat) 01291 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01292 END IF 01293 IF(ASSOCIATED(inp_info%opbend_k)) THEN 01294 DEALLOCATE(inp_info%opbend_k,STAT=stat) 01295 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01296 END IF 01297 IF(ASSOCIATED(inp_info%opbend_phi0)) THEN 01298 DEALLOCATE(inp_info%opbend_phi0,STAT=stat) 01299 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01300 END IF 01301 IF(ASSOCIATED(inp_info%nonbonded)) THEN 01302 CALL pair_potential_p_release(inp_info%nonbonded,error=error) 01303 END IF 01304 IF(ASSOCIATED(inp_info%nonbonded14)) THEN 01305 CALL pair_potential_p_release(inp_info%nonbonded14,error=error) 01306 END IF 01307 IF(ASSOCIATED(inp_info%shell_list)) THEN 01308 CALL shell_p_release(inp_info%shell_list,error=error) 01309 END IF 01310 IF(ASSOCIATED(inp_info%damping_list)) THEN 01311 DEALLOCATE(inp_info%damping_list,STAT=stat) 01312 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01313 END IF 01314 01315 END SUBROUTINE deallocate_inp_info 01316 01317 ! ***************************************************************************** 01320 SUBROUTINE deallocate_bend_kind_set(bend_kind_set,error) 01321 01322 TYPE(bend_kind_type), DIMENSION(:), 01323 POINTER :: bend_kind_set 01324 TYPE(cp_error_type), INTENT(inout) :: error 01325 01326 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_bend_kind_set', 01327 routineP = moduleN//':'//routineN 01328 01329 INTEGER :: stat 01330 LOGICAL :: failure 01331 01332 failure = .FALSE. 01333 DEALLOCATE (bend_kind_set,STAT=stat) 01334 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01335 END SUBROUTINE deallocate_bend_kind_set 01336 01337 ! ***************************************************************************** 01340 SUBROUTINE deallocate_bond_kind_set(bond_kind_set,error) 01341 01342 TYPE(bond_kind_type), DIMENSION(:), 01343 POINTER :: bond_kind_set 01344 TYPE(cp_error_type), INTENT(inout) :: error 01345 01346 CHARACTER(LEN=*), PARAMETER :: routineN = 'deallocate_bond_kind_set', 01347 routineP = moduleN//':'//routineN 01348 01349 INTEGER :: stat 01350 LOGICAL :: failure 01351 01352 failure = .FALSE. 01353 DEALLOCATE (bond_kind_set,STAT=stat) 01354 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01355 01356 END SUBROUTINE deallocate_bond_kind_set 01357 01358 ! ***************************************************************************** 01361 SUBROUTINE torsion_kind_dealloc_ref(torsion_kind,error) 01362 01363 TYPE(torsion_kind_type), INTENT(INOUT) :: torsion_kind 01364 TYPE(cp_error_type), INTENT(inout) :: error 01365 01366 CHARACTER(len=*), PARAMETER :: routineN = 'torsion_kind_dealloc_ref', 01367 routineP = moduleN//':'//routineN 01368 01369 INTEGER :: stat 01370 LOGICAL :: failure 01371 01372 failure = .FALSE. 01373 01374 IF(ASSOCIATED(torsion_kind%k)) THEN 01375 DEALLOCATE(torsion_kind%k,STAT=stat) 01376 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01377 END IF 01378 IF(ASSOCIATED(torsion_kind%m)) THEN 01379 DEALLOCATE(torsion_kind%m,STAT=stat) 01380 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01381 END IF 01382 IF(ASSOCIATED(torsion_kind%phi0)) THEN 01383 DEALLOCATE(torsion_kind%phi0,STAT=stat) 01384 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01385 END IF 01386 01387 END SUBROUTINE torsion_kind_dealloc_ref 01388 01389 ! ***************************************************************************** 01392 SUBROUTINE ub_kind_dealloc_ref(ub_kind_set, error) 01393 TYPE(ub_kind_type), DIMENSION(:), 01394 POINTER :: ub_kind_set 01395 TYPE(cp_error_type), INTENT(inout) :: error 01396 01397 CHARACTER(len=*), PARAMETER :: routineN = 'ub_kind_dealloc_ref', 01398 routineP = moduleN//':'//routineN 01399 01400 INTEGER :: stat 01401 LOGICAL :: failure 01402 01403 failure = .FALSE. 01404 DEALLOCATE(ub_kind_set, STAT=stat) 01405 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01406 01407 END SUBROUTINE ub_kind_dealloc_ref 01408 01409 ! ***************************************************************************** 01412 SUBROUTINE impr_kind_dealloc_ref(impr_kind, error) 01413 01414 TYPE(impr_kind_type), INTENT(INOUT) :: impr_kind 01415 TYPE(cp_error_type), INTENT(inout) :: error 01416 01417 CHARACTER(len=*), PARAMETER :: routineN = 'impr_kind_dealloc_ref', 01418 routineP = moduleN//':'//routineN 01419 01420 LOGICAL :: failure 01421 01422 failure = .FALSE. 01423 ! 01424 ! Questa e' la migliore routine che mente umana abbia concepito! ;-) 01425 ! 01426 END SUBROUTINE impr_kind_dealloc_ref 01427 01428 END MODULE force_field_types
1.7.3