initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / applications / utilities / parallelProcessing / reconstructPar / fvFieldReconstructor.H
blobb9f2fb4bf6af487877b31361acf66b74edd4268b
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
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::fvFieldReconstructor
28 Description
29     FV volume and surface field reconstructor.
31 SourceFiles
32     fvFieldReconstructor.C
33     fvFieldReconstructorReconstructFields.C
35 \*---------------------------------------------------------------------------*/
37 #ifndef fvFieldReconstructor_H
38 #define fvFieldReconstructor_H
40 #include "PtrList.H"
41 #include "fvMesh.H"
42 #include "IOobjectList.H"
43 #include "fvPatchFieldMapper.H"
44 #include "labelIOList.H"
46 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 namespace Foam
52 /*---------------------------------------------------------------------------*\
53                  Class fvFieldReconstructor Declaration
54 \*---------------------------------------------------------------------------*/
56 class fvFieldReconstructor
58     // Private data
60         //- Reconstructed mesh reference
61         fvMesh& mesh_;
63         //- List of processor meshes
64         const PtrList<fvMesh>& procMeshes_;
66         //- List of processor face addressing lists
67         const PtrList<labelIOList>& faceProcAddressing_;
69         //- List of processor cell addressing lists
70         const PtrList<labelIOList>& cellProcAddressing_;
72         //- List of processor boundary addressing lists
73         const PtrList<labelIOList>& boundaryProcAddressing_;
76     // Private Member Functions
78         //- Disallow default bitwise copy construct
79         fvFieldReconstructor(const fvFieldReconstructor&);
81         //- Disallow default bitwise assignment
82         void operator=(const fvFieldReconstructor&);
85 public:
87         class fvPatchFieldReconstructor
88         :
89             public fvPatchFieldMapper
90         {
91             label size_;
93         public:
95             // Constructors
97                 //- Construct given size
98                 fvPatchFieldReconstructor(const label size)
99                 :
100                     size_(size)
101                 {}
104             // Member functions
106                 label size() const
107                 {
108                     return size_;
109                 }
111                 bool direct() const
112                 {
113                     return true;
114                 }
116                 const unallocLabelList& directAddressing() const
117                 {
118                     return unallocLabelList::null();
119                 }
120         };
123     // Constructors
125         //- Construct from components
126         fvFieldReconstructor
127         (
128             fvMesh& mesh,
129             const PtrList<fvMesh>& procMeshes,
130             const PtrList<labelIOList>& faceProcAddressing,
131             const PtrList<labelIOList>& cellProcAddressing,
132             const PtrList<labelIOList>& boundaryProcAddressing
133         );
136     // Member Functions
138         //- Reconstruct volume field
139         template<class Type>
140         tmp<GeometricField<Type, fvPatchField, volMesh> >
141         reconstructFvVolumeField
142         (
143             const IOobject& fieldIoObject
144         );
146         //- Reconstruct surface field
147         template<class Type>
148         tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
149         reconstructFvSurfaceField
150         (
151             const IOobject& fieldIoObject
152         );
154         //- Reconstruct and write all/selected volume fields
155         template<class Type>
156         void reconstructFvVolumeFields
157         (
158             const IOobjectList& objects,
159             const HashSet<word>& selectedFields
160         );
162         //- Reconstruct and write all/selected volume fields
163         template<class Type>
164         void reconstructFvSurfaceFields
165         (
166             const IOobjectList& objects,
167             const HashSet<word>& selectedFields
168         );
172 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
174 } // End namespace Foam
176 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
178 #ifdef NoRepository
179 #   include "fvFieldReconstructorReconstructFields.C"
180 #endif
182 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
184 #endif
186 // ************************************************************************* //