initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / ODE / ODESolvers / KRR4 / KRR4.H
blob771589b0accb07096e0e91659dca3716361b9cdb
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software; you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation; either version 2 of the License, or (at your
14     option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM; if not, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Class
26     Foam::KRR4
28 Description
29     Foam::KRR4
31 SourceFiles
32     KRR4CK.C
33     KRR4QS.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef KRR4_H
38 #define KRR4_H
40 #include "ODESolver.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 /*---------------------------------------------------------------------------*\
48                            Class KRR4 Declaration
49 \*---------------------------------------------------------------------------*/
51 class KRR4
53     public ODESolver
55     // Private data
57         mutable scalarField yTemp_;
58         mutable scalarField dydxTemp_;
59         mutable scalarField g1_;
60         mutable scalarField g2_;
61         mutable scalarField g3_;
62         mutable scalarField g4_;
63         mutable scalarField yErr_;
64         mutable scalarField dfdx_;
65         mutable scalarSquareMatrix dfdy_;
66         mutable scalarSquareMatrix a_;
67         mutable labelList pivotIndices_;
69         static const int maxtry = 40;
71         static const scalar safety, grow, pgrow, shrink, pshrink, errcon;
73         static const scalar
74             gamma,
75             a21, a31, a32,
76             c21, c31, c32, c41, c42, c43,
77             b1, b2, b3, b4,
78             e1, e2, e3, e4,
79             c1X, c2X, c3X, c4X,
80             a2X, a3X;
83 public:
85     //- Runtime type information
86     TypeName("KRR4");
89     // Constructors
91         //- Construct from ODE
92         KRR4(const ODE& ode);
95     // Member Functions
97         void solve
98         (
99             const ODE& ode,
100             scalar& x,
101             scalarField& y,
102             scalarField& dydx,
103             const scalar eps,
104             const scalarField& yScale,
105             const scalar hTry,
106             scalar& hDid,
107             scalar& hNext
108         ) const;
112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
114 } // End namespace Foam
116 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
118 #endif
120 // ************************************************************************* //