subroutine get_d4eeq_bj_parameter(dfnum, param, s9)
integer(df_enum), intent(in) :: dfnum
class(damping_param), allocatable, intent(out) :: param
real(wp), intent(in), optional :: s9
select case(dfnum)
case(p_dftb_3ob)
param = dftd_param( & ! (SAW191202)
& s6=1.0_wp, s8=0.4727337_wp, a1=0.5467502_wp, a2=4.4955068_wp)
case(p_dftb_matsci)
param = dftd_param( & ! (SAW191202)
& s6=1.0_wp, s8=2.7711819_wp, a1=0.4681712_wp, a2=5.2918629_wp)
case(p_dftb_mio)
param = dftd_param( & ! (SAW191202)
& s6=1.0_wp, s8=1.1948145_wp, a1=0.6074567_wp, a2=4.9336133_wp)
case(p_dftb_ob2)
param = dftd_param( & ! (SAW191202)
& s6=1.0_wp, s8=2.7611320_wp, a1=0.6037249_wp, a2=5.3900004_wp)
case(p_dftb_pbc)
param = dftd_param( & ! (SAW191202)
& s6=1.0_wp, s8=1.7303734_wp, a1=0.5546548_wp, a2=4.7973454_wp)
end select
contains
pure function dftd_param(s6, s8, a1, a2, alp) result(par)
real(wp), intent(in) :: s8, a1, a2
real(wp), intent(in), optional :: s6, alp
type(rational_damping_param) :: par
real(wp) :: s6_, alp_, s9_
s6_ = 1.0_wp
if (present(s6)) s6_ = s6
s9_ = 0.0_wp
if (present(s9)) s9_ = s9
alp_ = 16.0_wp
if (present(alp)) alp_ = alp
par = rational_damping_param(&
& s6=s6_, &
& s8=s8, a1=a1, a2=a2, &
& s9=s9_, &
& alp=alp_)
end function dftd_param
end subroutine get_d4eeq_bj_parameter