Moving cfMesh into place. Updated contibutors list
[foam-extend-3.2.git] / src / mesh / cfMesh / meshLibrary / utilities / boundaryLayers / extrudeLayerI.H
blob1ccb1a0825c4cddfd28e42dc5e2c89ec6eed5946
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 Description
27 \*---------------------------------------------------------------------------*/
30 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
32 namespace Foam
35 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 inline label extrudeLayer::addressingCalculator::origFaceLabel
39     const label extrudedI
40 ) const
42     return extrudedFaces_[extrudedI].second();
45 inline label extrudeLayer::addressingCalculator::positionInFace
47     const label extrudedI,
48     const label pointI
49 ) const
51     const face& f = faces_[extrudedFaces_[extrudedI].first()];
52     
53     return f.which(pointI);
55                 
56 inline label extrudeLayer::addressingCalculator::origPointLabel
58     const label extrudedI,
59     const label pos
60 ) const
62     const face& of = faces_[extrudedFaces_[extrudedI].second()];
63     
64     if( pairOrientation_[extrudedI] )
65     {
66         return of[pos];
67     }
68     else
69     {
70         return of[(of.size()-pos)%of.size()];
71     }
72     
73     FatalErrorIn
74     (
75         "label extrudeLayer::addressingCalculator::origPointLabel"
76         "(const label, const label) const"
77     ) << "Cannot find point for the given position" << abort(FatalError);
78     
79     return -1;
82 inline label extrudeLayer::addressingCalculator::origPoint
84     const label extrudedI,
85     const label pointI
86 ) const
88     const face& f = faces_[extrudedFaces_[extrudedI].first()];
89     const face& of = faces_[extrudedFaces_[extrudedI].second()];
90     const label pos = f.which(pointI);
91     
92     if( pairOrientation_[extrudedI] )
93     {
94         return of[pos];
95     }
96     else
97     {
98         return of[(of.size()-pos)%of.size()];
99     }
100     
101     FatalErrorIn
102     (
103         "label extrudeLayer::addressingCalculator::origPoint"
104         "(const label, const label) const"
105     ) << "Cannot find point for the given position" << abort(FatalError);
106     
107     return -1;
110 inline label extrudeLayer::addressingCalculator::faceSharingEdge
112     const label extrudedI,
113     const label eI
114 ) const
116     const face& f = faces_[extrudedFaces_[extrudedI].first()];
117     
118     const label pointI = f[eI];
119     const label nextI = f.nextLabel(eI);
120     
121     label otherFace(-1);
122     forAllRow(pointExtruded_, pointI, pfI)
123     {
124         const label currFaceI = pointExtruded_(pointI, pfI);
125         
126         if( currFaceI == extrudedI )
127             continue;
128         
129         if( pointExtruded_.contains(nextI, currFaceI) )
130         {
131             if( otherFace != -1 )
132                 FatalErrorIn
133                 (
134                     "label extrudeLayer::addressingCalculator::faceSharingEdge"
135                     "(const label, const label) const"
136                 ) << "Expected only one such face"
137                     << abort(FatalError);
138             
139             otherFace = currFaceI;
140         }
141     }
142     
143     return otherFace;
146 inline void extrudeLayer::addressingCalculator::facesSharingEdge
148     const label start,
149     const label end,
150     DynList<label>& edgeFaces
151 ) const
153     edgeFaces.clear();
154     
155     forAllRow(pointExtruded_, start, pfI)
156     {
157         const label currFaceI = pointExtruded_(start, pfI);
158         
159         if( pointExtruded_.contains(end, currFaceI) )
160             edgeFaces.append(currFaceI);
161     }
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 } // End namespace Foam
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //