Skip to content

Commit d55eeba

Browse files
committed
enable accuracy vs time comparisons
1 parent 3ef40f0 commit d55eeba

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed

src/QMCHamiltonians/CoulombPBCAA.cpp

+19-7
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,31 @@ CoulombPBCAA::CoulombPBCAA(ParticleSet& ref, bool active, bool computeForces)
131131
//ewald.findOptKGrid(R);
132132

133133

134-
ewald.setupOpt(R,dt);
135134

136-
app_log()<<" sr ref : "<< ewald.ewaldEnergySR(R) <<std::endl;
137-
app_log()<<" sr opt : "<< ewald.ewaldEnergySROpt(dt) <<" "<<ewald.getKappa() <<std::endl;
135+
136+
//auto g = 2*ewald.nkmax+1;
137+
//size_t nkpoints_ref = g[0]*g[1]*g[2];
138+
139+
//ewald.setupOpt(R,dt);
140+
//
141+
//app_log()<<" sr ref : "<< sr_ref <<std::endl;
142+
//app_log()<<" sr opt : "<< ewald.ewaldEnergySROpt(dt) <<" "<<ewald.getKappa() <<std::endl;
143+
//
144+
//
145+
//app_log()<<std::endl;
146+
//app_log()<<std::endl;
147+
//
148+
//app_log()<<" lr ref : "<< lr_ref<<" "<< nkpoints_ref <<std::endl;
149+
//app_log()<<" lr opt : "<< ewald.ewaldEnergyLROpt(R) <<" "<< ewald.getNkpoints() <<std::endl;
150+
//
151+
//app_log()<<" ewald optimized energy: "<<ewald.ewaldEnergyOpt(R,dt)<<std::endl;
152+
138153

139154

140155
app_log()<<std::endl;
141156
app_log()<<std::endl;
142157

143-
RealType lr_ref = ewald.ewaldEnergyLR(R);
144-
auto g = 2*ewald.nkmax+1;
145-
app_log()<<" lr ref : "<< lr_ref<<" "<< g[0]*g[1]*g[2] <<std::endl;
146-
app_log()<<" lr opt : "<< ewald.ewaldEnergyLROpt(R) <<" "<< ewald.getNkpoints() <<std::endl;
158+
ewald.printErrorAndTimeVSTolerance(R,dt);
147159

148160

149161

src/QMCHamiltonians/EwaldTools.h

+23
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#define EWALD_TOOLS_H
1515

1616
#include "QMCHamiltonians/EwaldRef.h"
17+
#include "Utilities/Clock.h"
18+
1719

1820
namespace qmcplusplus
1921
{
@@ -810,6 +812,27 @@ class AnisotropicEwald
810812
}
811813
}
812814

815+
template<typename PA, typename DT>
816+
void printErrorAndTimeVSTolerance(const PA& R, const DT& dt)
817+
{
818+
std::cout << std::scientific;
819+
real_t ref_errtol = 1e-20;
820+
real_t t1,t2,t3;
821+
for(int n=0;n<16;n++)
822+
{
823+
real_t errtol = 1.0*std::pow(10.0,-n);
824+
setupOpt(R,dt,errtol);
825+
real_t sr_ref = ewaldEnergySR(R,ref_errtol);
826+
real_t lr_ref = ewaldEnergyLR(R,ref_errtol);
827+
t1 = cpu_clock();
828+
real_t sr = ewaldEnergySROpt(dt);
829+
t2 = cpu_clock();
830+
real_t lr = ewaldEnergyLROpt(R);
831+
t3 = cpu_clock();
832+
std::cout<<n<<" "<<errtol<<" "<<sr-sr_ref<<" "<<lr-lr_ref<<" "<<t2-t1<<" "<<t3-t2<<" "<<getNkpoints()<<std::endl;
833+
}
834+
835+
}
813836

814837

815838
/// SR (real-space) part of total energy computed adaptively

0 commit comments

Comments
 (0)