1 #ifndef _HHChannelBase_h
2 #define _HHChannelBase_h
14 typedef double ( *
PFDD )( double, double );
42 void setX(
const Eref& e,
double X );
44 void setY(
const Eref& e,
double Y );
46 void setZ(
const Eref& e,
double Z );
112 virtual void vSetX(
const Eref& e,
double X ) = 0;
113 virtual double vGetX(
const Eref& e )
const = 0;
114 virtual void vSetY(
const Eref& e,
double Y ) = 0;
115 virtual double vGetY(
const Eref& e )
const = 0;
116 virtual void vSetZ(
const Eref& e,
double Z ) = 0;
117 virtual double vGetZ(
const Eref& e )
const = 0;
153 static double power1(
double x,
double p ) {
156 static double power2(
double x,
double p ) {
159 static double power3(
double x,
double p ) {
162 static double power4(
double x,
double p ) {
163 return power2( x * x, p );
165 static double powerN(
double x,
double p );
192 #endif // _HHChannelBase_h
double getZpower(const Eref &e) const
double getYpower(const Eref &e) const
double modulation_
Value used to scale channel conductance up or down.
virtual void vSetY(const Eref &e, double Y)=0
virtual HHGate * vGetZgate(unsigned int i) const =0
virtual void vHandleConc(const Eref &e, double conc)=0
unsigned int getNumZgates() const
Returns 1 if Z gate present, otherwise 0.
virtual void vSetYpower(const Eref &e, double Ypower)=0
double Zpower_
Exponent for Z gate.
void setNumGates(unsigned int num)
void setInstant(const Eref &e, int Instant)
double vGetModulation(const Eref &e) const
static PFDD selectPower(double power)
void setY(const Eref &e, double Y)
unsigned int getNumYgates() const
Returns 1 if Y gate present, otherwise 0.
virtual void vCreateGate(const Eref &e, string gateType)=0
HHGate * getXgate(unsigned int i)
double getXpower(const Eref &e) const
void setUseConcentration(const Eref &e, int value)
HHGate * getZgate(unsigned int i)
unsigned int getNumXgates() const
virtual void vSetSolver(const Eref &e, Id hsolve)
virtual HHGate * vGetXgate(unsigned int i) const =0
double(* PFDD)(double, double)
virtual void vSetX(const Eref &e, double X)=0
double getY(const Eref &e) const
static double powerN(double x, double p)
void handleConc(const Eref &e, double conc)
static double power2(double x, double p)
void setZ(const Eref &e, double Z)
bool useConcentration_
Flag for use of conc for input to Z gate calculations.
static const Cinfo * initCinfo()
HHGate * getYgate(unsigned int i)
virtual double vGetX(const Eref &e) const =0
void createGate(const Eref &e, string gateType)
static void zombify(Element *orig, const Cinfo *zClass, Id hsolve)
virtual void vSetZpower(const Eref &e, double Zpower)=0
void setYpower(const Eref &e, double Ypower)
virtual void vSetZ(const Eref &e, double Z)=0
virtual double vGetY(const Eref &e) const =0
virtual void vSetInstant(const Eref &e, int Instant)=0
void setX(const Eref &e, double X)
double Ypower_
Exponent for Y gate.
static double power4(double x, double p)
int getInstant(const Eref &e) const
int getUseConcentration(const Eref &e) const
static double power1(double x, double p)
virtual void vSetXpower(const Eref &e, double Xpower)=0
double getX(const Eref &e) const
void setZpower(const Eref &e, double Zpower)
virtual int vGetInstant(const Eref &e) const =0
virtual double vGetZ(const Eref &e) const =0
virtual HHGate * vGetYgate(unsigned int i) const =0
void setXpower(const Eref &e, double Xpower)
double getZ(const Eref &e) const
virtual void vSetUseConcentration(const Eref &e, int value)=0
double Xpower_
Exponent for X gate.
static double power3(double x, double p)