Skip to content

Commit

Permalink
D3(BJ) parameters for PW91 and dRPA75 functionals (#91)
Browse files Browse the repository at this point in the history
* Add pw91-D3(BJ)
* Add drpa75-D3(BJ)
* Add new dsdpbedrpa75-d3(bj), dsdpbeb86drpa75-d3(bj), optscsdrpa75-d3(bj), scsdrpa75-d3(bj)
* Add original refs for new D3(BJ) parametrizations
  • Loading branch information
foxtran authored Sep 23, 2024
1 parent 1f4e459 commit 629b5ae
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 6 deletions.
20 changes: 19 additions & 1 deletion assets/parameters.toml
Original file line number Diff line number Diff line change
Expand Up @@ -452,4 +452,22 @@ d3.zero = {rs6=2.3933, s8=1.1129, doi="10.1039/C7CP04913G"}
d3.zero = {rs6=3.3388, s8=0.0, doi="10.1039/C7CP04913G"}

[parameter.pwp]
d3.zero = {rs6=2.1040, s8=0.8747, doi="10.1039/C7CP04913G"}
d3.zero = {rs6=2.1040, s8=0.8747, doi="10.1039/C7CP04913G"}

[parameter.pw91]
d3.bj = {a1=0.6319, s8=1.9598, a2=4.5718, doi="10.1073/pnas.1516984112"}

[parameter.drpa75]
d3.bj = {s6=0.3754, a1=0.0, s8=0.0, a2=4.5048, doi="10.1039/C6CP00688D"}

[parameter.scsdrpa75]
d3.bj = {s6=0.2528, a1=0.0, s8=0.0, a2=4.5050, doi="10.1021/acs.jpca.1c01295"}

[parameter.optscsdrpa75]
d3.bj = {s6=0.2546, a1=0.0, s8=0.0, a2=4.5050, doi="10.1021/acs.jpca.1c01295"}

[parameter.dsdpbedrpa75]
d3.bj = {s6=0.3223, a1=0.0, s8=0.0, a2=4.5050, doi="10.1021/acs.jpca.1c01295"}

[parameter.dsdpbep86drpa75]
d3.bj = {s6=0.3012, a1=0.0, s8=0.0, a2=4.5050, doi="10.1021/acs.jpca.1c01295"}
24 changes: 22 additions & 2 deletions src/dftd3/param.f90
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,10 @@ module dftd3_param
& p_m08hx_df, p_m11l_df, p_mn15l_df, p_pwp_df, p_r2scanh_df, p_r2scan0_df, &
& p_r2scan50_df, p_b973c_df, p_dm21_df, p_dm21m_df, p_dm21mc_df, p_dm21mu_df, &
& p_dsdpbep86_df, p_dsdpbeb95_df, p_dsdpbe_df, p_dodscan66_df, &
& p_revdsdblyp_df, p_revdsdpbep86_df, p_revdsdpbeb95_df, p_revdsdpbe_df, &
& p_revdodblyp_df, p_revdodpbep86_df, p_revdodpbeb95_df, p_revdodpbe_df
& p_revdsdblyp_df, p_revdsdpbep86_df, p_revdsdpbeb95_df, p_revdsdpbe_df, &
& p_revdodblyp_df, p_revdodpbep86_df, p_revdodpbeb95_df, p_revdodpbe_df, &
& p_pw91_df, p_drpa75_df, p_scs_drpa75_df, p_optscs_drpa75_df, &
& p_dsd_pbe_drpa75_df, p_dsd_pbep86_drpa75_df
end enum

contains
Expand Down Expand Up @@ -116,10 +118,13 @@ function get_method_id(method) result(id)
case("dm21m"); id = p_dm21m_df
case("dm21mc"); id = p_dm21mc_df
case("dm21mu"); id = p_dm21mu_df
case("drpa75"); id = p_drpa75_df
case("dsdblyp"); id = p_dsdblyp_df
case("dsdblypfc"); id = p_dsdblypfc_df
case("dsdpbe"); id = p_dsdpbe_df
case("dsdpbedrpa75"); id = p_dsd_pbe_drpa75_df
case("dsdpbep86"); id = p_dsdpbep86_df
case("dsdpbep86drpa75"); id = p_dsd_pbep86_drpa75_df
case("dsdpbeb95"); id = p_dsdpbeb95_df
case("dodscan66"); id = p_dodscan66_df
case("hcth120"); id = p_hcth120_df
Expand Down Expand Up @@ -164,6 +169,7 @@ function get_method_id(method) result(id)
case("o3lyp"); id = p_o3lyp_df
case("olyp"); id = p_olyp_df
case("opbe"); id = p_opbe_df
case("optscsdrpa75"); id = p_optscs_drpa75_df
case("otpss"); id = p_otpss_df
case("pbe"); id = p_pbe_df
case("pbe0"); id = p_pbe0_df
Expand All @@ -178,6 +184,7 @@ function get_method_id(method) result(id)
case("pwp", "pw91p86"); id = p_pwp_df
case("pw1pw"); id = p_pw1pw_df
case("pw6b95"); id = p_pw6b95_df
case("pw91"); id = p_pw91_df
case("pwb6k"); id = p_pwb6k_df
case("pwgga"); id = p_pwgga_df
case("pwpb95"); id = p_pwpb95_df
Expand All @@ -204,6 +211,7 @@ function get_method_id(method) result(id)
case("rpw86pbe"); id = p_rpw86pbe_df
case("rscan"); id = p_rscan_df
case("scan"); id = p_scan_df
case("scsdrpa75"); id = p_scs_drpa75_df
case("slaterdiracexchange"); id = p_slaterdiracexchange_df
case("sogga11x"); id = p_sogga11x_df
case("ssb"); id = p_ssb_df
Expand Down Expand Up @@ -322,6 +330,8 @@ subroutine get_rational_damping(param, method, error, s9)
param = d3_param(a1=0.0000_wp, s8=0.2804_wp, a2=6.5745_wp, s6=0.750_wp)
case(p_pwpb95_df)
param = d3_param(a1=0.0000_wp, s8=0.2904_wp, a2=7.3141_wp, s6=0.820_wp)
case(p_pw91_df)
param = d3_param(a1=0.6319_wp, s8=1.9598_wp, a2=4.5718_wp)
case(p_hf_mixed_df)
param = d3_param(a1=0.5607_wp, s8=3.9027_wp, a2=4.5622_wp)
case(p_hf_sv_df)
Expand Down Expand Up @@ -452,6 +462,16 @@ subroutine get_rational_damping(param, method, error, s9)
param = d3_param(s6=0.4107_wp, a1=0.0_wp, s8=0.0_wp, a2=5.5_wp)
case(p_revdodpbe_df)
param = d3_param(s6=0.6067_wp, a1=0.0_wp, s8=0.0_wp, a2=5.5_wp)
case(p_drpa75_df)
param = d3_param(s6=0.3754_wp, a1=0.0_wp, s8=0.0_wp, a2=4.5048_wp)
case(p_scs_drpa75_df)
param = d3_param(s6=0.2528_wp, a1=0.0_wp, s8=0.0_wp, a2=4.5050_wp)
case(p_optscs_drpa75_df)
param = d3_param(s6=0.2546_wp, a1=0.0_wp, s8=0.0_wp, a2=4.5050_wp)
case(p_dsd_pbe_drpa75_df)
param = d3_param(s6=0.3223_wp, a1=0.0_wp, s8=0.0_wp, a2=4.5050_wp)
case(p_dsd_pbep86_drpa75_df)
param = d3_param(s6=0.3012_wp, a1=0.0_wp, s8=0.0_wp, a2=4.5050_wp)
end select

if (present(s9)) then
Expand Down
9 changes: 6 additions & 3 deletions test/unit/test_param.f90
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ subroutine test_dftd3_gen(error, mol, param, ref)

call check(error, energy, ref, thr=thr)
if (allocated(error)) then
print *,energy
print '(ES23.16)', energy
end if

end subroutine test_dftd3_gen
Expand Down Expand Up @@ -113,7 +113,8 @@ subroutine test_d3bj_mb01(error)
& "r2scanh", "r2scan0", "r2scan50", "b973c", "b3lyp3", "b3lyp5", "b3lypg", &
& "dm21", "dm21m", "dm21mc", "dm21mu", "dsdpbep86", "dsdpbeb95", "dsdpbe", &
& "dodscan66", "revdsdblyp", "revdsdpbep86", "revdsdpbeb95", "revdsdpbe", &
& "revdodblyp", "revdodpbep86", "revdodpbeb95", "revdodpbe"]
& "revdodblyp", "revdodpbep86", "revdodpbeb95", "revdodpbe", "pw91", "drpa75", &
& "scsdrpa75", "optscsdrpa75", "dsdpbedrpa75", "dsdpbep86drpa75"]
real(wp), parameter :: ref(*) = [&
&-2.9551694676908012E-2_wp,-1.6638703086788331E-2_wp,-1.6725877716130381E-2_wp, &
&-3.3014429592265318E-2_wp,-2.2051435219996540E-2_wp,-3.3481565825316001E-2_wp, &
Expand Down Expand Up @@ -152,7 +153,9 @@ subroutine test_d3bj_mb01(error)
&-1.7758051042408327E-2_wp,-9.2323777698865989E-3_wp,-2.4042802546329414E-2_wp, &
&-1.5411238160834008E-2_wp,-1.2978255394296128E-2_wp,-2.0231431225074755E-2_wp, &
&-2.7103838130103503E-2_wp,-1.6794975103307797E-2_wp,-1.4460579192722246E-2_wp, &
&-2.1361659109385409E-2_wp]
&-2.1361659109385409E-2_wp,-9.7460845051874183E-3_wp,-2.8391262582808205E-2_wp, &
&-1.9116077511614916E-2_wp,-1.9252188823010906E-2_wp,-2.4371486479404614E-2_wp, &
&-2.2775959440262707E-02_wp]

call get_structure(mol, "MB16-43", "01")
do ii = 1, size(func)
Expand Down

0 comments on commit 629b5ae

Please sign in to comment.