{
public:
//! Availiable runners (CPU and GPU versions of the Leap-Frog)
- std::unordered_map <std::string, void(*)(LeapFrogTestData *testData,
- const int numSteps)> runners_;
+ static std::unordered_map <std::string, void(*)(LeapFrogTestData *testData,
+ const int numSteps)> s_runners_;
//! Reference data
TestReferenceData refData_;
//! Checker for reference data
LeapFrogTest() :
checker_(refData_.rootChecker())
+ {
+ }
+
+ //! Setup the runners one for all parameters sets
+ static void SetUpTestCase()
{
//
// All runners should be registered here under appropriate conditions
//
- runners_["LeapFrogSimple"] = integrateLeapFrogSimple;
- if (GMX_GPU == GMX_GPU_CUDA && s_hasCompatibleGpus)
+ s_runners_["LeapFrogSimple"] = integrateLeapFrogSimple;
+ if (GMX_GPU == GMX_GPU_CUDA && canComputeOnGpu())
{
- runners_["LeapFrogGpu"] = integrateLeapFrogGpu;
+ s_runners_["LeapFrogGpu"] = integrateLeapFrogGpu;
}
}
vRef.checkReal(v[ZZ], "ZZ");
}
}
-
- //! Store whether any compatible GPUs exist.
- static bool s_hasCompatibleGpus;
- //! Before any test is run, work out whether any compatible GPUs exist.
- static void SetUpTestCase()
- {
- s_hasCompatibleGpus = canComputeOnGpu();
- }
};
-bool LeapFrogTest::s_hasCompatibleGpus = false;
+std::unordered_map <std::string, void(*)(LeapFrogTestData *testData,
+ const int numSteps)> LeapFrogTest::s_runners_;
TEST_P(LeapFrogTest, SimpleIntegration)
{
// Cycle through all available runners
- for (const auto &runner : runners_)
+ for (const auto &runner : s_runners_)
{
std::string runnerName = runner.first;
LeapFrogTestData::LeapFrogTestData(int numAtoms, real timestep, const rvec v0, const rvec f0) :
numAtoms_(numAtoms),
timestep_(timestep),
- x0_(numAtoms_),
- x_(numAtoms_),
- xPrime_(numAtoms_),
- v0_(numAtoms_),
- v_(numAtoms_),
- f_(numAtoms_),
- inverseMasses_(numAtoms_),
- inverseMassesPerDim_(numAtoms_)
+ x0_(numAtoms),
+ x_(numAtoms),
+ xPrime_(numAtoms),
+ v0_(numAtoms),
+ v_(numAtoms),
+ f_(numAtoms),
+ inverseMasses_(numAtoms),
+ inverseMassesPerDim_(numAtoms)
{
mdAtoms_.nr = numAtoms_;
mdAtoms_.homenr = numAtoms_;
mdAtoms_.haveVsites = false;
mdAtoms_.havePartiallyFrozenAtoms = false;
+ mdAtoms_.cFREEZE = nullptr;
snew(mdAtoms_.cTC, numAtoms_);
for (int i = 0; i < numAtoms_; i++)
{