LCOV - code coverage report
Current view: top level - src - uff_vdw_radii_table.F (source / functions) Coverage Total Hit
Test: CP2K Regtests (git:42dac4a) Lines: 71.4 % 7 5
Test Date: 2025-07-25 12:55:17 Functions: 100.0 % 1 1

            Line data    Source code
       1              : !--------------------------------------------------------------------------------------------------!
       2              : !   CP2K: A general program to perform molecular dynamics simulations                              !
       3              : !   Copyright 2000-2025 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 2.0-1