bragg_slater.F90 Source File


This file depends on

sourcefile~~bragg_slater.f90~~EfferentGraph sourcefile~bragg_slater.f90 bragg_slater.F90 sourcefile~precision.f90 precision.F90 sourcefile~bragg_slater.f90->sourcefile~precision.f90

Files dependent on this one

sourcefile~~bragg_slater.f90~~AfferentGraph sourcefile~bragg_slater.f90 bragg_slater.F90 sourcefile~dft.f90 dft.F90 sourcefile~dft.f90->sourcefile~bragg_slater.f90 sourcefile~dft_molgrid.f90 dft_molgrid.F90 sourcefile~dft.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_fuzzycell.f90 dft_fuzzycell.F90 sourcefile~dft.f90->sourcefile~dft_fuzzycell.f90 sourcefile~dft_gridint_energy.f90 dft_gridint_energy.F90 sourcefile~dft.f90->sourcefile~dft_gridint_energy.f90 sourcefile~dft_gridint_grad.f90 dft_gridint_grad.F90 sourcefile~dft.f90->sourcefile~dft_gridint_grad.f90 sourcefile~dft_molgrid.f90->sourcefile~bragg_slater.f90 sourcefile~dft_fuzzycell.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint.f90 dft_gridint.F90 sourcefile~dft_gridint.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint_energy.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint_energy.f90->sourcefile~dft_gridint.f90 sourcefile~dft_gridint_fxc.f90 dft_gridint_fxc.F90 sourcefile~dft_gridint_fxc.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint_fxc.f90->sourcefile~dft_gridint.f90 sourcefile~dft_gridint_grad.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint_grad.f90->sourcefile~dft_gridint.f90 sourcefile~dft_gridint_gxc.f90 dft_gridint_gxc.F90 sourcefile~dft_gridint_gxc.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint_gxc.f90->sourcefile~dft_gridint.f90 sourcefile~dft_gridint_gxc.f90->sourcefile~dft_gridint_fxc.f90 sourcefile~dft_gridint_tdxc_grad.f90 dft_gridint_tdxc_grad.F90 sourcefile~dft_gridint_tdxc_grad.f90->sourcefile~dft_molgrid.f90 sourcefile~dft_gridint_tdxc_grad.f90->sourcefile~dft_gridint.f90 sourcefile~grd2.f90 grd2.F90 sourcefile~grd2.f90->sourcefile~dft_molgrid.f90 sourcefile~hf_energy.f90 hf_energy.f90 sourcefile~hf_energy.f90->sourcefile~dft.f90 sourcefile~hf_energy.f90->sourcefile~dft_molgrid.f90 sourcefile~scf.f90 scf.F90 sourcefile~hf_energy.f90->sourcefile~scf.f90 sourcefile~hf_gradient.f90 hf_gradient.F90 sourcefile~hf_gradient.f90->sourcefile~dft.f90 sourcefile~hf_gradient.f90->sourcefile~dft_molgrid.f90 sourcefile~hf_gradient.f90->sourcefile~grd2.f90 sourcefile~scf.f90->sourcefile~dft.f90 sourcefile~scf.f90->sourcefile~dft_molgrid.f90 sourcefile~tdhf_energy.f90 tdhf_energy.F90 sourcefile~tdhf_energy.f90->sourcefile~dft.f90 sourcefile~tdhf_energy.f90->sourcefile~dft_molgrid.f90 sourcefile~tdhf_energy.f90->sourcefile~dft_gridint_fxc.f90 sourcefile~tdhf_gradient.f90 tdhf_gradient.F90 sourcefile~tdhf_gradient.f90->sourcefile~dft.f90 sourcefile~tdhf_gradient.f90->sourcefile~dft_molgrid.f90 sourcefile~tdhf_gradient.f90->sourcefile~dft_gridint_tdxc_grad.f90 sourcefile~tdhf_gradient.f90->sourcefile~grd2.f90 sourcefile~tdhf_z_vector.f90 tdhf_z_vector.F90 sourcefile~tdhf_z_vector.f90->sourcefile~dft.f90 sourcefile~tdhf_z_vector.f90->sourcefile~dft_molgrid.f90 sourcefile~tdhf_z_vector.f90->sourcefile~dft_gridint_fxc.f90 sourcefile~tdhf_z_vector.f90->sourcefile~dft_gridint_gxc.f90

Source Code

!> @brief Bragg-Slater radii for determining the relative size of the
!>        polyhedra in the polyatomic integration scheme
module bragg_slater_radii
  use precision, only: dp

  private
  public BRSL_NUM_ELEMENTS
  public BRSL_TYPE_GAMESS
  public BRSL_TYPE_GILL
  public BRSL_TYPE_TA
  public set_bragg_slater

  integer, parameter :: BRSL_NUM_ELEMENTS  = 137
  integer, parameter :: BRSL_TYPE_GAMESS = 0
  integer, parameter :: BRSL_TYPE_GILL = 1
  integer, parameter :: BRSL_TYPE_TA = 2

