QMCPACK / qmcpack

Main repository for QMCPACK, an open-source production level many-body ab initio Quantum Monte Carlo code for computing the electronic structure of atoms, molecules, and solids with full performance portable GPU support
http://www.qmcpack.org
Other
297 stars 139 forks source link

What are the rules for SplineR2R/C2R/C2C logic? #4516

Open jptowns opened 1 year ago

jptowns commented 1 year ago

QMCPACK has 3 spline classes: SplineR2R, SplineC2R, and SplineC2C. But it is not clear in all cases given an input exactly which spline class will be created. For example, in src/QMCWaveFunctions/test_einset.cpp, if QMC_COMPLEX is set, then a SplineC2C is made. And if QMC_COMPLEX is not set, then a SplineR2R is made. But the test uses the diamond_1x1x1.pwscf.h5 file, which is a gamma point wavefunction. In this case, why is a SplineC2C made instead of a C2R? Is splineC2R ever tested?

markdewing commented 1 year ago

I think the choice is made here, based on if the twists are special points: https://github.com/QMCPACK/qmcpack/blob/e7fd649ae2fcd569feced8cf853f45d8dc003827/src/QMCWaveFunctions/EinsplineSetBuilderCommon.cpp#L632-L642