Skip to content
Snippets Groups Projects
Commit fa45e8bc authored by Lynch, Vickie's avatar Lynch, Vickie
Browse files

Refs #17303 fix lattice UB

parent 09b8b9e9
No related branches found
No related tags found
No related merge requests found
......@@ -88,6 +88,7 @@ private:
void recalculateFromGstar(const Kernel::DblMatrix &NewGstar) override {
UnitCell::recalculateFromGstar(NewGstar);
}
void recalculate();
};
} // namespace Mantid
} // namespace Geometry
......
......@@ -142,7 +142,7 @@ public:
double recVolume() const;
virtual void recalculateFromGstar(const Kernel::Matrix<double> &NewGstar);
private:
protected:
/// Lattice parameter a,b,c,alpha,beta,gamma (in \f$ \mbox{ \AA } \f$ and
/// radians)
std::vector<double> da;
......@@ -177,11 +177,13 @@ private:
Kernel::DblMatrix Binv;
// Private functions
void recalculate();
void calculateG();
void calculateGstar();
void calculateReciprocalLattice();
void calculateB();
virtual void recalculate();
};
MANTID_GEOMETRY_DLL std::ostream &operator<<(std::ostream &out,
......
......@@ -314,5 +314,18 @@ bool OrientedLattice::GetABC(const DblMatrix &UB, V3D &a_dir, V3D &b_dir,
return true;
}
/// Private function, called at initialization or whenever lattice parameters
/// are changed
void OrientedLattice::recalculate() {
if ((da[3] > da[4] + da[5]) || (da[4] > da[3] + da[5]) ||
(da[5] > da[4] + da[3])) {
throw std::invalid_argument("Invalid angles");
}
UnitCell::calculateG();
UnitCell::calculateGstar();
UnitCell::calculateReciprocalLattice();
UnitCell::calculateB();
UB = U * getB();
}
} // Namespace Geometry
} // Namespace Mantid
......@@ -5,7 +5,7 @@
#include <stdexcept>
#include <iomanip>
#include <ios>
#include <iostream>
//#include <iostream>
#include <cfloat>
#include <boost/lexical_cast.hpp>
......
......@@ -23,8 +23,10 @@ public:
TS_ASSERT_DELTA(u2.b1(), 1. / 3., 1e-10);
TS_ASSERT_DELTA(u2.alphastar(), 90, 1e-10);
TS_ASSERT_DELTA(u4.volume(), 1. / u2.recVolume(), 1e-10);
u2.seta(3);
TS_ASSERT_DELTA(u2.a(), 3, 1e-10);
TS_ASSERT_DELTA(u2.getUB()[0][0], 1./3., 1e-10);
u2.seta(13);
TS_ASSERT_DELTA(u2.a(), 13, 1e-10);
TS_ASSERT_DELTA(u2.getUB()[0][0], 1./13., 1e-10);
}
void test_hklFromQ() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment