BUG: createBaffles.C: converting coupled faces into baffles
[OpenFOAM-2.0.x.git] / applications / utilities / mesh / conversion / datToFoam / datToFoam.C
blob24e4e9ebad427e01cb1d1485a42d83e66c58239e
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 Application
25     datToFoam
27 Description
28     Reads in a datToFoam mesh file and outputs a points file.  Used in
29     conjunction with blockMesh.
31 \*---------------------------------------------------------------------------*/
33 #include "argList.H"
34 #include "Time.H"
35 #include "IFstream.H"
36 #include "OFstream.H"
37 #include "pointField.H"
38 #include "unitConversion.H"
40 using namespace Foam;
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 // Main program:
45 int main(int argc, char *argv[])
47     argList::noParallel();
48     argList::validArgs.append("dat file");
50     argList args(argc, argv);
52     if (!args.check())
53     {
54          FatalError.exit();
55     }
57     #include "createTime.H"
59     std::ifstream plot3dFile(args.args()[1].c_str());
61     string line;
62     std::getline(plot3dFile, line);
63     std::getline(plot3dFile, line);
65     IStringStream Istring(line);
66     word block;
67     string zoneName;
68     token punctuation;
69     label iPoints;
70     label jPoints;
72     Istring >> block;
73     Istring >> block;
74     Istring >> zoneName;
75     Istring >> punctuation;
76     Istring >> block;
77     Istring >> iPoints;
78     Istring >> block;
79     Istring >> jPoints;
81     Info<< "Number of vertices in i direction = " << iPoints << endl
82         << "Number of vertices in j direction = " << jPoints << endl;
84     // We ignore the first layer of points in i and j the biconic meshes
85     label nPointsij = (iPoints - 1)*(jPoints - 1);
87     pointField points(nPointsij, vector::zero);
89     for (direction comp = 0; comp < 2; comp++)
90     {
91         label p(0);
93         for (label j = 0; j < jPoints; j++)
94         {
95             for (label i = 0; i < iPoints; i++)
96             {
97                 double coord;
98                 plot3dFile >> coord;
100                 // if statement ignores the first layer in i and j
101                 if (i>0 && j>0)
102                 {
103                     points[p++][comp] = coord;
104                 }
105             }
106         }
107     }
109     // correct error in biconic meshes
110     forAll(points, i)
111     {
112         if (points[i][1] < 1e-07)
113         {
114             points[i][1] = 0.0;
115         }
116     }
118     pointField pointsWedge(nPointsij*2, vector::zero);
120     fileName pointsFile(runTime.constantPath()/"points.tmp");
121     OFstream pFile(pointsFile);
123     scalar a(degToRad(0.1));
124     tensor rotateZ =
125         tensor
126         (
127             1.0, 0.0, 0.0,
128             0.0, 1.0, 0.0,
129             0.0, -::sin(a), ::cos(a)
130         );
132     forAll(points, i)
133     {
134         pointsWedge[i] = (rotateZ & points[i]);
135         pointsWedge[i+nPointsij] = cmptMultiply
136         (
137             vector(1.0, 1.0, -1.0),
138             pointsWedge[i]
139         );
140     }
142     Info<< "Writing points to: " << nl
143          << "    " << pointsFile << endl;
144     pFile << pointsWedge;
146     Info<< "End" << endl;
148     return 0;
152 // ************************************************************************* //