aboutsummaryrefslogtreecommitdiff
path: root/chaos/src/lorenz.hpp
diff options
context:
space:
mode:
authorTim Blechmann <timblech@users.sourceforge.net>2004-12-23 10:07:17 +0000
committerIOhannes m zmölnig <zmoelnig@iem.at>2015-10-14 15:11:57 +0200
commit404bfef9e23dfc3166cb2005367e7e8a41863914 (patch)
tree3995ab20cf7ec984560c44e4fdeef1106ce8ff1c /chaos/src/lorenz.hpp
parent5233c01a26329306c9f1d08c1a39733aee2cc518 (diff)
base class macros
svn path=/trunk/externals/tb/; revision=2426
Diffstat (limited to 'chaos/src/lorenz.hpp')
-rw-r--r--chaos/src/lorenz.hpp129
1 files changed, 36 insertions, 93 deletions
diff --git a/chaos/src/lorenz.hpp b/chaos/src/lorenz.hpp
index 70dad4d..e3e5ccd 100644
--- a/chaos/src/lorenz.hpp
+++ b/chaos/src/lorenz.hpp
@@ -30,13 +30,17 @@ class lorenz
{
public:
logistic()
- : m_sigma(16), m_b(4), m_r(40)
{
m_num_eq = 3;
m_data = new data_t[3];
- set_x1(0.8f);
- set_x2(0.8f);
- set_x3(0.8f);
+
+ CHAOS_SYS_INIT(x1,0.8);
+ CHAOS_SYS_INIT(x2,0.8);
+ CHAOS_SYS_INIT(x3,0.8);
+ CHAOS_SYS_INIT(sigma,16);
+ CHAOS_SYS_INIT(b,4);
+ CHAOS_SYS_INIT(r,40);
+
set_method(0);
}
@@ -49,102 +53,41 @@ public:
{
data_t x1 = data[0], x2 = data[1], x3 = data[2];
- deriv[0] = m_sigma * (x2 - x1);
- deriv[1] = - x1 * x3 + m_r * x1 - x2;
- deriv[3] = x1 * x2 - m_b * x3;
- }
-
- void set_x1(t_float f)
- {
- m_data[0] = (data_t) f;
+ deriv[0] = CHAOS_PARAMETER(sigma) * (x2 - x1);
+ deriv[1] = - x1 * x3 + CHAOS_PARAMETER(r) * x1 - x2;
+ deriv[3] = x1 * x2 - CHAOS_PARAMETER(b) * x3;
}
- t_float get_x1()
- {
- return (t_float)m_data[0];
- }
-
- void set_x2(t_float f)
- {
- m_data[1] = (data_t) f;
- }
-
- t_float get_x2()
- {
- return (t_float)m_data[1];
- }
-
- void set_x3(t_float f)
- {
- m_data[2] = (data_t) f;
- }
-
- t_float get_x3()
- {
- return (t_float)m_data[2];
- }
+ CHAOS_SYSVAR_FUNCS(x1, 0);
+ CHAOS_SYSVAR_FUNCS(x2, 1);
+ CHAOS_SYSVAR_FUNCS(x3, 2);
+ CHAOS_SYSPAR_FUNCS_PRED(sigma, m_pred);
+ CHAOS_SYSPAR_FUNCS_PRED(b, m_pred);
+ CHAOS_SYSPAR_FUNCS_PRED(r, m_pred);
- void set_sigma(t_float f)
+ bool m_pred (t_float f)
{
- if (f > 0)
- m_sigma = (data_t) f;
- else
- post("value for sigma %f out of range", f);
+ return (f > 0);
}
- t_float get_sigma()
- {
- return (t_float)m_sigma;
- }
-
-
- void set_r(t_float f)
- {
- if (f > 0)
- m_r = (data_t) f;
- else
- post("value for r %f out of range", f);
- }
-
- t_float get_r()
- {
- return (t_float)m_r;
- }
-
- void set_b(t_float f)
- {
- if (f > 0)
- m_b = (data_t) f;
- else
- post("value for b %f out of range", f);
- }
-
- t_float get_b()
- {
- return (t_float)m_b;
- }
-
-
-private:
- data_t m_sigma, m_r, m_b;
};
-#define LORENZ_CALLBACKS \
-ODE_CALLBACKS; \
-FLEXT_CALLVAR_F(m_system->get_sigma, m_system->set_sigma); \
-FLEXT_CALLVAR_F(m_system->get_r, m_system->set_r); \
-FLEXT_CALLVAR_F(m_system->get_b, m_system->set_b); \
-FLEXT_CALLVAR_F(m_system->get_x1, m_system->set_x1); \
-FLEXT_CALLVAR_F(m_system->get_x2, m_system->set_x2); \
-FLEXT_CALLVAR_F(m_system->get_x3, m_system->set_x3);
-
-#define LORENZ_ATTRIBUTES \
-ODE_ATTRIBUTES; \
-FLEXT_ADDATTR_VAR("sigma",m_system->get_sigma, m_system->set_sigma); \
-FLEXT_ADDATTR_VAR("r",m_system->get_r, m_system->set_r); \
-FLEXT_ADDATTR_VAR("b",m_system->get_g, m_system->set_g); \
-FLEXT_ADDATTR_VAR("x1",m_system->get_x1, m_system->set_x1); \
-FLEXT_ADDATTR_VAR("x2",m_system->get_x2, m_system->set_x2); \
-FLEXT_ADDATTR_VAR("x3",m_system->get_x3, m_system->set_x3);
+#define LORENZ_CALLBACKS \
+ODE_CALLBACKS; \
+CHAOS_SYS_CALLBACKS(x1); \
+CHAOS_SYS_CALLBACKS(x2); \
+CHAOS_SYS_CALLBACKS(x3); \
+CHAOS_SYS_CALLBACKS(sigma); \
+CHAOS_SYS_CALLBACKS(r); \
+CHAOS_SYS_CALLBACKS(b);
+
+#define LORENZ_ATTRIBUTES \
+ODE_ATTRIBUTES; \
+CHAOS_SYS_ATTRIBUTE(x1); \
+CHAOS_SYS_ATTRIBUTE(x2); \
+CHAOS_SYS_ATTRIBUTE(x3); \
+CHAOS_SYS_ATTRIBUTE(sigma); \
+CHAOS_SYS_ATTRIBUTE(r); \
+CHAOS_SYS_ATTRIBUTE(b);