Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / utilities / preProcessing / mapFields / MapVolFields.H
blob2d312979676f4ecc688192a5a78976344fd291af
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #ifndef MapVolFields_H
27 #define MapVolFields_H
29 #include "GeometricField.H"
30 #include "meshToMesh.H"
31 #include "IOobjectList.H"
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
35 namespace Foam
38 template<class Type>
39 void MapVolFields
41     const IOobjectList& objects,
42     const meshToMesh& meshToMeshInterp,
43     const meshToMesh::order& mapOrder
46     const fvMesh& meshSource = meshToMeshInterp.fromMesh();
47     const fvMesh& meshTarget = meshToMeshInterp.toMesh();
49     word fieldClassName
50     (
51         GeometricField<Type, fvPatchField, volMesh>::typeName
52     );
54     IOobjectList fields = objects.lookupClass(fieldClassName);
56     forAllIter(IOobjectList, fields, fieldIter)
57     {
58         IOobject fieldTargetIOobject
59         (
60             fieldIter()->name(),
61             meshTarget.time().timeName(),
62             meshTarget,
63             IOobject::MUST_READ,
64             IOobject::AUTO_WRITE
65         );
67         if (fieldTargetIOobject.headerOk())
68         {
69             Info<< "    interpolating " << fieldIter()->name()
70                 << endl;
72             // Read field fieldSource
73             GeometricField<Type, fvPatchField, volMesh> fieldSource
74             (
75                 *fieldIter(),
76                 meshSource
77             );
79             // Read fieldTarget
80             GeometricField<Type, fvPatchField, volMesh> fieldTarget
81             (
82                 fieldTargetIOobject,
83                 meshTarget
84             );
86             // Interpolate field
87             meshToMeshInterp.interpolate(fieldTarget, fieldSource, mapOrder);
89             // Write field
90             fieldTarget.write();
91         }
92     }
96 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
98 } // End namespace Foam
100 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
102 #endif
104 // ************************************************************************* //