intersection with triangle plane for miss
[OpenFOAM-1.5.x.git] / applications / utilities / mesh / generation / blockMesh / curvedEdges / lineDivide.C
blobd2ecdd0c7f731f6850771964092978e6eec71b82
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 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 the
13     Free Software Foundation; either version 2 of the License, or (at your
14     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, write to the Free Software Foundation,
23     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 Description
26     lineDivide class : divides a line into segments
28 \*---------------------------------------------------------------------------*/
30 #include "error.H"
32 #include "lineDivide.H"
33 #include "curvedEdge.H"
35 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 namespace Foam
40 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
42 // Construct from components
43 lineDivide::lineDivide(const curvedEdge& bc, const label n, const scalar xratio)
45     points_(n + 1),
46     divisions_(n + 1),
47     noPoints_(n)
49     scalar np(n);
50     scalar lambda(0.0);
52     if (xratio == 1.0)
53     {
54         scalar y(1.0/np);
55         for (label i=0; i<=noPoints_; i++)
56         {
57             lambda = scalar(i)/np;
58             points_[i] = bc.position(lambda);
59             divisions_[i] = y*i;
60         }
61     }
62     else
63     {
64         points_[0] = bc.position(0.0);
65         divisions_[0] = 0.0;
66         scalar xrpower = 1.0;
68         for (label i=1; i<=noPoints_; i++)
69         {
70             lambda = (1.0 - pow(xratio, i))/(1.0 - pow(xratio, np));
71             points_[i] = bc.position(lambda);
72             divisions_[i] = lambda;
73             xrpower *= xratio;
74         }
75     }
79 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
81 const pointField& lineDivide::points() const
83     return points_;
87 const scalarList& lineDivide::lambdaDivisions() const
89     return divisions_;
93 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
95 } // End namespace Foam
97 // ************************************************************************* //