initial commit for version 1.6.x patch release
[OpenFOAM-1.6.x.git] / src / triSurface / triSurface / interfaces / OFF / writeOFF.C
blobfb07ecd14e2cc2014bfa436f41b6f5fe24a61de3
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2009 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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 #include "triSurface.H"
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 namespace Foam
34 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
36 void triSurface::writeOFF(const bool writeSorted, Ostream& os) const
38     // Write header
39     os  << "OFF" << endl
40         << "# Geomview OFF file" << endl
41         << "# Regions:" << endl;
43     labelList faceMap;
44     surfacePatchList myPatches(calcPatches(faceMap));
46     // Print patch names as comment
47     forAll(myPatches, patchI)
48     {
49         os  << "#     " << patchI << "    "
50             << myPatches[patchI].name() << endl;
51     }
52     os << endl << endl;
54     const pointField& ps = points();
56     os  << "# nPoints  nTriangles  nEdges" << endl
57         << ps.size()
58         << ' ' << size()
59         << ' ' << nEdges()
60         << endl << endl;
62     // Write vertex coords
63     forAll(ps, pointi)
64     {
65         os  << ps[pointi].x() << ' '
66             << ps[pointi].y() << ' '
67             << ps[pointi].z() << " #" << pointi << endl;
68     }
70     os << endl;
72     if (writeSorted)
73     {
74         label faceIndex = 0;
76         forAll(myPatches, patchI)
77         {
78             // Print all faces belonging to this patch
80             for
81             (
82                 label patchFaceI = 0;
83                 patchFaceI < myPatches[patchI].size();
84                 patchFaceI++
85             )
86             {
87                 const label faceI = faceMap[faceIndex++];
89                 os  << "3 "
90                     << operator[](faceI)[0] << ' '
91                     << operator[](faceI)[1] << ' '
92                     << operator[](faceI)[2] << ' '
93                     << operator[](faceI).region()
94                     << endl;
95             }
96         }
97     }
98     else
99     {
100         forAll(*this, faceI)
101         {
102             os  << "3 "
103                 << operator[](faceI)[0] << ' '
104                 << operator[](faceI)[1] << ' '
105                 << operator[](faceI)[2] << ' '
106                 << operator[](faceI).region()
107                 << endl;
108         }
109     }
113 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
115 } // End namespace Foam
117 // ************************************************************************* //