00001 // MixedReactionMover.h: interface for the CMixedReactionMover class. 00002 // 00004 00005 #if !defined(AFX_MIXEDREACTIONMOVER_H__2117D24C_7166_498D_BC54_5884EA886F47__INCLUDED_) 00006 #define AFX_MIXEDREACTIONMOVER_H__2117D24C_7166_498D_BC54_5884EA886F47__INCLUDED_ 00007 00008 #if _MSC_VER > 1000 00009 #pragma once 00010 #endif // _MSC_VER > 1000 00011 00012 #ifndef _WIN32 00013 #include <algorithm> 00014 using namespace std; 00015 #define __min min 00016 #define __max max 00017 #endif 00018 00019 #include <stdexcept> 00020 #include "MixedReactionNetwork.h" 00021 #include "ReactionMover.h" 00022 #include "DifferentialEquationMover.h" 00023 #include "Rand.h" 00024 #include "typedefs.h" 00025 #include "TauNetwork.h" 00026 00027 00028 class CMixedReactionMover : public CReactionMover 00029 { 00030 public: 00031 CMixedReactionMover(); 00032 CMixedReactionMover(int seed, CDifferentialEquationMover *pODEMover, double absTol); 00033 virtual ~CMixedReactionMover(); 00034 void Move(double xInitial, double xFinal, ReactionNetwork *pReactionNetwork); 00035 void DoStochasticMove(double dRand); 00036 private: 00037 CDifferentialEquationMover *m_pODEMover; 00038 CMixedReactionNetwork *m_pMixedReactionNetwork; 00039 CTauNetwork *m_pTauNetwork; 00040 Rand *m_pRNG; 00041 // absolute error tolerance 00042 double m_dAbsTol; 00043 }; 00044 00045 #endif // !defined(AFX_MIXEDREACTIONMOVER_H__2117D24C_7166_498D_BC54_5884EA886F47__INCLUDED_)