#include <CompartmentBase.h>
Public Member Functions | |
CompartmentBase () | |
virtual | ~CompartmentBase () |
void | setVm (const Eref &e, double Vm) |
double | getVm (const Eref &e) const |
void | setEm (const Eref &e, double Em) |
double | getEm (const Eref &e) const |
void | setCm (const Eref &e, double Cm) |
double | getCm (const Eref &e) const |
void | setRm (const Eref &e, double Rm) |
double | getRm (const Eref &e) const |
void | setRa (const Eref &e, double Ra) |
double | getRa (const Eref &e) const |
double | getIm (const Eref &e) const |
void | setInject (const Eref &e, double Inject) |
double | getInject (const Eref &e) const |
void | setInitVm (const Eref &e, double initVm) |
double | getInitVm (const Eref &e) const |
void | setDiameter (double diameter) |
double | getDiameter () const |
void | setLength (double length) |
double | getLength () const |
void | setX0 (double value) |
double | getX0 () const |
void | setY0 (double value) |
double | getY0 () const |
void | setZ0 (double value) |
double | getZ0 () const |
void | setX (double value) |
double | getX () const |
void | setY (double value) |
double | getY () const |
void | setZ (double value) |
double | getZ () const |
void | process (const Eref &e, ProcPtr p) |
void | reinit (const Eref &e, ProcPtr p) |
void | initProc (const Eref &e, ProcPtr p) |
void | initReinit (const Eref &e, ProcPtr p) |
void | handleChannel (const Eref &e, double Gk, double Ek) |
void | handleRaxial (double Ra, double Vm) |
void | handleAxial (double Vm) |
void | injectMsg (const Eref &e, double current) |
void | randInject (const Eref &e, double prob, double current) |
void | cable () |
void | displace (double dx, double dy, double dz) |
Displaces compartment by specified distance vector. | |
void | setGeomAndElec (const Eref &e, double length, double dia) |
Scales electrical values along with setting length, dia. | |
virtual void | vSetVm (const Eref &e, double Vm)=0 |
virtual double | vGetVm (const Eref &e) const =0 |
virtual void | vSetEm (const Eref &e, double Em)=0 |
virtual double | vGetEm (const Eref &e) const =0 |
virtual void | vSetCm (const Eref &e, double Cm)=0 |
virtual double | vGetCm (const Eref &e) const =0 |
virtual void | vSetRm (const Eref &e, double Rm)=0 |
virtual double | vGetRm (const Eref &e) const =0 |
virtual void | vSetRa (const Eref &e, double Ra)=0 |
virtual double | vGetRa (const Eref &e) const =0 |
virtual double | vGetIm (const Eref &e) const =0 |
virtual void | vSetInject (const Eref &e, double Inject)=0 |
virtual double | vGetInject (const Eref &e) const =0 |
virtual void | vSetInitVm (const Eref &e, double initVm)=0 |
virtual double | vGetInitVm (const Eref &e) const =0 |
virtual void | vProcess (const Eref &e, ProcPtr p)=0 |
virtual void | vReinit (const Eref &e, ProcPtr p)=0 |
virtual void | vInitProc (const Eref &e, ProcPtr p)=0 |
virtual void | vInitReinit (const Eref &e, ProcPtr p)=0 |
virtual void | vHandleChannel (const Eref &e, double Gk, double Ek)=0 |
virtual void | vHandleRaxial (double Ra, double Vm)=0 |
virtual void | vHandleAxial (double Vm)=0 |
virtual void | vInjectMsg (const Eref &e, double current)=0 |
virtual void | vRandInject (const Eref &e, double prob, double current)=0 |
virtual void | vSetSolver (const Eref &e, Id hsolve) |
bool | rangeWarning (const string &field, double value) |
void | updateLength () |
Static Public Member Functions | |
static const Cinfo * | initCinfo () |
static SrcFinfo1< double > * | VmOut () |
static void | zombify (Element *orig, const Cinfo *zClass, Id hsolve) |
CompartmentBase::CompartmentBase | ( | ) |
CompartmentBase::~CompartmentBase | ( | ) | [virtual] |
void CompartmentBase::cable | ( | ) |
Dummy function to act as recipient of 'cable' message, which is just for grouping compartments.
Reimplemented in moose::Compartment.
Referenced by initCinfo().
void CompartmentBase::displace | ( | double | dx, | |
double | dy, | |||
double | dz | |||
) |
Displaces compartment by specified distance vector.
Referenced by initCinfo().
double CompartmentBase::getCm | ( | const Eref & | e | ) | const |
References vGetCm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getDiameter | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getEm | ( | const Eref & | e | ) | const |
References vGetEm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getIm | ( | const Eref & | e | ) | const |
double CompartmentBase::getInitVm | ( | const Eref & | e | ) | const |
References vGetInitVm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getInject | ( | const Eref & | e | ) | const |
References vGetInject().
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getLength | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getRa | ( | const Eref & | e | ) | const |
References vGetRa().
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getRm | ( | const Eref & | e | ) | const |
References vGetRm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getVm | ( | const Eref & | e | ) | const |
double CompartmentBase::getX | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getX0 | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getY | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getY0 | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getZ | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
double CompartmentBase::getZ0 | ( | ) | const |
Referenced by initCinfo(), and moose::CompartmentDataHolder::readData().
void CompartmentBase::handleAxial | ( | double | Vm | ) |
handleAxial handles incoming axial message data.
References vHandleAxial().
Referenced by initCinfo().
void CompartmentBase::handleChannel | ( | const Eref & | e, | |
double | Gk, | |||
double | Ek | |||
) |
handleChannel handles information coming from the channel to the compartment
References vHandleChannel().
Referenced by initCinfo().
void CompartmentBase::handleRaxial | ( | double | Ra, | |
double | Vm | |||
) |
handleRaxial handles incoming raxial message data.
References vHandleRaxial().
Referenced by initCinfo().
const Cinfo * CompartmentBase::initCinfo | ( | ) | [static] |
Initializes the class info.
The initCinfo() function sets up the CompartmentBase class. This function uses the common trick of having an internal static value which is created the first time the function is called. There are several static arrays set up here. The ones which use SharedFinfos are for shared messages where multiple kinds of information go along the same connection.
Reimplemented in moose::Compartment, SymCompartment, and ZombieCompartment.
References axialOut, cable(), displace(), getCm(), getDiameter(), getEm(), getIm(), getInitVm(), getInject(), getLength(), getRa(), getRm(), getVm(), getX(), getX0(), getY(), getY0(), getZ(), getZ0(), handleAxial(), handleChannel(), handleRaxial(), init(), Neutral::initCinfo(), initProc(), initReinit(), injectMsg(), process(), randInject(), raxialOut, reinit(), setCm(), setDiameter(), setEm(), setGeomAndElec(), setInitVm(), setInject(), setLength(), setRa(), setRm(), setVm(), setX(), setX0(), setY(), setY0(), setZ(), setZ0(), VmOut(), and y.
Referenced by moose::Compartment::initCinfo().
The initProc function is for a second phase of 'process' operations. It sends the axial and raxial messages to other compartments. It has to be executed out of phase with the main process so that all compartments are equivalent and there is no calling order dependence in the results.
References vInitProc().
Referenced by initCinfo().
Empty function to do another reinit step out of phase with the main one. Nothing needs doing there.
References vInitReinit().
Referenced by initCinfo().
void CompartmentBase::injectMsg | ( | const Eref & | e, | |
double | current | |||
) |
Injects a constantly updated current into the compartment. Unlike the 'inject' field, this injected current is applicable only for a single timestep. So this is meant to be used as the destination of a message rather than as a one-time assignment.
References vInjectMsg().
Referenced by initCinfo().
The process function does the object updating and sends out messages to channels, nernsts, and so on.
References vProcess().
Referenced by initCinfo().
void CompartmentBase::randInject | ( | const Eref & | e, | |
double | prob, | |||
double | current | |||
) |
Injects a constantly updated current into the compartment, with a probability prob. Note that it isn't the current amplitude that is random, it is the presence or absence of the current that is probabilistic.
References vRandInject().
Referenced by initCinfo().
bool moose::CompartmentBase::rangeWarning | ( | const string & | field, | |
double | value | |||
) |
A utility function to check for assignment to fields that must be > 0
Referenced by setCm(), setRa(), setRm(), ZombieCompartment::vSetCm(), moose::Compartment::vSetCm(), ZombieCompartment::vSetRa(), moose::Compartment::vSetRa(), ZombieCompartment::vSetRm(), and moose::Compartment::vSetRm().
The reinit function reinitializes all fields.
References vReinit().
Referenced by initCinfo().
void CompartmentBase::setCm | ( | const Eref & | e, | |
double | Cm | |||
) |
References rangeWarning(), and vSetCm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setDiameter | ( | double | diameter | ) |
Referenced by initCinfo(), setGeomAndElec(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setEm | ( | const Eref & | e, | |
double | Em | |||
) |
References vSetEm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setGeomAndElec | ( | const Eref & | e, | |
double | length, | |||
double | dia | |||
) |
Scales electrical values along with setting length, dia.
References allChildren(), ALLDATA, doubleEq(), Eref::objId(), setDiameter(), setLength(), vGetCm(), vGetRa(), vGetRm(), vSetCm(), vSetRa(), and vSetRm().
Referenced by initCinfo().
void CompartmentBase::setInitVm | ( | const Eref & | e, | |
double | initVm | |||
) |
References vSetInitVm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setInject | ( | const Eref & | e, | |
double | Inject | |||
) |
References vSetInject().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setLength | ( | double | length | ) |
References doubleEq().
Referenced by initCinfo(), setGeomAndElec(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setRa | ( | const Eref & | e, | |
double | Ra | |||
) |
References rangeWarning(), and vSetRa().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setRm | ( | const Eref & | e, | |
double | Rm | |||
) |
References rangeWarning(), and vSetRm().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setVm | ( | const Eref & | e, | |
double | Vm | |||
) |
void CompartmentBase::setX | ( | double | value | ) |
References updateLength().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setX0 | ( | double | value | ) |
References updateLength().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setY | ( | double | value | ) |
References updateLength().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setY0 | ( | double | value | ) |
References updateLength().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setZ | ( | double | value | ) |
References updateLength().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::setZ0 | ( | double | value | ) |
References updateLength().
Referenced by initCinfo(), and moose::CompartmentDataHolder::writeData().
void CompartmentBase::updateLength | ( | ) |
virtual double moose::CompartmentBase::vGetCm | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getCm(), and setGeomAndElec().
virtual double moose::CompartmentBase::vGetEm | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getEm().
virtual double moose::CompartmentBase::vGetIm | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getIm().
virtual double moose::CompartmentBase::vGetInitVm | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getInitVm().
virtual double moose::CompartmentBase::vGetInject | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getInject().
virtual double moose::CompartmentBase::vGetRa | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getRa(), and setGeomAndElec().
virtual double moose::CompartmentBase::vGetRm | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getRm(), and setGeomAndElec().
virtual double moose::CompartmentBase::vGetVm | ( | const Eref & | e | ) | const [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by getVm().
virtual void moose::CompartmentBase::vHandleAxial | ( | double | Vm | ) | [pure virtual] |
handleAxial handles incoming axial message data.
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by handleAxial().
virtual void moose::CompartmentBase::vHandleChannel | ( | const Eref & | e, | |
double | Gk, | |||
double | Ek | |||
) | [pure virtual] |
handleChannel handles information coming from the channel to the compartment
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by handleChannel().
virtual void moose::CompartmentBase::vHandleRaxial | ( | double | Ra, | |
double | Vm | |||
) | [pure virtual] |
handleRaxial handles incoming raxial message data.
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by handleRaxial().
The initProc function is for a second phase of 'process' operations. It sends the axial and raxial messages to other compartments. It has to be executed out of phase with the main process so that all compartments are equivalent and there is no calling order dependence in the results.
Implemented in moose::Compartment, SymCompartment, and ZombieCompartment.
Referenced by initProc().
Empty function to do another reinit step out of phase with the main one. Nothing needs doing there.
Implemented in moose::Compartment, SymCompartment, and ZombieCompartment.
Referenced by initReinit().
virtual void moose::CompartmentBase::vInjectMsg | ( | const Eref & | e, | |
double | current | |||
) | [pure virtual] |
Injects a constantly updated current into the compartment. Unlike the 'inject' field, this injected current is applicable only for a single timestep. So this is meant to be used as the destination of a message rather than as a one-time assignment.
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by injectMsg().
SrcFinfo1< double > * CompartmentBase::VmOut | ( | ) | [static] |
This Finfo is used to send out Vm to channels, spikegens, etc
It is exposed here so that HSolve can also use it to send out the Vm to the recipients.
Referenced by initCinfo(), moose::Compartment::vProcess(), and moose::Compartment::vReinit().
The process function does the object updating and sends out messages to channels, nernsts, and so on.
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by process().
virtual void moose::CompartmentBase::vRandInject | ( | const Eref & | e, | |
double | prob, | |||
double | current | |||
) | [pure virtual] |
Injects a constantly updated current into the compartment, with a probability prob. Note that it isn't the current amplitude that is random, it is the presence or absence of the current that is probabilistic.
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by randInject().
The reinit function reinitializes all fields.
Implemented in moose::Compartment, SymCompartment, and ZombieCompartment.
Referenced by reinit().
virtual void moose::CompartmentBase::vSetCm | ( | const Eref & | e, | |
double | Cm | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setCm(), and setGeomAndElec().
virtual void moose::CompartmentBase::vSetEm | ( | const Eref & | e, | |
double | Em | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setEm().
virtual void moose::CompartmentBase::vSetInitVm | ( | const Eref & | e, | |
double | initVm | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setInitVm().
virtual void moose::CompartmentBase::vSetInject | ( | const Eref & | e, | |
double | Inject | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setInject().
virtual void moose::CompartmentBase::vSetRa | ( | const Eref & | e, | |
double | Ra | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setGeomAndElec(), and setRa().
virtual void moose::CompartmentBase::vSetRm | ( | const Eref & | e, | |
double | Rm | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setGeomAndElec(), and setRm().
Reimplemented in ZombieCompartment.
Referenced by zombify().
virtual void moose::CompartmentBase::vSetVm | ( | const Eref & | e, | |
double | Vm | |||
) | [pure virtual] |
Implemented in moose::Compartment, and ZombieCompartment.
Referenced by setVm().
This function is used to swap Cinfos of any CompartmentBase derived class. Used for making ZombieCompartments.
References Element::cinfo(), Eref::data(), Element::localDataStart(), Element::numLocalData(), vSetSolver(), and Element::zombieSwap().