19 #include "./base/base_uses.f90"
25 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dispersion_types'
31 TYPE qs_dispersion_type
35 CHARACTER(LEN=default_string_length) :: ref_functional
36 REAL(kind=
dp) :: scaling
37 REAL(kind=
dp) :: rc_disp
38 REAL(kind=
dp) :: exp_pre
39 TYPE(section_vals_type),
POINTER :: dftd_section
41 CHARACTER(LEN=default_string_length) :: parameter_file_name
42 CHARACTER(LEN=default_string_length) :: kernel_file_name
46 REAL(kind=
dp) :: k1, k2, k3
48 REAL(kind=
dp) :: s6, s8, sr6
49 REAL(kind=
dp) :: a1, a2
50 REAL(kind=
dp) :: eps_cn
55 REAL(kind=
dp),
DIMENSION(4) :: srb_params
56 TYPE(neighbor_list_set_p_type), &
57 DIMENSION(:),
POINTER :: sab_vdw, sab_cn
58 REAL(kind=
dp),
DIMENSION(:, :, :, :, :),
POINTER &
60 INTEGER,
DIMENSION(:),
POINTER :: maxci
61 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: r0ab
62 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rcov
63 REAL(kind=
dp),
DIMENSION(:),
POINTER :: r2r4
64 REAL(kind=
dp),
DIMENSION(:),
POINTER :: cn
65 TYPE(cn_kind_list),
DIMENSION(:),
POINTER &
67 TYPE(cn_atom_list),
DIMENSION(:),
POINTER &
73 REAL(kind=
dp) :: pw_cutoff
74 REAL(kind=
dp) :: b_value, c_value, scale_rvv10
75 INTEGER :: nqs, nr_points
79 REAL(kind=
dp) :: r_max, q_cut, q_min, dk
85 REAL(kind=
dp),
DIMENSION(:),
POINTER :: q_mesh
86 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER &
90 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER &
94 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: d2y_dx2
95 INTEGER,
DIMENSION(:, :),
POINTER :: d3_exclude_pair
96 INTEGER :: nd3_exclude_pair
97 END TYPE qs_dispersion_type
99 TYPE qs_atom_dispersion_type
102 REAL(kind=
dp) :: vdw_radii
104 END TYPE qs_atom_dispersion_type
107 REAL(kind=
dp) :: cnum
109 END TYPE cn_kind_list
111 REAL(kind=
dp) :: cnum
113 INTEGER,
DIMENSION(:),
POINTER ::
atom
114 END TYPE cn_atom_list
118 PUBLIC :: qs_atom_dispersion_type, qs_dispersion_type
130 TYPE(qs_dispersion_type),
POINTER :: dispersion_env
134 IF (
ASSOCIATED(dispersion_env))
THEN
135 IF (
ASSOCIATED(dispersion_env%maxci))
THEN
137 DEALLOCATE (dispersion_env%maxci)
138 DEALLOCATE (dispersion_env%c6ab)
139 DEALLOCATE (dispersion_env%r0ab)
140 DEALLOCATE (dispersion_env%rcov)
141 DEALLOCATE (dispersion_env%r2r4)
142 DEALLOCATE (dispersion_env%cn)
143 IF (
ASSOCIATED(dispersion_env%cnkind))
THEN
144 DEALLOCATE (dispersion_env%cnkind)
146 IF (
ASSOCIATED(dispersion_env%cnlist))
THEN
147 DO i = 1,
SIZE(dispersion_env%cnlist)
148 DEALLOCATE (dispersion_env%cnlist(i)%atom)
150 DEALLOCATE (dispersion_env%cnlist)
154 IF (
ASSOCIATED(dispersion_env%q_mesh))
THEN
155 DEALLOCATE (dispersion_env%q_mesh)
157 IF (
ASSOCIATED(dispersion_env%kernel))
THEN
158 DEALLOCATE (dispersion_env%kernel)
160 IF (
ASSOCIATED(dispersion_env%d2phi_dk2))
THEN
161 DEALLOCATE (dispersion_env%d2phi_dk2)
163 IF (
ASSOCIATED(dispersion_env%d2y_dx2))
THEN
164 DEALLOCATE (dispersion_env%d2y_dx2)
166 IF (
ASSOCIATED(dispersion_env%d3_exclude_pair))
THEN
167 DEALLOCATE (dispersion_env%d3_exclude_pair)
173 DEALLOCATE (dispersion_env)
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of disperson types for DFT calculations.
integer, parameter, public dftd2_pp
subroutine, public qs_dispersion_release(dispersion_env)
...
integer, parameter, public dftd3_pp
Define the neighbor list data types and the corresponding functionality.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets