mendeleiev_mod.f95

mendeleiev_mod.f95
!-----------------------------------------------------------------------------
!     This file is part of QmcMol A GNU QMC program for molecules.
!    Copyright (C) 2002 CNRS - U.P.M.C. Paris 6 - FRANCE
!     R. Assaraf, M. Caffarel, F. Colonna, X. Krokidis, B. Levy,
!     P. Pernod, and P. Reinhardt - qmcmol@lct.jussieu.fr
!            http://www.lct.jussieu.fr/QmcMol
! QmcMol is free software; you can redistribute it and/or modify it
! under the terms of the GNU General Public License as published by the Free
! Software Foundation; either version 2, or (at your option) any later
! version. QmcMol is distributed in the hope that it will be useful,but
! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
! or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
! for more details. You should have received a copy of the GNU General
! Public License along with QmcMol; see the file COPYING. If not,
! write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
! Boston, MA 02111-1307, USA.
!-----------------------------------------------------------------------------

module mendeleiev_mod

 use control_mod
 use strings_mod

 implicit none

 type element
  character(len=max_len_atom_symbol) :: name
  character(len=6)          :: type ! fake
  real(dp)              :: mass 
  real(dp)              :: zed 
  real(dp)              :: covrad 
 end type 

 integer(i4b), parameter :: n_mendeleiev = 104
 type (element), pointer :: mendeleiev(:) => NULL ()

 contains

! ===============================================================================
 subroutine mendeleiev_init  
! -------------------------------------------------------------------------------
!
! Name      : mendeleiev_init
!
! Description  : fills mendeleiev array
!
! Authors:X. Krokidis
! Date :11 Oct 2000
! -------------------------------------------------------------------------------
 implicit none

! i/o:

! local:
 character(len=max_string_len_routine_name) :: l_here

! begin:
 l_here ='mendeleiev_init'
 call enter (l_here)

 if(debug)write (logf,*)trim(l_here),'-d: n_mendeleiev=',n_mendeleiev

