Forward compatibility: flex
[foam-extend-3.2.git] / applications / utilities / preProcessing / mapFields / MapVolFields.H
blob26e9d0a0e0fe763d81d0258d0561dd6f52f4e708
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 \*---------------------------------------------------------------------------*/
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
45     const fvMesh& meshSource = meshToMeshInterp.fromMesh();
46     const fvMesh& meshTarget = meshToMeshInterp.toMesh();
48     word fieldClassName
49     (
50         GeometricField<Type, fvPatchField, volMesh>::typeName
51     );
53     IOobjectList fields = objects.lookupClass(fieldClassName);
55     for
56     (
57         IOobjectList::iterator fieldIter = fields.begin();
58         fieldIter != fields.end();
59         ++fieldIter
60     )
61     {
62         IOobject fieldTargetIOobject
63         (
64             fieldIter()->name(),
65             meshTarget.time().timeName(),
66             meshTarget,
67             IOobject::MUST_READ,
68             IOobject::AUTO_WRITE
69         );
71         if (fieldTargetIOobject.headerOk())
72         {
73             Info<< "    interpolating " << fieldIter()->name()
74                 << endl;
76             // Read field fieldSource
77             GeometricField<Type, fvPatchField, volMesh> fieldSource
78             (
79                 *fieldIter(),
80                 meshSource
81             );
83             // Read fieldTarget
84             GeometricField<Type, fvPatchField, volMesh> fieldTarget
85             (
86                 fieldTargetIOobject,
87                 meshTarget
88             );
90             // Interpolate field
91             meshToMeshInterp.interpolate
92             (
93                 fieldTarget,
94                 fieldSource,
95                 meshToMesh::INTERPOLATE
96             );
98             // Write field
99             fieldTarget.write();
100         }
101     }
105 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
107 } // End namespace Foam
109 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
111 #endif
113 // ************************************************************************* //