Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / errorEstimation / errorEstimate / errorEstimate.H
blobf1236daa1e40f0b9f0aa579efaf9c07ec16017c5
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 Class
25     Foam::errorEstimate
27 Description
28     Residual error estimation
30 SourceFiles
31     errorEstimate.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef errorEstimate_H
36 #define errorEstimate_H
38 #include "volFields.H"
39 #include "surfaceFields.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                         Class errorEstimate Declaration
48 \*---------------------------------------------------------------------------*/
50 template<class Type>
51 class errorEstimate
53     public refCount
55     // Private data
57         // Reference to GeometricField<Type, fvPatchField, volMesh>
58         const GeometricField<Type, fvPatchField, volMesh>& psi_;
60         //- Dimension set
61         dimensionSet dimensions_;
63         //- Cell residual pointer
64         Field<Type> residual_;
66         //- Normalisation factor
67         scalarField normFactor_;
70     // Private Member Functions
72         //- Return boundary condition types for the error field
73         wordList errorBCTypes() const;
75 public:
77     // Static data members
79     ClassName("errorEstimate");
82     // Constructors
84         //- Construct from components
85         errorEstimate
86         (
87             const GeometricField<Type, fvPatchField, volMesh>& psi,
88             const dimensionSet& ds,
89             const Field<Type>& res,
90             const scalarField& norm
91         );
93         //- Construct as copy
94         errorEstimate(const errorEstimate<Type>&);
97     // Destructor
99         ~errorEstimate();
102     // Member Functions
104         // Access
106             //- Return field
107             const GeometricField<Type, fvPatchField, volMesh>& psi() const
108             {
109                 return psi_;
110             }
112             //- Return residual dimensions
113             const dimensionSet& dimensions() const
114             {
115                 return dimensions_;
116             }
118         // Raw residual (for calculus)
120             Field<Type>& res()
121             {
122                 return residual_;
123             }
125             const Field<Type>& res() const
126             {
127                 return residual_;
128             }
131         // Error Estimate
133             //- Cell residual (volume intensive)
134             tmp<GeometricField<Type, fvPatchField, volMesh> > residual() const;
136             //- Normalisation factor
137             tmp<volScalarField> normFactor() const;
139             //- Error estimate
140             tmp<GeometricField<Type, fvPatchField, volMesh> > error() const;
143     // Member Operators
145         void operator=(const errorEstimate<Type>&);
146         void operator=(const tmp<errorEstimate<Type> >&);
148         void negate();
150         void operator+=(const errorEstimate<Type>&);
151         void operator+=(const tmp<errorEstimate<Type> >&);
153         void operator-=(const errorEstimate<Type>&);
154         void operator-=(const tmp<errorEstimate<Type> >&);
156         void operator+=(const GeometricField<Type,fvPatchField,volMesh>&);
157         void operator+=(const tmp<GeometricField<Type,fvPatchField,volMesh> >&);
159         void operator-=(const GeometricField<Type,fvPatchField,volMesh>&);
160         void operator-=(const tmp<GeometricField<Type,fvPatchField,volMesh> >&);
162         void operator+=(const dimensioned<Type>&);
163         void operator-=(const dimensioned<Type>&);
165         void operator*=(const volScalarField&);
166         void operator*=(const tmp<volScalarField>&);
168         void operator*=(const dimensioned<scalar>&);
171     // Friend Functions
173     // Friend Operators
177 // * * * * * * * * * * * * * * * Global functions  * * * * * * * * * * * * * //
179 template<class Type>
180 void checkMethod
182     const errorEstimate<Type>&,
183     const errorEstimate<Type>&,
184     const char*
187 template<class Type>
188 void checkMethod
190     const errorEstimate<Type>&,
191     const GeometricField<Type, fvPatchField, volMesh>&,
192     const char*
195 template<class Type>
196 void checkMethod
198     const errorEstimate<Type>&,
199     const dimensioned<Type>&,
200     const char*
204 // * * * * * * * * * * * * * * * Global operators  * * * * * * * * * * * * * //
206 template<class Type>
207 tmp<errorEstimate<Type> > operator-
209     const errorEstimate<Type>&
212 template<class Type>
213 tmp<errorEstimate<Type> > operator-
215     const tmp<errorEstimate<Type> >&
218 template<class Type>
219 tmp<errorEstimate<Type> > operator+
221     const errorEstimate<Type>&,
222     const errorEstimate<Type>&
225 template<class Type>
226 tmp<errorEstimate<Type> > operator+
228     const tmp<errorEstimate<Type> >&,
229     const errorEstimate<Type>&
232 template<class Type>
233 tmp<errorEstimate<Type> > operator+
235     const errorEstimate<Type>&,
236     const tmp<errorEstimate<Type> >&
239 template<class Type>
240 tmp<errorEstimate<Type> > operator+
242     const tmp<errorEstimate<Type> >&,
243     const tmp<errorEstimate<Type> >&
246 template<class Type>
247 tmp<errorEstimate<Type> > operator-
249     const errorEstimate<Type>&,
250     const errorEstimate<Type>&
253 template<class Type>
254 tmp<errorEstimate<Type> > operator-
256     const tmp<errorEstimate<Type> >&,
257     const errorEstimate<Type>&
260 template<class Type>
261 tmp<errorEstimate<Type> > operator-
263     const errorEstimate<Type>&,
264     const tmp<errorEstimate<Type> >&
267 template<class Type>
268 tmp<errorEstimate<Type> > operator-
270     const tmp<errorEstimate<Type> >&,
271     const tmp<errorEstimate<Type> >&
274 template<class Type>
275 tmp<errorEstimate<Type> > operator==
277     const errorEstimate<Type>&,
278     const errorEstimate<Type>&
281 template<class Type>
282 tmp<errorEstimate<Type> > operator==
284     const tmp<errorEstimate<Type> >&,
285     const errorEstimate<Type>&
288 template<class Type>
289 tmp<errorEstimate<Type> > operator==
291     const errorEstimate<Type>&,
292     const tmp<errorEstimate<Type> >&
295 template<class Type>
296 tmp<errorEstimate<Type> > operator==
298     const tmp<errorEstimate<Type> >&,
299     const tmp<errorEstimate<Type> >&
302 template<class Type>
303 tmp<errorEstimate<Type> > operator+
305     const errorEstimate<Type>&,
306     const GeometricField<Type, fvPatchField, volMesh>&
309 template<class Type>
310 tmp<errorEstimate<Type> > operator+
312     const tmp<errorEstimate<Type> >&,
313     const GeometricField<Type, fvPatchField, volMesh>&
316 template<class Type>
317 tmp<errorEstimate<Type> > operator+
319     const errorEstimate<Type>&,
320     const tmp<GeometricField<Type, fvPatchField, volMesh> >&
323 template<class Type>
324 tmp<errorEstimate<Type> > operator+
326     const tmp<errorEstimate<Type> >&,
327     const tmp<GeometricField<Type, fvPatchField, volMesh> >&
330 template<class Type>
331 tmp<errorEstimate<Type> > operator+
333     const GeometricField<Type, fvPatchField, volMesh>&,
334     const errorEstimate<Type>&
337 template<class Type>
338 tmp<errorEstimate<Type> > operator+
340     const GeometricField<Type, fvPatchField, volMesh>&,
341     const tmp<errorEstimate<Type> >&
344 template<class Type>
345 tmp<errorEstimate<Type> > operator+
347     const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
348     const errorEstimate<Type>&
351 template<class Type>
352 tmp<errorEstimate<Type> > operator+
354     const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
355     const tmp<errorEstimate<Type> >&
358 template<class Type>
359 tmp<errorEstimate<Type> > operator-
361     const errorEstimate<Type>&,
362     const GeometricField<Type, fvPatchField, volMesh>&
365 template<class Type>
366 tmp<errorEstimate<Type> > operator-
368     const tmp<errorEstimate<Type> >&,
369     const GeometricField<Type, fvPatchField, volMesh>&
372 template<class Type>
373 tmp<errorEstimate<Type> > operator-
375     const errorEstimate<Type>&,
376     const tmp<GeometricField<Type, fvPatchField, volMesh> >&
379 template<class Type>
380 tmp<errorEstimate<Type> > operator-
382     const tmp<errorEstimate<Type> >&,
383     const tmp<GeometricField<Type, fvPatchField, volMesh> >&
386 template<class Type>
387 tmp<errorEstimate<Type> > operator-
389     const GeometricField<Type, fvPatchField, volMesh>&,
390     const errorEstimate<Type>&
393 template<class Type>
394 tmp<errorEstimate<Type> > operator-
396     const GeometricField<Type, fvPatchField, volMesh>&,
397     const tmp<errorEstimate<Type> >&
400 template<class Type>
401 tmp<errorEstimate<Type> > operator-
403     const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
404     const errorEstimate<Type>&
407 template<class Type>
408 tmp<errorEstimate<Type> > operator-
410     const tmp<GeometricField<Type, fvPatchField, volMesh> >&,
411     const tmp<errorEstimate<Type> >&
414 template<class Type>
415 tmp<errorEstimate<Type> > operator+
417     const tmp<errorEstimate<Type> >&,
418     const dimensioned<Type>&
421 template<class Type>
422 tmp<errorEstimate<Type> > operator+
424     const dimensioned<Type>&,
425     const tmp<errorEstimate<Type> >&
428 template<class Type>
429 tmp<errorEstimate<Type> > operator-
431     const tmp<errorEstimate<Type> >&,
432     const dimensioned<Type>&
435 template<class Type>
436 tmp<errorEstimate<Type> > operator-
438     const dimensioned<Type>&,
439     const tmp<errorEstimate<Type> >&
442 template<class Type>
443 tmp<errorEstimate<Type> > operator==
445     const errorEstimate<Type>&,
446     const GeometricField<Type, fvPatchField, volMesh>&
449 template<class Type>
450 tmp<errorEstimate<Type> > operator==
452     const tmp<errorEstimate<Type> >&,
453     const GeometricField<Type, fvPatchField, volMesh>&
456 template<class Type>
457 tmp<errorEstimate<Type> > operator==
459     const errorEstimate<Type>&,
460     const tmp<GeometricField<Type, fvPatchField, volMesh> >&
463 template<class Type>
464 tmp<errorEstimate<Type> > operator==
466     const tmp<errorEstimate<Type> >&,
467     const tmp<GeometricField<Type, fvPatchField, volMesh> >&
470 template<class Type>
471 tmp<errorEstimate<Type> > operator==
473     const errorEstimate<Type>&,
474     const dimensioned<Type>&
477 template<class Type>
478 tmp<errorEstimate<Type> > operator==
480     const tmp<errorEstimate<Type> >&,
481     const dimensioned<Type>&
485 template<class Type>
486 tmp<errorEstimate<Type> > operator*
488     const volScalarField&,
489     const errorEstimate<Type>&
492 template<class Type>
493 tmp<errorEstimate<Type> > operator*
495     const volScalarField&,
496     const tmp<errorEstimate<Type> >&
499 template<class Type>
500 tmp<errorEstimate<Type> > operator*
502     const tmp<volScalarField>&,
503     const errorEstimate<Type>&
506 template<class Type>
507 tmp<errorEstimate<Type> > operator*
509     const tmp<volScalarField>&,
510     const tmp<errorEstimate<Type> >&
514 template<class Type>
515 tmp<errorEstimate<Type> > operator*
517     const dimensioned<scalar>&,
518     const errorEstimate<Type>&
521 template<class Type>
522 tmp<errorEstimate<Type> > operator*
524     const dimensioned<scalar>&,
525     const tmp<errorEstimate<Type> >&
529 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
531 } // End namespace Foam
533 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
535 #ifdef NoRepository
536 #   include "errorEstimate.C"
537 #endif
539 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
541 #endif
543 // ************************************************************************* //