ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / ODE / ODESolvers / SIBS / SIBS.H
blob7c1d9c6fbeeecb9a6304d892506a5afec00d8061
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::SIBS
27 Description
28     Foam::SIBS
30 SourceFiles
31     SIMPR.C
32     polyExtrapolate.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef SIBS_H
37 #define SIBS_H
39 #include "ODESolver.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                            Class SIBS Declaration
48 \*---------------------------------------------------------------------------*/
50 class SIBS
52     public ODESolver
54     // Private data
56         static const label kMaxX_ = 7, iMaxX_ = kMaxX_ + 1;
57         static const label nSeq_[iMaxX_];
59         static const scalar safe1, safe2, redMax, redMin, scaleMX;
61         mutable scalarField a_;
62         mutable scalarSquareMatrix alpha_;
63         mutable scalarRectangularMatrix d_p_;
64         mutable scalarField x_p_;
65         mutable scalarField err_;
67         mutable scalarField yTemp_;
68         mutable scalarField ySeq_;
69         mutable scalarField yErr_;
70         mutable scalarField dfdx_;
71         mutable scalarSquareMatrix dfdy_;
73         mutable label first_, kMax_, kOpt_;
74         mutable scalar epsOld_, xNew_;
77     // Private Member Functions
79         void SIMPR
80         (
81             const ODE& ode,
82             const scalar xStart,
83             const scalarField& y,
84             const scalarField& dydx,
85             const scalarField& dfdx,
86             const scalarSquareMatrix& dfdy,
87             const scalar deltaX,
88             const label nSteps,
89             scalarField& yEnd
90         ) const;
92         void polyExtrapolate
93         (
94             const label iest,
95             const scalar xest,
96             const scalarField& yest,
97             scalarField& yz,
98             scalarField& dy,
99             scalarField& x_p,
100             scalarRectangularMatrix& d_p
101         ) const;
104 public:
106     //- Runtime type information
107     TypeName("SIBS");
110     // Constructors
112         //- Construct from ODE
113         SIBS(const ODE& ode);
116     // Member Functions
118         void solve
119         (
120             const ODE& ode,
121             scalar& x,
122             scalarField& y,
123             scalarField& dydx,
124             const scalar eps,
125             const scalarField& yScale,
126             const scalar hTry,
127             scalar& hDid,
128             scalar& hNext
129         ) const;
133 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
135 } // End namespace Foam
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 #endif
141 // ************************************************************************* //