thanks Dear Jonathon.
for me the important thing is to know what density that jk module depends on to compute J K and wK (physical importance), because if I am not mistaken, when I followed the code lines in chronological order, variable (C_right_ = C_left_) appeared to me and I did not see that they were calculated before.
another thing , if I am not mistaken, effective fragment potential contribution energy was computed twice. once when add to H_ , prior SCF iteration loop (the another addition at final) :
Vefp = modify_Fock_permanent(self.molecule(), mints, verbose=verbose - 1)
Vefp = core.Matrix.from_array(Vefp)
self.H().add(Vefp)
during iteration loop:
Vefp = modify_Fock_induced(self.molecule().EFP, mints_psi4_yo, verbose=verbose - 1)
Vefp = core.Matrix.from_array(Vefp)
self.H().add(Vefp)
so when compute one electron energy uefp is also computed:
double RHF::compute_E() {
double one_electron_E = 2.0 * Da_->vector_dot(H_);
After, set energy of efp as “EFP”:
efpobj.compute() # do_gradient=do_gradient)
efpene = efpobj.get_energy(label='psi')
efp_wfn_independent_energy = efpene['total'] - efpene['ind']
self.set_energies("EFP", efpene['total'])
however, at the final stages, efp contribution doubly computed by add one electron E and e efp:
enuc = self.get_energies('Nuclear')
e1 = self.get_energies('One-Electron')
e2 = self.get_energies('Two-Electron')
exc = self.get_energies('XC')
ed = self.get_energies('-D')
self.del_variable('-D Energy')
evv10 = self.get_energies('VV10')
eefp = self.get_energies('EFP')
epcm = self.get_energies('PCM Polarization')
edd = self.get_energies('DD Solvation Energy')
epe = self.get_energies('PE Energy')
ke = self.get_energies('Kinetic')
hf_energy = enuc + e1 + e2
dft_energy = hf_energy + exc + ed + evv10
total_energy = dft_energy + eefp + epcm + edd + epe
Can someone clarify if the energy contribution of EFP is counted twice?