1 #define BOOST_TEST_DYN_LINK
2 #include <boost/test/unit_test.hpp>
21 BOOST_CHECK_EQUAL(&(tcoord.
home()), &lat);
29 BOOST_CHECK_EQUAL(&(tcoord.
home()), &lat);
37 BOOST_CHECK_EQUAL(&(tcoord.
home()), &lat);
45 BOOST_CHECK_EQUAL(&(tcoord.
home()), &lat);
53 BOOST_CHECK_EQUAL(&(tcoord.
home()), &lat);
74 coord1.
frac(0) = vec2[0];
75 coord1.
frac(1) = vec2[1];
76 coord1.
frac(2) = vec2[2];
93 coord1.
cart(0) = vec2[0];
94 coord1.
cart(1) = vec2[1];
95 coord1.
cart(2) = vec2[2];
160 BOOST_CHECK(tcoord == coord1);
161 BOOST_CHECK(!(tcoord == coord2));
163 BOOST_CHECK(tcoord != coord2);
164 BOOST_CHECK(!(tcoord != coord1));
180 Eigen::Vector3i(2, 2, 2),
181 Eigen::Vector3i(2, 2, 2));
184 for(; trans_count.
valid(); ++trans_count) {
185 transcoord1.
frac() = trans_count().cast<
double>() + coord1.
const_frac();
215 Eigen::Vector3d(1., 1., 1.),
216 Eigen::Vector3d(0.2, 0.2, 0.25));
217 for(; point_count.
valid(); ++point_count) {
237 for(
Index i = 0; i < vtable.rows(); i++) {
239 Coordinate coord2((1 + tol / 2.)*vtable.row(i).transpose() / vtable.row(i).squaredNorm(), lat,
CART);
240 BOOST_CHECK(coord2.robust_min_dist(zero_coord) <= coord2.const_cart().norm());
243 Coordinate coord2((1 - tol / 2.)*vtable.row(i).transpose() / vtable.row(i).squaredNorm(), lat,
CART);
244 BOOST_CHECK(
almost_equal(coord2.robust_min_dist(zero_coord), coord2.const_cart().norm(), tol / 2));
250 BOOST_AUTO_TEST_SUITE(CoordinateTest)
265 BOOST_AUTO_TEST_SUITE_END()
bool almost_zero(const T &val, double tol=TOL)
If T is not integral, use std::abs(val) < tol;.
A Counter allows looping over many incrementing variables in one loop.
Coordinate_impl::CartCoordinate cart()
Set Cartesian coordinate vector and update fractional coordinate vector.
static Lattice hexagonal()
Construct cubic primitive cell of unit volume.
void coordinate_constructor_test()
Eigen::MatrixXd const & voronoi_table() const
Return voronoi table, which specifies outward-pointing normals of Lattice Voronoi cell...
const Eigen::Matrix3d & lat_column_mat() const
3x3 matrix with lattice vectors as its columne
const vector_type & const_cart() const
user override to force const Access the Cartesian coordinate vector
const vector_type & const_frac() const
user override to force const Access the fractional coordinate vector
const Eigen::Matrix3d & inv_lat_column_mat() const
Inverse of Lattice::lat_column_mat() It is the transformation matrix 'C2F', such that f = C2F * c whe...
double min_dist(const Coordinate &neighbor) const
Returns distance (in Angstr) to nearest periodic image of neighbor.
void coordinate_operation_test()
Represents cartesian and fractional coordinates.
T norm(const Tensor< T > &ttens)
EigenIndex Index
For long integer indexing:
Eigen::Vector3d vector_type
double robust_min_dist(const Coordinate &neighbor) const
Returns distance (in Angstr) to nearest periodic image of neighbor.
void coordinate_periodicity_test()
vector_type::Index size_type
Index basis_ind() const
Access basis Index.
Coordinate_impl::FracCoordinate frac()
Set the fractional coordinate vector.
const Lattice & home() const
Access the home lattice of the coordinate.
bool almost_equal(const GenericCluster< CoordType > &LHS, const GenericCluster< CoordType > &RHS, double tol)
BOOST_AUTO_TEST_CASE(ConstructorTest)