Unverified Commit ae0957bd authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

use atom id instead of local index to test per-atom data

parent 13d56f3c
Loading
Loading
Loading
Loading
+227 −151
Original line number Diff line number Diff line
@@ -36,6 +36,8 @@
#endif
#endif

#define GETIDX(i) lmp->atom->map(i)

// whether to print verbose output (i.e. not capturing LAMMPS screen output).
bool verbose = false;

@@ -334,30 +336,31 @@ TEST_F(AtomStyleTest, atomic)

    double **x  = lmp->atom->x;
    double **v  = lmp->atom->v;
    ASSERT_DOUBLE_EQ(x[0][0], -2.0);
    ASSERT_DOUBLE_EQ(x[0][1], 2.0);
    ASSERT_DOUBLE_EQ(x[0][2], 0.1);
    ASSERT_DOUBLE_EQ(x[1][0], -2.0);
    ASSERT_DOUBLE_EQ(x[1][1], -2.0);
    ASSERT_DOUBLE_EQ(x[1][2], -0.1);
    ASSERT_DOUBLE_EQ(x[2][0], 2.0);
    ASSERT_DOUBLE_EQ(x[2][1], 2.0);
    ASSERT_DOUBLE_EQ(x[2][2], -0.1);
    ASSERT_DOUBLE_EQ(x[3][0], 2.0);
    ASSERT_DOUBLE_EQ(x[3][1], -2.0);
    ASSERT_DOUBLE_EQ(x[3][2], 0.1);
    ASSERT_DOUBLE_EQ(v[0][0], 0.0);
    ASSERT_DOUBLE_EQ(v[0][1], 0.0);
    ASSERT_DOUBLE_EQ(v[0][2], 0.0);
    ASSERT_DOUBLE_EQ(v[1][0], 0.0);
    ASSERT_DOUBLE_EQ(v[1][1], 0.0);
    ASSERT_DOUBLE_EQ(v[1][2], 0.0);
    ASSERT_DOUBLE_EQ(v[2][0], 0.0);
    ASSERT_DOUBLE_EQ(v[2][1], 0.0);
    ASSERT_DOUBLE_EQ(v[2][2], 0.0);
    ASSERT_DOUBLE_EQ(v[3][0], 0.0);
    ASSERT_DOUBLE_EQ(v[3][1], 0.0);
    ASSERT_DOUBLE_EQ(v[3][2], 0.0);
    tagint *tag = lmp->atom->tag;
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][1], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][1], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][2], 0.1);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][2], 0.0);

    ASSERT_DOUBLE_EQ(lmp->atom->mass[1], 4.0);
    ASSERT_DOUBLE_EQ(lmp->atom->mass[2], 2.4);
@@ -389,18 +392,18 @@ TEST_F(AtomStyleTest, atomic)

    x = lmp->atom->x;
    v = lmp->atom->v;
    ASSERT_DOUBLE_EQ(x[0][0], -2.0);
    ASSERT_DOUBLE_EQ(x[0][1], 2.0);
    ASSERT_DOUBLE_EQ(x[0][2], 0.1);
    ASSERT_DOUBLE_EQ(x[1][0], 2.0);
    ASSERT_DOUBLE_EQ(x[1][1], 2.0);
    ASSERT_DOUBLE_EQ(x[1][2], -0.1);
    ASSERT_DOUBLE_EQ(v[0][0], 0.0);
    ASSERT_DOUBLE_EQ(v[0][1], 0.0);
    ASSERT_DOUBLE_EQ(v[0][2], 0.0);
    ASSERT_DOUBLE_EQ(v[1][0], 0.0);
    ASSERT_DOUBLE_EQ(v[1][1], 0.0);
    ASSERT_DOUBLE_EQ(v[1][2], 0.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][2], -0.1);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][2], 0.0);

    ASSERT_DOUBLE_EQ(lmp->atom->mass[1], 4.0);
    ASSERT_DOUBLE_EQ(lmp->atom->mass[2], 2.4);
