Forward compatibility: flex
[foam-extend-3.2.git] / applications / utilities / postProcessing / dataConversion / foamToVTK / patchWriterTemplates.C
blob5e2a8cc8a223a89e632e3db295777b306e4d6420
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 #include "patchWriter.H"
27 #include "writeFuns.H"
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 template<class Type>
32 void Foam::patchWriter::write
34     const PtrList<GeometricField<Type, fvPatchField, volMesh> >& flds
37     forAll(flds, fieldI)
38     {
39         const GeometricField<Type, fvPatchField, volMesh>& fld = flds[fieldI];
41         os_ << fld.name() << ' ' << pTraits<Type>::nComponents << ' '
42             << nFaces_ << " float" << std::endl;
44         DynamicList<floatScalar> fField(pTraits<Type>::nComponents*nFaces_);
46         forAll(patchIDs_, j)
47         {
48             label patchI = patchIDs_[j];
50             const fvPatchField<Type>& pfld = fld.boundaryField()[patchI];
52             if (nearCellValue_)
53             {
54                 writeFuns::insert(pfld.patchInternalField()(), fField);
55             }
56             else
57             {
58                 writeFuns::insert(pfld, fField);
59             }
60         }
61         writeFuns::write(os_, binary_, fField);
62     }
66 template<class Type>
67 void Foam::patchWriter::write
69     const PtrList<GeometricField<Type, pointPatchField, pointMesh> >& flds
72     forAll(flds, fieldI)
73     {
74         const GeometricField<Type, pointPatchField, pointMesh>& fld =
75             flds[fieldI];
77         os_ << fld.name() << ' ' << pTraits<Type>::nComponents << ' '
78             << nPoints_ << " float" << std::endl;
80         DynamicList<floatScalar> fField(pTraits<Type>::nComponents*nPoints_);
82         forAll(patchIDs_, j)
83         {
84             label patchI = patchIDs_[j];
86             const pointPatchField<Type>& pfld = fld.boundaryField()[patchI];
88             writeFuns::insert(pfld.patchInternalField()(), fField);
89         }
90         writeFuns::write(os_, binary_, fField);
91     }
95 template<class Type>
96 void Foam::patchWriter::write
98     const PrimitivePatchInterpolation<primitivePatch>& pInter,
99     const PtrList<GeometricField<Type, fvPatchField, volMesh> >& flds
102     forAll(flds, fieldI)
103     {
104         const GeometricField<Type, fvPatchField, volMesh>& fld = flds[fieldI];
106         os_ << fld.name() << ' ' << pTraits<Type>::nComponents << ' '
107             << nPoints_ << " float" << std::endl;
109         DynamicList<floatScalar> fField(pTraits<Type>::nComponents*nPoints_);
111         forAll(patchIDs_, j)
112         {
113             label patchI = patchIDs_[j];
115             const fvPatchField<Type>& pfld = fld.boundaryField()[patchI];
117             if (nearCellValue_)
118             {
119                 writeFuns::insert
120                 (
121                     pInter.faceToPointInterpolate
122                     (
123                         pfld.patchInternalField()()
124                     )(),
125                     fField
126                 );
127             }
128             else
129             {
130                 writeFuns::insert
131                 (
132                     pInter.faceToPointInterpolate(pfld)(),
133                     fField
134                 );
135             }
136         }
137         writeFuns::write(os_, binary_, fField);
138     }
142 // ************************************************************************* //