(git:e7e05ae)
force_field_types.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 ! **************************************************************************************************
9 !> \brief Define all structures types related to force_fields
10 !> \par History
11 !> 10.2008 Teodoro Laino [tlaino] - University of Zurich
12 !> added native support for AMBER forcefield
13 !> 10.2014 Moved kind types into force_field_kind_types.F [Ole Schuett]
14 !> \author MK (29.08.2003)
15 ! **************************************************************************************************
17 
18  USE damping_dipole_types, ONLY: damping_info_type
19  USE force_field_kind_types, ONLY: legendre_data_type
20  USE kinds, ONLY: default_path_length,&
22  dp
24  pair_potential_p_type
26  shell_p_type
27 #include "./base/base_uses.f90"
28 
29  IMPLICIT NONE
30 
31  PRIVATE
32 
33  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'force_field_types'
34 
35 ! *** Define the derived structure types ***
36 
37 ! **************************************************************************************************
38  TYPE input_info_type
39  CHARACTER(LEN=default_string_length), POINTER :: charge_atm(:)
40  REAL(KIND=dp), POINTER :: charge(:)
41  CHARACTER(LEN=default_string_length), POINTER :: apol_atm(:)
42  REAL(KIND=dp), POINTER :: apol(:)
43  CHARACTER(LEN=default_string_length), POINTER :: cpol_atm(:)
44  REAL(KIND=dp), POINTER :: cpol(:)
45  INTEGER, POINTER :: bond_kind(:)
46  CHARACTER(LEN=default_string_length), POINTER :: bond_a(:)
47  CHARACTER(LEN=default_string_length), POINTER :: bond_b(:)
48  REAL(KIND=dp), POINTER :: bond_k(:, :)
49  REAL(KIND=dp), POINTER :: bond_r0(:)
50  REAL(KIND=dp), POINTER :: bond_cs(:)
51  INTEGER, POINTER :: bend_kind(:)
52  CHARACTER(LEN=default_string_length), POINTER :: bend_a(:)
53  CHARACTER(LEN=default_string_length), POINTER :: bend_b(:)
54  CHARACTER(LEN=default_string_length), POINTER :: bend_c(:)
55  REAL(KIND=dp), POINTER :: bend_k(:)
56  REAL(KIND=dp), POINTER :: bend_theta0(:)
57  REAL(KIND=dp), POINTER :: bend_cb(:)
58  REAL(KIND=dp), POINTER, DIMENSION(:) :: bend_r012, &
59  bend_r032, &
60  bend_kbs12, &
61  bend_kbs32, &
62  bend_kss
63  TYPE(legendre_data_type), POINTER, DIMENSION(:):: bend_legendre
64  INTEGER, POINTER :: ub_kind(:)
65  CHARACTER(LEN=default_string_length), POINTER :: ub_a(:)
66  CHARACTER(LEN=default_string_length), POINTER :: ub_b(:)
67  CHARACTER(LEN=default_string_length), POINTER :: ub_c(:)
68  REAL(KIND=dp), POINTER :: ub_k(:, :)
69  REAL(KIND=dp), POINTER :: ub_r0(:)
70  INTEGER, POINTER :: torsion_kind(:)
71  CHARACTER(LEN=default_string_length), POINTER :: torsion_a(:)
72  CHARACTER(LEN=default_string_length), POINTER :: torsion_b(:)
73  CHARACTER(LEN=default_string_length), POINTER :: torsion_c(:)
74  CHARACTER(LEN=default_string_length), POINTER :: torsion_d(:)
75  REAL(KIND=dp), POINTER :: torsion_k(:)
76  INTEGER, POINTER :: torsion_m(:)
77  REAL(KIND=dp), POINTER :: torsion_phi0(:)
78  INTEGER, POINTER :: impr_kind(:)
79  CHARACTER(LEN=default_string_length), POINTER :: impr_a(:)
80  CHARACTER(LEN=default_string_length), POINTER :: impr_b(:)
81  CHARACTER(LEN=default_string_length), POINTER :: impr_c(:)
82  CHARACTER(LEN=default_string_length), POINTER :: impr_d(:)
83  REAL(KIND=dp), POINTER :: impr_k(:)
84  REAL(KIND=dp), POINTER :: impr_phi0(:)
85  INTEGER, POINTER :: opbend_kind(:)
86  CHARACTER(LEN=default_string_length), POINTER :: opbend_a(:)
87  CHARACTER(LEN=default_string_length), POINTER :: opbend_b(:)
88  CHARACTER(LEN=default_string_length), POINTER :: opbend_c(:)
89  CHARACTER(LEN=default_string_length), POINTER :: opbend_d(:)
90  REAL(KIND=dp), POINTER :: opbend_k(:)
91  REAL(KIND=dp), POINTER :: opbend_phi0(:)
92  TYPE(pair_potential_p_type), POINTER :: nonbonded
93  TYPE(pair_potential_p_type), POINTER :: nonbonded14
94  TYPE(shell_p_type), DIMENSION(:), POINTER :: shell_list
95  TYPE(damping_info_type), DIMENSION(:), POINTER :: damping_list
96  END TYPE input_info_type
97 
98 ! **************************************************************************************************
99  TYPE charmm_info_type
100  CHARACTER(LEN=default_string_length), POINTER :: bond_a(:)
101  CHARACTER(LEN=default_string_length), POINTER :: bond_b(:)
102  REAL(KIND=dp), POINTER :: bond_k(:)
103  REAL(KIND=dp), POINTER :: bond_r0(:)
104  CHARACTER(LEN=default_string_length), POINTER :: bend_a(:)
105  CHARACTER(LEN=default_string_length), POINTER :: bend_b(:)
106  CHARACTER(LEN=default_string_length), POINTER :: bend_c(:)
107  REAL(KIND=dp), POINTER :: bend_k(:)
108  REAL(KIND=dp), POINTER :: bend_theta0(:)
109  CHARACTER(LEN=default_string_length), POINTER :: ub_a(:)
110  CHARACTER(LEN=default_string_length), POINTER :: ub_b(:)
111  CHARACTER(LEN=default_string_length), POINTER :: ub_c(:)
112  REAL(KIND=dp), POINTER :: ub_k(:)
113  REAL(KIND=dp), POINTER :: ub_r0(:)
114  CHARACTER(LEN=default_string_length), POINTER :: torsion_a(:)
115  CHARACTER(LEN=default_string_length), POINTER :: torsion_b(:)
116  CHARACTER(LEN=default_string_length), POINTER :: torsion_c(:)
117  CHARACTER(LEN=default_string_length), POINTER :: torsion_d(:)
118  REAL(KIND=dp), POINTER :: torsion_k(:)
119  INTEGER, POINTER :: torsion_m(:)
120  REAL(KIND=dp), POINTER :: torsion_phi0(:)
121  CHARACTER(LEN=default_string_length), POINTER :: impr_a(:)
122  CHARACTER(LEN=default_string_length), POINTER :: impr_b(:)
123  CHARACTER(LEN=default_string_length), POINTER :: impr_c(:)
124  CHARACTER(LEN=default_string_length), POINTER :: impr_d(:)
125  REAL(KIND=dp), POINTER :: impr_k(:)
126  REAL(KIND=dp), POINTER :: impr_phi0(:)
127  CHARACTER(LEN=default_string_length), POINTER :: nonbond_a(:)
128  REAL(KIND=dp), POINTER :: nonbond_eps(:)
129  REAL(KIND=dp), POINTER :: nonbond_rmin2(:)
130  CHARACTER(LEN=default_string_length), POINTER :: nonbond_a_14(:)
131  REAL(KIND=dp), POINTER :: nonbond_eps_14(:)
132  REAL(KIND=dp), POINTER :: nonbond_rmin2_14(:)
133  END TYPE charmm_info_type
134 
135 ! **************************************************************************************************
136  TYPE amber_info_type
137  CHARACTER(LEN=default_string_length), POINTER :: bond_a(:)
138  CHARACTER(LEN=default_string_length), POINTER :: bond_b(:)
139  REAL(KIND=dp), POINTER :: bond_k(:)
140  REAL(KIND=dp), POINTER :: bond_r0(:)
141  CHARACTER(LEN=default_string_length), POINTER :: bend_a(:)
142  CHARACTER(LEN=default_string_length), POINTER :: bend_b(:)
143  CHARACTER(LEN=default_string_length), POINTER :: bend_c(:)
144  REAL(KIND=dp), POINTER :: bend_k(:)
145  REAL(KIND=dp), POINTER :: bend_theta0(:)
146  CHARACTER(LEN=default_string_length), POINTER :: torsion_a(:)
147  CHARACTER(LEN=default_string_length), POINTER :: torsion_b(:)
148  CHARACTER(LEN=default_string_length), POINTER :: torsion_c(:)
149  CHARACTER(LEN=default_string_length), POINTER :: torsion_d(:)
150  REAL(KIND=dp), POINTER :: torsion_k(:)
151  INTEGER, POINTER :: torsion_m(:)
152  REAL(KIND=dp), POINTER :: torsion_phi0(:)
153  CHARACTER(LEN=default_string_length), POINTER :: nonbond_a(:)
154  REAL(KIND=dp), POINTER :: nonbond_eps(:)
155  REAL(KIND=dp), POINTER :: nonbond_rmin2(:)
156  INTEGER, POINTER :: raw_torsion_id(:, :)
157  REAL(KIND=dp), POINTER :: raw_torsion_k(:)
158  REAL(KIND=dp), POINTER :: raw_torsion_m(:)
159  REAL(KIND=dp), POINTER :: raw_torsion_phi0(:)
160  END TYPE amber_info_type
161 
162 ! **************************************************************************************************
163  TYPE gromos_info_type
164  INTEGER :: ff_gromos_type
165  REAL(KIND=dp), POINTER :: solvent_k(:)
166  REAL(KIND=dp), POINTER :: solvent_r0(:)
167  REAL(KIND=dp), POINTER :: bond_k(:)
168  REAL(KIND=dp), POINTER :: bond_r0(:)
169  REAL(KIND=dp), POINTER :: bend_k(:)
170  REAL(KIND=dp), POINTER :: bend_theta0(:)
171  REAL(KIND=dp), POINTER :: torsion_k(:)
172  INTEGER, POINTER :: torsion_m(:)
173  REAL(KIND=dp), POINTER :: torsion_phi0(:)
174  REAL(KIND=dp), POINTER :: impr_k(:)
175  REAL(KIND=dp), POINTER :: impr_phi0(:)
176  CHARACTER(LEN=default_string_length), POINTER :: nonbond_a(:)
177  REAL(KIND=dp), POINTER :: nonbond_c6(:, :)
178  REAL(KIND=dp), POINTER :: nonbond_c12(:, :)
179  CHARACTER(LEN=default_string_length), POINTER :: nonbond_a_14(:)
180  REAL(KIND=dp), POINTER :: nonbond_c6_14(:, :)
181  REAL(KIND=dp), POINTER :: nonbond_c12_14(:, :)
182  END TYPE gromos_info_type
183 
184 ! **************************************************************************************************
185  TYPE force_field_type
186  LOGICAL :: shift_cutoff, &
187  do_nonbonded, &
188  do_electrostatics, &
189  electrostatics, &
190  multiple_potential, &
191  ignore_missing_critical
192  INTEGER :: ff_type
193  REAL(KIND=dp) :: rcut_nb
194  REAL(KIND=dp) :: ei_scale14
195  REAL(KIND=dp) :: vdw_scale14
196  REAL(KIND=dp) :: eps_spline, &
197  max_energy, &
198  emax_spline, &
199  rlow_nb
200  INTEGER :: npoints
201  CHARACTER(LEN=default_path_length) :: ff_file_name
202  TYPE(input_info_type), POINTER :: inp_info
203  TYPE(charmm_info_type), POINTER :: chm_info
204  TYPE(gromos_info_type), POINTER :: gro_info
205  TYPE(amber_info_type), POINTER :: amb_info
206  END TYPE force_field_type
207 
208 ! *** Public subroutines ***
209 
210  PUBLIC :: init_ff_type, &
212  init_inp_info, &
214 
215 ! *** Public data types ***
216 
217  PUBLIC :: charmm_info_type, &
218  amber_info_type, &
219  gromos_info_type, &
220  input_info_type, &
221  force_field_type
222 
223 CONTAINS
224 
225 ! **************************************************************************************************
226 !> \brief 1. Just NULLIFY and zero all the stuff
227 !> \param ff_type ...
228 !> \author ikuo
229 ! **************************************************************************************************
230  SUBROUTINE init_ff_type(ff_type)
231  TYPE(force_field_type), INTENT(INOUT) :: ff_type
232 
233 !-----------------------------------------------------------------------------
234 ! 1. Initialize
235 !-----------------------------------------------------------------------------
236 
237  NULLIFY (ff_type%inp_info, ff_type%chm_info, ff_type%amb_info, ff_type%gro_info)
238  ALLOCATE (ff_type%inp_info)
239  ALLOCATE (ff_type%chm_info)
240  ALLOCATE (ff_type%gro_info)
241  ALLOCATE (ff_type%amb_info)
242 
243  !-----------------------------------------------------------------------------
244  ! 2. Initialize and Nullify things in ff_type%inp_info
245  !-----------------------------------------------------------------------------
246  CALL init_inp_info(ff_type%inp_info)
247 
248  !-----------------------------------------------------------------------------
249  ! 3. Initialize and Nullify things in ff_type%chm_info
250  !-----------------------------------------------------------------------------
251  CALL init_chm_info(ff_type%chm_info)
252 
253  !-----------------------------------------------------------------------------
254  ! 4. Initialize and Nullify things in ff_type%gro_info
255  !-----------------------------------------------------------------------------
256  CALL init_gromos_info(ff_type%gro_info)
257 
258  !-----------------------------------------------------------------------------
259  ! 5. Initialize and Nullify things in ff_type%amb_info
260  !-----------------------------------------------------------------------------
261  CALL init_amber_info(ff_type%amb_info)
262 
263  END SUBROUTINE init_ff_type
264 
265 ! **************************************************************************************************
266 !> \brief Specific function to initialize the gro_info
267 !> \param gro_info ...
268 !> \author ikuo
269 ! **************************************************************************************************
270  SUBROUTINE init_gromos_info(gro_info)
271  TYPE(gromos_info_type), POINTER :: gro_info
272 
273  NULLIFY (gro_info%solvent_k)
274  NULLIFY (gro_info%solvent_r0)
275  NULLIFY (gro_info%bond_k)
276  NULLIFY (gro_info%bond_r0)
277  NULLIFY (gro_info%bend_k)
278  NULLIFY (gro_info%bend_theta0)
279  NULLIFY (gro_info%torsion_k)
280  NULLIFY (gro_info%torsion_m)
281  NULLIFY (gro_info%torsion_phi0)
282  NULLIFY (gro_info%impr_k)
283  NULLIFY (gro_info%impr_phi0)
284  NULLIFY (gro_info%nonbond_a)
285  NULLIFY (gro_info%nonbond_c6)
286  NULLIFY (gro_info%nonbond_c12)
287  NULLIFY (gro_info%nonbond_a_14)
288  NULLIFY (gro_info%nonbond_c6_14)
289  NULLIFY (gro_info%nonbond_c12_14)
290 
291  END SUBROUTINE init_gromos_info
292 
293 ! **************************************************************************************************
294 !> \brief Specific function to initialize the chm_info
295 !> \param chm_info ...
296 !> \par History
297 !> none
298 !> \author teo
299 ! **************************************************************************************************
300  SUBROUTINE init_chm_info(chm_info)
301  TYPE(charmm_info_type), POINTER :: chm_info
302 
303  NULLIFY (chm_info%bond_a)
304  NULLIFY (chm_info%bond_b)
305  NULLIFY (chm_info%bond_k)
306  NULLIFY (chm_info%bond_r0)
307  NULLIFY (chm_info%bend_a)
308  NULLIFY (chm_info%bend_b)
309  NULLIFY (chm_info%bend_c)
310  NULLIFY (chm_info%bend_k)
311  NULLIFY (chm_info%bend_theta0)
312  NULLIFY (chm_info%ub_a)
313  NULLIFY (chm_info%ub_b)
314  NULLIFY (chm_info%ub_c)
315  NULLIFY (chm_info%ub_k)
316  NULLIFY (chm_info%ub_r0)
317  NULLIFY (chm_info%torsion_a)
318  NULLIFY (chm_info%torsion_b)
319  NULLIFY (chm_info%torsion_c)
320  NULLIFY (chm_info%torsion_d)
321  NULLIFY (chm_info%torsion_k)
322  NULLIFY (chm_info%torsion_m)
323  NULLIFY (chm_info%torsion_phi0)
324  NULLIFY (chm_info%impr_a)
325  NULLIFY (chm_info%impr_b)
326  NULLIFY (chm_info%impr_c)
327  NULLIFY (chm_info%impr_d)
328  NULLIFY (chm_info%impr_k)
329  NULLIFY (chm_info%impr_phi0)
330  NULLIFY (chm_info%nonbond_a)
331  NULLIFY (chm_info%nonbond_eps)
332  NULLIFY (chm_info%nonbond_rmin2)
333  NULLIFY (chm_info%nonbond_a_14)
334  NULLIFY (chm_info%nonbond_eps_14)
335  NULLIFY (chm_info%nonbond_rmin2_14)
336 
337  END SUBROUTINE init_chm_info
338 
339 ! **************************************************************************************************
340 !> \brief Specific function to initialize the chm_info
341 !> \param amb_info ...
342 !> \par History
343 !> none
344 !> \author teo
345 ! **************************************************************************************************
346  SUBROUTINE init_amber_info(amb_info)
347  TYPE(amber_info_type), POINTER :: amb_info
348 
349  NULLIFY (amb_info%bond_a)
350  NULLIFY (amb_info%bond_b)
351  NULLIFY (amb_info%bond_k)
352  NULLIFY (amb_info%bond_r0)
353  NULLIFY (amb_info%bend_a)
354  NULLIFY (amb_info%bend_b)
355  NULLIFY (amb_info%bend_c)
356  NULLIFY (amb_info%bend_k)
357  NULLIFY (amb_info%bend_theta0)
358  NULLIFY (amb_info%torsion_a)
359  NULLIFY (amb_info%torsion_b)
360  NULLIFY (amb_info%torsion_c)
361  NULLIFY (amb_info%torsion_d)
362  NULLIFY (amb_info%torsion_k)
363  NULLIFY (amb_info%torsion_m)
364  NULLIFY (amb_info%torsion_phi0)
365  NULLIFY (amb_info%nonbond_a)
366  NULLIFY (amb_info%nonbond_eps)
367  NULLIFY (amb_info%nonbond_rmin2)
368  NULLIFY (amb_info%raw_torsion_id)
369  NULLIFY (amb_info%raw_torsion_k)
370  NULLIFY (amb_info%raw_torsion_m)
371  NULLIFY (amb_info%raw_torsion_phi0)
372 
373  END SUBROUTINE init_amber_info
374 
375 ! **************************************************************************************************
376 !> \brief Specific function to initialize the inp_info
377 !> \param inp_info ...
378 !> \par History
379 !> none
380 !> \author teo
381 ! **************************************************************************************************
382  SUBROUTINE init_inp_info(inp_info)
383  TYPE(input_info_type), POINTER :: inp_info
384 
385  NULLIFY (inp_info%charge_atm)
386  NULLIFY (inp_info%charge)
387  NULLIFY (inp_info%apol_atm)
388  NULLIFY (inp_info%apol)
389  NULLIFY (inp_info%cpol_atm)
390  NULLIFY (inp_info%cpol)
391  NULLIFY (inp_info%bond_kind)
392  NULLIFY (inp_info%bond_a)
393  NULLIFY (inp_info%bond_b)
394  NULLIFY (inp_info%bond_k)
395  NULLIFY (inp_info%bond_r0)
396  NULLIFY (inp_info%bond_cs)
397  NULLIFY (inp_info%bend_kind)
398  NULLIFY (inp_info%bend_a)
399  NULLIFY (inp_info%bend_b)
400  NULLIFY (inp_info%bend_c)
401  NULLIFY (inp_info%bend_k)
402  NULLIFY (inp_info%bend_theta0)
403  NULLIFY (inp_info%bend_cb)
404  NULLIFY (inp_info%bend_r012)
405  NULLIFY (inp_info%bend_r032)
406  NULLIFY (inp_info%bend_kbs12)
407  NULLIFY (inp_info%bend_kbs32)
408  NULLIFY (inp_info%bend_kss)
409  NULLIFY (inp_info%bend_legendre)
410  NULLIFY (inp_info%ub_kind)
411  NULLIFY (inp_info%ub_a)
412  NULLIFY (inp_info%ub_b)
413  NULLIFY (inp_info%ub_c)
414  NULLIFY (inp_info%ub_k)
415  NULLIFY (inp_info%ub_r0)
416  NULLIFY (inp_info%torsion_kind)
417  NULLIFY (inp_info%torsion_a)
418  NULLIFY (inp_info%torsion_b)
419  NULLIFY (inp_info%torsion_c)
420  NULLIFY (inp_info%torsion_d)
421  NULLIFY (inp_info%torsion_k)
422  NULLIFY (inp_info%torsion_m)
423  NULLIFY (inp_info%torsion_phi0)
424  NULLIFY (inp_info%impr_kind)
425  NULLIFY (inp_info%impr_a)
426  NULLIFY (inp_info%impr_b)
427  NULLIFY (inp_info%impr_c)
428  NULLIFY (inp_info%impr_d)
429  NULLIFY (inp_info%impr_k)
430  NULLIFY (inp_info%impr_phi0)
431  NULLIFY (inp_info%opbend_kind)
432  NULLIFY (inp_info%opbend_a)
433  NULLIFY (inp_info%opbend_b)
434  NULLIFY (inp_info%opbend_c)
435  NULLIFY (inp_info%opbend_d)
436  NULLIFY (inp_info%opbend_k)
437  NULLIFY (inp_info%opbend_phi0)
438  NULLIFY (inp_info%nonbonded)
439  NULLIFY (inp_info%nonbonded14)
440  NULLIFY (inp_info%shell_list)
441  NULLIFY (inp_info%damping_list)
442 
443  END SUBROUTINE init_inp_info
444 
445 ! **************************************************************************************************
446 !> \brief 1. Just DEALLOCATE all the stuff
447 !> \param ff_type ...
448 ! **************************************************************************************************
449  SUBROUTINE deallocate_ff_type(ff_type)
450  TYPE(force_field_type), INTENT(INOUT) :: ff_type
451 
452 !-----------------------------------------------------------------------------
453 ! 1. DEALLOCATE things in ff_type%inp_info
454 !-----------------------------------------------------------------------------
455 
456  CALL deallocate_inp_info(ff_type%inp_info)
457 
458  !-----------------------------------------------------------------------------
459  ! 2. DEALLOCATE things in ff_type%chm_info
460  !-----------------------------------------------------------------------------
461  CALL deallocate_chm_info(ff_type%chm_info)
462 
463  !-----------------------------------------------------------------------------
464  ! 3. DEALLOCATE things in ff_type%gro_info
465  !-----------------------------------------------------------------------------
466  CALL deallocate_gromos_info(ff_type%gro_info)
467 
468  !-----------------------------------------------------------------------------
469  ! 4. DEALLOCATE things in ff_type%amb_info
470  !-----------------------------------------------------------------------------
471  CALL deallocate_amb_info(ff_type%amb_info)
472 
473  !-----------------------------------------------------------------------------
474  ! 5. DEALLOCATE things in ff_type
475  !-----------------------------------------------------------------------------
476  IF (ASSOCIATED(ff_type%inp_info)) THEN
477  DEALLOCATE (ff_type%inp_info)
478  END IF
479  IF (ASSOCIATED(ff_type%chm_info)) THEN
480  DEALLOCATE (ff_type%chm_info)
481  END IF
482  IF (ASSOCIATED(ff_type%gro_info)) THEN
483  DEALLOCATE (ff_type%gro_info)
484  END IF
485  IF (ASSOCIATED(ff_type%amb_info)) THEN
486  DEALLOCATE (ff_type%amb_info)
487  END IF
488 
489  END SUBROUTINE deallocate_ff_type
490 
491 ! **************************************************************************************************
492 !> \brief Specific function to deallocate the gro_info
493 !> \param gro_info ...
494 !> \author ikuo
495 ! **************************************************************************************************
496  SUBROUTINE deallocate_gromos_info(gro_info)
497  TYPE(gromos_info_type), POINTER :: gro_info
498 
499  IF (ASSOCIATED(gro_info%solvent_k)) THEN
500  DEALLOCATE (gro_info%solvent_k)
501  END IF
502  IF (ASSOCIATED(gro_info%solvent_r0)) THEN
503  DEALLOCATE (gro_info%solvent_r0)
504  END IF
505  IF (ASSOCIATED(gro_info%bond_k)) THEN
506  DEALLOCATE (gro_info%bond_k)
507  END IF
508  IF (ASSOCIATED(gro_info%bond_r0)) THEN
509  DEALLOCATE (gro_info%bond_r0)
510  END IF
511  IF (ASSOCIATED(gro_info%bend_k)) THEN
512  DEALLOCATE (gro_info%bend_k)
513  END IF
514  IF (ASSOCIATED(gro_info%bend_theta0)) THEN
515  DEALLOCATE (gro_info%bend_theta0)
516  END IF
517  IF (ASSOCIATED(gro_info%torsion_k)) THEN
518  DEALLOCATE (gro_info%torsion_k)
519  END IF
520  IF (ASSOCIATED(gro_info%torsion_m)) THEN
521  DEALLOCATE (gro_info%torsion_m)
522  END IF
523  IF (ASSOCIATED(gro_info%torsion_phi0)) THEN
524  DEALLOCATE (gro_info%torsion_phi0)
525  END IF
526  IF (ASSOCIATED(gro_info%impr_k)) THEN
527  DEALLOCATE (gro_info%impr_k)
528  END IF
529  IF (ASSOCIATED(gro_info%impr_phi0)) THEN
530  DEALLOCATE (gro_info%impr_phi0)
531  END IF
532  IF (ASSOCIATED(gro_info%nonbond_a)) THEN
533  DEALLOCATE (gro_info%nonbond_a)
534  END IF
535  IF (ASSOCIATED(gro_info%nonbond_c6)) THEN
536  DEALLOCATE (gro_info%nonbond_c6)
537  END IF
538  IF (ASSOCIATED(gro_info%nonbond_c12)) THEN
539  DEALLOCATE (gro_info%nonbond_c12)
540  END IF
541  IF (ASSOCIATED(gro_info%nonbond_a_14)) THEN
542  DEALLOCATE (gro_info%nonbond_a_14)
543  END IF
544  IF (ASSOCIATED(gro_info%nonbond_c6_14)) THEN
545  DEALLOCATE (gro_info%nonbond_c6_14)
546  END IF
547  IF (ASSOCIATED(gro_info%nonbond_c12_14)) THEN
548  DEALLOCATE (gro_info%nonbond_c12_14)
549  END IF
550 
551  END SUBROUTINE deallocate_gromos_info
552 
553 ! **************************************************************************************************
554 !> \brief Specific function to deallocate the chm_info
555 !> \param chm_info ...
556 !> \par History
557 !> none
558 !> \author teo
559 ! **************************************************************************************************
560  SUBROUTINE deallocate_chm_info(chm_info)
561  TYPE(charmm_info_type), POINTER :: chm_info
562 
563  IF (ASSOCIATED(chm_info%bond_a)) THEN
564  DEALLOCATE (chm_info%bond_a)
565  END IF
566  IF (ASSOCIATED(chm_info%bond_b)) THEN
567  DEALLOCATE (chm_info%bond_b)
568  END IF
569  IF (ASSOCIATED(chm_info%bond_k)) THEN
570  DEALLOCATE (chm_info%bond_k)
571  END IF
572  IF (ASSOCIATED(chm_info%bond_r0)) THEN
573  DEALLOCATE (chm_info%bond_r0)
574  END IF
575  IF (ASSOCIATED(chm_info%bend_a)) THEN
576  DEALLOCATE (chm_info%bend_a)
577  END IF
578  IF (ASSOCIATED(chm_info%bend_b)) THEN
579  DEALLOCATE (chm_info%bend_b)
580  END IF
581  IF (ASSOCIATED(chm_info%bend_c)) THEN
582  DEALLOCATE (chm_info%bend_c)
583  END IF
584  IF (ASSOCIATED(chm_info%bend_k)) THEN
585  DEALLOCATE (chm_info%bend_k)
586  END IF
587  IF (ASSOCIATED(chm_info%bend_theta0)) THEN
588  DEALLOCATE (chm_info%bend_theta0)
589  END IF
590  IF (ASSOCIATED(chm_info%ub_a)) THEN
591  DEALLOCATE (chm_info%ub_a)
592  END IF
593  IF (ASSOCIATED(chm_info%ub_b)) THEN
594  DEALLOCATE (chm_info%ub_b)
595  END IF
596  IF (ASSOCIATED(chm_info%ub_c)) THEN
597  DEALLOCATE (chm_info%ub_c)
598  END IF
599  IF (ASSOCIATED(chm_info%ub_k)) THEN
600  DEALLOCATE (chm_info%ub_k)
601  END IF
602  IF (ASSOCIATED(chm_info%ub_r0)) THEN
603  DEALLOCATE (chm_info%ub_r0)
604  END IF
605  IF (ASSOCIATED(chm_info%torsion_a)) THEN
606  DEALLOCATE (chm_info%torsion_a)
607  END IF
608  IF (ASSOCIATED(chm_info%torsion_b)) THEN
609  DEALLOCATE (chm_info%torsion_b)
610  END IF
611  IF (ASSOCIATED(chm_info%torsion_c)) THEN
612  DEALLOCATE (chm_info%torsion_c)
613  END IF
614  IF (ASSOCIATED(chm_info%torsion_d)) THEN
615  DEALLOCATE (chm_info%torsion_d)
616  END IF
617  IF (ASSOCIATED(chm_info%torsion_k)) THEN
618  DEALLOCATE (chm_info%torsion_k)
619  END IF
620  IF (ASSOCIATED(chm_info%torsion_m)) THEN
621  DEALLOCATE (chm_info%torsion_m)
622  END IF
623  IF (ASSOCIATED(chm_info%torsion_phi0)) THEN
624  DEALLOCATE (chm_info%torsion_phi0)
625  END IF
626  IF (ASSOCIATED(chm_info%impr_a)) THEN
627  DEALLOCATE (chm_info%impr_a)
628  END IF
629  IF (ASSOCIATED(chm_info%impr_b)) THEN
630  DEALLOCATE (chm_info%impr_b)
631  END IF
632  IF (ASSOCIATED(chm_info%impr_c)) THEN
633  DEALLOCATE (chm_info%impr_c)
634  END IF
635  IF (ASSOCIATED(chm_info%impr_d)) THEN
636  DEALLOCATE (chm_info%impr_d)
637  END IF
638  IF (ASSOCIATED(chm_info%impr_k)) THEN
639  DEALLOCATE (chm_info%impr_k)
640  END IF
641  IF (ASSOCIATED(chm_info%impr_phi0)) THEN
642  DEALLOCATE (chm_info%impr_phi0)
643  END IF
644  IF (ASSOCIATED(chm_info%nonbond_a)) THEN
645  DEALLOCATE (chm_info%nonbond_a)
646  END IF
647  IF (ASSOCIATED(chm_info%nonbond_eps)) THEN
648  DEALLOCATE (chm_info%nonbond_eps)
649  END IF
650  IF (ASSOCIATED(chm_info%nonbond_rmin2)) THEN
651  DEALLOCATE (chm_info%nonbond_rmin2)
652  END IF
653  IF (ASSOCIATED(chm_info%nonbond_a_14)) THEN
654  DEALLOCATE (chm_info%nonbond_a_14)
655  END IF
656  IF (ASSOCIATED(chm_info%nonbond_eps_14)) THEN
657  DEALLOCATE (chm_info%nonbond_eps_14)
658  END IF
659  IF (ASSOCIATED(chm_info%nonbond_rmin2_14)) THEN
660  DEALLOCATE (chm_info%nonbond_rmin2_14)
661  END IF
662 
663  END SUBROUTINE deallocate_chm_info
664 
665 ! **************************************************************************************************
666 !> \brief Specific function to deallocate the chm_info
667 !> \param amb_info ...
668 !> \par History
669 !> none
670 !> \author Teodoro Laino [tlaino] - University of Zurich 10.2008
671 ! **************************************************************************************************
672  SUBROUTINE deallocate_amb_info(amb_info)
673  TYPE(amber_info_type), POINTER :: amb_info
674 
675  IF (ASSOCIATED(amb_info%bond_a)) THEN
676  DEALLOCATE (amb_info%bond_a)
677  END IF
678  IF (ASSOCIATED(amb_info%bond_b)) THEN
679  DEALLOCATE (amb_info%bond_b)
680  END IF
681  IF (ASSOCIATED(amb_info%bond_k)) THEN
682  DEALLOCATE (amb_info%bond_k)
683  END IF
684  IF (ASSOCIATED(amb_info%bond_r0)) THEN
685  DEALLOCATE (amb_info%bond_r0)
686  END IF
687  IF (ASSOCIATED(amb_info%bend_a)) THEN
688  DEALLOCATE (amb_info%bend_a)
689  END IF
690  IF (ASSOCIATED(amb_info%bend_b)) THEN
691  DEALLOCATE (amb_info%bend_b)
692  END IF
693  IF (ASSOCIATED(amb_info%bend_c)) THEN
694  DEALLOCATE (amb_info%bend_c)
695  END IF
696  IF (ASSOCIATED(amb_info%bend_k)) THEN
697  DEALLOCATE (amb_info%bend_k)
698  END IF
699  IF (ASSOCIATED(amb_info%bend_theta0)) THEN
700  DEALLOCATE (amb_info%bend_theta0)
701  END IF
702  IF (ASSOCIATED(amb_info%torsion_a)) THEN
703  DEALLOCATE (amb_info%torsion_a)
704  END IF
705  IF (ASSOCIATED(amb_info%torsion_b)) THEN
706  DEALLOCATE (amb_info%torsion_b)
707  END IF
708  IF (ASSOCIATED(amb_info%torsion_c)) THEN
709  DEALLOCATE (amb_info%torsion_c)
710  END IF
711  IF (ASSOCIATED(amb_info%torsion_d)) THEN
712  DEALLOCATE (amb_info%torsion_d)
713  END IF
714  IF (ASSOCIATED(amb_info%torsion_k)) THEN
715  DEALLOCATE (amb_info%torsion_k)
716  END IF
717  IF (ASSOCIATED(amb_info%torsion_m)) THEN
718  DEALLOCATE (amb_info%torsion_m)
719  END IF
720  IF (ASSOCIATED(amb_info%torsion_phi0)) THEN
721  DEALLOCATE (amb_info%torsion_phi0)
722  END IF
723  IF (ASSOCIATED(amb_info%nonbond_a)) THEN
724  DEALLOCATE (amb_info%nonbond_a)
725  END IF
726  IF (ASSOCIATED(amb_info%nonbond_eps)) THEN
727  DEALLOCATE (amb_info%nonbond_eps)
728  END IF
729  IF (ASSOCIATED(amb_info%nonbond_rmin2)) THEN
730  DEALLOCATE (amb_info%nonbond_rmin2)
731  END IF
732  IF (ASSOCIATED(amb_info%raw_torsion_id)) THEN
733  DEALLOCATE (amb_info%raw_torsion_id)
734  END IF
735  IF (ASSOCIATED(amb_info%raw_torsion_k)) THEN
736  DEALLOCATE (amb_info%raw_torsion_k)
737  END IF
738  IF (ASSOCIATED(amb_info%raw_torsion_m)) THEN
739  DEALLOCATE (amb_info%raw_torsion_m)
740  END IF
741  IF (ASSOCIATED(amb_info%raw_torsion_phi0)) THEN
742  DEALLOCATE (amb_info%raw_torsion_phi0)
743  END IF
744 
745  END SUBROUTINE deallocate_amb_info
746 
747 ! **************************************************************************************************
748 !> \brief Specific function to deallocate the inp_info
749 !> \param inp_info ...
750 !> \par History
751 !> none
752 !> \author teo
753 ! **************************************************************************************************
754  SUBROUTINE deallocate_inp_info(inp_info)
755  TYPE(input_info_type), POINTER :: inp_info
756 
757  INTEGER :: i
758 
759  IF (ASSOCIATED(inp_info%charge_atm)) THEN
760  DEALLOCATE (inp_info%charge_atm)
761  END IF
762  IF (ASSOCIATED(inp_info%charge)) THEN
763  DEALLOCATE (inp_info%charge)
764  END IF
765  IF (ASSOCIATED(inp_info%apol_atm)) THEN
766  DEALLOCATE (inp_info%apol_atm)
767  END IF
768  IF (ASSOCIATED(inp_info%apol)) THEN
769  DEALLOCATE (inp_info%apol)
770  END IF
771  IF (ASSOCIATED(inp_info%cpol_atm)) THEN
772  DEALLOCATE (inp_info%cpol_atm)
773  END IF
774  IF (ASSOCIATED(inp_info%cpol)) THEN
775  DEALLOCATE (inp_info%cpol)
776  END IF
777  IF (ASSOCIATED(inp_info%bond_kind)) THEN
778  DEALLOCATE (inp_info%bond_kind)
779  END IF
780  IF (ASSOCIATED(inp_info%bond_a)) THEN
781  DEALLOCATE (inp_info%bond_a)
782  END IF
783  IF (ASSOCIATED(inp_info%bond_b)) THEN
784  DEALLOCATE (inp_info%bond_b)
785  END IF
786  IF (ASSOCIATED(inp_info%bond_k)) THEN
787  DEALLOCATE (inp_info%bond_k)
788  END IF
789  IF (ASSOCIATED(inp_info%bond_r0)) THEN
790  DEALLOCATE (inp_info%bond_r0)
791  END IF
792  IF (ASSOCIATED(inp_info%bond_cs)) THEN
793  DEALLOCATE (inp_info%bond_cs)
794  END IF
795  IF (ASSOCIATED(inp_info%bend_kind)) THEN
796  DEALLOCATE (inp_info%bend_kind)
797  END IF
798  IF (ASSOCIATED(inp_info%bend_a)) THEN
799  DEALLOCATE (inp_info%bend_a)
800  END IF
801  IF (ASSOCIATED(inp_info%bend_b)) THEN
802  DEALLOCATE (inp_info%bend_b)
803  END IF
804  IF (ASSOCIATED(inp_info%bend_c)) THEN
805  DEALLOCATE (inp_info%bend_c)
806  END IF
807  IF (ASSOCIATED(inp_info%bend_k)) THEN
808  DEALLOCATE (inp_info%bend_k)
809  END IF
810  IF (ASSOCIATED(inp_info%bend_theta0)) THEN
811  DEALLOCATE (inp_info%bend_theta0)
812  END IF
813  IF (ASSOCIATED(inp_info%bend_legendre)) THEN
814  DO i = 1, SIZE(inp_info%bend_legendre)
815  IF (ASSOCIATED(inp_info%bend_legendre(i)%coeffs)) THEN
816  DEALLOCATE (inp_info%bend_legendre(i)%coeffs)
817  NULLIFY (inp_info%bend_legendre(i)%coeffs)
818  END IF
819  END DO
820  DEALLOCATE (inp_info%bend_legendre)
821  NULLIFY (inp_info%bend_legendre)
822  END IF
823  IF (ASSOCIATED(inp_info%bend_cb)) THEN
824  DEALLOCATE (inp_info%bend_cb)
825  END IF
826  IF (ASSOCIATED(inp_info%bend_r012)) THEN
827  DEALLOCATE (inp_info%bend_r012)
828  END IF
829  IF (ASSOCIATED(inp_info%bend_r032)) THEN
830  DEALLOCATE (inp_info%bend_r032)
831  END IF
832  IF (ASSOCIATED(inp_info%bend_kbs12)) THEN
833  DEALLOCATE (inp_info%bend_kbs12)
834  END IF
835  IF (ASSOCIATED(inp_info%bend_kbs32)) THEN
836  DEALLOCATE (inp_info%bend_kbs32)
837  END IF
838  IF (ASSOCIATED(inp_info%bend_kss)) THEN
839  DEALLOCATE (inp_info%bend_kss)
840  END IF
841  IF (ASSOCIATED(inp_info%ub_kind)) THEN
842  DEALLOCATE (inp_info%ub_kind)
843  END IF
844  IF (ASSOCIATED(inp_info%ub_a)) THEN
845  DEALLOCATE (inp_info%ub_a)
846  END IF
847  IF (ASSOCIATED(inp_info%ub_b)) THEN
848  DEALLOCATE (inp_info%ub_b)
849  END IF
850  IF (ASSOCIATED(inp_info%ub_c)) THEN
851  DEALLOCATE (inp_info%ub_c)
852  END IF
853  IF (ASSOCIATED(inp_info%ub_k)) THEN
854  DEALLOCATE (inp_info%ub_k)
855  END IF
856  IF (ASSOCIATED(inp_info%ub_r0)) THEN
857  DEALLOCATE (inp_info%ub_r0)
858  END IF
859  IF (ASSOCIATED(inp_info%torsion_kind)) THEN
860  DEALLOCATE (inp_info%torsion_kind)
861  END IF
862  IF (ASSOCIATED(inp_info%torsion_a)) THEN
863  DEALLOCATE (inp_info%torsion_a)
864  END IF
865  IF (ASSOCIATED(inp_info%torsion_b)) THEN
866  DEALLOCATE (inp_info%torsion_b)
867  END IF
868  IF (ASSOCIATED(inp_info%torsion_c)) THEN
869  DEALLOCATE (inp_info%torsion_c)
870  END IF
871  IF (ASSOCIATED(inp_info%torsion_d)) THEN
872  DEALLOCATE (inp_info%torsion_d)
873  END IF
874  IF (ASSOCIATED(inp_info%torsion_k)) THEN
875  DEALLOCATE (inp_info%torsion_k)
876  END IF
877  IF (ASSOCIATED(inp_info%torsion_m)) THEN
878  DEALLOCATE (inp_info%torsion_m)
879  END IF
880  IF (ASSOCIATED(inp_info%torsion_phi0)) THEN
881  DEALLOCATE (inp_info%torsion_phi0)
882  END IF
883  IF (ASSOCIATED(inp_info%impr_kind)) THEN
884  DEALLOCATE (inp_info%impr_kind)
885  END IF
886  IF (ASSOCIATED(inp_info%impr_a)) THEN
887  DEALLOCATE (inp_info%impr_a)
888  END IF
889  IF (ASSOCIATED(inp_info%impr_b)) THEN
890  DEALLOCATE (inp_info%impr_b)
891  END IF
892  IF (ASSOCIATED(inp_info%impr_c)) THEN
893  DEALLOCATE (inp_info%impr_c)
894  END IF
895  IF (ASSOCIATED(inp_info%impr_d)) THEN
896  DEALLOCATE (inp_info%impr_d)
897  END IF
898  IF (ASSOCIATED(inp_info%impr_k)) THEN
899  DEALLOCATE (inp_info%impr_k)
900  END IF
901  IF (ASSOCIATED(inp_info%impr_phi0)) THEN
902  DEALLOCATE (inp_info%impr_phi0)
903  END IF
904  IF (ASSOCIATED(inp_info%opbend_kind)) THEN
905  DEALLOCATE (inp_info%opbend_kind)
906  END IF
907  IF (ASSOCIATED(inp_info%opbend_a)) THEN
908  DEALLOCATE (inp_info%opbend_a)
909  END IF
910  IF (ASSOCIATED(inp_info%opbend_b)) THEN
911  DEALLOCATE (inp_info%opbend_b)
912  END IF
913  IF (ASSOCIATED(inp_info%opbend_c)) THEN
914  DEALLOCATE (inp_info%opbend_c)
915  END IF
916  IF (ASSOCIATED(inp_info%opbend_d)) THEN
917  DEALLOCATE (inp_info%opbend_d)
918  END IF
919  IF (ASSOCIATED(inp_info%opbend_k)) THEN
920  DEALLOCATE (inp_info%opbend_k)
921  END IF
922  IF (ASSOCIATED(inp_info%opbend_phi0)) THEN
923  DEALLOCATE (inp_info%opbend_phi0)
924  END IF
925  IF (ASSOCIATED(inp_info%nonbonded)) THEN
926  CALL pair_potential_p_release(inp_info%nonbonded)
927  END IF
928  IF (ASSOCIATED(inp_info%nonbonded14)) THEN
929  CALL pair_potential_p_release(inp_info%nonbonded14)
930  END IF
931  IF (ASSOCIATED(inp_info%shell_list)) THEN
932  CALL shell_p_release(inp_info%shell_list)
933  END IF
934  IF (ASSOCIATED(inp_info%damping_list)) THEN
935  DEALLOCATE (inp_info%damping_list)
936  END IF
937 
938  END SUBROUTINE deallocate_inp_info
939 
940 END MODULE force_field_types
Define all structure types related to force field kinds.
Define all structures types related to force_fields.
subroutine, public deallocate_inp_info(inp_info)
Specific function to deallocate the inp_info.
subroutine, public init_ff_type(ff_type)
Just NULLIFY and zero all the stuff
subroutine, public init_inp_info(inp_info)
Specific function to initialize the inp_info.
subroutine, public deallocate_ff_type(ff_type)
Just DEALLOCATE all the stuff
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
integer, parameter, public default_string_length
Definition: kinds.F:57
integer, parameter, public default_path_length
Definition: kinds.F:58
subroutine, public pair_potential_p_release(potparm)
Release Data-structure that constains potential parameters.
subroutine, public shell_p_release(shell_list)
...