1 /*---------------------------------------------------------------------------*\
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 -------------------------------------------------------------------------------
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/>.
25 Given a volScalarField and Fluent field identifier, write the field in
29 \*---------------------------------------------------------------------------*/
31 #include "writeFluentFields.H"
32 #include "emptyFvPatchFields.H"
34 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 const volScalarField& phi,
44 const label fluentFieldIdentifier,
48 const scalarField& phiInternal = phi.internalField();
53 << fluentFieldIdentifier << " " // Field identifier
54 << "1 " // Zone ID: (cells=1, internal faces=2,
55 // patch faces=patchI+10)
56 << "1 " // Number of components (scalar=1, vector=3)
58 << "1 " << phiInternal.size() // Start and end of list
61 forAll (phiInternal, cellI)
63 stream << phiInternal[cellI] << endl;
69 label nWrittenFaces = phiInternal.size();
71 // Writing boundary faces
72 forAll (phi.boundaryField(), patchI)
74 if (isType<emptyFvPatchScalarField>(phi.boundaryField()[patchI]))
76 // Form empty patch field repeat the internal field to
77 // allow for the node interpolation in Fluent
78 const scalarField& phiInternal = phi.internalField();
80 // Get reference to internal cells
81 const labelList emptyFaceCells =
82 phi.boundaryField()[patchI].patch().patch().faceCells();
84 // Writing cells for empty patch
87 << fluentFieldIdentifier << " " // Field identifier
88 << patchI + 10 << " " // Zone ID: patchI+10
89 << "1 " // Number of components (scalar=1, vector=3)
91 << nWrittenFaces + 1 << " "
92 << nWrittenFaces + emptyFaceCells.size()// Start and end of list
95 nWrittenFaces += emptyFaceCells.size();
97 forAll (emptyFaceCells, faceI)
99 stream << phiInternal[emptyFaceCells[faceI]] << endl;
108 label nWrittenFaces = phiInternal.size();
110 const scalarField& patchPhi = phi.boundaryField()[patchI];
115 << fluentFieldIdentifier << " " // Field identifier
116 << patchI + 10 << " " // Zone ID: patchI+10
117 << "1 " // Number of components (scalar=1, vector=3)
119 << nWrittenFaces + 1 << " " << nWrittenFaces + patchPhi.size()
120 // Start and end of list
123 nWrittenFaces += patchPhi.size();
125 forAll (patchPhi, faceI)
127 stream << patchPhi[faceI] << endl;
137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
139 } // End namespace Foam
141 // ************************************************************************* //