@@ -414,6 +417,60 @@ TEST_F(AtomStyleTest, atomic)
    if (!verbose) ::testing::internal::GetCapturedStdout();
    ASSERT_EQ(lmp->atom->map_tag_max, 2);
    ASSERT_EQ(lmp->atom->tag_consecutive(), 1);
    if (!verbose) ::testing::internal::CaptureStdout();
    lmp->input->one("replicate 2 2 2");
    if (!verbose) ::testing::internal::GetCapturedStdout();
    ASSERT_EQ(lmp->atom->map_tag_max, 16);
    x   = lmp->atom->x;
    tag = lmp->atom->tag;
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][0], 6.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][0], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(5)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(5)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(5)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(6)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(6)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(6)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(7)][0], 6.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(7)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(7)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(8)][0], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(8)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(8)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(9)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(9)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(9)][2], 8.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(10)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(10)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(10)][2], 7.9);
    ASSERT_DOUBLE_EQ(x[GETIDX(11)][0], 6.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(11)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(11)][2], 8.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(12)][0], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(12)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(12)][2], 7.9);
    ASSERT_DOUBLE_EQ(x[GETIDX(13)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(13)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(13)][2], 8.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(14)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(14)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(14)][2], 7.9);
    ASSERT_DOUBLE_EQ(x[GETIDX(15)][0], 6.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(15)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(15)][2], 8.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(16)][0], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(16)][1], 10.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(16)][2], 7.9);
}

TEST_F(AtomStyleTest, charge)
@@ -664,34 +721,34 @@ TEST_F(AtomStyleTest, charge)
    double **x = lmp->atom->x;
    double **v = lmp->atom->v;
    double *q  = lmp->atom->q;
    ASSERT_DOUBLE_EQ(x[0][0], -2.0);
    ASSERT_DOUBLE_EQ(x[0][1], 2.0);
    ASSERT_DOUBLE_EQ(x[0][2], 0.1);
    ASSERT_DOUBLE_EQ(x[1][0], -2.0);
    ASSERT_DOUBLE_EQ(x[1][1], -2.0);
    ASSERT_DOUBLE_EQ(x[1][2], -0.1);
    ASSERT_DOUBLE_EQ(x[2][0], 2.0);
    ASSERT_DOUBLE_EQ(x[2][1], 2.0);
    ASSERT_DOUBLE_EQ(x[2][2], -0.1);
    ASSERT_DOUBLE_EQ(x[3][0], 2.0);
    ASSERT_DOUBLE_EQ(x[3][1], -2.0);
    ASSERT_DOUBLE_EQ(x[3][2], 0.1);
    ASSERT_DOUBLE_EQ(v[0][0], 0.0);
    ASSERT_DOUBLE_EQ(v[0][1], 0.0);
    ASSERT_DOUBLE_EQ(v[0][2], 0.0);
    ASSERT_DOUBLE_EQ(v[1][0], 0.0);
    ASSERT_DOUBLE_EQ(v[1][1], 0.0);
    ASSERT_DOUBLE_EQ(v[1][2], 0.0);
    ASSERT_DOUBLE_EQ(v[2][0], 0.0);
    ASSERT_DOUBLE_EQ(v[2][1], 0.0);
    ASSERT_DOUBLE_EQ(v[2][2], 0.0);
    ASSERT_DOUBLE_EQ(v[3][0], 0.0);
    ASSERT_DOUBLE_EQ(v[3][1], 0.0);
    ASSERT_DOUBLE_EQ(v[3][2], 0.0);
    ASSERT_DOUBLE_EQ(q[0], -0.5);
    ASSERT_DOUBLE_EQ(q[1], 0.5);
    ASSERT_DOUBLE_EQ(q[2], -1.0);
    ASSERT_DOUBLE_EQ(q[3], 1.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][1], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][1], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][2], 0.1);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][2], 0.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(1)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(2)], 0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(3)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(4)], 1.0);

    ASSERT_DOUBLE_EQ(lmp->atom->mass[1], 4.0);
    ASSERT_DOUBLE_EQ(lmp->atom->mass[2], 2.4);
