Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / applications / utilities / postProcessing / dataConversion / foamToEnsight / ensightParticlePositions.C
blobfccdeb6a924a1ea4f5f36751834e912c372c483d
1 /*---------------------------------------------------------------------------*\
2   =========                 |
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 -------------------------------------------------------------------------------
8 License
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/>.
24 \*---------------------------------------------------------------------------*/
26 #include "ensightParticlePositions.H"
27 #include "fvMesh.H"
28 #include "passiveParticle.H"
29 #include "CloudTemplate.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 Foam::fvMesh& mesh,
41     const Foam::fileName& postProcPath,
42     const Foam::word& timeFile,
43     const Foam::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         ios_base::out|ios_base::trunc,
63         runTime.writeFormat(),
64         runTime.writeVersion(),
65         runTime.writeCompression()
66     );
68     // Output header
69     ensightFile
70         << cloudName.c_str() << nl
71         << "particle coordinates" << nl;
73     if (dataExists)
74     {
75         Cloud<passiveParticle> parcels(mesh, cloudName, false);
77         // Set Format
78         ensightFile.setf(ios_base::scientific, ios_base::floatfield);
79         ensightFile.precision(5);
81         ensightFile<< setw(8) << parcels.size() << nl;
83         label nParcels = 0;
85         // Output positions
86         forAllConstIter(Cloud<passiveParticle>, parcels, elmnt)
87         {
88             const vector& p = elmnt().position();
90             ensightFile
91                 << setw(8) << ++nParcels
92                 << setw(12) << p.x() << setw(12) << p.y() << setw(12) << p.z()
93                 << nl;
94         }
95     }
96     else
97     {
98         label nParcels = 0;
99         ensightFile<< setw(8) << nParcels << nl;
100     }
104 // ************************************************************************* //