Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / mesh / blockMesh / curvedEdges / arcEdge.H
blobfbb71605f3886d017534efeebe778d893b3bf802
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 Class
25     Foam::arcEdge
27 Description
28     Defines the arcEdge of a circle in terms of 3 points on its circumference
30 SourceFiles
31     arcEdge.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef arcEdge_H
36 #define arcEdge_H
38 #include "curvedEdge.H"
39 #include "cylindricalCS.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                            Class arcEdge Declaration
48 \*---------------------------------------------------------------------------*/
50 class arcEdge
52     public curvedEdge
54     // Private data
56         point p1_, p2_, p3_;
57         cylindricalCS cs_;
58         scalar angle_;
59         scalar radius_;
61     // Private Member Functions
63         //- Calculate the coordinate system, angle and radius
64         cylindricalCS calcAngle();
66         //- Disallow default bitwise copy construct
67         arcEdge(const arcEdge&);
69         //- Disallow default bitwise assignment
70         void operator=(const arcEdge&);
72 public:
74     //- Runtime type information
75     TypeName("arc");
78     // Constructors
80         //- Construct from components
81         arcEdge
82         (
83             const pointField& points,
84             const label start, const label end,
85             const point& pMid
86         );
88         //- Construct from Istream setting pointsList
89         arcEdge(const pointField& points, Istream&);
92     //- Destructor
93     virtual ~arcEdge(){}
96     // Member Functions
98         //- Return the point position corresponding to the curve parameter
99         //  0 <= lambda <= 1
100         point position(const scalar) const;
102         //- Return the length of the curve
103         scalar length() const;
107 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
109 } // End namespace Foam
111 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
113 #endif
115 // ************************************************************************* //