@@ -704,7 +761,7 @@ TEST_F(AtomStyleTest, charge)
    lmp->input->one("delete_atoms group two compress no");
    lmp->input->one("write_restart test_atom_styles.restart");
    lmp->input->one("clear");
    ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("atomic"));
    EXPECT_THAT(std::string(lmp->atom->atom_style), Eq("atomic"));
    lmp->input->one("read_restart test_atom_styles.restart");
    if (!verbose) ::testing::internal::GetCapturedStdout();
    ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("charge"));
@@ -722,25 +779,48 @@ TEST_F(AtomStyleTest, charge)
    x = lmp->atom->x;
    v = lmp->atom->v;
    q = lmp->atom->q;
    ASSERT_DOUBLE_EQ(x[0][0], -2.0);
    ASSERT_DOUBLE_EQ(x[0][1], 2.0);
    ASSERT_DOUBLE_EQ(x[0][2], 0.1);
    ASSERT_DOUBLE_EQ(x[1][0], 2.0);
    ASSERT_DOUBLE_EQ(x[1][1], 2.0);
    ASSERT_DOUBLE_EQ(x[1][2], -0.1);
    ASSERT_DOUBLE_EQ(v[0][0], 0.0);
    ASSERT_DOUBLE_EQ(v[0][1], 0.0);
    ASSERT_DOUBLE_EQ(v[0][2], 0.0);
    ASSERT_DOUBLE_EQ(v[1][0], 0.0);
    ASSERT_DOUBLE_EQ(v[1][1], 0.0);
    ASSERT_DOUBLE_EQ(v[1][2], 0.0);
    ASSERT_DOUBLE_EQ(q[0], -0.5);
    ASSERT_DOUBLE_EQ(q[1], -1.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][2], -0.1);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][2], 0.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(1)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(3)], -1.0);

    ASSERT_DOUBLE_EQ(lmp->atom->mass[1], 4.0);
    ASSERT_DOUBLE_EQ(lmp->atom->mass[2], 2.4);
    ASSERT_EQ(lmp->atom->mass_setflag[1], 1);
    ASSERT_EQ(lmp->atom->mass_setflag[2], 1);

    if (!verbose) ::testing::internal::CaptureStdout();
    lmp->input->one("reset_ids");
    lmp->input->one("replicate 2 2 2");
    if (!verbose) ::testing::internal::GetCapturedStdout();
    ASSERT_EQ(lmp->atom->map_tag_max, 16);
    q = lmp->atom->q;
    ASSERT_DOUBLE_EQ(q[GETIDX(1)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(2)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(3)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(4)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(5)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(6)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(7)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(8)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(9)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(10)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(11)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(12)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(13)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(14)], -1.0);
    ASSERT_DOUBLE_EQ(q[GETIDX(15)], -0.5);
    ASSERT_DOUBLE_EQ(q[GETIDX(16)], -1.0);
}

