00001 /* 00002 00003 Copyright (C) University of Oxford, 2005-2010 00004 00005 University of Oxford means the Chancellor, Masters and Scholars of the 00006 University of Oxford, having an administrative office at Wellington 00007 Square, Oxford OX1 2JD, UK. 00008 00009 This file is part of Chaste. 00010 00011 Chaste is free software: you can redistribute it and/or modify it 00012 under the terms of the GNU Lesser General Public License as published 00013 by the Free Software Foundation, either version 2.1 of the License, or 00014 (at your option) any later version. 00015 00016 Chaste is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 00019 License for more details. The offer of Chaste under the terms of the 00020 License is subject to the License being interpreted in accordance with 00021 English Law and subject to any action against the University of Oxford 00022 being under the jurisdiction of the English Courts. 00023 00024 You should have received a copy of the GNU Lesser General Public License 00025 along with Chaste. If not, see <http://www.gnu.org/licenses/>. 00026 00027 */ 00028 #ifndef TYSONNOVAK2001ODESYSTEM_HPP_ 00029 #define TYSONNOVAK2001ODESYSTEM_HPP_ 00030 00031 #include <cmath> 00032 #include <iostream> 00033 00034 #include "AbstractOdeSystemWithAnalyticJacobian.hpp" 00035 00040 class TysonNovak2001OdeSystem : public AbstractOdeSystemWithAnalyticJacobian 00041 { 00042 private: 00043 00049 double mK1; 00051 double mK2d; 00053 double mK2dd; 00055 double mK2ddd; 00057 double mCycB_threshold; 00059 double mK3d; 00061 double mK3dd; 00063 double mK4d; 00065 double mK4; 00067 double mJ3; 00069 double mJ4; 00071 double mK5d; 00073 double mK5dd; 00075 double mK6; 00077 double mJ5; 00079 unsigned mN; 00081 double mK7; 00083 double mK8; 00085 double mJ7; 00087 double mJ8; 00089 double mMad; 00091 double mK9; 00093 double mK10; 00095 double mK11; 00097 double mK12d; 00099 double mK12dd; 00101 double mK12ddd; 00103 double mKeq; 00105 double mK13; 00107 double mK14; 00109 double mK15d; 00111 double mK15dd; 00113 double mK16d; 00115 double mK16dd; 00117 double mJ15; 00119 double mJ16; 00121 double mMu; 00123 double mMstar; 00124 00125 public: 00126 00130 TysonNovak2001OdeSystem(); 00131 00135 ~TysonNovak2001OdeSystem(); 00136 00140 void Init(); 00141 00152 void EvaluateYDerivatives(double time, const std::vector<double>& rY, std::vector<double>& rDY); 00153 00163 bool CalculateStoppingEvent(double time, const std::vector<double>& rY); 00164 00174 double CalculateRootFunction(double time, const std::vector<double>& rY); 00175 00184 virtual void AnalyticJacobian(const std::vector<double>& rSolutionGuess, double** jacobian, double time, double timeStep); 00185 }; 00186 00187 #endif /*TYSONNOVAK2001ODESYSTEM_HPP_*/