(git:374b731)
Loading...
Searching...
No Matches
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
20 USE kinds, ONLY: default_path_length,&
22 dp
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! **************************************************************************************************
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! **************************************************************************************************
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! **************************************************************************************************
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! **************************************************************************************************
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! **************************************************************************************************
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, &
214
215! *** Public data types ***
216
217 PUBLIC :: charmm_info_type, &
222
223CONTAINS
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
940END 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)
...