diff --git a/Framework/Kernel/inc/MantidKernel/Unit.h b/Framework/Kernel/inc/MantidKernel/Unit.h index a5f10d184ecbf4e7a58aa4fcc5f0537676143fb8..b161178c43f65d2a2c43a2249dc87366ba846c11 100644 --- a/Framework/Kernel/inc/MantidKernel/Unit.h +++ b/Framework/Kernel/inc/MantidKernel/Unit.h @@ -662,6 +662,27 @@ private: UnitLabel m_label; }; +//================================================================================================= +/// Temperature in kelvin +class MANTID_KERNEL_DLL AtomicDistance : public Empty { +public: + AtomicDistance(); + const std::string unitID() const override; ///< "AtomicDistance" + const std::string caption() const override { return "Atomic Distance"; } + const UnitLabel label() const override; + + void init() override; + Unit *clone() const override; + + double singleToTOF(const double x) const override; + double singleFromTOF(const double tof) const override; + double conversionTOFMin() const override; + double conversionTOFMax() const override; + +private: + UnitLabel m_label; +}; + //================================================================================================= MANTID_KERNEL_DLL double timeConversionValue(std::string input_unit, diff --git a/Framework/Kernel/src/Unit.cpp b/Framework/Kernel/src/Unit.cpp index 4aef9211ee611000128b412bc31725c274f0097b..e8ec4ea8047cdb2e42c29e7319c0ce2e823d4bc9 100644 --- a/Framework/Kernel/src/Unit.cpp +++ b/Framework/Kernel/src/Unit.cpp @@ -1253,6 +1253,42 @@ double Temperature::conversionTOFMax() const { Unit *Temperature::clone() const { return new Temperature(*this); } +// ===================================================================================================== +/* Atomic Distance in units of Angstroms + * ===================================================================================================== + * + * The distance from the center of an atom in Angstroms + */ +DECLARE_UNIT(AtomicDistance) + +AtomicDistance::AtomicDistance() : Empty(), m_label("Atomic Distance") {} + +const UnitLabel AtomicDistance::label() const { return Symbol::Angstrom; } + +void AtomicDistance::init() {} + +Unit *AtomicDistance::clone() const { return new AtomicDistance(*this); } + +double AtomicDistance::singleToTOF(const double x) const { + UNUSED_ARG(x); + throw std::runtime_error( + "Atomic Distance is not allowed to be converted to TOF. "); +} + +double AtomicDistance::singleFromTOF(const double tof) const { + UNUSED_ARG(tof); + throw std::runtime_error( + "Atomic Distance is not allowed to be converted from TOF. "); +} + +double AtomicDistance::conversionTOFMin() const { + return std::numeric_limits<double>::quiet_NaN(); +} + +double AtomicDistance::conversionTOFMax() const { + return std::numeric_limits<double>::quiet_NaN(); +} + // ================================================================================ double timeConversionValue(std::string input_unit, std::string output_unit) {