Simplify EXPECT_FORCES() utility function

This commit is contained in:
Richard Berger
2021-11-23 10:58:29 -05:00
parent 946fd6fb55
commit 615b7ceca2
3 changed files with 34 additions and 28 deletions

View File

@ -21,6 +21,7 @@
#include "gmock/gmock.h" #include "gmock/gmock.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
#include "lammps.h" #include "lammps.h"
#include "atom.h"
#include <cstdlib> #include <cstdlib>
#include <cstring> #include <cstring>
@ -30,6 +31,7 @@
#include <vector> #include <vector>
using LAMMPS_NS::LAMMPS; using LAMMPS_NS::LAMMPS;
using LAMMPS_NS::Atom;
using LAMMPS_NS::utils::split_words; using LAMMPS_NS::utils::split_words;
using LAMMPS_NS::utils::trim; using LAMMPS_NS::utils::trim;
using LAMMPS_NS::tagint; using LAMMPS_NS::tagint;
@ -46,7 +48,10 @@ void EXPECT_STRESS(const std::string & name, double * stress, const stress_t & e
if (print_stats) std::cerr << name << " stats" << stats << std::endl; if (print_stats) std::cerr << name << " stats" << stats << std::endl;
} }
void EXPECT_FORCES(const std::string & name, double ** f, tagint * tag, int nlocal, const std::vector<coord_t> & f_ref, double epsilon) { void EXPECT_FORCES(const std::string & name, Atom * atom, const std::vector<coord_t> & f_ref, double epsilon) {
double ** f = atom->f;
tagint * tag = atom->tag;
const int nlocal = atom->nlocal;
ASSERT_EQ(nlocal + 1, f_ref.size()); ASSERT_EQ(nlocal + 1, f_ref.size());
ErrorStats stats; ErrorStats stats;
for (int i = 0; i < nlocal; ++i) { for (int i = 0; i < nlocal; ++i) {

View File

@ -15,7 +15,8 @@
#define TEST_MAIN_H #define TEST_MAIN_H
#include "test_config.h" #include "test_config.h"
#include "lmptype.h" #include "lammps.h"
#include "atom.h"
#include <string> #include <string>
#include <vector> #include <vector>
@ -37,6 +38,6 @@ void write_yaml_header(class YamlWriter *writer, TestConfig *cfg, const char *ve
} while (0); } while (0);
void EXPECT_STRESS(const std::string & name, double * stress, const stress_t & expected_stress, double epsilon); void EXPECT_STRESS(const std::string & name, double * stress, const stress_t & expected_stress, double epsilon);
void EXPECT_FORCES(const std::string & name, double ** f, LAMMPS_NS::tagint * tag, int nlocal, const std::vector<coord_t> & f_ref, double epsilon); void EXPECT_FORCES(const std::string & name, LAMMPS_NS::Atom * atom, const std::vector<coord_t> & f_ref, double epsilon);
#endif #endif

View File

@ -358,7 +358,7 @@ TEST(PairStyle, plain)
#endif #endif
auto pair = lmp->force->pair; auto pair = lmp->force->pair;
EXPECT_FORCES("init_forces (newton on)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton on)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress (newton on)", pair->virial, test_config.init_stress, epsilon); EXPECT_STRESS("init_stress (newton on)", pair->virial, test_config.init_stress, epsilon);
ErrorStats stats; ErrorStats stats;
@ -371,7 +371,7 @@ TEST(PairStyle, plain)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton on)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (newton on)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (newton on)", pair->virial, test_config.run_stress, epsilon); EXPECT_STRESS("run_stress (newton on)", pair->virial, test_config.run_stress, epsilon);
stats.reset(); stats.reset();
@ -393,7 +393,7 @@ TEST(PairStyle, plain)
if (lmp->force->newton_pair == 0) { if (lmp->force->newton_pair == 0) {
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("init_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton off)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 3 * epsilon); EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 3 * epsilon);
stats.reset(); stats.reset();
@ -405,7 +405,7 @@ TEST(PairStyle, plain)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, epsilon); EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, epsilon);
stats.reset(); stats.reset();
@ -425,7 +425,7 @@ TEST(PairStyle, plain)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("restart_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("restart_forces", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("restart_stress", pair->virial, test_config.init_stress, epsilon); EXPECT_STRESS("restart_stress", pair->virial, test_config.init_stress, epsilon);
stats.reset(); stats.reset();
@ -441,7 +441,7 @@ TEST(PairStyle, plain)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("nofdotr_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("nofdotr_forces", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, epsilon); EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, epsilon);
stats.reset(); stats.reset();
@ -455,7 +455,7 @@ TEST(PairStyle, plain)
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("data_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("data_forces", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("data_stress", pair->virial, test_config.init_stress, epsilon); EXPECT_STRESS("data_stress", pair->virial, test_config.init_stress, epsilon);
stats.reset(); stats.reset();
@ -477,7 +477,7 @@ TEST(PairStyle, plain)
pair = lmp->force->pair; pair = lmp->force->pair;
if (pair->ncoultablebits) epsilon *= 5.0e6; if (pair->ncoultablebits) epsilon *= 5.0e6;
EXPECT_FORCES("run_forces (r-RESPA)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (r-RESPA)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (r-RESPA)", pair->virial, test_config.run_stress, epsilon); EXPECT_STRESS("run_stress (r-RESPA)", pair->virial, test_config.run_stress, epsilon);
stats.reset(); stats.reset();
@ -539,7 +539,7 @@ TEST(PairStyle, omp)
auto pair = lmp->force->pair; auto pair = lmp->force->pair;
ErrorStats stats; ErrorStats stats;
EXPECT_FORCES("init_forces (newton on)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton on)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress (newton on)", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress (newton on)", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -551,7 +551,7 @@ TEST(PairStyle, omp)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton on)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5* epsilon); EXPECT_FORCES("run_forces (newton on)", lmp->atom, test_config.run_forces, 5* epsilon);
EXPECT_STRESS("run_stress (newton on)", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress (newton on)", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -572,7 +572,7 @@ TEST(PairStyle, omp)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("run_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, epsilon); EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, epsilon);
EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -584,7 +584,7 @@ TEST(PairStyle, omp)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -602,7 +602,7 @@ TEST(PairStyle, omp)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("nofdotr_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, 5 * epsilon); EXPECT_FORCES("nofdotr_forces", lmp->atom, test_config.init_forces, 5 * epsilon);
EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -662,7 +662,7 @@ TEST(PairStyle, kokkos_omp)
auto pair = lmp->force->pair; auto pair = lmp->force->pair;
ErrorStats stats; ErrorStats stats;
EXPECT_FORCES("init_forces (newton on)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton on)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress (newton on)", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress (newton on)", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -674,7 +674,7 @@ TEST(PairStyle, kokkos_omp)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton on)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (newton on)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (newton on)", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress (newton on)", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -695,7 +695,7 @@ TEST(PairStyle, kokkos_omp)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("init_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton off)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -707,7 +707,7 @@ TEST(PairStyle, kokkos_omp)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -725,7 +725,7 @@ TEST(PairStyle, kokkos_omp)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("nofdotr_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, 5 * epsilon); EXPECT_FORCES("nofdotr_forces", lmp->atom, test_config.init_forces, 5 * epsilon);
EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -805,7 +805,7 @@ TEST(PairStyle, gpu)
ErrorStats stats; ErrorStats stats;
auto pair = lmp->force->pair; auto pair = lmp->force->pair;
EXPECT_FORCES("init_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton off)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress (newton off)", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -817,7 +817,7 @@ TEST(PairStyle, gpu)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces (newton off)", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress (newton off)", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -889,7 +889,7 @@ TEST(PairStyle, intel)
ErrorStats stats; ErrorStats stats;
auto pair = lmp->force->pair; auto pair = lmp->force->pair;
EXPECT_FORCES("init_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -901,7 +901,7 @@ TEST(PairStyle, intel)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -963,7 +963,7 @@ TEST(PairStyle, opt)
ErrorStats stats; ErrorStats stats;
auto pair = lmp->force->pair; auto pair = lmp->force->pair;
EXPECT_FORCES("init_forces (newton off)", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, epsilon); EXPECT_FORCES("init_forces (newton off)", lmp->atom, test_config.init_forces, epsilon);
EXPECT_STRESS("init_stress", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("init_stress", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -975,7 +975,7 @@ TEST(PairStyle, opt)
run_lammps(lmp); run_lammps(lmp);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
EXPECT_FORCES("run_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.run_forces, 5 * epsilon); EXPECT_FORCES("run_forces", lmp->atom, test_config.run_forces, 5 * epsilon);
EXPECT_STRESS("run_stress", pair->virial, test_config.run_stress, 10 * epsilon); EXPECT_STRESS("run_stress", pair->virial, test_config.run_stress, 10 * epsilon);
stats.reset(); stats.reset();
@ -992,7 +992,7 @@ TEST(PairStyle, opt)
pair = lmp->force->pair; pair = lmp->force->pair;
EXPECT_FORCES("nofdotr_forces", lmp->atom->f, lmp->atom->tag, nlocal, test_config.init_forces, 5 * epsilon); EXPECT_FORCES("nofdotr_forces", lmp->atom, test_config.init_forces, 5 * epsilon);
EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, 10 * epsilon); EXPECT_STRESS("nofdotr_stress", pair->virial, test_config.init_stress, 10 * epsilon);
stats.reset(); stats.reset();