00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _POOL_BASE_H
00011 #define _POOL_BASE_H
00012
00018 typedef unsigned int SpeciesId;
00019 extern const SpeciesId DefaultSpeciesId;
00020
00030 class PoolBase
00031 {
00032 friend void testSyncArray( unsigned int size, unsigned int numThreads,
00033 unsigned int method );
00034 friend void checkVal( double time, const PoolBase* m, unsigned int size );
00035 friend void forceCheckVal( double time, Element* e, unsigned int size );
00036
00037 public:
00038 PoolBase();
00039 virtual ~PoolBase();
00040
00042
00043
00044
00046 void setN( const Eref& e, double v );
00047 double getN( const Eref& e ) const;
00048 void setNinit( const Eref& e, double v );
00049 double getNinit( const Eref& e ) const;
00050 void setDiffConst( const Eref& e, double v );
00051 double getDiffConst( const Eref& e ) const;
00052 void setMotorConst( const Eref& e, double v );
00053 double getMotorConst( const Eref& e ) const;
00054
00055 void setConc( const Eref& e, double v );
00056 double getConc( const Eref& e ) const;
00057 void setConcInit( const Eref& e, double v );
00058 double getConcInit( const Eref& e ) const;
00059
00066 void setVolume( const Eref& e, double v );
00067 double getVolume( const Eref& e ) const;
00068
00069 void setSpecies( const Eref& e, SpeciesId v );
00070 SpeciesId getSpecies( const Eref& e ) const;
00071
00073
00074
00076
00077 virtual void vSetN( const Eref& e, double v ) = 0;
00078 virtual double vGetN( const Eref& e ) const = 0;
00079 virtual void vSetNinit( const Eref& e, double v ) = 0;
00080 virtual double vGetNinit( const Eref& e ) const = 0;
00081 virtual void vSetDiffConst( const Eref& e, double v ) = 0;
00082 virtual double vGetDiffConst( const Eref& e ) const = 0;
00083 virtual void vSetMotorConst( const Eref& e, double v );
00084 virtual double vGetMotorConst( const Eref& e ) const;
00085
00086 virtual void vSetConc( const Eref& e, double v ) = 0;
00087 virtual double vGetConc( const Eref& e ) const = 0;
00088 virtual void vSetConcInit( const Eref& e, double v ) = 0;
00089
00090 virtual double vGetVolume( const Eref& e ) const = 0;
00091 virtual void vSetVolume( const Eref& e, double v ) = 0;
00092 virtual void vSetSpecies( const Eref& e, SpeciesId v ) = 0;
00093 virtual SpeciesId vGetSpecies( const Eref& e ) const = 0;
00100 virtual void vSetSolver( Id ksolve, Id dsolve );
00101
00103
00119 static void zombify( Element* original, const Cinfo* zClass,
00120 Id ksolve, Id dsolve );
00121
00123
00125 void process( const Eref& e, ProcPtr p );
00126 void reinit( const Eref& e, ProcPtr p );
00127 void reac( double A, double B );
00128 void handleMolWt( const Eref& e, double v );
00129
00131
00132
00133
00135 virtual void vProcess( const Eref& e, ProcPtr p );
00136 virtual void vReinit( const Eref& e, ProcPtr p );
00137 virtual void vReac( double A, double B );
00138 virtual void vHandleMolWt( const Eref& e, double v);
00139
00141 static const Cinfo* initCinfo();
00142 private:
00143 double concInit_;
00144
00145
00146 };
00147
00148 #endif // _POOL_BASE_H