Line data Source code
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 provides a table for UFF vdW radii:
10 : !> Rappe et al. J. Am. Chem. Soc. 114, 10024 (1992)
11 : !> \par History
12 : !> created 2015/10/28
13 : !> \author Lianheng Tong (lianheng.tong [AT] kcl.ac.uk)
14 : ! **************************************************************************************************
15 : MODULE uff_vdw_radii_table
16 :
17 : USE kinds, ONLY: dp
18 : #include "base/base_uses.f90"
19 :
20 : IMPLICIT NONE
21 :
22 : PRIVATE
23 :
24 : PUBLIC :: get_uff_vdw_radius
25 :
26 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'uff_vdw_radii_table'
27 :
28 : INTEGER, PARAMETER :: NELEMENTS = 118
29 : REAL(KIND=dp), PARAMETER :: NAN = -1.0_dp
30 : ! the table: units are in Angstrom, in the order of z
31 : REAL(KIND=dp), DIMENSION(NELEMENTS), PARAMETER :: uff_vdw_radius = &
32 : (/ &
33 : 1.443_dp, & ! 1 H
34 : 1.181_dp, & ! 2 He
35 : 1.226_dp, & ! 3 Li
36 : 1.373_dp, & ! 4 Be
37 : 2.042_dp, & ! 5 B
38 : 1.926_dp, & ! 6 C
39 : 1.830_dp, & ! 7 N
40 : 1.750_dp, & ! 8 O
41 : 1.682_dp, & ! 9 F
42 : 1.621_dp, & ! 10 Ne
43 : 1.492_dp, & ! 11 Na
44 : 1.510_dp, & ! 12 Mg
45 : 2.250_dp, & ! 13 Al
46 : 2.148_dp, & ! 14 Si
47 : 2.074_dp, & ! 15 P
48 : 2.017_dp, & ! 16 S
49 : 1.973_dp, & ! 17 Cl
50 : 1.934_dp, & ! 18 Ar
51 : 1.906_dp, & ! 19 K
52 : 1.700_dp, & ! 20 Ca
53 : 1.647_dp, & ! 21 Sc
54 : 1.587_dp, & ! 22 Ti
55 : 1.572_dp, & ! 23 V
56 : 1.511_dp, & ! 24 Cr
57 : 1.481_dp, & ! 25 Mn
58 : 1.456_dp, & ! 26 Fe
59 : 1.436_dp, & ! 27 Co
60 : 1.417_dp, & ! 28 Ni
61 : 1.748_dp, & ! 29 Cu
62 : 1.382_dp, & ! 30 Zn
63 : 2.191_dp, & ! 31 Ga
64 : 2.140_dp, & ! 32 Ge
65 : 2.115_dp, & ! 33 As
66 : 2.103_dp, & ! 34 Se
67 : 2.094_dp, & ! 35 Br
68 : 2.071_dp, & ! 36 Kr
69 : 2.057_dp, & ! 37 Rb
70 : 1.821_dp, & ! 38 Sr
71 : 1.673_dp, & ! 39 Y
72 : 1.562_dp, & ! 40 Zr
73 : 1.582_dp, & ! 41 Nb
74 : 1.526_dp, & ! 42 Mo
75 : 1.499_dp, & ! 43 Tc
76 : 1.482_dp, & ! 44 Ru
77 : 1.464_dp, & ! 45 Rh
78 : 1.450_dp, & ! 46 Pd
79 : 1.574_dp, & ! 47 Ag
80 : 1.424_dp, & ! 48 Cd
81 : 2.231_dp, & ! 49 In
82 : 2.196_dp, & ! 50 Sn
83 : 2.210_dp, & ! 51 Sb
84 : 2.235_dp, & ! 52 Te
85 : 2.250_dp, & ! 53 I
86 : 2.202_dp, & ! 54 Xe
87 : 2.259_dp, & ! 55 Cs
88 : 1.852_dp, & ! 56 Ba
89 : 1.761_dp, & ! 57 La
90 : 1.778_dp, & ! 58 Ce
91 : 1.803_dp, & ! 59 Pr
92 : 1.788_dp, & ! 60 Nd
93 : 1.774_dp, & ! 61 Pm
94 : 1.760_dp, & ! 62 Sm
95 : 1.747_dp, & ! 63 Eu
96 : 1.684_dp, & ! 64 Gd
97 : 1.725_dp, & ! 65 Tb
98 : 1.714_dp, & ! 66 Dy
99 : 1.705_dp, & ! 67 Ho
100 : 1.695_dp, & ! 68 Er
101 : 1.687_dp, & ! 69 Tm
102 : 1.678_dp, & ! 70 Yb
103 : 1.820_dp, & ! 71 Lu
104 : 1.570_dp, & ! 72 Hf
105 : 1.585_dp, & ! 73 Ta
106 : 1.534_dp, & ! 74 W
107 : 1.477_dp, & ! 75 Re
108 : 1.560_dp, & ! 76 Os
109 : 1.420_dp, & ! 77 Ir
110 : 1.377_dp, & ! 78 Pt
111 : 1.646_dp, & ! 79 Au
112 : 1.352_dp, & ! 80 Hg
113 : 2.174_dp, & ! 81 Tl
114 : 2.149_dp, & ! 82 Pb
115 : 2.185_dp, & ! 83 Bi
116 : 2.354_dp, & ! 84 Po
117 : 2.375_dp, & ! 85 At
118 : 2.382_dp, & ! 86 Rn
119 : 2.450_dp, & ! 87 Fr
120 : 1.838_dp, & ! 88 Ra
121 : 1.739_dp, & ! 89 Ac
122 : 1.698_dp, & ! 90 Th
123 : 1.712_dp, & ! 91 Pa
124 : 1.697_dp, & ! 92 U
125 : 1.712_dp, & ! 93 Np
126 : 1.712_dp, & ! 94 Pu
127 : 1.690_dp, & ! 95 Am
128 : 1.663_dp, & ! 96 Cm
129 : 1.670_dp, & ! 97 Bk
130 : 1.656_dp, & ! 98 Cf
131 : 1.649_dp, & ! 99 Es
132 : 1.643_dp, & !100 Fm
133 : 1.637_dp, & !101 Md
134 : 1.624_dp, & !102 No
135 : 1.618_dp, & !103 Lr
136 : NAN, & !104 Rf
137 : NAN, & !105 Db
138 : NAN, & !106 Sg
139 : NAN, & !107 Bh
140 : NAN, & !108 Hs
141 : NAN, & !109 Mt
142 : NAN, & !110 Ds
143 : NAN, & !111 Rg
144 : NAN, & !112 Cn
145 : NAN, & !113 Uut
146 : NAN, & !114 Fl
147 : NAN, & !115 Uup
148 : NAN, & !116 Lv
149 : NAN, & !117 Uus
150 : NAN & !118 Uuo
151 : /)
152 :
153 : CONTAINS
154 :
155 : ! **************************************************************************************************
156 : !> \brief get UFF vdW radius for a given element
157 : !> \param z : on input, atomic number
158 : !> \param radius : on output, UFF vdW radius, 0.0 if element not in table
159 : !> \param found : on output, T if element is in table, F if not
160 : !> \author Lianheng Tong (lianheng.tong [AT] kcl.ac.uk)
161 : ! **************************************************************************************************
162 6 : PURE SUBROUTINE get_uff_vdw_radius(z, radius, found)
163 : INTEGER, INTENT(IN) :: z
164 : REAL(KIND=dp), INTENT(OUT) :: radius
165 : LOGICAL, INTENT(OUT) :: found
166 :
167 6 : IF (uff_vdw_radius(z) == NAN) THEN
168 0 : radius = 0.0_dp
169 0 : found = .FALSE.
170 : ELSE
171 6 : radius = uff_vdw_radius(z)
172 6 : found = .TRUE.
173 : END IF
174 6 : END SUBROUTINE get_uff_vdw_radius
175 :
176 : END MODULE uff_vdw_radii_table
|