Forward compatibility: flex
[foam-extend-3.2.git] / applications / utilities / parallelProcessing / decomposePar / lagrangianFieldDecomposerDecomposeFields.C
blob502ffc05d5a25d3abb86352e73512674eb8fa2ae
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 "lagrangianFieldDecomposer.H"
27 #include "IOobjectList.H"
29 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
31 namespace Foam
34 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
36 template<class Type>
37 void lagrangianFieldDecomposer::readFields
39     const label cloudI,
40     const IOobjectList& lagrangianObjects,
41     PtrList<PtrList<IOField<Type> > >& lagrangianFields
44     // Search list of objects for lagrangian fields
45     IOobjectList lagrangianTypeObjects
46     (
47         lagrangianObjects.lookupClass(IOField<Type>::typeName)
48     );
50     lagrangianFields.set
51     (
52         cloudI,
53         new PtrList<IOField<Type> >
54         (
55             lagrangianTypeObjects.size()
56         )
57     );
59     label lagrangianFieldi=0;
60     forAllIter(IOobjectList, lagrangianTypeObjects, iter)
61     {
62         lagrangianFields[cloudI].set
63         (
64             lagrangianFieldi++,
65             new IOField<Type>(*iter())
66         );
67     }
71 template<class Type>
72 tmp<IOField<Type> > lagrangianFieldDecomposer::decomposeField
74     const word& cloudName,
75     const IOField<Type>& field
76 ) const
78     // Create and map the internal field values
79     Field<Type> procField(field, particleIndices_);
81     // Create the field for the processor
82     return tmp<IOField<Type> >
83     (
84         new IOField<Type>
85         (
86             IOobject
87             (
88                 field.name(),
89                 procMesh_.time().timeName(),
90                 cloud::prefix/cloudName,
91                 procMesh_,
92                 IOobject::NO_READ,
93                 IOobject::NO_WRITE
94             ),
95             procField
96         )
97     );
101 template<class GeoField>
102 void lagrangianFieldDecomposer::decomposeFields
104     const word& cloudName,
105     const PtrList<GeoField>& fields
106 ) const
108     if (particleIndices_.size())
109     {
110         forAll (fields, fieldI)
111         {
112             decomposeField(cloudName, fields[fieldI])().write();
113         }
114     }
118 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
120 } // End namespace Foam
122 // ************************************************************************* //