(git:e7e05ae)
damping_dipole_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 !> \author Rodolphe Vuilleumier (29.12.2009)
10 ! **************************************************************************************************
12 
13  USE kinds, ONLY: default_string_length,&
14  dp
15 #include "../base/base_uses.f90"
16 
17  IMPLICIT NONE
18 
19  PRIVATE
20 
21 ! *** Global parameters (only in this module)
22 
23  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'damping_dipole_types'
24 
25 ! *** Global public parameters
26 
27  INTEGER, PUBLIC, PARAMETER :: no_damping = -1, &
28  tang_toennies = 1
29 
30 ! *** Define the damping types ***
31 ! **************************************************************************************************
32  TYPE damping_info_type
33  CHARACTER(LEN=default_string_length) :: atm_name1 = "", atm_name2 = ""
34  CHARACTER(LEN=default_string_length) :: dtype = ""
35  INTEGER :: order = -1
36  REAL(kind=dp) :: bij = 0.0_dp, cij = 0.0_dp
37  END TYPE damping_info_type
38 ! **************************************************************************************************
39  TYPE damping_type
40  INTEGER :: itype = no_damping
41  INTEGER :: order = 1
42  REAL(kind=dp) :: bij = huge(0.0_dp), cij = 0.0_dp
43  END TYPE damping_type
44 
45  TYPE damping_p_type
46  TYPE(damping_type), DIMENSION(:), POINTER :: damp => null()
47  END TYPE
48 
49 ! **************************************************************************************************
50 
51 ! *** Public data types ***
52 
53  PUBLIC :: damping_info_type, damping_type
54 
55 ! *** Public subroutines ***
56 
57  PUBLIC :: damping_p_type, damping_p_create, damping_p_release
58 
59 CONTAINS
60 
61 ! **************************************************************************************************
62 !> \brief Creates Data-structure that contains damping information
63 !> \param damping ...
64 !> \param nkinds ...
65 !> \author Rodolphe Vuilleumier
66 ! **************************************************************************************************
67  SUBROUTINE damping_p_create(damping, nkinds)
68  TYPE(damping_p_type), POINTER :: damping
69  INTEGER, INTENT(IN) :: nkinds
70 
71  cpassert(.NOT. ASSOCIATED(damping))
72  ALLOCATE (damping)
73  ALLOCATE (damping%damp(nkinds))
74 
75  END SUBROUTINE damping_p_create
76 ! **************************************************************************************************
77 !> \brief Release Data-structure that contains damping information
78 !> \param damping ...
79 !> \author Rodolphe Vuilleumier [RV]
80 ! **************************************************************************************************
81  SUBROUTINE damping_p_release(damping)
82  TYPE(damping_p_type), POINTER :: damping
83 
84  IF (ASSOCIATED(damping)) THEN
85  IF (ASSOCIATED(damping%damp)) THEN
86  DEALLOCATE (damping%damp)
87  END IF
88  DEALLOCATE (damping)
89  END IF
90  NULLIFY (damping)
91 
92  END SUBROUTINE damping_p_release
93 
94 ! **************************************************************************************************
95 END MODULE damping_dipole_types
integer, parameter, public tang_toennies
integer, parameter, public no_damping
subroutine, public damping_p_release(damping)
Release Data-structure that contains damping information.
subroutine, public damping_p_create(damping, nkinds)
Creates Data-structure that contains damping information.
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