! J.C.Slater, Quantum Theory of Molecules and Solids, Volume 2, Chapter 3
! Except that hydrogen is changed from 0.25 -> bohr radius,
! and missing values such as inert gasses are filled in with
! reasonable looking data (source unknown). Slater's table
! stops at the element americium, the extension is probably
! reasonable for actinides but not all the way to z=137!
  real(kind=dp), parameter :: brsl_values_gamess(BRSL_NUM_ELEMENTS) = [&
    0.52917D+00, 0.31D+00, 1.45D+00, 1.05D+00, 0.85D+00, &
    0.70D+00, 0.65D+00, 0.60D+00, 0.50D+00, 0.38D+00, 1.80D+00, &
    1.50D+00, 1.25D+00, 1.10D+00, 1.00D+00, 1.00D+00, 1.00D+00, &
    0.71D+00, 2.20D+00, 1.80D+00, 1.60D+00, 1.40D+00, 1.35D+00, &
    1.40D+00, 1.40D+00, 1.40D+00, 1.35D+00, 1.35D+00, 1.35D+00, &
    1.35D+00, 1.30D+00, 1.25D+00, 1.15D+00, 1.15D+00, 1.15D+00, &
    0.88D+00, 2.35D+00, 2.00D+00, 1.80D+00, 1.55D+00, 1.45D+00, &
    1.45D+00, 1.35D+00, 1.30D+00, 1.35D+00, 1.40D+00, 1.60D+00, &
    1.55D+00, 1.55D+00, 1.45D+00, 1.45D+00, 1.40D+00, 1.40D+00, &
    1.08D+00, 2.60D+00, 2.15D+00, 1.95D+00, 1.85D+00, 1.85D+00, &
    1.85D+00, 1.85D+00, 1.85D+00, 1.85D+00, 1.80D+00, 1.75D+00, &
    1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
    1.55D+00, 1.45D+00, 1.35D+00, 1.35D+00, 1.30D+00, 1.35D+00, &
    1.35D+00, 1.35D+00, 1.50D+00, 1.90D+00, 1.80D+00, 1.60D+00, &
    1.90D+00, 1.27D+00, 1.20D+00, 2.60D+00, 2.15D+00, 1.95D+00, &
    1.80D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75d0, &
    1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, &
    1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, &
    1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, &
    1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, &
    1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, 1.75d0, &
    1.75d0, 1.75d0]

! Gill et al., CPL,209, 506 (1993).
  real(kind=dp), parameter :: brsl_values_gill(BRSL_NUM_ELEMENTS) = [ &
     0.52918D+00, 0.31126D+00, 1.62822D+00, 1.08550D+00, &
     0.81414D+00, 0.65131D+00, 0.54272D+00, 0.46520D+00, &
     0.40704D+00, 0.36185D+00, 2.16481D+00, 1.67109D+00, &
     1.36073D+00, 1.14763D+00, 0.99221D+00, 0.87388D+00, &
     0.78075D+00, 0.70555D+00, 2.20D+00,    1.80D+00, &
     1.60D+00, 1.40D+00, 1.35D+00, 1.40D+00, 1.40D+00, &
     1.40D+00, 1.35D+00, 1.35D+00, 1.35D+00, 1.35D+00, &
     1.30D+00, 1.25D+00, 1.15D+00, 1.15D+00, 1.15D+00, &
     0.88D+00, 2.35D+00, 2.00D+00, 1.80D+00, 1.55D+00, &
     1.45D+00, 1.45D+00, 1.35D+00, 1.30D+00, 1.35D+00, &
     1.40D+00, 1.60D+00, 1.55D+00, 1.55D+00, 1.45D+00, &
     1.45D+00, 1.40D+00, 1.40D+00, 1.08D+00, 2.60D+00, &
     2.15D+00, 1.95D+00, 1.85D+00, 1.85D+00, 1.85D+00, &
     1.85D+00, 1.85D+00, 1.85D+00, 1.80D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.55D+00, 1.45D+00, 1.35D+00, 1.35D+00, &
     1.30D+00, 1.35D+00, 1.35D+00, 1.35D+00, 1.50D+00, &
     1.90D+00, 1.80D+00, 1.60D+00, 1.90D+00, 1.27D+00, &
     1.20D+00, 2.60D+00, 2.15D+00, 1.95D+00, 1.80D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, 1.75D+00, &
     1.75D+00, 1.75D+00]

! O.Treutler, R.Ahlrichs, JCP,102(1), 346 (1995).
  real(kind=dp), parameter :: brsl_values_treutler(BRSL_NUM_ELEMENTS) = [&
     0.8D+00, 0.9D+00, &
     1.8D+00, 1.4D+00, 1.3D+00, 1.1D+00, &
     0.9D+00, 0.9D+00, 0.9D+00, 0.9D+00, &
     1.4D+00, 1.3D+00, 1.3D+00, 1.2D+00, &
     1.1D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.5D+00, 1.4D+00, &
     1.3D+00, 1.2D+00, 1.2D+00, 1.2D+00, 1.2D+00, &
     1.2D+00, 1.2D+00, 1.1D+00, 1.1D+00, 1.1D+00, &
     1.1D+00, 1.0D+00, 0.9D+00, 0.9D+00, 0.9D+00, &
     0.9D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, 1.0D+00, &
     1.0D+00]

contains

  subroutine set_bragg_slater(array, bstype)
    real(kind=dp), intent(out) :: array(:)
    integer, intent(in) :: bstype

    select case (bstype)
    case (BRSL_TYPE_GAMESS)
      array = brsl_values_gamess

    case (BRSL_TYPE_TA)
      array = brsl_values_treutler

    case (BRSL_TYPE_GILL)
      array = brsl_values_gill

    case default
      array = brsl_values_gill

    end select
  end subroutine

end module