/********************************************************************** ** This program is part of 'MOOSE', the ** Messaging Object Oriented Simulation Environment. ** Copyright (C) 2003-2010 Upinder S. Bhalla. and NCBS ** It is made available under the terms of the ** GNU Lesser General Public License version 2.1 ** See the file COPYING.LIB for the full notice. **********************************************************************/ #ifndef _REAC_BASE_H #define _REAC_BASE_H class ReacBase { public: ReacBase(); virtual ~ReacBase(); ////////////////////////////////////////////////////////////////// // Field assignment stuff ////////////////////////////////////////////////////////////////// void setNumKf( const Eref&e, double v ); double getNumKf( const Eref& e ) const; void setNumKb( const Eref&e, double v ); double getNumKb( const Eref& e ) const; /// set Kf in concentration units void setConcKf( const Eref& e, double v ); /// get Kf in concentration units double getConcKf( const Eref& e ) const; /// set Kb in concentration units void setConcKb( const Eref& e, double v ); /// get Kb in concentration units double getConcKb( const Eref& e ) const; /// Get number of substrates unsigned int getNumSub( const Eref& e ) const; /// Get number of products unsigned int getNumPrd( const Eref& e ) const; ////////////////////////////////////////////////////////////////// // Inner virtual funcs for all the fields. virtual void vSetNumKf( const Eref&e, double v ) =0; virtual double vGetNumKf( const Eref& e ) const = 0; virtual void vSetNumKb( const Eref&e, double v ) =0; virtual double vGetNumKb( const Eref& e ) const = 0; virtual void vSetConcKf( const Eref& e, double v ) =0; virtual double vGetConcKf( const Eref& e ) const = 0; virtual void vSetConcKb( const Eref& e, double v ) = 0; virtual double vGetConcKb( const Eref& e ) const = 0; // virtual unsigned int vGetNumSub( const Eref& e ) const = 0; // virtual unsigned int vGetNumPrd( const Eref& e ) const = 0; ////////////////////////////////////////////////////////////////// /** * Zombification functions. */ static void zombify( Element* original, const Cinfo* zClass, Id solver ); /// Assign solver info virtual void setSolver( Id solver, Id orig ); ////////////////////////////////////////////////////////////////// // Dest funcs ////////////////////////////////////////////////////////////////// void process( const Eref& e, ProcPtr p ); void reinit( const Eref& e, ProcPtr p ); void sub( double v ); void prd( double v ); void remesh( const Eref& e ); ////////////////////////////////////////////////////////////////// // Inner virtual funcs for the dest operations. Mostly do-nothing. virtual void vProcess( const Eref& e, ProcPtr p ); virtual void vReinit( const Eref& e, ProcPtr p ); virtual void vSub( double v ); virtual void vPrd( double v ); virtual void vRemesh( const Eref& e ); ////////////////////////////////////////////////////////////////// static const Cinfo* initCinfo(); protected: double concKf_; // Kf in concentration and time units double concKb_; // Kb in concentration and time units }; #endif // REAC_BASE_H