/*-------------------------------------------------------------------------- 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 "CN_Poissonneuron.h" #include "CN_ECneuron.h" #include "CN_absynapse.h" #include "CN_NeuronModel.h" #include "CN_rk65n.h" #include "slist.h" #include "CN_DCInput.h" #include "CN_Poissonneuron.cc" #include "CN_ECneuron.cc" #include "CN_absynapse.cc" #include "CN_NeuronModel.cc" #include "CN_DCInput.cc" int main(int argc, char *argv[]) { slist<neuron *> neurs; slist<synapse *> syns; neuron *n, *n2; synapse *s, *ins; double *x, *xn, *tmp; int N; double IDC= atof(argv[1]); tnvector<int> pos(3,"0 0 0"); n= new Poissonneuron(0,pos); //neurs.append(n); n2= new ECneuron(1,pos); neurs.append(n2); s= new absynapse(n, n2, 0.5, 0.0, -20.0, 0.1, 0.2, 5.0); syns.append(s); // ins= new DCInput(n, IDC); // syns.append(ins); NeuronModel model(&neurs, &syns, N, cerr); x= new double[N]; xn= new double[N]; //n->init(x, ECN_INIVARS); n2->init(x, ECN_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; ((Poissonneuron *)n)->validate_E(x, dt); dt= dtx; tmp= x; x= xn; xn= tmp; ((Poissonneuron *)n)->step(); cout << x[0] << " " << n->E(x) << " " << n2->E(x) << endl; } return 0; }