Fix tutorials: typo in tutorials/viscoelastic/viscoelasticFluidFoam/S-MDCPP/constant...
[OpenFOAM-1.6-ext.git] / src / finiteVolume / interpolation / surfaceInterpolation / schemes / quadraticLinearFit / quadraticLinearFitPolynomial.H
blob2599e7f64590179597a6255ef58d51f87ccf013f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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::quadraticLinearFitPolynomial
28 Description
29     Quadratic/linear polynomial for interpolation fitting:
30         quadratic normal to the face,
31         linear in the plane of the face for consistency with 2nd-order Gauss.
33     Can be used with the CentredFit scheme to create a quadratic surface
34     interpolation scheme
36 \*---------------------------------------------------------------------------*/
38 #ifndef quadraticLinearFitPolynomial_H
39 #define quadraticLinearFitPolynomial_H
41 #include "vector.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                            Class quadraticLinearFitPolynomial Declaration
50 \*---------------------------------------------------------------------------*/
52 class quadraticLinearFitPolynomial
54 public:
56     // Member functions
58         static label nTerms(const direction dim)
59         {
60             return
61             (
62                 dim == 1 ? 3 :
63                 dim == 2 ? 5 :
64                 dim == 3 ? 7 : 0
65             );
66         }
68         static void addCoeffs
69         (
70             scalar* coeffs,
71             const vector& d,
72             const scalar weight,
73             const direction dim
74         )
75         {
76             register label curIdx = 0;
78             coeffs[curIdx++] = weight;
79             coeffs[curIdx++] = weight*d.x();
80             coeffs[curIdx++] = weight*sqr(d.x());
82             if (dim >= 2)
83             {
84                 coeffs[curIdx++] = weight*d.y();
85                 coeffs[curIdx++] = weight*d.x()*d.y();
86             }
87             if (dim == 3)
88             {
89                 coeffs[curIdx++] = weight*d.z();
90                 coeffs[curIdx++] = weight*d.x()*d.z();
91             }
92         }
96 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
98 } // End namespace Foam
100 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
102 #endif
104 // ************************************************************************* //