00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef _CA_CONC_BASE_H
00012 #define _CA_CONC_BASE_H
00013
00038 class CaConcBase
00039 {
00040 public:
00041 CaConcBase();
00043
00045 void reinit( const Eref&, ProcPtr info );
00046 void process( const Eref&, ProcPtr info );
00047
00048 void current( const Eref& e, double I );
00049 void currentFraction( const Eref& e, double I, double fraction );
00050 void increase( const Eref& e, double I );
00051 void decrease( const Eref& e, double I );
00053
00055 virtual void vReinit( const Eref&, ProcPtr info ) = 0;
00056 virtual void vProcess( const Eref&, ProcPtr info ) = 0;
00057
00058 virtual void vCurrent( const Eref& e, double I ) = 0;
00059 virtual void vCurrentFraction( const Eref& e, double I, double fraction ) = 0;
00060 virtual void vIncrease( const Eref& e, double I ) = 0;
00061 virtual void vDecrease( const Eref& e, double I ) = 0;
00063
00065 void setCa( const Eref& e, double val );
00066 double getCa( const Eref& e ) const;
00067 void setCaBasal( const Eref& e, double val );
00068 double getCaBasal( const Eref& e ) const;
00069 void setTau( const Eref& e, double val );
00070 double getTau( const Eref& e ) const;
00071 void setB( const Eref& e, double val );
00072 double getB( const Eref& e ) const;
00073 void setCeiling( const Eref& e, double val );
00074 double getCeiling( const Eref& e ) const;
00075 void setFloor( const Eref& e, double val );
00076 double getFloor( const Eref& e ) const;
00077 void setThickness( const Eref& e, double val );
00078 double getThickness( const Eref& e ) const;
00079 void setLength( const Eref& e, double val );
00080 double getLength( const Eref& e ) const;
00081 void setDiameter( const Eref& e, double val );
00082 double getDiameter( const Eref& e ) const;
00084
00086 virtual void vSetCa( const Eref& e, double val ) = 0;
00087 virtual double vGetCa( const Eref& e ) const = 0;
00088 virtual void vSetCaBasal( const Eref& e, double val ) = 0;
00089 virtual double vGetCaBasal( const Eref& e ) const = 0;
00090 virtual void vSetTau( const Eref& e, double val ) = 0;
00091 virtual double vGetTau( const Eref& e ) const = 0;
00092 virtual void vSetB( const Eref& e, double val ) = 0;
00093 virtual double vGetB( const Eref& e ) const = 0;
00094 virtual void vSetCeiling( const Eref& e, double val ) = 0;
00095 virtual double vGetCeiling( const Eref& e ) const = 0;
00096 virtual void vSetFloor( const Eref& e, double val ) = 0;
00097 virtual double vGetFloor( const Eref& e ) const = 0;
00098
00100
00101 void updateDimensions( const Eref& e );
00102
00104 virtual void vSetSolver( const Eref& e, Id hsolve );
00105
00109 static void zombify( Element* orig, const Cinfo* zClass,
00110 Id hsolve );
00111
00112
00113
00114
00115
00116
00117
00118 static SrcFinfo1< double >* concOut();
00119
00120 static const Cinfo* initCinfo();
00121 private:
00122 double thickness_;
00123 double diameter_;
00124 double length_;
00125 };
00126
00127
00128 #endif // _CA_CONC_BASE_H