diff --git a/src/MANYBODY/pair_comb.h b/src/MANYBODY/pair_comb.h index ffde09219d..ec4e362f0b 100644 --- a/src/MANYBODY/pair_comb.h +++ b/src/MANYBODY/pair_comb.h @@ -38,7 +38,6 @@ class PairComb : public Pair { virtual double yasu_char(double *, int &); double enegtot; - protected: struct Param { double lam11,lam12,lam21,lam22; double c,d,h; @@ -60,6 +59,7 @@ class PairComb : public Pair { static const int NPARAMS_PER_LINE = 49; }; + protected: double cutmax; // max cutoff for all elements int nelements; // # of unique elements char **elements; // names of unique elements diff --git a/src/MANYBODY/pair_comb3.h b/src/MANYBODY/pair_comb3.h index 210f843139..bade95e88c 100644 --- a/src/MANYBODY/pair_comb3.h +++ b/src/MANYBODY/pair_comb3.h @@ -38,7 +38,6 @@ class PairComb3 : public Pair { double enegtot; // general potential parameters - protected: struct Param { int ielement,jelement,kelement,powermint; int ielementgp,jelementgp,kelementgp; //element group @@ -56,8 +55,11 @@ class PairComb3 : public Pair { double veps, vsig, pcna, pcnb, pcnc, pcnd, polz, curl, pcross; double paaa, pbbb; double curlcut1, curlcut2, curl0; + static const int NPARAMS_PER_LINE = 74; }; + protected: + // general setups int nelements; // # of unique elements int ***elem2param; // mapping from element triplets to parameters diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 2d1663272f..531e943f6c 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -3,3 +3,5 @@ include(GTest) add_subdirectory(force-styles) add_subdirectory(utils) + +add_subdirectory(formats) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt new file mode 100644 index 0000000000..47d24724e5 --- /dev/null +++ b/unittest/formats/CMakeLists.txt @@ -0,0 +1,4 @@ +add_executable(test_potential_file_reader test_potential_file_reader.cpp) +target_link_libraries(test_potential_file_reader PRIVATE lammps GTest::GMock GTest::GTest) +add_test(NAME PotentialFileReader COMMAND test_potential_file_reader WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) +set_tests_properties(PotentialFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}") diff --git a/unittest/formats/test_potential_file_reader.cpp b/unittest/formats/test_potential_file_reader.cpp new file mode 100644 index 0000000000..51477f7ada --- /dev/null +++ b/unittest/formats/test_potential_file_reader.cpp @@ -0,0 +1,57 @@ +#include "gmock/gmock.h" +#include "gtest/gtest.h" +#include "potential_file_reader.h" +#include "lammps.h" +#include "utils.h" +#include "MANYBODY/pair_sw.h" +#include "MANYBODY/pair_comb.h" +#include "MANYBODY/pair_comb3.h" + +#include + +using namespace LAMMPS_NS; + +const int LAMMPS_NS::PairSW::Param::NPARAMS_PER_LINE; +const int LAMMPS_NS::PairComb::Param::NPARAMS_PER_LINE; +const int LAMMPS_NS::PairComb3::Param::NPARAMS_PER_LINE; + +class PotenialFileReaderTest : public ::testing::Test { +protected: + LAMMPS * lmp; + + void SetUp() override { + const char *args[] = {"PotentialFileReaderTest", "-log", "none", "-echo", "screen", "-nocite" }; + char **argv = (char **)args; + int argc = sizeof(args)/sizeof(char *); + lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD); + } + + void TearDown() override { + delete lmp; + } +}; + +TEST_F(PotenialFileReaderTest, Si) { + PotentialFileReader reader(lmp, "Si.sw", "Stillinger-Weber"); + auto line = reader.next_line(PairSW::Param::NPARAMS_PER_LINE); + ASSERT_EQ(utils::count_words(line), PairSW::Param::NPARAMS_PER_LINE); +} + +TEST_F(PotenialFileReaderTest, Comb) { + PotentialFileReader reader(lmp, "ffield.comb", "COMB"); + auto line = reader.next_line(PairComb::Param::NPARAMS_PER_LINE); + ASSERT_EQ(utils::count_words(line), PairComb::Param::NPARAMS_PER_LINE); +} + +TEST_F(PotenialFileReaderTest, Comb3) { + PotentialFileReader reader(lmp, "ffield.comb3", "COMB3"); + auto line = reader.next_line(PairComb3::Param::NPARAMS_PER_LINE); + ASSERT_EQ(utils::count_words(line), PairComb3::Param::NPARAMS_PER_LINE); +} + +int main(int argc, char **argv) +{ + MPI_Init(&argc, &argv); + ::testing::InitGoogleMock(&argc, argv); + return RUN_ALL_TESTS(); +}