From 15e9892715dc1b70e58b293a8d22eafa8d2df18b Mon Sep 17 00:00:00 2001 From: schaffer <R.D.Schaffer@cern.ch> Date: Sun, 16 Aug 2020 17:21:40 +0200 Subject: [PATCH] adding in unit test for field optimizations. This version is a detailed framework for testing, which will be simplified in further commits. --- .../test/BFieldExample_test.cxx | 63 +++++++++++++------ 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/MagneticField/MagFieldElements/test/BFieldExample_test.cxx b/MagneticField/MagFieldElements/test/BFieldExample_test.cxx index 4ecf1079576..8ae953b5c48 100644 --- a/MagneticField/MagFieldElements/test/BFieldExample_test.cxx +++ b/MagneticField/MagFieldElements/test/BFieldExample_test.cxx @@ -104,8 +104,40 @@ public: double r0 = 1200; double phi0 = phi; double xyz[3] = {0, 0, 0}; - double bxyz_std[3] = {0, 0, 0}; - double bxyz_new[3] = {0, 0, 0}; + double bxyz[3] = {0, 0, 0}; + double bxyz_std[3][10] = { + { -2.83727e-07, -2.81403e-07, -2.79079e-07, -2.76755e-07, -2.74431e-07, + -2.72107e-07, -2.69782e-07, -2.67458e-07, -2.65134e-07, -2.6281e-07 }, + { 9.47007e-08, 7.49033e-08, 5.51058e-08, 3.53084e-08, 1.5511e-08, + -4.28645e-09, -2.40839e-08, -4.38813e-08, -6.36787e-08, -8.34762e-08 }, + { 0.00308551, 0.00255923, 0.00203296, 0.00150669, 0.000980422, + 0.000454151, -7.21201e-05, -0.000598391, -0.00112466, -0.00165093 } + }; + +// get field std: i, bxyz_std 0 -2.83727e-07, 9.47007e-08, 0.00308551 +// get field new: i, bxyz_new 0 -2.83727e-07, 9.47007e-08, 0.00308551 +// get field std: i, bxyz_std 1 -2.81403e-07, 7.49033e-08, 0.00255923 +// get field new: i, bxyz_new 1 -2.81403e-07, 7.49033e-08, 0.00255923 +// get field std: i, bxyz_std 2 -2.79079e-07, 5.51058e-08, 0.00203296 +// get field new: i, bxyz_new 2 -2.79079e-07, 5.51058e-08, 0.00203296 +// get field std: i, bxyz_std 3 -2.76755e-07, 3.53084e-08, 0.00150669 +// get field new: i, bxyz_new 3 -2.76755e-07, 3.53084e-08, 0.00150669 +// get field std: i, bxyz_std 4 -2.74431e-07, 1.5511e-08, 0.000980422 +// get field new: i, bxyz_new 4 -2.74431e-07, 1.5511e-08, 0.000980422 +// get field std: i, bxyz_std 5 -2.72107e-07, -4.28645e-09, 0.000454151 +// get field new: i, bxyz_new 5 -2.72107e-07, -4.28645e-09, 0.000454151 +// get field std: i, bxyz_std 6 -2.69782e-07, -2.40839e-08, -7.21201e-05 +// get field new: i, bxyz_new 6 -2.69782e-07, -2.40839e-08, -7.21201e-05 +// get field std: i, bxyz_std 7 -2.67458e-07, -4.38813e-08, -0.000598391 +// get field new: i, bxyz_new 7 -2.67458e-07, -4.38813e-08, -0.000598391 +// get field std: i, bxyz_std 8 -2.65134e-07, -6.36787e-08, -0.00112466 +// get field new: i, bxyz_new 8 -2.65134e-07, -6.36787e-08, -0.00112466 +// get field std: i, bxyz_std 9 -2.6281e-07, -8.34762e-08, -0.00165093 +// get field new: i, bxyz_new 9 -2.6281e-07, -8.34762e-08, -0.00165093 + + // zone.m_doNew = false; + zone.m_doNew = true; + for (unsigned int i = 0; i < 10; ++i) { double r1 = r0 + 5 + i*10.; @@ -115,32 +147,25 @@ public: xyz[2] = z0; // do interpolation (cache3d has correct scale factor) - zone.m_doNew = false; - zone.getCache(z, r, phi, cache3d, 1); - cache3d.getB(xyz, r1, phi, bxyz_std, 0); - - std::cout << "get field std: i, bxyz_std " << i << " " - << bxyz_std[0] << ", " << bxyz_std[1] << ", " - << bxyz_std[2] << std::endl; - - zone.m_doNew = true; zone.getCache(z, r, phi, cache3d, 1); - cache3d.getB(xyz, r1, phi, bxyz_new, 0); + cache3d.getB(xyz, r1, phi, bxyz, 0); - std::cout << "get field new: i, bxyz_new " << i << " " - << bxyz_new[0] << ", " << bxyz_new[1] << ", " - << bxyz_new[2] << std::endl; + std::cout << "get field std: i, bxyz " << i << " " + << bxyz[0] << ", " << bxyz[1] << ", " + << bxyz[2] << std::endl; - if (bxyz_std[0] != bxyz_new[0]) { - std::cout << "failed bz comparison" << std::endl; + if (fabs(bxyz[0] - bxyz_std[0][i]) > 0.00001) { + std::cout << "failed bz comparison - bz, bz std " << bxyz[0] << ", " << bxyz_std[0][i] << std::endl; status = 1; } - if (bxyz_std[1] != bxyz_new[1]) { + if (fabs(bxyz[1] - bxyz_std[1][i]) > 0.00001) { std::cout << "failed br comparison" << std::endl; + std::cout << "failed br comparison - br, br std " << bxyz[1] << ", " << bxyz_std[1][i] << std::endl; status = 1; } - if (bxyz_std[2] != bxyz_new[2]) { + if (fabs(bxyz[2] - bxyz_std[2][i]) > 0.00001) { std::cout << "failed bphi comparison" << std::endl; + std::cout << "failed bphi comparison - bphi, bphi std " << bxyz[2] << ", " << bxyz_std[2][i] << std::endl; status = 1; } -- GitLab