ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / OpenFOAM / meshes / polyMesh / polyMeshTetDecomposition / tetIndices.C
blobb19a2a372db411ca41c8b607925d8c58f9e5f821
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "tetIndices.H"
28 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
30 Foam::tetIndices::tetIndices()
32     cellI_(-1),
33     faceI_(-1),
34     faceBasePtI_(-1),
35     facePtAI_(-1),
36     facePtBI_(-1),
37     tetPtI_(-1)
41 Foam::tetIndices::tetIndices
43     label cellI,
44     label faceI,
45     label faceBasePtI,
46     label facePtAI,
47     label facePtBI,
48     label tetPtI
51     cellI_(cellI),
52     faceI_(faceI),
53     faceBasePtI_(faceBasePtI),
54     facePtAI_(facePtAI),
55     facePtBI_(facePtBI),
56     tetPtI_(tetPtI)
60 Foam::tetIndices::tetIndices
62     label cellI,
63     label faceI,
64     label tetPtI,
65     const polyMesh& mesh
68     cellI_(cellI),
69     faceI_(faceI),
70     faceBasePtI_(-1),
71     facePtAI_(-1),
72     facePtBI_(-1),
73     tetPtI_(tetPtI)
75     const faceList& pFaces = mesh.faces();
76     const labelList& pOwner = mesh.faceOwner();
78     const Foam::face& f = pFaces[faceI_];
80     bool own = (pOwner[faceI_] == cellI_);
82     faceBasePtI_ = mesh.tetBasePtIs()[faceI_];
84     label facePtI = (tetPtI_ + faceBasePtI_) % f.size();
85     label otherFacePtI = f.fcIndex(facePtI);
87     if (own)
88     {
89         facePtAI_ = facePtI;
90         facePtBI_ = otherFacePtI;
91     }
92     else
93     {
94         facePtAI_ = otherFacePtI;
95         facePtBI_ = facePtI;
96     }
100 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
102 Foam::tetIndices::~tetIndices()
106 // * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
108 Foam::Istream& Foam::operator>>(Istream& is, tetIndices& tI)
110     is  >> tI.cell()
111         >> tI.face()
112         >> tI.faceBasePt()
113         >> tI.facePtA()
114         >> tI.facePtB()
115         >> tI.tetPt();
117     // Check state of Istream
118     is.check
119     (
120         "Foam::Istream& Foam::operator>>(Foam::Istream&, Foam::tetIndices&)"
121     );
123     return is;
127 Foam::Ostream& Foam::operator<<(Ostream& os, const tetIndices& tI)
129     os  << tI.cell() << token::SPACE
130         << tI.face() << token::SPACE
131         << tI.faceBasePt() << token::SPACE
132         << tI.facePtA() << token::SPACE
133         << tI.facePtB() << token::SPACE
134         << tI.tetPt() << token::SPACE
135         << endl;
137     // Check state of Ostream
138     os.check
139     (
140         "Foam::Ostream& Foam::operator<<(Foam::Ostream&, "
141         "const Foam::tetIndices&)"
142     );
144     return os;
148 // ************************************************************************* //