BUGFIX: Illegal use of uninitialised value (backport)
[foam-extend-3.2.git] / applications / utilities / postProcessing / dataConversion / foamToEnsight / ensightParticlePositions.C
blob7881f0ae33dd1260566274d7cf2c370eab31a45f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 "ensightParticlePositions.H"
28 #include "fvMesh.H"
29 #include "passiveParticle.H"
30 #include "Cloud.H"
31 #include "OFstream.H"
32 #include "IOmanip.H"
33 #include "itoa.H"
35 using namespace Foam;
37 // * * * * * * * * * * * * * * * Global Functions  * * * * * * * * * * * * * //
39 void ensightParticlePositions
41     const Foam::fvMesh& mesh,
42     const Foam::fileName& postProcPath,
43     const Foam::word& timeFile,
44     const Foam::word& cloudName,
45     const bool dataExists
48     if (dataExists)
49     {
50         Info<< "Converting cloud " << cloudName << " positions" <<  endl;
51     }
52     else
53     {
54         Info<< "Creating empty cloud " << cloudName << " positions" << endl;
55     }
57     const Time& runTime = mesh.time();
59     fileName ensightFileName(timeFile + "." + cloudName);
60     OFstream ensightFile
61     (
62         postProcPath/ensightFileName,
63         ios_base::out|ios_base::trunc,
64         runTime.writeFormat(),
65         runTime.writeVersion(),
66         runTime.writeCompression()
67     );
69     // Output header
70     ensightFile
71         << cloudName.c_str() << nl
72         << "particle coordinates" << nl;
74     if (dataExists)
75     {
76         Cloud<passiveParticle> parcels(mesh, cloudName, false);
78         // Set Format
79         ensightFile.setf(ios_base::scientific, ios_base::floatfield);
80         ensightFile.precision(5);
82         ensightFile<< setw(8) << parcels.size() << nl;
84         label nParcels = 0;
86         // Output positions
87         forAllConstIter(Cloud<passiveParticle>, parcels, elmnt)
88         {
89             const vector& p = elmnt().position();
91             ensightFile
92                 << setw(8) << ++nParcels
93                 << setw(12) << p.x() << setw(12) << p.y() << setw(12) << p.z()
94                 << nl;
95         }
96     }
97     else
98     {
99         label nParcels = 0;
100         ensightFile<< setw(8) << nParcels << nl;
101     }
105 // ************************************************************************* //