/*--------------------------------------------------------------------------
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_neuron.h"
#include "CN_synapse.h"
#include "CN_neuron.cc"
#include "CN_synapse.cc"
// for inheritance ...
NeuronModel::NeuronModel()
{
}
NeuronModel::NeuronModel(list<neuron *> *ineurs, list<synapse *> *isyns,
int &N, ostream &msgos)
{
int iVarCnt= 1;
neuron *n;
synapse *s;
neurs= ineurs;
syns= isyns;
forall(*neurs, niter) {
n= *niter;
n->setIdx(iVarCnt);
iVarCnt+= n->iVarNo;
// cerr << iVarCnt << endl;
}
forall(*syns, siter) {
s= *siter;
s->setIdx(iVarCnt);
iVarCnt+= s->iVarNo;
// cerr << iVarCnt << endl;
}
N= iVarCnt;
msgos << "# we have " << N << " variables ..." << endl;
}
NeuronModel::~NeuronModel()
{ }
void NeuronModel::derivative(double *x, double *dx)
{
dx[0]= 1.0;
forall(*neurs, niter) {
(*niter)->derivative(x, dx);
}
forall((*syns), siter) {
(*siter)->derivative(x, dx);
}
}
void NeuronModel::noise(double *x, double *dx)
{
dx[0]= 0.0;
forall(*neurs, niter) {
(*niter)->noise(x, dx);
}
forall((*syns), siter) {
(*siter)->noise(x, dx);
}
}
#endif
|