Update of /cvsroot/pure-data/externals/tb/chaos/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3849
Modified Files: chaos_msg.hpp main.cpp Added Files: duffing.hpp duffing_dsp.cpp duffing_msg.cpp duffing_search.cpp Log Message: added new system
Index: main.cpp =================================================================== RCS file: /cvsroot/pure-data/externals/tb/chaos/src/main.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** main.cpp 22 Oct 2005 15:11:45 -0000 1.12 --- main.cpp 1 Nov 2005 21:28:21 -0000 1.13 *************** *** 24,28 **** void chaos_library_setup() { ! post("chaos~ version 0.01, compiled on "__DATE__); post("(C)2005 Tim Blechmann, www.mokabar.tk\n\n");
--- 24,28 ---- void chaos_library_setup() { ! post("\nchaos~ version 0.01, compiled on "__DATE__); post("(C)2005 Tim Blechmann, www.mokabar.tk\n\n");
--- NEW FILE: duffing_dsp.cpp --- // // // chaos~ // Copyright (C) 2005 Tim Blechmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; see the file COPYING. If not, write to // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA.
#include "duffing.hpp" #include "chaos_dsp.hpp" CHAOS_DSP_CLASS(duffing,DUFFING);
--- NEW FILE: duffing_search.cpp --- // // // chaos~ // Copyright (C) 2005 Tim Blechmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; see the file COPYING. If not, write to // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA.
#include "duffing.hpp" #include "chaos_search.hpp"
CHAOS_SEARCH_CLASS(duffing, DUFFING);
--- NEW FILE: duffing.hpp --- // // // chaos~ // Copyright (C) 2005 Tim Blechmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; see the file COPYING. If not, write to // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA.
#include "ode_base.hpp"
// duffing equation: dx/dt = y // dy/dt = x * (1 - x^2) + R*cos(omega * t) - gamma * y //
class duffing: public ode_base { public: duffing(): ode_base(2) { CHAOS_PAR_INIT(method,0); CHAOS_PAR_INIT(dt,0.01); CHAOS_SYS_INIT(x, 0.5, 0); CHAOS_SYS_INIT(y, 0.5, 1); CHAOS_PAR_INIT(R, 0.4); CHAOS_PAR_INIT(omega, 1); CHAOS_PAR_INIT(gamma, 0.25); t = 0; }
~duffing() { }
virtual void m_system(data_t* deriv, data_t* data) { data_t x = data[0], y = data[1];
deriv[0] = y; deriv[1] = x * (1 - x*x) + CHAOS_PARAMETER(R) * cos( CHAOS_PARAMETER(omega) * t) - CHAOS_PARAMETER(gamma) * y; t += CHAOS_PARAMETER(dt); t = chaos_mod(t, M_PI); }
virtual void m_verify() { if (m_data[0] == 0 && m_data[1] == 0 && m_data[2] == 0) for (int i = 0; i != 3; ++i) m_data[i] = rand_range(0,3); }
CHAOS_SYSVAR_FUNCS(x,0); CHAOS_SYSVAR_FUNCS(y,1);
CHAOS_SYSPAR_FUNCS(R); CHAOS_SYSPAR_FUNCS(omega); CHAOS_SYSPAR_FUNCS(gamma);
private: data_t t; };
#define DUFFING_CALLBACKS \ ODE_CALLBACKS; \ CHAOS_SYS_CALLBACKS(x); \ CHAOS_SYS_CALLBACKS(y); \ CHAOS_SYS_CALLBACKS(R); \ CHAOS_SYS_CALLBACKS(gamma); \ CHAOS_SYS_CALLBACKS(omega);
#define DUFFING_ATTRIBUTES \ ODE_ATTRIBUTES; \ CHAOS_SYS_ATTRIBUTE(x); \ CHAOS_SYS_ATTRIBUTE(y); \ CHAOS_SYS_ATTRIBUTE(R); \ CHAOS_SYS_ATTRIBUTE(gamma); \ CHAOS_SYS_ATTRIBUTE(omega);
--- NEW FILE: duffing_msg.cpp --- // // // chaos~ // Copyright (C) 2005 Tim Blechmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; see the file COPYING. If not, write to // the Free Software Foundation, Inc., 59 Temple Place - Suite 330, // Boston, MA 02111-1307, USA.
#include "duffing.hpp" #include "chaos_msg.hpp" CHAOS_MSG_CLASS(duffing,DUFFING);
Index: chaos_msg.hpp =================================================================== RCS file: /cvsroot/pure-data/externals/tb/chaos/src/chaos_msg.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** chaos_msg.hpp 1 Jan 2005 11:06:58 -0000 1.2 --- chaos_msg.hpp 1 Nov 2005 21:28:21 -0000 1.3 *************** *** 26,29 **** --- 26,34 ---- FLEXT_HEADER(chaos_msg, flext_base);
+ ~chaos_msg() + { + delete m_system; + } + public:
*************** *** 60,68 **** \ ATTRIBUTES; \ ! FLEXT_ADDBANG(0, m_bang); \ ! } \ ! \ ! ~SYSTEM##_msg() \ ! { \ ! delete m_system; \ } --- 65,68 ---- \ ATTRIBUTES; \ ! FLEXT_ADDBANG(0, m_bang); \ }