00001
00002
00004
00005 #if !defined(AFX_QUALITYCONTROLRK2TMOVER_H__5466FBF7_4694_4098_8D01_F8D84335A75B__INCLUDED_)
00006 #define AFX_QUALITYCONTROLRK2TMOVER_H__5466FBF7_4694_4098_8D01_F8D84335A75B__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011
00012 #include <stdexcept>
00013 #include <cmath>
00014 #include <stdio.h>
00015 #include <fstream>
00016 #include <iostream>
00017 #include "RK2TMover.h"
00018 using namespace std;
00019
00020
00021 class CQualityControlRK2TMover : public CRK2TMover
00022 {
00023 public:
00024 CQualityControlRK2TMover(double frequency, double stepSize, double eps=1.0e-05);
00025 virtual ~CQualityControlRK2TMover();
00026 void Stepper(int nRHS, double *y, double *dydt);
00027 void Move(double xInitial, double xFinal, ReactionNetwork *pReactionNetwork);
00028 private:
00029 double m_dEps;
00030 double m_dLastStep,m_dNextStep,m_dInitialStepSize;
00031 double *m_pdScale;
00032 static const double m_scdPGROW;
00033 static const double m_scdPSHRINK;
00034 static const double m_scdFCOR;
00035 static const double m_scdSAFETY;
00036 static const double m_scdERRCON;
00037 static const double m_scdTINY;
00038 };
00039
00040 #endif // !defined(AFX_QUALITYCONTROLRK2TMOVER_H__5466FBF7_4694_4098_8D01_F8D84335A75B__INCLUDED_)
00041
00042