set OPDM_RELAX False works for the DF-RMP2 unrelaxed density calculation, but it does not work for DF-UMP2. Here is the last few lines of my input file (say, DF-UMP2/cc-pVTZ of the water molecule)
set freeze_core 1
set OPDM_RELAX False
set df_basis_mp2 cc-pvtz-ri
grad, wfn = gradient('mp2', return_wfn=True)
set OPDM_RELAX False or not does not affect the gradients in output, nor affect the density in .fch file (in fact, only relaxed density is obtained). Psi4-1.8 is used.
By the way, I also find that
set OPDM_RELAX False does not work for DF-RHF based DF-CCSD(T) unrelaxed density. Here are input and output files:
psi4_ump2_no_unrelaxed_RI.tar.gz.txt (70.1 KB)
psi4_CCSD_T_no_unrelaxed_RI.tar.gz.txt (41.0 KB)
(Note: please remove the
.txt suffix before decompressing files)
Thanks a lot!
tl;dr: Psi4 doesn’t support what you’re trying to do. It would be great if someone could add that.
There are three “layers” to this one. The first layer is that DF-RMP2 is a separate code from DF-UMP2 and DF-CCSD(T). One developer wrote DF-RMP2 code to be a very fast DF-RMP2 gradient code. He did not write a DF-UMP2 or a DF-CCSD(T) gradient code. Another developer wrote a fairly general DF gradient module. That one has DF-RMP2, DF-UMP2, and DF-CCSD(T), but is much slower. Your request for a DF-RMP2 gradient is going through the first developer’s code. Your request for a DF-UMP2 and DF-CCSD(T) gradient is going through the second developer’s code.
The second layer is that unrelaxed densities are supported in the first developer’s code, but not in the second developer’s code. That explains what you’re seeing. Your
set OPDM_RELAX keyword is read but doesn’t affect any actual logic in the DF-UMP2 or DF-CCSD(T) code execution.
The (final) layer is if Psi doesn’t support this, why not? Shouldn’t somebody add this? Yes, I agree that it would be good to have this in Psi4. The hard part is finding somebody who can actually add this feature in the second developer’s code. It’s doable, but the second developer’s code is difficult to read, and adding it would either require a specialist or somebody who is very careful and also willing to read a lot of code. There are two specialists. One of them is @bozkaya, who originally wrote the code. Doing this feature properly would require testing that we agree with the first developer’s code (the
dfmp2 module). The second is me. I’m moving to another university within a few weeks, so I can’t easily be convinced to take up extra coding projects.
Thank you @jmisiewicz for you detailed answer. I understand, because there are authors’ name printed in each MP2/CC module in the output file . It is not easy to make time for maintaining/developing these functionalities. I’m grateful for your reply.