fixed writing out entries in advective bc
[OpenFOAM-1.6-ext.git] / src / OpenFOAM / meshes / primitiveMesh / primitiveMeshCellPoints.C
blobf86d0af1f657aa0a2bc18efa0c700499f1a20d25
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright held by original author
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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*---------------------------------------------------------------------------*/
27 #include "primitiveMesh.H"
28 #include "ListOps.H"
30 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
32 const Foam::labelListList& Foam::primitiveMesh::cellPoints() const
34     if (!cpPtr_)
35     {
36         if (debug)
37         {
38             Pout<< "primitiveMesh::cellPoints() : "
39                 << "calculating cellPoints" << endl;
41             if (debug == -1)
42             {
43                 // For checking calls:abort so we can quickly hunt down
44                 // origin of call
45                 FatalErrorIn("primitiveMesh::cellPoints()")
46                     << abort(FatalError);
47             }
48         }
50         // Invert pointCells
51         cpPtr_ = new labelListList(nCells());
52         invertManyToMany(nCells(), pointCells(), *cpPtr_);
53     }
55     return *cpPtr_;
59 const Foam::labelList& Foam::primitiveMesh::cellPoints
61     const label cellI,
62     DynamicList<label>& storage
63 ) const
65     if (hasCellPoints())
66     {
67         return cellPoints()[cellI];
68     }
69     else
70     {
71         const faceList& fcs = faces();
72         const labelList& cFaces = cells()[cellI];
74         labelSet_.clear();
76         forAll(cFaces, i)
77         {
78             const labelList& f = fcs[cFaces[i]];
80             forAll(f, fp)
81             {
82                 labelSet_.insert(f[fp]);
83             }
84         }
86         storage.clear();
87         if (labelSet_.size() > storage.capacity())
88         {
89             storage.setCapacity(labelSet_.size());
90         }
92         forAllConstIter(labelHashSet, labelSet_, iter)
93         {
94             storage.append(iter.key());
95         }
97         return storage;
98     }
102 const Foam::labelList& Foam::primitiveMesh::cellPoints(const label cellI) const
104     return cellPoints(cellI, labels_);
108 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
110 // ************************************************************************* //