! allocate mendeleiev periodic table
! Improve allocate (mendeleiev(0:n_mendeleiev-1), stat=all_err)
 allocate (mendeleiev(n_mendeleiev), stat = all_err)
 if (all_err /= 0) then
  write (logf,'(4a)') trim(l_here), &
  ': allocation failed for object >mendeleiev<'
  write (logf,'(2a,i10)') trim(l_here), &
  ': dimensions are ',n_mendeleiev
  call die (l_here, 'allocation failed')
 end if

 mendeleiev%name   = NOT_INIT_S 
 mendeleiev%mass   = NOT_INIT_DP
 mendeleiev%zed   = NOT_INIT_DP
 mendeleiev%covrad  = NOT_INIT_DP

 mendeleiev(1)%name   = 'H '
 mendeleiev(1)%mass   = 1.0079d0
 mendeleiev(1)%zed   = 1.d0
 mendeleiev(1)%covrad  = 0.69920d+00

 mendeleiev(2)%name   = 'HE'
 mendeleiev(2)%mass   = 4.0026d0
 mendeleiev(2)%zed   = 2.d0
 mendeleiev(2)%covrad  = 0.94480d+00

 mendeleiev(3)%name   = 'LI'
 mendeleiev(3)%mass   = 6.941d0
 mendeleiev(3)%zed   = 3.d0
 mendeleiev(3)%covrad  = 2.5510d+00

 mendeleiev(4)%name   = 'BE'
 mendeleiev(4)%mass   = 9.0122d0
 mendeleiev(4)%zed   = 4.d0
 mendeleiev(4)%covrad  = 2.3620d+00

 mendeleiev(5)%name   = 'B '
 mendeleiev(5)%mass   = 10.811d0
 mendeleiev(5)%zed   = 5.d0
 mendeleiev(5)%covrad  = 1.7010d+00

 mendeleiev(6)%name   = 'C '
 mendeleiev(6)%mass   = 12.011d0
 mendeleiev(6)%zed   = 6.d0
 mendeleiev(6)%covrad  = 1.4550d+00

 mendeleiev(7)%name   = 'N '
 mendeleiev(7)%mass   = 14.0067d0
 mendeleiev(7)%zed   = 7.d0
 mendeleiev(7)%covrad  = 1.4170d+00

 mendeleiev(8)%name   = 'O '
 mendeleiev(8)%mass   = 15.9994d0
 mendeleiev(8)%zed   = 8.d0
 mendeleiev(8)%covrad  = 1.3790d+00

 mendeleiev(9)%name   = 'F '
 mendeleiev(9)%mass   = 18.9984d0
 mendeleiev(9)%zed   = 9.d0
 mendeleiev(9)%covrad  = 1.3420d+00

 mendeleiev(10)%name   = 'NE'
 mendeleiev(10)%mass   = 20.179d0
 mendeleiev(10)%zed   = 10.d0
 mendeleiev(10)%covrad  = 1.2280d+00

 mendeleiev(11)%name   = 'NA'
 mendeleiev(11)%mass   = 22.9898d0
 mendeleiev(11)%zed   = 11.d0
 mendeleiev(11)%covrad  = 2.9100d+00

 mendeleiev(12)%name   = 'MG'
 mendeleiev(12)%mass   = 24.305d0
 mendeleiev(12)%zed   = 12.d0
 mendeleiev(12)%covrad  = 2.7400d+00

 mendeleiev(13)%name   = 'AL'
 mendeleiev(13)%mass   = 24.305d0
 mendeleiev(13)%zed   = 13.d0
 mendeleiev(13)%covrad  = 2.4570d+00

 mendeleiev(14)%name   = 'SI'
 mendeleiev(14)%mass   = 26.9815d0
 mendeleiev(14)%zed   = 14.d0
 mendeleiev(14)%covrad  = 2.2300d+00

 mendeleiev(15)%name   = 'P '
 mendeleiev(15)%mass   = 28.0855d0
 mendeleiev(15)%zed   = 15.d0
 mendeleiev(15)%covrad  = 2.0790d+00

 mendeleiev(16)%name   = 'S '
 mendeleiev(16)%mass   = 32.066d0
 mendeleiev(16)%zed   = 16.d0
 mendeleiev(16)%covrad  = 1.9270d+00

 mendeleiev(17)%name   = 'CL'
 mendeleiev(17)%mass   = 35.453d0
 mendeleiev(17)%zed   = 17.d0
 mendeleiev(17)%covrad  = 1.8710d+00

 mendeleiev(18)%name   = 'AR'
 mendeleiev(18)%mass   = 39.948d0
 mendeleiev(18)%zed   = 18.d0
 mendeleiev(18)%covrad  = 1.7950d+00

 mendeleiev(19)%name   = 'K '
 mendeleiev(19)%mass   = 39.0983d0 !Is it correct?
 mendeleiev(19)%zed   = 19.d0
 mendeleiev(19)%covrad  = 1.628d+00

 mendeleiev(20)%name   = 'CA'
 mendeleiev(20)%mass   = 40.078d0
 mendeleiev(20)%zed   = 20.d0
 mendeleiev(20)%covrad  = 1.628d+00

 mendeleiev(21)%name   = 'SC'
 mendeleiev(21)%mass   = 44.9559d0
 mendeleiev(21)%zed   = 21.d0
 mendeleiev(21)%covrad  = 1.628d+00

 mendeleiev(22)%name   = 'TI'
 mendeleiev(22)%mass   = 47.88d0
 mendeleiev(22)%zed   = 22.d0
 mendeleiev(22)%covrad  = 1.628d+00

 mendeleiev(23)%name   = 'V '
 mendeleiev(23)%mass   = 50.9415d0
 mendeleiev(23)%zed   = 23.d0
 mendeleiev(23)%covrad  = 1.628d+00

 mendeleiev(24)%name   = 'CR'
 mendeleiev(24)%mass   = 51.996d0
 mendeleiev(24)%zed   = 24.d0
 mendeleiev(24)%covrad  = 1.628d+00

 mendeleiev(25)%name   = 'MN'
 mendeleiev(25)%mass   = 54.938d0
 mendeleiev(25)%zed   = 25.d0
 mendeleiev(25)%covrad  = 1.628d+00

 mendeleiev(26)%name   = 'FE'
 mendeleiev(26)%mass   = 55.847d0
 mendeleiev(26)%zed   = 26.d0
 mendeleiev(26)%covrad  = 1.628d+00

 mendeleiev(27)%name   = 'CO'
 mendeleiev(27)%mass   = 58.9332d0
 mendeleiev(27)%zed   = 27.d0
 mendeleiev(27)%covrad  = 1.628d+00

 mendeleiev(28)%name   = 'NI'
 mendeleiev(28)%mass   = 58.69d0
 mendeleiev(28)%zed   = 28.d0
 mendeleiev(28)%covrad  = 1.628d+00

 mendeleiev(29)%name   = 'CU'
 mendeleiev(29)%mass   = 63.546d0
 mendeleiev(29)%zed   = 29.d0
 mendeleiev(29)%covrad  = 1.628d+00

 mendeleiev(30)%name   = 'ZN'
 mendeleiev(30)%mass   = 65.39d0
 mendeleiev(30)%zed   = 30.d0
 mendeleiev(30)%covrad  = 1.628d+00

 mendeleiev(31)%name   = 'GA'
 mendeleiev(31)%mass   = 69.723d0
 mendeleiev(31)%zed   = 31.d0
 mendeleiev(31)%covrad  = 1.628d+00

 mendeleiev(32)%name   = 'GE'
 mendeleiev(32)%mass   = 72.59d0
 mendeleiev(32)%zed   = 32.d0
 mendeleiev(32)%covrad  = 1.628d+00

 mendeleiev(33)%name   = 'AS'
 mendeleiev(33)%mass   = 74.0216d0
 mendeleiev(33)%zed   = 33.d0
 mendeleiev(33)%covrad  = 1.628d+00

 mendeleiev(34)%name   = 'SE'
 mendeleiev(34)%mass   = 78.96d0
 mendeleiev(34)%zed   = 34.d0
 mendeleiev(34)%covrad  = 1.628d+00

 mendeleiev(35)%name   = 'BR'
 mendeleiev(35)%mass   = 79.904d0
 mendeleiev(35)%zed   = 35.d0
 mendeleiev(35)%covrad  = 1.628d+00

 mendeleiev(36)%name   = 'KR'
 mendeleiev(36)%mass   = 83.80d0
 mendeleiev(36)%zed   = 36.d0
 mendeleiev(36)%covrad  = 1.628d+00

 mendeleiev(37)%name   = 'RB'
 mendeleiev(37)%mass   = 85.4678d0
 mendeleiev(37)%zed   = 37.d0
 mendeleiev(37)%covrad  = 1.628d+00

 mendeleiev(38)%name   = 'SR'
 mendeleiev(38)%mass   = 87.62d0
 mendeleiev(38)%zed   = 38.d0
 mendeleiev(38)%covrad  = 1.628d+00

 mendeleiev(39)%name   = 'Y '
 mendeleiev(39)%mass   = 88.9059d0
 mendeleiev(39)%zed   = 39.d0
 mendeleiev(39)%covrad  = 1.628d+00

 mendeleiev(40)%name   = 'ZR'
 mendeleiev(40)%mass   = 91.224d0
 mendeleiev(40)%zed   = 40.d0
 mendeleiev(40)%covrad  = 1.628d+00

 mendeleiev(41)%name   = 'NB'
 mendeleiev(41)%mass   = 92.9064d0
 mendeleiev(41)%zed   = 41.d0
 mendeleiev(41)%covrad  = 1.628d+00

 mendeleiev(42)%name   = 'MO'
 mendeleiev(42)%mass   = 95.94d0
 mendeleiev(42)%zed   = 42.d0
 mendeleiev(42)%covrad  = 1.628d+00

 mendeleiev(43)%name   = 'TC'
 mendeleiev(43)%mass   = 98.9062d0
 mendeleiev(43)%zed   = 43.d0
 mendeleiev(43)%covrad  = 1.628d+00

 mendeleiev(44)%name   = 'RU'
 mendeleiev(44)%mass   = 101.07d0
 mendeleiev(44)%zed   = 44.d0
 mendeleiev(44)%covrad  = 1.628d+00

 mendeleiev(45)%name   = 'RH'
 mendeleiev(45)%mass   = 102.9055d0
 mendeleiev(45)%zed   = 45.d0
 mendeleiev(45)%covrad  = 1.628d+00

 mendeleiev(46)%name   = 'PD'
 mendeleiev(46)%mass   = 106.42d0
 mendeleiev(46)%zed   = 46.d0
 mendeleiev(46)%covrad  = 1.628d+00

 mendeleiev(47)%name   = 'AG'
 mendeleiev(47)%mass   = 107.868d0
 mendeleiev(47)%zed   = 47.d0
 mendeleiev(47)%covrad  = 1.628d+00

 mendeleiev(48)%name   = 'CD'
 mendeleiev(48)%mass   = 112.41d0
 mendeleiev(48)%zed   = 48.d0
 mendeleiev(48)%covrad  = 1.628d+00

 mendeleiev(49)%name   = 'IN'
 mendeleiev(49)%mass   = 114.82d0
 mendeleiev(49)%zed   = 49.d0
 mendeleiev(49)%covrad  = 1.628d+00

 mendeleiev(50)%name   = 'SN'
 mendeleiev(50)%mass   = 118.710d0
 mendeleiev(50)%zed   = 50.d0
 mendeleiev(50)%covrad  = 1.628d+00

 mendeleiev(51)%name   = 'SB'
 mendeleiev(51)%mass   = 121.75d0
 mendeleiev(51)%zed   = 51.d0
 mendeleiev(51)%covrad  = 1.628d+00

 mendeleiev(52)%name   = 'TE'
 mendeleiev(52)%mass   = 127.60d0
 mendeleiev(52)%zed   = 52.d0
 mendeleiev(52)%covrad  = 1.628d+00

 mendeleiev(53)%name   = 'I '
 mendeleiev(53)%mass   = 126.9045d0
 mendeleiev(53)%zed   = 53.d0
 mendeleiev(53)%covrad  = 1.628d+00

 mendeleiev(54)%name   = 'XE'
 mendeleiev(54)%mass   = 131.29d0
 mendeleiev(54)%zed   = 54.d0
 mendeleiev(54)%covrad  = 1.628d+00

