Skip to content

Commit 6493589

Browse files
committed
apply product rule
1 parent 6c4c3d5 commit 6493589

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/qmoperators/two_electron/FockBuilder.cpp

+14-3
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,21 @@ OrbitalVector FockBuilder::buildHelmholtzArgumentZORA(OrbitalVector &Phi, Orbita
253253
RankZeroOperator &kappa_m1 = *this->kappa_inv;
254254
RankZeroOperator &V_zora = this->zora_base;
255255

256-
std::shared_ptr<mrcpp::BSOperator<3>> dd = std::make_shared<mrcpp::BSOperator<3>>(*MRA, true);
257-
NablaOperator nabla(dd, true);
256+
std::shared_ptr<mrcpp::BSOperator<3>> dd = std::make_shared<mrcpp::BSOperator<3>>(*MRA, 1);
257+
std::shared_ptr<mrcpp::BSOperator<3>> dd2 = std::make_shared<mrcpp::BSOperator<3>>(*MRA, 2);
258+
259+
NablaOperator nabla(dd, false); // gradient operator
260+
NablaOperator nabla2(dd2, false); // containts second derivatives
258261
nabla.setup(prec);
262+
nabla2.setup(prec);
263+
264+
RankOneOperator nabla_kappa = nabla(kappa);
265+
RankZeroOperator operOne = 0.5 * (nabla_kappa[0] * nabla[0] + nabla_kappa[1] * nabla[1] + nabla_kappa[2] * nabla[2]
266+
+ kappa * nabla2[0] + kappa * nabla2[1] + kappa * nabla2[2]);
267+
// + nabla2[0] + nabla2[1] + nabla2[2]);
259268

260-
RankZeroOperator operOne = 0.5 * tensor::dot(nabla(kappa), p);
269+
// this works much better than the above. Also, removing the laplacian terms on line 266 appears to be equivalent to the line below but why?
270+
// RankZeroOperator operOne = 0.5 * (nabla_kappa[0](nabla[0]) + nabla_kappa[1](nabla[1]) + nabla_kappa[2](nabla[2]));
261271
RankZeroOperator operThree = kappa * V_zora + V_zora;
262272
operOne.setup(prec);
263273
operThree.setup(prec);
@@ -309,6 +319,7 @@ OrbitalVector FockBuilder::buildHelmholtzArgumentZORA(OrbitalVector &Phi, Orbita
309319
}
310320
mrcpp::print::time(2, "Applying kappa inverse", t_kappa);
311321
nabla.clear();
322+
nabla2.clear();
312323
return out;
313324
}
314325

0 commit comments

Comments
 (0)