Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / utilities / postProcessing / dataConversion / foamToVTK / patchWriterTemplates.C
blob32cd8739cb007143b63486ff49f7f81977df15db
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 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 #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 // ************************************************************************* //