! mendeleiev(ii)%name   = '--'
! mendeleiev(ii)%mass   = d0
! mendeleiev(ii)%zed   = .d0
! mendeleiev(ii)%covrad  = 1.628d+00

 mendeleiev(80)%name   = 'HG'
 mendeleiev(80)%mass   = 0.d0
 mendeleiev(80)%zed   = 80.d0
 mendeleiev(80)%covrad  = 1.628d+00

 mendeleiev(81)%name   = 'TL'
 mendeleiev(81)%mass   = 0.d0
 mendeleiev(81)%zed   = 81.d0
 mendeleiev(81)%covrad  = 1.628d+00

 mendeleiev(82)%name   = 'PB'
 mendeleiev(82)%mass   = 0.d0
 mendeleiev(82)%zed   = 82.d0
 mendeleiev(82)%covrad  = 1.628d+00

 mendeleiev(83)%name   = 'BI'
 mendeleiev(83)%mass   = 0.d0
 mendeleiev(83)%zed   = 83.d0
 mendeleiev(83)%covrad  = 1.628d+00

 mendeleiev(84)%name   = 'PO'
 mendeleiev(84)%mass   = 0.d0
 mendeleiev(84)%zed   = 84.d0
 mendeleiev(84)%covrad  = 1.628d+00

 mendeleiev(85)%name   = 'AT'
 mendeleiev(85)%mass   = 0.d0
 mendeleiev(85)%zed   = 85.d0
 mendeleiev(85)%covrad  = 1.628d+00

 mendeleiev(86)%name   = 'RN'
 mendeleiev(86)%mass   = 0.d0
 mendeleiev(86)%zed   = 86.d0
 mendeleiev(86)%covrad  = 1.628d+00

 mendeleiev(87)%name   = 'FR'
 mendeleiev(87)%mass   = 0.d0
 mendeleiev(87)%zed   = 87.d0
 mendeleiev(87)%covrad  = 1.628d+00

 mendeleiev(88)%name   = 'RA'
 mendeleiev(88)%mass   = 0.d0
 mendeleiev(88)%zed   = 88.d0
 mendeleiev(88)%covrad  = 1.628d+00

 mendeleiev(89)%name   = 'AC'
 mendeleiev(89)%mass   = 0.d0
 mendeleiev(89)%zed   = 89.d0
 mendeleiev(89)%covrad  = 1.628d+00

 mendeleiev(90)%name   = 'TH'
 mendeleiev(90)%mass   = 0.d0
 mendeleiev(90)%zed   = 90.d0
 mendeleiev(90)%covrad  = 1.628d+00

 mendeleiev(91)%name   = 'PA'
 mendeleiev(91)%mass   = 0.d0
 mendeleiev(91)%zed   = 91.d0
 mendeleiev(91)%covrad  = 1.628d+00

 mendeleiev(92)%name   = 'U '
 mendeleiev(92)%mass   = 0.d0
 mendeleiev(92)%zed   = 92.d0
 mendeleiev(92)%covrad  = 1.628d+00

 mendeleiev(93)%name   = 'NP'
 mendeleiev(93)%mass   = 0.d0
 mendeleiev(93)%zed   = 93.d0
 mendeleiev(93)%covrad  = 1.628d+00

 mendeleiev(94)%name   = 'PU'
 mendeleiev(94)%mass   = 0.d0
 mendeleiev(94)%zed   = 94.d0
 mendeleiev(94)%covrad  = 1.628d+00

 mendeleiev(95)%name   = 'AM'
 mendeleiev(95)%mass   = 0.d0
 mendeleiev(95)%zed   = 100.d0
 mendeleiev(95)%covrad  = 1.628d+00

 mendeleiev(96)%name   = 'CM'
 mendeleiev(96)%mass   = 0.d0
 mendeleiev(96)%zed   = 100.d0
 mendeleiev(96)%covrad  = 1.628d+00

 mendeleiev(97)%name   = 'BK'
 mendeleiev(97)%mass   = 0.d0
 mendeleiev(97)%zed   = 100.d0
 mendeleiev(97)%covrad  = 1.628d+00

 mendeleiev(98)%name   = 'CF'
 mendeleiev(98)%mass   = 0.d0
 mendeleiev(98)%zed   = 98.d0
 mendeleiev(98)%covrad  = 1.628d+00

 mendeleiev(99)%name   = 'ES'
 mendeleiev(99)%mass   = 0.d0
 mendeleiev(99)%zed   = 99.d0
 mendeleiev(99)%covrad  = 1.628d+00

 mendeleiev(100)%name   = 'FM'
 mendeleiev(100)%mass   = 0.d0
 mendeleiev(100)%zed   = 100.d0
 mendeleiev(100)%covrad  = 1.628d+00

 mendeleiev(101)%name   = 'MD'
 mendeleiev(101)%mass   = 0.d0
 mendeleiev(101)%zed   = 101.d0
 mendeleiev(101)%covrad  = 1.628d+00

 mendeleiev(102)%name   = 'NO'
 mendeleiev(102)%mass   = 0.d0
 mendeleiev(102)%zed   = 102.d0
 mendeleiev(102)%covrad  = 1.628d+00

 mendeleiev(103)%name   = 'LR'
 mendeleiev(103)%mass   = 0.d0
 mendeleiev(103)%zed   = 103.d0
 mendeleiev(103)%covrad  = 1.628d+00

 mendeleiev(104)%name   = 'X '
 mendeleiev(104)%mass   = 0.d0
 mendeleiev(104)%zed   = 0.d0
 mendeleiev(104)%covrad  = 1.628d+00

 call exit (l_here)

 end subroutine mendeleiev_init 

! ===============================================================================
 subroutine check_asso_mendeleiev (object_name, object, routine_name, routine)
! -------------------------------------------------------------------------------
!
! Name      : check_asso_mendeleiev
!
!
! Description  :    (object_name, object, routine_name, routine)
! Description  : builds object mendeleiev if not associated
!
! Authors:F.Colonna
! Date :21 Sep 2000
! -------------------------------------------------------------------------------
 implicit none

! i/o
 character(len=*), intent (in) :: object_name, routine_name
 type (element),  pointer   :: object(:)
 external :: routine
! local:
 character(len=max_string_len_routine_name) :: l_here

! begin:
 l_here ='check_asso_mendeleiev'
 call enter (l_here)

 if(debug)write (logf,*)trim(l_here), &
        '-d: object_name >',trim(object_name),'<'

 if(.not.associated(object)) then
  if(debug .or. trace_level > 0) then
  write (logf,'(4a)') trim(l_here), &
  ': object >',trim(object_name),'< not yet created'
  write (logf,'(4a)') trim(l_here), &
  ': calling routine >',trim(routine_name),'<'
  end if
  call routine
 end if

 call exit (l_here)

 end subroutine check_asso_mendeleiev

end module mendeleiev_mod

back to top