Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / applications / utilities / miscellaneous / patchSummary / patchSummary.C
blobbdb516e4991ecf6ff23a215a8bcb3170dc1e7cd5
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 Application
25     patchSummary
27 Description
28     Writes fields and boundary condition info for each patch at each requested
29     time instance.
31 \*---------------------------------------------------------------------------*/
33 #include "fvCFD.H"
34 #include "volFields.H"
35 #include "IOobjectList.H"
36 #include "patchSummaryTemplates.H"
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 int main(int argc, char *argv[])
42     timeSelector::addOptions();
44 #   include "addRegionOption.H"
45 #   include "setRootCase.H"
46 #   include "createTime.H"
48     instantList timeDirs = timeSelector::select0(runTime, args);
50 #   include "createNamedMesh.H"
52     forAll(timeDirs, timeI)
53     {
54         runTime.setTime(timeDirs[timeI], timeI);
56         Info<< "Time = " << runTime.timeName() << nl << endl;
58         const IOobjectList fieldObjs(mesh, runTime.timeName());
59         const wordList objNames = fieldObjs.names();
61         PtrList<volScalarField> vsf(objNames.size());
62         PtrList<volVectorField> vvf(objNames.size());
63         PtrList<volSphericalTensorField> vsptf(objNames.size());
64         PtrList<volSymmTensorField> vsytf(objNames.size());
65         PtrList<volTensorField> vtf(objNames.size());
67         Info<< "Valid fields:" << endl;
69         forAll(objNames, objI)
70         {
71             IOobject obj
72             (
73                 objNames[objI],
74                 runTime.timeName(),
75                 mesh,
76                 IOobject::MUST_READ
77             );
79             if (obj.headerOk())
80             {
81                 addToFieldList<scalar>(vsf, obj, objI, mesh);
82                 addToFieldList<vector>(vvf, obj, objI, mesh);
83                 addToFieldList<sphericalTensor>(vsptf, obj, objI, mesh);
84                 addToFieldList<symmTensor>(vsytf, obj, objI, mesh);
85                 addToFieldList<tensor>(vtf, obj, objI, mesh);
86             }
87         }
89         Info<< endl;
91         const polyBoundaryMesh& bm = mesh.boundaryMesh();
92         forAll(bm, patchI)
93         {
94             Info<< bm[patchI].type() << ": " << bm[patchI].name() << nl;
95             outputFieldList<scalar>(vsf, patchI);
96             outputFieldList<vector>(vvf, patchI);
97             outputFieldList<sphericalTensor>(vsptf, patchI);
98             outputFieldList<symmTensor>(vsytf, patchI);
99             outputFieldList<tensor>(vtf, patchI);
100             Info << endl;
101         }
102     }
104     Info << "End\n" << endl;
106     return 0;
110 // ************************************************************************* //