TEST_F(AtomStyleTest, sphere)
@@ -997,46 +1077,46 @@ TEST_F(AtomStyleTest, sphere)
    double **v     = lmp->atom->v;
    double *rmass  = lmp->atom->rmass;
    double **omega = lmp->atom->omega;
    ASSERT_DOUBLE_EQ(x[0][0], -2.0);
    ASSERT_DOUBLE_EQ(x[0][1], 2.0);
    ASSERT_DOUBLE_EQ(x[0][2], 0.1);
    ASSERT_DOUBLE_EQ(x[1][0], -2.0);
    ASSERT_DOUBLE_EQ(x[1][1], -2.0);
    ASSERT_DOUBLE_EQ(x[1][2], -0.1);
    ASSERT_DOUBLE_EQ(x[2][0], 2.0);
    ASSERT_DOUBLE_EQ(x[2][1], 2.0);
    ASSERT_DOUBLE_EQ(x[2][2], -0.1);
    ASSERT_DOUBLE_EQ(x[3][0], 2.0);
    ASSERT_DOUBLE_EQ(x[3][1], -2.0);
    ASSERT_DOUBLE_EQ(x[3][2], 0.1);
    ASSERT_DOUBLE_EQ(v[0][0], 0.0);
    ASSERT_DOUBLE_EQ(v[0][1], 0.0);
    ASSERT_DOUBLE_EQ(v[0][2], 0.0);
    ASSERT_DOUBLE_EQ(v[1][0], 0.0);
    ASSERT_DOUBLE_EQ(v[1][1], 0.0);
    ASSERT_DOUBLE_EQ(v[1][2], 0.0);
    ASSERT_DOUBLE_EQ(v[2][0], 0.0);
    ASSERT_DOUBLE_EQ(v[2][1], 0.0);
    ASSERT_DOUBLE_EQ(v[2][2], 0.0);
    ASSERT_DOUBLE_EQ(v[3][0], 0.0);
    ASSERT_DOUBLE_EQ(v[3][1], 0.0);
    ASSERT_DOUBLE_EQ(v[3][2], 0.0);
    ASSERT_DOUBLE_EQ(rmass[0], 4.0);
    ASSERT_DOUBLE_EQ(rmass[1], 4.0);
    ASSERT_DOUBLE_EQ(rmass[2], 2.4);
    ASSERT_DOUBLE_EQ(rmass[3], 2.4);
    ASSERT_DOUBLE_EQ(omega[0][0], -0.5);
    ASSERT_DOUBLE_EQ(omega[0][1], 0.1);
    ASSERT_DOUBLE_EQ(omega[0][2], 0.1);
    ASSERT_DOUBLE_EQ(omega[1][0], 0.5);
    ASSERT_DOUBLE_EQ(omega[1][1], -0.1);
    ASSERT_DOUBLE_EQ(omega[1][2], -0.1);
    ASSERT_DOUBLE_EQ(omega[2][0], -1.0);
    ASSERT_DOUBLE_EQ(omega[2][1], 0.0);
    ASSERT_DOUBLE_EQ(omega[2][2], 0.0);
    ASSERT_DOUBLE_EQ(omega[3][0], 0.0);
    ASSERT_DOUBLE_EQ(omega[3][1], 1.0);
    ASSERT_DOUBLE_EQ(omega[3][2], 0.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][0], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][1], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(2)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][1], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(3)][2], -0.1);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][0], 2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][1], -2.0);
    ASSERT_DOUBLE_EQ(x[GETIDX(4)][2], 0.1);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(1)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(2)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(3)][2], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][0], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][1], 0.0);
    ASSERT_DOUBLE_EQ(v[GETIDX(4)][2], 0.0);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(1)], 4.0);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(2)], 4.0);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(3)], 2.4);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(4)], 2.4);
    ASSERT_DOUBLE_EQ(omega[GETIDX(1)][0], -0.5);
    ASSERT_DOUBLE_EQ(omega[GETIDX(1)][1], 0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(2)][0], 0.5);
    ASSERT_DOUBLE_EQ(omega[GETIDX(2)][1], -0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(2)][2], -0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(3)][0], -1.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(3)][1], 0.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(3)][2], 0.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(4)][0], 0.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(4)][1], 1.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(4)][2], 0.0);

    if (!verbose) ::testing::internal::CaptureStdout();
    lmp->input->one("pair_coeff * *");
