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 / foamToFieldview9 / calcFaceAddressing.C
blob4ff7accb5a4ab9886ef79d17e31c6192b5bba953
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 Description
26 \*---------------------------------------------------------------------------*/
28 #include "calcFaceAddressing.H"
30 using namespace Foam;
32 // * * * * * * * * * * * * * * * Friend Functions  * * * * * * * * * * * * * //
34 // Returns the face labels of the shape in an order consistent with the
35 // shape.
36 labelList calcFaceAddressing
38     const faceList& allFaces,   // faces given faceLabels
39     const cellShape& shape,
40     const labelList& faces,     // faceLabels for given cell
41     const label cellI
44     // return value.
45     labelList shapeToMesh(shape.nFaces(), -1);
47     const faceList modelFaces(shape.faces());
49     // Loop over all faces of cellShape
50     forAll(modelFaces, cellFaceI)
51     {
52         // face (vertex list)
53         const face& modelFace = modelFaces[cellFaceI];
55         // Loop over all face labels
56         forAll(faces, faceI)
57         {
58             const face& vertLabels = allFaces[faces[faceI]];
60             if (vertLabels == modelFace)
61             {
62                 //Info<< "match:" << modelFace
63                 //    << "  to " << vertLabels << endl;
64                 shapeToMesh[cellFaceI] = faces[faceI];
65                 break;
66             }
67         }
69         if (shapeToMesh[cellFaceI] == -1)
70         {
71             FatalErrorIn("foamToFieldview : calcFaceAddressing")
72                 << "calcFaceAddressing : can't match face to shape.\n"
73                 << "    shape face:" << modelFace << endl
74                 << "    face labels:" << faces << endl
75                 << "    cellI:" << cellI << endl;
77             FatalError << "Faces consist of vertices:" << endl;
78             forAll(faces, faceI)
79             {
80                 FatalError
81                     << "    face:" << faces[faceI]
82                     << allFaces[faces[faceI]] << endl;
83             }
84             FatalError << exit(FatalError);
85         }
86     }
87     return shapeToMesh;
91 // ************************************************************************* //