BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / applications / utilities / postProcessing / dataConversion / foamToEnsight / ensightParticlePositions.C
blobd736b3fa930c79d949c0e0269b06cf774a026e7b
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.
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 "ensightParticlePositions.H"
27 #include "fvMesh.H"
28 #include "passiveParticle.H"
29 #include "Cloud.H"
30 #include "OFstream.H"
31 #include "IOmanip.H"
32 #include "itoa.H"
34 using namespace Foam;
36 // * * * * * * * * * * * * * * * Global Functions  * * * * * * * * * * * * * //
38 void ensightParticlePositions
40     const fvMesh& mesh,
41     const fileName& postProcPath,
42     const word& timeFile,
43     const word& cloudName,
44     const bool dataExists
47     if (dataExists)
48     {
49         Info<< "Converting cloud " << cloudName << " positions" <<  endl;
50     }
51     else
52     {
53         Info<< "Creating empty cloud " << cloudName << " positions" << endl;
54     }
56     const Time& runTime = mesh.time();
58     fileName ensightFileName(timeFile + "." + cloudName);
59     OFstream ensightFile
60     (
61         postProcPath/ensightFileName,
62         runTime.writeFormat(),
63         runTime.writeVersion(),
64         runTime.writeCompression()
65     );
67     // Output header
68     ensightFile
69         << cloudName.c_str() << nl
70         << "particle coordinates" << nl;
72     if (dataExists)
73     {
74         Cloud<passiveParticle> parcels(mesh, cloudName, false);
76         // Set Format
77         ensightFile.setf(ios_base::scientific, ios_base::floatfield);
78         ensightFile.precision(5);
80         ensightFile<< setw(8) << parcels.size() << nl;
82         label nParcels = 0;
84         // Output positions
85         forAllConstIter(Cloud<passiveParticle>, parcels, elmnt)
86         {
87             const vector& p = elmnt().position();
89             ensightFile
90                 << setw(8) << ++nParcels
91                 << setw(12) << p.x() << setw(12) << p.y() << setw(12) << p.z()
92                 << nl;
93         }
94     }
95     else
96     {
97         label nParcels = 0;
98         ensightFile<< setw(8) << nParcels << nl;
99     }
103 // ************************************************************************* //