change saving
This commit is contained in:
@ -7,6 +7,7 @@
|
||||
#include "tetrahedral.h"
|
||||
|
||||
#include <stdexcept>
|
||||
#include <map>
|
||||
|
||||
Motion::Motion(std::string name, const double delta, const double eta, std::mt19937_64& rng) : m_name(std::move(name)), m_delta(delta), m_eta(eta), m_rng(rng) {
|
||||
m_uni_dist = std::uniform_real_distribution(0., 1.);
|
||||
@ -57,6 +58,12 @@ void Motion::setParameters(const std::unordered_map<std::string, double> ¶me
|
||||
m_eta = parameters.at("eta");
|
||||
}
|
||||
|
||||
std::unordered_map<std::string, double> Motion::getParameters() const {
|
||||
return std::unordered_map<std::string, double>{
|
||||
{"delta", m_delta},
|
||||
{"eta", m_eta}
|
||||
};
|
||||
}
|
||||
|
||||
std::ostream& operator<<(std::ostream& os, const Motion& m) {
|
||||
os << m.getName();
|
||||
|
@ -21,7 +21,7 @@ public:
|
||||
virtual double jump() = 0;
|
||||
|
||||
virtual void setParameters(const std::unordered_map<std::string, double>&);
|
||||
|
||||
[[nodiscard]] virtual std::unordered_map<std::string, double> getParameters() const;
|
||||
[[nodiscard]] double getDelta() const { return m_delta; }
|
||||
void setDelta(const double delta) { m_delta = delta; }
|
||||
[[nodiscard]] double getEta() const { return m_eta; }
|
||||
@ -29,6 +29,8 @@ public:
|
||||
[[nodiscard]] std::string getName() const { return m_name; }
|
||||
[[nodiscard]] double getInitOmega() const { return m_initial_omega; };
|
||||
|
||||
[[nodiscard]] virtual std::string toString() const = 0;
|
||||
|
||||
static Motion* createFromInput(const std::string& input, std::mt19937_64& rng);
|
||||
|
||||
protected:
|
||||
|
@ -29,3 +29,15 @@ void BimodalAngle::setParameters(const std::unordered_map<std::string, double> &
|
||||
m_angle2 = parameter.at("angle2") * M_PI / 180.;
|
||||
m_prob = parameter.at("probability1");
|
||||
}
|
||||
|
||||
std::unordered_map<std::string, double> BimodalAngle::getParameters() const {
|
||||
auto parameter = Motion::getParameters();
|
||||
parameter["angle1"] = m_angle1 * 180 / M_PI;
|
||||
parameter["angle2"] = m_angle2 * 180 / M_PI;
|
||||
parameter["probality1"] = m_prob;
|
||||
return parameter;
|
||||
}
|
||||
|
||||
std::string BimodalAngle::toString() const {
|
||||
return std::string{"BimodalAngle/angle1=" + std::to_string(m_angle1 * 180 / M_PI) + "/angle2=" + std::to_string(m_angle2 * 180 / M_PI) + "/probability1=" + std::to_string(m_prob)};
|
||||
}
|
||||
|
@ -12,6 +12,8 @@ public:
|
||||
void initialize() override;
|
||||
double jump() override;
|
||||
void setParameters(const std::unordered_map<std::string, double> &) override;
|
||||
[[nodiscard]] std::unordered_map<std::string, double> getParameters() const override;
|
||||
[[nodiscard]] std::string toString() const override;
|
||||
|
||||
protected:
|
||||
double m_angle1{0};
|
||||
|
@ -25,3 +25,13 @@ void SmallAngle::setParameters(const std::unordered_map<std::string, double> &pa
|
||||
m_chi = parameters.at("angle") * M_PI / 180.0;
|
||||
Motion::setParameters(parameters);
|
||||
}
|
||||
|
||||
std::unordered_map<std::string, double> SmallAngle::getParameters() const {
|
||||
auto parameter = Motion::getParameters();
|
||||
parameter["angle"] = m_chi * 180 / M_PI;
|
||||
return parameter;
|
||||
}
|
||||
|
||||
std::string SmallAngle::toString() const {
|
||||
return std::string{"IsotropicAngle/angle=" + std::to_string(m_chi * 180 / M_PI)};
|
||||
}
|
||||
|
@ -13,6 +13,8 @@ public:
|
||||
void initialize() override;
|
||||
double jump() override;
|
||||
void setParameters(const std::unordered_map<std::string, double> &) override;
|
||||
[[nodiscard]] std::unordered_map<std::string, double> getParameters() const override;
|
||||
[[nodiscard]] std::string toString() const override;
|
||||
|
||||
private:
|
||||
double m_chi{0};
|
||||
|
@ -6,6 +6,10 @@ RandomJump::RandomJump(const double delta, const double eta, std::mt19937_64 &rn
|
||||
|
||||
RandomJump::RandomJump(std::mt19937_64 &rng) : Motion(std::string("RandomJump"), rng) {}
|
||||
|
||||
std::string RandomJump::toString() const {
|
||||
return {"RandomJump"};
|
||||
}
|
||||
|
||||
void RandomJump::initialize() {
|
||||
m_initial_omega = RandomJump::jump();
|
||||
}
|
||||
|
@ -10,6 +10,8 @@ public:
|
||||
RandomJump(double, double, std::mt19937_64&);
|
||||
explicit RandomJump(std::mt19937_64&);
|
||||
|
||||
[[nodiscard]] std::string toString() const override;
|
||||
|
||||
void initialize() override;
|
||||
double jump() override;
|
||||
};
|
||||
|
@ -28,3 +28,7 @@ double TetrahedralJump::jump() {
|
||||
|
||||
return m_corners[m_corner_idx];
|
||||
}
|
||||
|
||||
std::string TetrahedralJump::toString() const {
|
||||
return {"FourSiteTetrahedral"};
|
||||
}
|
||||
|
@ -14,6 +14,8 @@ public:
|
||||
void initialize() override;
|
||||
double jump() override;
|
||||
|
||||
[[nodiscard]] std::string toString() const override;
|
||||
|
||||
private:
|
||||
const double m_beta{std::acos(-1/3.)};
|
||||
|
||||
@ -24,5 +26,4 @@ private:
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif //RWSIM_MOTIONTETRAHEDRAL_H
|
||||
|
Reference in New Issue
Block a user