Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / mesh / autoMesh / autoHexMesh / autoHexMeshDriver / pointData / pointDataI.H
blobf519d07dc46efb9d51ed4e698694c9789487671f
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2010 OpenCFD Ltd.
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 "polyMesh.H"
27 #include "transform.H"
29 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
31 // Null constructor
32 inline Foam::pointData::pointData()
34     pointEdgePoint(),
35     s_(GREAT),
36     v_(point::max)
40 // Construct from origin, distance
41 inline Foam::pointData::pointData
43     const point& origin,
44     const scalar distSqr,
45     const scalar s,
46     const vector& v
49     pointEdgePoint(origin, distSqr),
50     s_(s),
51     v_(v)
55 // Construct as copy
56 inline Foam::pointData::pointData(const pointData& wpt)
58     pointEdgePoint(wpt),
59     s_(wpt.s()),
60     v_(wpt.v())
64 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
66 inline Foam::scalar Foam::pointData::s() const
68     return s_;
72 inline const Foam::vector& Foam::pointData::v() const
74     return v_;
78 template <class TrackingData>
79 inline void Foam::pointData::transform
81     const tensor& rotTensor,
82     TrackingData& td
85     pointEdgePoint::transform(rotTensor, td);
86     v_ = Foam::transform(rotTensor, v_);
90 // Update this with information from connected edge
91 template <class TrackingData>
92 inline bool Foam::pointData::updatePoint
94     const polyMesh& mesh,
95     const label pointI,
96     const label edgeI,
97     const pointData& edgeInfo,
98     const scalar tol,
99     TrackingData& td
102     if
103     (
104         pointEdgePoint::updatePoint
105         (
106             mesh,
107             pointI,
108             edgeI,
109             edgeInfo,
110             tol,
111             td
112         )
113     )
114     {
115         s_ = edgeInfo.s_;
116         v_ = edgeInfo.v_;
117         return true;
118     }
119     else
120     {
121         return false;
122     }
125 // Update this with new information on same point
126 template <class TrackingData>
127 inline bool Foam::pointData::updatePoint
129     const polyMesh& mesh,
130     const label pointI,
131     const pointData& newPointInfo,
132     const scalar tol,
133     TrackingData& td
136     if
137     (
138         pointEdgePoint::updatePoint
139         (
140             mesh,
141             pointI,
142             newPointInfo,
143             tol,
144             td
145         )
146     )
147     {
148         s_ = newPointInfo.s_;
149         v_ = newPointInfo.v_;
150         return true;
151     }
152     else
153     {
154         return false;
155     }
159 // Update this with new information on same point. No extra information.
160 template <class TrackingData>
161 inline bool Foam::pointData::updatePoint
163     const pointData& newPointInfo,
164     const scalar tol,
165     TrackingData& td
168     if (pointEdgePoint::updatePoint(newPointInfo, tol, td))
169     {
170         s_ = newPointInfo.s_;
171         v_ = newPointInfo.v_;
172         return true;
173     }
174     else
175     {
176         return false;
177     }
181 // Update this with information from connected point
182 template <class TrackingData>
183 inline bool Foam::pointData::updateEdge
185     const polyMesh& mesh,
186     const label edgeI,
187     const label pointI,
188     const pointData& pointInfo,
189     const scalar tol,
190     TrackingData& td
194     if
195     (
196         pointEdgePoint::updateEdge
197         (
198             mesh,
199             edgeI,
200             pointI,
201             pointInfo,
202             tol,
203             td
204         )
205     )
206     {
207         s_ = pointInfo.s_;
208         v_ = pointInfo.v_;
209         return true;
210     }
211     else
212     {
213         return false;
214     }
218 // ************************************************************************* //