LCOV - code coverage report
Current view: top level - src - uff_vdw_radii_table.F (source / functions) Hit Total Coverage
Test: CP2K Regtests (git:262480d) Lines: 5 7 71.4 %
Date: 2024-11-22 07:00:40 Functions: 1 1 100.0 %

          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

Generated by: LCOV version 1.15