Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / finiteVolume / fields / fvPatchFields / derived / timeVaryingMappedFixedValue / AverageIOField.H
blob09c0a52309b79d986692e7fd1e8e3de6b604db18
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::AverageIOField
27 Description
28     A primitive field + average with IO.
30 SourceFiles
31     AverageIOField.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef AverageIOField_H
36 #define AverageIOField_H
38 #include "regIOobject.H"
39 #include "Field.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                         Class AverageIOField Declaration
48 \*---------------------------------------------------------------------------*/
50 template<class Type>
51 class AverageIOField
53     public regIOobject,
54     public Field<Type>
56     // Private data
58         //- The average of the field
59         Type average_;
62 public:
64     TypeName("AverageField");
67     // Constructors
69         //- Construct from IOobject
70         AverageIOField
71         (
72             const IOobject&
73         );
75         //- Construct from IOobject and size (does not set values)
76         AverageIOField
77         (
78             const IOobject&,
79             const label size
80         );
82         //- Construct from components
83         AverageIOField
84         (
85             const IOobject&,
86             const Type& average,
87             const Field<Type>&
88         );
91     // Member functions
93         const Type& average() const
94         {
95             return average_;
96         }
98         Type& average()
99         {
100             return average_;
101         }
103         bool writeData(Ostream& os) const;
107 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 } // End namespace Foam
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 #ifdef NoRepository
114 #   include "AverageIOField.C"
115 #endif
117 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
119 #endif
121 // ************************************************************************* //