ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / mesh / autoMesh / autoHexMesh / autoHexMeshDriver / pointData / pointData.H
blobb215732e3e72596d6c1b4e4feb069632a9f409d2
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 Class
25     Foam::pointData
27 Description
28     Variant of pointEdgePoint with some transported additional data.
29     WIP - should be templated on data like wallDistData.
30     Passive vector v_ is not a coordinate (so no enterDomain/leaveDomain
31     transformation needed)
33 SourceFiles
34     pointDataI.H
35     pointData.C
37 \*---------------------------------------------------------------------------*/
39 #ifndef pointData_H
40 #define pointData_H
42 #include "pointEdgePoint.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                            Class pointData Declaration
52 \*---------------------------------------------------------------------------*/
54 class pointData
56     public pointEdgePoint
58     // Private data
60         //- additional information.
61         scalar s_;
63         //- additional information.
64         vector v_;
66 public:
68     // Constructors
70         //- Construct null
71         inline pointData();
73         //- Construct from origin, distance
74         inline pointData
75         (
76             const point& origin,
77             const scalar distSqr,
78             const scalar s,
79             const vector& v
80         );
82         //- Construct as copy
83         inline pointData(const pointData&);
86     // Member Functions
88         // Access
90             inline scalar s() const;
92             inline const vector& v() const;
95         // Needed by meshWave
97             //- Apply rotation matrix to origin
98             template<class TrackingData>
99             inline void transform
100             (
101                 const tensor& rotTensor,
102                 TrackingData& td
103             );
105             //- Influence of edge on point
106             template<class TrackingData>
107             inline bool updatePoint
108             (
109                 const polyMesh& mesh,
110                 const label pointI,
111                 const label edgeI,
112                 const pointData& edgeInfo,
113                 const scalar tol,
114                 TrackingData& td
115             );
117             //- Influence of different value on same point.
118             //  Merge new and old info.
119             template<class TrackingData>
120             inline bool updatePoint
121             (
122                 const polyMesh& mesh,
123                 const label pointI,
124                 const pointData& newPointInfo,
125                 const scalar tol,
126                 TrackingData& td
127             );
129             //- Influence of different value on same point.
130             //  No information about current position whatsoever.
131             template<class TrackingData>
132             inline bool updatePoint
133             (
134                 const pointData& newPointInfo,
135                 const scalar tol,
136                 TrackingData& td
137             );
139             //- Influence of point on edge.
140             template<class TrackingData>
141             inline bool updateEdge
142             (
143                 const polyMesh& mesh,
144                 const label edgeI,
145                 const label pointI,
146                 const pointData& pointInfo,
147                 const scalar tol,
148                 TrackingData& td
149             );
151     // IOstream Operators
153         friend Ostream& operator<<(Ostream&, const pointData&);
154         friend Istream& operator>>(Istream&, pointData&);
158 //- Data associated with pointData as contiguous as pointEdgePoint
159 template<>
160 inline bool contiguous<pointData>()
162     return contiguous<pointEdgePoint>();
166 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
168 } // End namespace Foam
170 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 #include "pointDataI.H"
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
176 #endif
178 // ************************************************************************* //