@@ -1044,45 +1124,41 @@ TEST_F(AtomStyleTest, sphere)
    lmp->input->one("delete_atoms group two compress no");
    lmp->input->one("write_restart test_atom_styles.restart");
    lmp->input->one("clear");
    ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("atomic"));
    EXPECT_THAT(std::string(lmp->atom->atom_style), Eq("atomic"));
    lmp->input->one("read_restart test_atom_styles.restart");
    lmp->input->one("replicate 1 1 2");
    lmp->input->one("reset_ids");
    if (!verbose) ::testing::internal::GetCapturedStdout();
    ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("sphere"));
    ASSERT_NE(lmp->atom->avec, nullptr);
    ASSERT_EQ(lmp->atom->natoms, 2);
    ASSERT_EQ(lmp->atom->nlocal, 2);
    ASSERT_EQ(lmp->atom->natoms, 4);
    ASSERT_EQ(lmp->atom->nlocal, 4);
    ASSERT_EQ(lmp->atom->nghost, 0);
    ASSERT_NE(lmp->atom->nmax, -1);
    ASSERT_EQ(lmp->atom->tag_enable, 1);
    ASSERT_EQ(lmp->atom->molecular, 0);
    ASSERT_EQ(lmp->atom->ntypes, 2);
    ASSERT_EQ(lmp->atom->tag_consecutive(), 0);
    ASSERT_EQ(lmp->atom->map_tag_max, 3);
    ASSERT_EQ(lmp->atom->tag_consecutive(), 1);
    ASSERT_EQ(lmp->atom->map_tag_max, 4);

    x = lmp->atom->x;
    v = lmp->atom->v;
    rmass = lmp->atom->rmass;
    omega = lmp->atom->omega;
    ASSERT_DOUBLE_EQ(x[0][0], -2.0);
    ASSERT_DOUBLE_EQ(x[0][1], 2.0);
    ASSERT_DOUBLE_EQ(x[0][2], 0.1);
    ASSERT_DOUBLE_EQ(x[1][0], 2.0);
    ASSERT_DOUBLE_EQ(x[1][1], 2.0);
    ASSERT_DOUBLE_EQ(x[1][2], -0.1);
    ASSERT_DOUBLE_EQ(v[0][0], 0.0);
    ASSERT_DOUBLE_EQ(v[0][1], 0.0);
    ASSERT_DOUBLE_EQ(v[0][2], 0.0);
    ASSERT_DOUBLE_EQ(v[1][0], 0.0);
    ASSERT_DOUBLE_EQ(v[1][1], 0.0);
    ASSERT_DOUBLE_EQ(v[1][2], 0.0);
    ASSERT_DOUBLE_EQ(rmass[0], 4.0);
    ASSERT_DOUBLE_EQ(rmass[1], 2.4);
    ASSERT_DOUBLE_EQ(omega[0][0], -0.5);
    ASSERT_DOUBLE_EQ(omega[0][1], 0.1);
    ASSERT_DOUBLE_EQ(omega[0][2], 0.1);
    ASSERT_DOUBLE_EQ(omega[1][0], -1.0);
    ASSERT_DOUBLE_EQ(omega[1][1], 0.0);
    ASSERT_DOUBLE_EQ(omega[1][2], 0.0);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(1)], 4.0);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(2)], 2.4);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(3)], 4.0);
    ASSERT_DOUBLE_EQ(rmass[GETIDX(4)], 2.4);
    ASSERT_DOUBLE_EQ(omega[GETIDX(1)][0], -0.5);
    ASSERT_DOUBLE_EQ(omega[GETIDX(1)][1], 0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(1)][2], 0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(2)][0], -1.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(2)][1], 0.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(2)][2], 0.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(3)][0], -0.5);
    ASSERT_DOUBLE_EQ(omega[GETIDX(3)][1], 0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(3)][2], 0.1);
    ASSERT_DOUBLE_EQ(omega[GETIDX(4)][0], -1.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(4)][1], 0.0);
    ASSERT_DOUBLE_EQ(omega[GETIDX(4)][2], 0.0);
}

} // namespace LAMMPS_NS