00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef _VOXEL_POOLS_H
00011 #define _VOXEL_POOLS_H
00012
00013 class Stoich;
00018 class VoxelPools: public VoxelPoolsBase
00019 {
00020 public:
00021 VoxelPools();
00022 virtual ~VoxelPools();
00023
00025 void reinit( double dt );
00027
00029
00034 void setStoich( Stoich* stoich, const OdeSystem* ode );
00035
00037 void advance( const ProcInfo* p );
00038
00040 void setInitDt( double dt );
00041
00043 static int gslFunc( double t, const double* y, double *dydt,
00044 void* params );
00045
00047
00050 void setVolumeAndDependencies( double vol );
00051
00053 void updateAllRateTerms( const vector< RateTerm* >& rates,
00054 unsigned int numCoreRates );
00061 void updateRateTerms( const vector< RateTerm* >& rates,
00062 unsigned int numCoreRates, unsigned int index );
00063
00068 void updateRates( const double* s, double* yprime ) const;
00069
00076 void updateReacVelocities(
00077 const double* s, vector< double >& v ) const;
00078
00084
00085 void print() const;
00086 private:
00087 #ifdef USE_GSL
00088 gsl_odeiv2_driver* driver_;
00089 gsl_odeiv2_system sys_;
00090 #endif
00091 };
00092
00093 #endif // _VOXEL_POOLS_H