/*--------------------------------------------------------------------------
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
--------------------------------------------------------------------------*/
#ifndef CN_NEURONMODEL
#define CN_NEURONMODEL
#include "CN_NeuronModel.h"
#include "CN_TimeNeuron.h"
#include "CN_TimeNeuron.cc"
NeuronModel::NeuronModel(slist<neuron *> *neurs, slist<synapse *> *syns,
int &N, ostream &msgos)
{
int iVarCnt= 0;
neuron *n;
synapse *s;
niter= neurs->iterator();
siter= syns->iterator();
n= new TimeNeuron();
neurs->prepend(n);
// count all variables
// & deliver the variable positions to everyone
forall(niter) {
n= niter->c_value();
n->setIdx(iVarCnt);
iVarCnt+= n->iVarNo;
}
forall(siter) {
s= siter->c_value();
s->setIdx(iVarCnt);
iVarCnt+= s->iVarNo;
}
N= iVarCnt;
msgos << "# we have " << N << " variables ..." << endl;
}
void NeuronModel::derivative(double *x, double *dx)
{
forall(niter) {
niter->c_value()->derivative(x, dx);
}
forall(siter) {
siter->c_value()->derivative(x, dx);
}
}
#endif
|