// Neuron for Rallpack Benchmark (rallpack3)
//
// Copyright 2006 John L Baker. All rights reserved.
//
// File: neuron_rallpack.h
//
// Release: 1.0.0
// Author: John Baker
// Updated: 14 July 2006
//
// Description:
//
// This header file contains the declarations defining a neuron
// object for the rallpack3 benchmark. Even though a neuron is
// not explicitly used in the benchmark, one is needed to contain
// the necessary compartments.
// Only include this header once
#ifndef __NEURON_RALLPACK_H_
#define __NEURON_RALLPACK_H_
#include "bnsf.h"
#include "ionchan_na_rallpack.h"
#include "ionchan_k_rallpack.h"
using namespace std;
using namespace BNSF;
// Declare a namespace so that different models
// can be intermixed in the same simulation
namespace RALLPACK {
class RPNeuron1 : public Neuron {
public:
// Constructors and destructor
RPNeuron1(int nComp=1000, Number totalLen=1*UOM::mm);
virtual ~RPNeuron1();
// Accessors
Compartment* nearComp() { return _compartments.front(); }
Compartment* farComp() { return _compartments.back(); }
// Use NeuronSolver for this neuron
virtual ODESolver* defaultSolver();
};
class RPNeuron2 : public Neuron {
public:
// Constructors and destructor
RPNeuron2();
virtual ~RPNeuron2();
// Accessors
Compartment* nearComp() { return _compartments.front(); }
Compartment* farComp() { return _compartments.back(); }
// Use NeuronSolver for this neuron
virtual ODESolver* defaultSolver();
};
class RPNeuron3 : public RPNeuron1 {
public:
// Constructors and destructor
RPNeuron3(int nComp=1000);
virtual ~RPNeuron3();
};
};
#endif // #ifndef __NEURON_RALLPACK_H_