Fixed URL for libccmio-2.6.1 (bug report #5 by Thomas Oliveira)
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / octrees / meshOctree / meshOctreeInsideOutside / meshOctreeInsideOutside.H
blob682423aa942603b973856471b3985b3db3f32445
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     meshOctreeInsideOutside
26 Description
27     Creates inside/outside information for the octree
29 SourceFiles
30     meshOctreeInsideOutside.C
32 \*---------------------------------------------------------------------------*/
34 #ifndef meshOctreeInsideOutside_H
35 #define meshOctreeInsideOutside_H
37 #include "meshOctreeModifier.H"
38 #include <map>
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 namespace Foam
45 /*---------------------------------------------------------------------------*\
46                     Class meshOctreeInsideOutside Declaration
47 \*---------------------------------------------------------------------------*/
49 class meshOctreeInsideOutside
51     // Private data
53         //- meshOctreeAddressing
54         meshOctreeModifier octreeModifier_;
56         //- group for a given leaf
57         labelLongList cubeGroup_;
59         //- cubes belonging to each group of octree boxes
60         VRWGraph cubesInGroup_;
62         //- type for a group
63         std::map<label, direction> groupType_;
65         //- boundary DATA boxes for a given group
66         VRWGraph boundaryDATACubes_;
68         //- flag for DATA boxes next to the OUTSIDE boxes
69         boolList hasOutsideNeighbour_;
71         //- label of cubes at processor boundaries
72         labelLongList communicationCubes_;
74         //- labels of cubes marked by different threads
75         VRWGraph neighbouringGroups_;
77     // Private member functions
79         //- initialise octree boxes
80         void initialiseBoxes();
82         //- frontal marking algorithm
83         void frontalMarking();
85         //- mark OUTSIDE octree boxes
86         void markOutsideCubes();
88         //- revise DATA boxes
89         void reviseDataBoxes();
91         //- mark INSIDE octree boxes
92         void markInsideCubes();
94     public:
96     // Constructor
98         //- Construct from octree
99         meshOctreeInsideOutside
100         (
101             meshOctree& octree
102         );
104     // Destructor
106         ~meshOctreeInsideOutside();
109 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
111 } // End namespace Foam
113 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
115 #endif
117 // ************************************************************************* //