use struct for coordinates
This commit is contained in:
@ -3,11 +3,11 @@
|
||||
//
|
||||
#include "base.h"
|
||||
|
||||
Distribution::Distribution(const double tau, std::mt19937_64 &rng) : m_tau(tau), m_rng(rng) {}
|
||||
Distribution::Distribution(const double tau, std::mt19937_64 &rng) : m_tau(tau), m_tau_jump(tau), m_rng(rng) {}
|
||||
|
||||
Distribution::Distribution(std::mt19937_64 &rng) : m_rng(rng) {}
|
||||
|
||||
double Distribution::tau_wait() const {
|
||||
return std::exponential_distribution(1./m_tau)(m_rng);
|
||||
return std::exponential_distribution(1./m_tau_jump)(m_rng);
|
||||
}
|
||||
|
||||
|
@ -17,11 +17,13 @@ public:
|
||||
[[nodiscard]] double getTau() const { return m_tau; }
|
||||
void setTau(const double tau) { m_tau = tau;}
|
||||
|
||||
virtual void initialize() = 0;
|
||||
virtual void draw_tau() = 0;
|
||||
[[nodiscard]] double tau_wait() const;
|
||||
|
||||
private:
|
||||
protected:
|
||||
double m_tau{1.};
|
||||
double m_tau_jump{1.};
|
||||
std::mt19937_64& m_rng;
|
||||
};
|
||||
|
||||
|
@ -6,5 +6,9 @@
|
||||
DeltaDistribution::DeltaDistribution(const double tau, std::mt19937_64& rng) : Distribution(tau, rng) {}
|
||||
DeltaDistribution::DeltaDistribution(std::mt19937_64& rng) : Distribution(rng) {}
|
||||
|
||||
void DeltaDistribution::initialize() {
|
||||
m_tau_jump = m_tau;
|
||||
}
|
||||
|
||||
void DeltaDistribution::draw_tau() {}
|
||||
|
||||
|
@ -12,6 +12,7 @@ public:
|
||||
DeltaDistribution(double, std::mt19937_64&);
|
||||
explicit DeltaDistribution(std::mt19937_64 &rng);
|
||||
|
||||
void initialize() override;
|
||||
void draw_tau() override;
|
||||
};
|
||||
|
||||
|
18
times/lognormal.cpp
Normal file
18
times/lognormal.cpp
Normal file
@ -0,0 +1,18 @@
|
||||
//
|
||||
// Created by dominik on 8/24/24.
|
||||
//
|
||||
|
||||
#include "lognormal.h"
|
||||
#include <cmath>
|
||||
|
||||
LogNormalDistribution::LogNormalDistribution(const double tau, const double sigma, std::mt19937_64& rng) : Distribution(tau, rng), m_sigma(sigma), m_distribution(std::log(tau), sigma) {}
|
||||
LogNormalDistribution::LogNormalDistribution(std::mt19937_64& rng) : Distribution(rng) {}
|
||||
|
||||
void LogNormalDistribution::initialize() {
|
||||
m_distribution = std::lognormal_distribution(std::log(m_tau), m_sigma);
|
||||
m_tau_jump = m_distribution(m_rng);
|
||||
}
|
||||
|
||||
void LogNormalDistribution::draw_tau() {
|
||||
m_tau_jump = m_distribution(m_rng);
|
||||
}
|
21
times/lognormal.h
Normal file
21
times/lognormal.h
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
#ifndef LOGNORMAL_H
|
||||
#define LOGNORMAL_H
|
||||
|
||||
#include "base.h"
|
||||
#include <random>
|
||||
|
||||
class LogNormalDistribution final : public Distribution {
|
||||
public:
|
||||
LogNormalDistribution(double, double, std::mt19937_64&);
|
||||
explicit LogNormalDistribution(std::mt19937_64 &rng);
|
||||
|
||||
void initialize() override;
|
||||
void draw_tau() override;
|
||||
|
||||
private:
|
||||
double m_sigma{1};
|
||||
std::lognormal_distribution<> m_distribution;
|
||||
};
|
||||
|
||||
#endif //LOGNORMAL_H
|
Reference in New Issue
Block a user