Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / applications / utilities / parallelProcessing / reconstructPar / reconstructLagrangianPositions.C
blobd6eb5214474e01f42ef65f30c8c3945b061dc8a5
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 "reconstructLagrangian.H"
27 #include "labelIOList.H"
28 #include "CloudTemplate.H"
29 #include "passiveParticle.H"
31 // * * * * * * * * * * * * * * * Global Functions  * * * * * * * * * * * * * //
33 void Foam::reconstructLagrangianPositions
35     const polyMesh& mesh,
36     const word& cloudName,
37     const PtrList<fvMesh>& meshes,
38     const PtrList<labelIOList>& faceProcAddressing,
39     const PtrList<labelIOList>& cellProcAddressing
42     Cloud<passiveParticle> lagrangianPositions
43     (
44         mesh,
45         cloudName,
46         IDLList<passiveParticle>()
47     );
49     forAll(meshes, i)
50     {
51         const labelList& cellMap = cellProcAddressing[i];
53         Cloud<passiveParticle> lpi(meshes[i], cloudName, false);
55         forAllIter(Cloud<passiveParticle>, lpi, iter)
56         {
57             const passiveParticle& ppi = iter();
59             lagrangianPositions.append
60             (
61                 new passiveParticle
62                 (
63                     lagrangianPositions,
64                     ppi.position(),
65                     cellMap[ppi.cell()]
66                 )
67             );
68         }
69     }
71     IOPosition<passiveParticle>(lagrangianPositions).write();
75 // ************************************************************************* //