writePointSet.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "writePointSet.H"
27 #include "OFstream.H"
28 #include "writeFuns.H"
29 
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 
32 namespace Foam
33 {
34 
35 // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
36 
37 void writePointSet
38 (
39  const bool binary,
40  const vtkMesh& vMesh,
41  const pointSet& set,
42  const fileName& fileName
43 )
44 {
45  // Use binary mode in case we write binary.
46  // Causes windows reading to fail if we don't
47  std::ofstream ostr(fileName.c_str(),
48  ios_base::out|ios_base::binary);
49 
51  (
52  ostr,
53  binary,
54  set.name()
55  );
56 
57  ostr<< "DATASET POLYDATA" << std::endl;
58 
59  //------------------------------------------------------------------
60  //
61  // Write topology
62  //
63  //------------------------------------------------------------------
64 
65 
66  // Write points
67 
68  ostr<< "POINTS " << set.size() << " double" << std::endl;
69 
70  DynamicList<doubleScalar> ptField(3*set.size());
71 
73  (
74  UIndirectList<point>(vMesh.mesh().points(), set.toc())(),
75  ptField
76  );
77 
78  writeFuns::write(ostr, binary, ptField);
79 
80 
81  //-----------------------------------------------------------------
82  //
83  // Write data
84  //
85  //-----------------------------------------------------------------
86 
87  // Write faceID
88 
89  ostr
90  << "POINT_DATA " << set.size() << std::endl
91  << "FIELD attributes 1" << std::endl;
92 
93  // Cell ids first
94  ostr<< "pointID 1 " << set.size() << " int" << std::endl;
95 
96  labelList pointIDs(set.toc());
97 
98  writeFuns::write(ostr, binary, pointIDs);
99 }
100 
101 
102 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
103 
104 } // End namespace Foam
105 
106 // ************************************************************************* //
writePointSet.H
Write pointSet to vtk polydata file. Only one data which is original pointID.
writeFuns.H
Foam::labelList
List< label > labelList
A List of labels.
Definition: labelList.H:56
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
OFstream.H
Foam::writeFuns::writeHeader
static void writeHeader(std::ostream &, const bool isBinary, const std::string &title)
Definition: writeFuns.C:190
Foam::writeFuns::write
static void write(std::ostream &, const bool, DynamicList< floatScalar > &)
Write floats ascii or binary.
Definition: writeFuns.C:107
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::writeFuns::insert
static void insert(const point &, DynamicList< floatScalar > &dest)
Append point to given DynamicList.
Definition: writeFuns.C:170
Foam::writePointSet
void writePointSet(const bool binary, const primitiveMesh &mesh, const topoSet &set, const fileName &fileName)
Write pointSet to vtk polydata file.