Skip to content

Commit

Permalink
switch off t_ijab evaluation in energy for non-PT2 functionals; prope…
Browse files Browse the repository at this point in the history
…rties still evaluates t_ijab
  • Loading branch information
ajz34 committed Jun 1, 2021
1 parent e2c565a commit 37f3e42
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 1 deletion.
4 changes: 3 additions & 1 deletion pyscf/dh/dhutil.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,10 @@
"dsdblypd3": ("0.71*HF + 0.29*B88, 0.54*LYP", None, 1, 0.47, 0.40),
"dsdpbeb95d3": ("0.66*HF + 0.34*PBE, 0.55*B95", None, 0.46, 0.09),
"b2plypd3": ("0.53*HF + 0.47*B88, 0.73*LYP", None, 0.27, 1, 1),
"hfb3lyp": ("HF", "B3LYP", 0, 0, 0),
"hfpbe0": ("HF", "PBE0", 0, 0, 0),
}

# Additional parameters for doubly hybrids (mostly dftd3)
XC_DH_ADD_MAP = {
"dsdpbep86d3": {"D3": ([0.48, 0, 0, 5.6, 0], 4)},
"dsdpbepbed3": {"D3": ([0.78, 0, 0, 6.1, 0], 4)},
Expand Down
3 changes: 3 additions & 0 deletions pyscf/dh/rdfdh.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ def energy_elec_mp2(mf: RDFDH, mo_coeff=None, mo_energy=None, dfobj=None, Y_ia_r
def energy_elec_pt2(mf: RDFDH, params=None, eng_bi=None, **kwargs):
cc, c_os, c_ss = params if params else mf.cc, mf.c_os, mf.c_ss
eval_ss = True if abs(c_ss) > 1e-7 else False
eval_os = True if abs(c_os) > 1e-7 else False
if not (eval_os or eval_ss): # not a PT2 functional
return 0, 0, 0
eng_bi1, eng_bi2 = eng_bi if eng_bi else mf.energy_elec_mp2(eval_ss=eval_ss, **kwargs)
return (cc * ((c_os + c_ss) * eng_bi1 - c_ss * eng_bi2), # Total
eng_bi1, # OS
Expand Down
3 changes: 3 additions & 0 deletions pyscf/dh/udfdh.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ def energy_elec_mp2(mf: UDFDH,
def energy_elec_pt2(mf: UDFDH, params=None, eng_bi=None, **kwargs):
cc, c_os, c_ss = params if params else mf.cc, mf.c_os, mf.c_ss
eval_ss = True if abs(c_ss) > 1e-7 else False
eval_os = True if abs(c_os) > 1e-7 else False
if not (eval_os or eval_ss): # not a PT2 functional
return 0, 0, 0
eng_bi1, eng_bi2 = eng_bi if eng_bi else energy_elec_mp2(mf, eval_ss=eval_ss, **kwargs)
eng_os = eng_bi1[αβ]
eng_ss = 0.5 * (eng_bi1[αα] + eng_bi1[ββ] - eng_bi2[αα] - eng_bi2[ββ])
Expand Down

0 comments on commit 37f3e42

Please sign in to comment.