v1.0.0-rc.72
This commit is contained in:
@@ -5,92 +5,6 @@
|
||||
#include "../writer/HDF5Objects.h"
|
||||
#include "../image_analysis/indexing/IndexerFactory.h"
|
||||
|
||||
TEST_CASE("CrystalLattice") {
|
||||
CrystalLattice l(50,60,80, 90, 90, 90);
|
||||
REQUIRE(l.Vec0().Length() == Catch::Approx(50));
|
||||
REQUIRE(l.Vec1().Length() == Catch::Approx(60));
|
||||
REQUIRE(l.Vec2().Length() == Catch::Approx(80));
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec2()) == 90);
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec1()) == 90);
|
||||
REQUIRE(angle_deg(l.Vec1(), l.Vec2()) == 90);
|
||||
|
||||
auto uc0 = l.GetUnitCell();
|
||||
REQUIRE(uc0.a == Catch::Approx(50));
|
||||
REQUIRE(uc0.b == Catch::Approx(60));
|
||||
REQUIRE(uc0.c == Catch::Approx(80));
|
||||
REQUIRE(uc0.alpha == Catch::Approx(90));
|
||||
REQUIRE(uc0.beta == Catch::Approx(90));
|
||||
REQUIRE(uc0.gamma == Catch::Approx(90));
|
||||
|
||||
l = CrystalLattice(30, 40, 70, 90, 95, 90);
|
||||
REQUIRE(l.Vec0().Length() == Catch::Approx(30));
|
||||
REQUIRE(l.Vec1().Length() == Catch::Approx(40));
|
||||
REQUIRE(l.Vec2().Length() == Catch::Approx(70));
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec2()) == 95);
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec1()) == 90);
|
||||
REQUIRE(angle_deg(l.Vec1(), l.Vec2()) == 90);
|
||||
|
||||
auto uc1 = l.GetUnitCell();
|
||||
REQUIRE(uc1.a == Catch::Approx(30));
|
||||
REQUIRE(uc1.b == Catch::Approx(40));
|
||||
REQUIRE(uc1.c == Catch::Approx(70));
|
||||
REQUIRE(uc1.alpha == Catch::Approx(90));
|
||||
REQUIRE(uc1.beta == Catch::Approx(95));
|
||||
REQUIRE(uc1.gamma == Catch::Approx(90));
|
||||
|
||||
l = CrystalLattice(45, 45, 70, 90, 90, 120);
|
||||
REQUIRE(l.Vec0().Length() == Catch::Approx(45));
|
||||
REQUIRE(l.Vec1().Length() == Catch::Approx(45));
|
||||
REQUIRE(l.Vec2().Length() == Catch::Approx(70));
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec2()) == Catch::Approx(90));
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec1()) == Catch::Approx(120));
|
||||
REQUIRE(angle_deg(l.Vec1(), l.Vec2()) == Catch::Approx(90));
|
||||
|
||||
auto uc2 = l.GetUnitCell();
|
||||
REQUIRE(uc2.a == Catch::Approx(45));
|
||||
REQUIRE(uc2.b == Catch::Approx(45));
|
||||
REQUIRE(uc2.c == Catch::Approx(70));
|
||||
REQUIRE(uc2.alpha == Catch::Approx(90));
|
||||
REQUIRE(uc2.beta == Catch::Approx(90));
|
||||
REQUIRE(uc2.gamma == Catch::Approx(120));
|
||||
}
|
||||
|
||||
TEST_CASE("CrystalLattice_Sort") {
|
||||
CrystalLattice l(80,60,50, 120, 90, 90);
|
||||
REQUIRE(l.Vec0().Length() == Catch::Approx(50));
|
||||
REQUIRE(l.Vec1().Length() == Catch::Approx(60));
|
||||
REQUIRE(l.Vec2().Length() == Catch::Approx(80));
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec2()) == Catch::Approx(90));
|
||||
REQUIRE(angle_deg(l.Vec0(), l.Vec1()) == Catch::Approx(120));
|
||||
REQUIRE(angle_deg(l.Vec1(), l.Vec2()) == Catch::Approx(90));
|
||||
}
|
||||
|
||||
TEST_CASE("CrystalLattice_Handedness") {
|
||||
CrystalLattice l(Coord(1,0,0), Coord(0,1,0), Coord(0,0,-1));
|
||||
REQUIRE(l.Vec0().x == Catch::Approx(1));
|
||||
REQUIRE(l.Vec1().y == Catch::Approx(1));
|
||||
REQUIRE(l.Vec2().z == Catch::Approx(1));
|
||||
}
|
||||
|
||||
TEST_CASE("CrystalLattice_Volume") {
|
||||
CrystalLattice l(50, 60, 80, 90, 90, 90);
|
||||
REQUIRE(l.CalcVolume() == 50 * 60 * 80);
|
||||
|
||||
CrystalLattice l2(50,60,80, 90, 120, 90);
|
||||
float sin120 = std::sqrt(3) / 2;
|
||||
REQUIRE(l2.CalcVolume() == Catch::Approx(50 * 60 * 80 * sin120));
|
||||
}
|
||||
|
||||
TEST_CASE("CrystalLattice_Recip") {
|
||||
CrystalLattice l(50,60,80, 90, 90, 90);
|
||||
REQUIRE(l.Astar().Length() == Catch::Approx(1/50.0));
|
||||
REQUIRE(l.Astar().x == Catch::Approx(1/50.0));
|
||||
REQUIRE(l.Bstar().Length() == Catch::Approx(1/60.0));
|
||||
REQUIRE(l.Bstar().y == Catch::Approx(1/60.0));
|
||||
REQUIRE(l.Cstar().Length() == Catch::Approx(1/80.0));
|
||||
REQUIRE(l.Cstar().z == Catch::Approx(1/80.0));
|
||||
}
|
||||
|
||||
inline double round_err(double x) {
|
||||
return std::abs(x - std::round(x));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user