/*--------------------------------------------------------------------------
Author: Thomas Nowotny
Institute: Institute for Nonlinear Dynamics
University of California San Diego
La Jolla, CA 92093-0402
email to: tnowotny@ucsd.edu
initial version: 2005-08-17
--------------------------------------------------------------------------*/
using namespace std;
#include <iostream>
#include "gauss.h"
#include "randomGen.h"
#include "randomGen.cc"
randomGen RG(1,2,3);
randomGen R(1,2,3);
#include "CN_ValAdaptneuron.h"
#include "CN_absynapse.h"
#include "CN_NeuronModel.h"
#include "CN_rk65n.h"
#include "CN_DCInput.h"
#include "CN_ValAdaptneuron.cc"
#include "CN_absynapse.cc"
#include "CN_NeuronModel.cc"
#include "CN_DCInput.cc"
int main(int argc, char *argv[])
{
list<neuron *> neurs;
list<synapse *> syns;
neuron *n;
// synapse *s;
synapse *ins;
double *x, *xn, *tmp;
int N;
cerr << RG.n() << endl;
double IDC= atof(argv[1]);
vector<int> pos(3, 0);
n= new ValAdaptneuron(1,pos);
neurs.push_back(n);
// s= new absynapse(n, n2, 0.5, 0.0, -20.0, 0.1, 0.2, 5.0, 0.0);
// syns.append(s);
ins= new DCInput(n, IDC);
syns.push_back(ins);
NeuronModel model(&neurs, &syns, N, cerr);
x= new double[N];
xn= new double[N];
//n->init(x, ECN_INIVARS);
n->init(x, ValA_INIVARS);
// s->init(x, ABSYN_INIVARS);
rk65n machine(N, 0.1, 1e-8, 1e-12, 1e-6);
double dt= 0.1;
double dtx= 0.1;
for (int i= 0; i < 100000; i++) {
dtx= machine.integrate(x, xn, &model, dt);
// cerr << dtx << endl;
dt= dtx;
tmp= x; x= xn; xn= tmp;
cout << x[0] << " " << n->E(x) << endl;
if (n->start_spiking) cerr << x[0] << endl;
}
return 0;
}
|