leastSquaresCellCellStencil.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2017 OpenCFD Ltd.
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::cellCellStencils::leastSquares
28
29Description
30 Least-squares-weighted interpolation stencil.
31
32 Base machinery is similar to inverse distance interpolation stencil
33 but weights minimize error in LSQ sense recovering exact solution
34 for linear solution problems. Gradient and values are found
35 simultaneously.
36
37SourceFiles
38 leastSquaresCellCellStencil.C
39
40\*---------------------------------------------------------------------------*/
41
42#ifndef cellCellStencils_leastSquares_H
43#define cellCellStencils_leastSquares_H
44
46
47// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48
49namespace Foam
50{
51
52namespace cellCellStencils
53{
54
55/*---------------------------------------------------------------------------*\
56 Class leastSquares Declaration
57\*---------------------------------------------------------------------------*/
59class leastSquares
60:
61 public inverseDistance
62{
63 // Private Member Functions
64
65 //- No copy construct
66 leastSquares(const leastSquares&) = delete;
67
68 //- No copy assignment
69 void operator=(const leastSquares&) = delete;
70
71
72public:
73
74 //- Runtime type information
75 TypeName("leastSquares");
76
77
78 // Constructors
79
80 //- Construct from fvMesh
81 leastSquares(const fvMesh&, const dictionary&, const bool);
82
83
84 //- Destructor
85 virtual ~leastSquares();
86
87
88 // Member Functions
89
90 //- Calculate lsq weights for single acceptor
91 virtual void stencilWeights
92 (
93 const point& sample,
94 const pointList& donorCcs,
95 scalarList& weights
96 ) const;
97};
98
99
100// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
101
102} // End namespace cellCellStencils
103} // End namespace Foam
104
105// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106
107#endif
108
109// ************************************************************************* //
Minimal example by using system/controlDict.functions:
Inverse-distance-weighted interpolation stencil.
Least-squares-weighted interpolation stencil.
virtual void stencilWeights(const point &sample, const pointList &donorCcs, scalarList &weights) const
Calculate lsq weights for single acceptor.
TypeName("leastSquares")
Runtime type information.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:91
Namespace for OpenFOAM.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73