Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "MantidCurveFitting/PawleyFunction.h"
#include <boost/algorithm/string.hpp>
namespace Mantid {
namespace CurveFitting {
using namespace API;
using namespace Geometry;
PawleyFunction::PawleyFunction()
: ParamFunction(), m_crystalSystem(PointGroup::Triclinic), m_unitCell() {}
void PawleyFunction::setAttribute(const std::string &attName,
const Attribute &attValue) {
if (attName == "CrystalSystem") {
setCrystalSystem(attValue.asString());
}
ParamFunction::setAttribute(attName, attValue);
}
PointGroup::CrystalSystem PawleyFunction::getCrystalSystem() const {
return m_crystalSystem;
}
void PawleyFunction::function1D(double *out, const double *xValues,
const size_t nData) const {
UNUSED_ARG(out);
UNUSED_ARG(xValues);
UNUSED_ARG(nData);
}
void PawleyFunction::functionDeriv1D(Jacobian *out, const double *xValues,
const size_t nData) {
UNUSED_ARG(out);
UNUSED_ARG(xValues);
UNUSED_ARG(nData);
}
void PawleyFunction::functionDeriv(const FunctionDomain &domain,
Jacobian &jacobian) {
calNumericalDeriv(domain, jacobian);
}
void PawleyFunction::init() {
declareAttribute("CrystalSystem", IFunction::Attribute("Triclinic"));
}
void PawleyFunction::setCrystalSystem(const std::string &crystalSystem) {
std::string crystalSystemLC = boost::algorithm::to_lower_copy(crystalSystem);
if (crystalSystemLC == "cubic") {
m_crystalSystem = PointGroup::Cubic;
} else if (crystalSystemLC == "tetragonal") {
m_crystalSystem = PointGroup::Tetragonal;
} else if (crystalSystemLC == "hexagonal") {
m_crystalSystem = PointGroup::Hexagonal;
} else if (crystalSystemLC == "trigonal") {
m_crystalSystem = PointGroup::Trigonal;
} else if (crystalSystemLC == "orthorhombic") {
m_crystalSystem = PointGroup::Orthorhombic;
} else if (crystalSystemLC == "monoclinic") {
m_crystalSystem = PointGroup::Monoclinic;
} else if (crystalSystemLC == "triclinic") {
m_crystalSystem = PointGroup::Triclinic;
} else {
throw std::invalid_argument("Not a valid crystal system: '" +
crystalSystem + "'.");
}
}
} // namespace CurveFitting
} // namespace Mantid