00001 // DifferentialEquationMover.h: interface for the DifferentialEquationMover class. 00002 // 00004 00005 #if !defined(AFX_DIFFERENTIALEQUATIONMOVER_H__9C9D6A4F_D52C_47A0_A824_77A59D8026CC__INCLUDED_) 00006 #define AFX_DIFFERENTIALEQUATIONMOVER_H__9C9D6A4F_D52C_47A0_A824_77A59D8026CC__INCLUDED_ 00007 00008 #if _MSC_VER > 1000 00009 #pragma once 00010 #endif // _MSC_VER > 1000 00011 00012 #include <iomanip> 00013 #include <cmath> 00014 #include "ReactionMover.h" 00015 00016 class CDifferentialEquationMover : public CReactionMover 00017 { 00018 public: 00019 CDifferentialEquationMover(); 00020 CDifferentialEquationMover(double frequency, double stepSize); 00021 virtual ~CDifferentialEquationMover(); 00022 void ComputeDerivatives(double *chem, double *dChemdt); 00023 void ComputeJacobian(double *chem, double **dRHSdChem); 00024 virtual double GetStepSize() const {return m_dStepSize;} 00025 virtual void SetStepSize(double newSize); 00026 virtual void ResetStepSize(); 00027 virtual void Move(double xInitial, double xFinal, ReactionNetwork *pReactionNetwork) = 0; 00028 protected: 00029 double m_dStepSize; 00030 double m_dDefaultStepSize; 00031 }; 00032 00033 #endif // !defined(AFX_DIFFERENTIALEQUATIONMOVER_H__9C9D6A4F_D52C_47A0_A824_77A59D8026CC__INCLUDED_)