00001 // ReactionMover.h: interface for the CReactionMover class. 00002 // 00004 00005 #include "ReactionNetwork.h" 00006 #include <fstream> 00007 00008 #if !defined(AFX_REACTIONMOVER_H__9391CECD_F146_11D3_8680_00A0C9B3BAB6__INCLUDED_) 00009 #define AFX_REACTIONMOVER_H__9391CECD_F146_11D3_8680_00A0C9B3BAB6__INCLUDED_ 00010 00011 #if _MSC_VER > 1000 00012 #pragma once 00013 #endif // _MSC_VER > 1000 00014 00015 class CReactionMover : public Subject 00016 { 00017 public: 00018 CReactionMover(); 00019 CReactionMover(int seed, double frequency); 00020 virtual ~CReactionMover(); 00021 virtual void Move(double xInitial, double xFinal, ReactionNetwork *pReactionNetwork) = 0; 00022 int GetTimeCount() const {return m_iCount;} 00023 int GetSeed() const {return m_iSeed;} 00024 ReactionNetwork *GetReactionNetwork() {return m_pReactionNetwork;} 00025 bool MoveTimeIsZero(double deltaTime); 00026 virtual void SetMinStepSize(double size) {m_dMinStepSize = size;} 00027 virtual double GetMinStepSize() const {return m_dMinStepSize;} 00028 virtual void SetMaxStepSize(double size) {m_dMaxStepSize = size;} 00029 virtual double GetMaxStepSize() const {return m_dMaxStepSize;} 00030 virtual void IncrementTotalSteps() {m_iTotalStepsTaken++;} 00031 virtual int GetTotalStepsTaken() const {return m_iTotalStepsTaken;} 00032 virtual void ResetStepStatistics(double interval); 00033 protected: 00034 double m_dTime; 00035 int m_iCount; 00036 int m_iSeed; 00037 double m_dFrequency; 00038 ReactionNetwork *m_pReactionNetwork; 00039 // smallest stepsize used; may only be useful for var. step diff. eq. movers 00040 double m_dMinStepSize; 00041 // largest stepsize used; may only be useful for var. step diff. eq. movers 00042 double m_dMaxStepSize; 00043 // total number of steps taken; may only be useful for var. step diff. eq. movers 00044 int m_iTotalStepsTaken; 00045 00046 }; 00047 00048 #endif // !defined(AFX_REACTIONMOVER_H__9391CECD_F146_11D3_8680_00A0C9B3BAB6__INCLUDED_)