00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _GSSA_VOXEL_POOLS_BASE_H
00011 #define _GSSA_VOXEL_POOLS_BASE_H
00012
00013 class Stoich;
00014 class GssaVoxelPools: public VoxelPoolsBase
00015 {
00016 public:
00017 GssaVoxelPools();
00018 virtual ~GssaVoxelPools();
00019
00020
00022
00024 void advance( const ProcInfo* p );
00025 void updateDependentMathExpn(
00026 const GssaSystem* g, unsigned int rindex );
00027 void updateDependentRates(
00028 const vector< unsigned int >& deps, const Stoich* stoich );
00029 unsigned int pickReac() const;
00030 void setNumReac( unsigned int n );
00031
00032 void advance( const ProcInfo* p, const GssaSystem* g );
00033
00039 bool refreshAtot( const GssaSystem* g );
00040
00044 void reinit( const GssaSystem* g );
00045
00046 void updateAllRateTerms( const vector< RateTerm* >& rates,
00047 unsigned int numCoreRates );
00048 void updateRateTerms( const vector< RateTerm* >& rates,
00049 unsigned int numCoreRates, unsigned int index );
00050
00051 double getReacVelocity( unsigned int r, const double* s ) const;
00052 void updateReacVelocities( const GssaSystem* g,
00053 const double* s, vector< double >& v ) const;
00054
00059 void setVolumeAndDependencies( double vol );
00060
00065 void xferIn( XferInfo& xf,
00066 unsigned int voxelIndex, const GssaSystem* g );
00067
00073 void xferInOnlyProxies(
00074 const vector< unsigned int >& poolIndex,
00075 const vector< double >& values,
00076 unsigned int numProxyPools,
00077 unsigned int voxelIndex );
00078
00079 void setStoich( const Stoich* stoichPtr );
00080
00081 private:
00083 double t_;
00084
00088 double atot_;
00089
00094 vector< double > v_;
00095
00096
00097 };
00098
00099 #endif // _GSSA_VOXEL_POOLS_H