Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / finiteArea / interpolation / edgeInterpolation / edgeInterpolate.C
blob66c6a9d8b1a664a60c3f2a0807528d28467738e2
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend 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 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Description
26 \*---------------------------------------------------------------------------*/
28 #include "edgeInterpolate.H"
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 namespace Foam
35 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 namespace fac
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 // Return weighting factors for scheme given by name in dictionary
43 template<class Type>
44 tmp<edgeInterpolationScheme<Type> > scheme
46     const edgeScalarField& faceFlux,
47     Istream& streamData
50     return edgeInterpolationScheme<Type>::New
51     (
52         faceFlux.mesh(),
53         faceFlux,
54         streamData
55     );
59 // Return weighting factors for scheme given by name in dictionary
60 template<class Type>
61 tmp<edgeInterpolationScheme<Type> > scheme
63     const edgeScalarField& faceFlux,
64     const word& name
67     return edgeInterpolationScheme<Type>::New
68     (
69         faceFlux.mesh(),
70         faceFlux,
71         faceFlux.mesh().schemesDict().interpolationScheme(name)
72     );
76 // Return weighting factors for scheme given by name in dictionary
77 template<class Type>
78 tmp<edgeInterpolationScheme<Type> > scheme
80     const faMesh& mesh,
81     Istream& streamData
84     return edgeInterpolationScheme<Type>::New
85     (
86         mesh,
87         streamData
88     );
92 // Return weighting factors for scheme given by name in dictionary
93 template<class Type>
94 tmp<edgeInterpolationScheme<Type> > scheme
96     const faMesh& mesh,
97     const word& name
100     return edgeInterpolationScheme<Type>::New
101     (
102         mesh,
103         mesh.schemesDict().interpolationScheme(name)
104     );
108 // Interpolate field onto faces using scheme given by name in dictionary
109 template<class Type>
110 tmp<GeometricField<Type, faePatchField, edgeMesh> >
111 interpolate
113     const GeometricField<Type, faPatchField, areaMesh>& vf,
114     const edgeScalarField& faceFlux,
115     Istream& schemeData
118 #   ifdef DEBUGInterpolations
119     if (edgeInterpolation::debug)
120     {
121         Info<< "interpolate"
122             << "(const GeometricField<Type, faPatchField, areaMesh>&, "
123             << "const edgeScalarField&, Istream&) : "
124             << "interpolating GeometricField<Type, faPatchField, areaMesh> "
125             << endl;
126     }
127 #   endif
129     return scheme<Type>(faceFlux, schemeData)().interpolate(vf);
133 // Interpolate field onto faces using scheme given by name in dictionary
134 template<class Type>
135 tmp<GeometricField<Type, faePatchField, edgeMesh> >
136 interpolate
138     const GeometricField<Type, faPatchField, areaMesh>& vf,
139     const edgeScalarField& faceFlux,
140     const word& name
143 #   ifdef DEBUGInterpolations
144     if (edgeInterpolation::debug)
145     {
146         Info<< "interpolate"
147             << "(const GeometricField<Type, faPatchField, areaMesh>&, "
148             << "const edgeScalarField&, const word&) : "
149             << "interpolating GeometricField<Type, faPatchField, areaMesh> "
150             << "using " << name
151             << endl;
152     }
153 #   endif
155     return scheme<Type>(faceFlux, name)().interpolate(vf);
158 // Interpolate field onto faces using scheme given by name in dictionary
159 template<class Type>
160 tmp<GeometricField<Type, faePatchField, edgeMesh> >
161 interpolate
163     const tmp<GeometricField<Type, faPatchField, areaMesh> >& tvf,
164     const edgeScalarField& faceFlux,
165     const word& name
168     tmp<GeometricField<Type, faePatchField, edgeMesh> > tsf =
169         interpolate(tvf(), faceFlux, name);
171     tvf.clear();
173     return tsf;
176 // Interpolate field onto faces using scheme given by name in dictionary
177 template<class Type>
178 tmp<GeometricField<Type, faePatchField, edgeMesh> >
179 interpolate
181     const GeometricField<Type, faPatchField, areaMesh>& vf,
182     const tmp<edgeScalarField>& tFaceFlux,
183     const word& name
186     tmp<GeometricField<Type, faePatchField, edgeMesh> > tsf =
187         interpolate(vf, tFaceFlux(), name);
189     tFaceFlux.clear();
191     return tsf;
194 // Interpolate field onto faces using scheme given by name in dictionary
195 template<class Type>
196 tmp<GeometricField<Type, faePatchField, edgeMesh> >
197 interpolate
199     const tmp<GeometricField<Type, faPatchField, areaMesh> >& tvf,
200     const tmp<edgeScalarField>& tFaceFlux,
201     const word& name
204     tmp<GeometricField<Type, faePatchField, edgeMesh> > tsf =
205         interpolate(tvf(), tFaceFlux(), name);
207     tvf.clear();
208     tFaceFlux.clear();
210     return tsf;
214 // Interpolate field onto faces using scheme given by name in dictionary
215 template<class Type>
216 tmp<GeometricField<Type, faePatchField, edgeMesh> >
217 interpolate
219     const GeometricField<Type, faPatchField, areaMesh>& vf,
220     Istream& schemeData
223 #   ifdef DEBUGInterpolations
224     if (edgeInterpolation::debug)
225     {
226         Info<< "interpolate"
227             << "(const GeometricField<Type, faPatchField, areaMesh>&, "
228             << "Istream&) : "
229             << "interpolating GeometricField<Type, faPatchField, areaMesh> "
230             << endl;
231     }
232 #   endif
234     return scheme<Type>(vf.mesh(), schemeData)().interpolate(vf);
237 // Interpolate field onto faces using scheme given by name in dictionary
238 template<class Type>
239 tmp<GeometricField<Type, faePatchField, edgeMesh> >
240 interpolate
242     const GeometricField<Type, faPatchField, areaMesh>& vf,
243     const word& name
246 #   ifdef DEBUGInterpolations
247     if (edgeInterpolation::debug)
248     {
249         Info<< "interpolate"
250             << "(const GeometricField<Type, faPatchField, areaMesh>&, "
251             << "const word&) : "
252             << "interpolating GeometricField<Type, faPatchField, areaMesh> "
253             << "using " << name
254             << endl;
255     }
256 #   endif
258     return scheme<Type>(vf.mesh(), name)().interpolate(vf);
261 // Interpolate field onto faces using scheme given by name in dictionary
262 template<class Type>
263 tmp<GeometricField<Type, faePatchField, edgeMesh> >
264 interpolate
266     const tmp<GeometricField<Type, faPatchField, areaMesh> >& tvf,
267     const word& name
270     tmp<GeometricField<Type, faePatchField, edgeMesh> > tsf =
271         interpolate(tvf(), name);
273     tvf.clear();
275     return tsf;
279 // Interpolate field onto faces using central differencing
280 template<class Type>
281 tmp<GeometricField<Type, faePatchField, edgeMesh> >
282 interpolate
284     const GeometricField<Type, faPatchField, areaMesh>& vf
288 #   ifdef DEBUGInterpolations
289     if (edgeInterpolation::debug)
290     {
291         Info<< "interpolate"
292             << "(const GeometricField<Type, faPatchField, areaMesh>&) : "
293             << "interpolating GeometricField<Type, faPatchField, areaMesh> "
294             << "using run-time selected scheme"
295             << endl;
296     }
297 #   endif
299     return interpolate(vf, "interpolate(" + vf.name() + ')');
303 // Interpolate field onto faces using central differencing
304 template<class Type>
305 tmp<GeometricField<Type, faePatchField, edgeMesh> >
306 interpolate
308     const tmp<GeometricField<Type, faPatchField, areaMesh> >& tvf
311     tmp<GeometricField<Type, faePatchField, edgeMesh> > tsf =
312         interpolate(tvf());
313     tvf.clear();
314     return tsf;
318 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
320 } // End namespace fac
322 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
324 } // End namespace Foam
326 // ************************************************************************* //