Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / utilities / mesh / conversion / star4ToFoam / star4ToFoam.C
blob08940744bb7a28ae1379efe3eec0232bd0ba8e9c
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 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 Application
25     star4ToFoam
27 Description
28     Converts a Star-CD (v4) pro-STAR mesh into OpenFOAM format.
30 Usage
31     - star4ToFoam [OPTION] ccmMesh\n
32       convert pro-STAR mesh to OpenFOAM
34     \param -ascii \n
35     Write in ASCII format instead of binary
37     \param -scale \<factor\>\n
38     Specify an alternative geometry scaling factor.
39     The default is \b 0.001 (scale \em [mm] to \em [m]).
41     \param -solids \n
42     Treat any solid cells present just like fluid cells.
43     The default is to discard them.
45 Note
46     - baffles are written as interfaces for later use
48 \*---------------------------------------------------------------------------*/
50 #include "argList.H"
51 #include "Time.H"
52 #include "STARCDMeshReader.H"
53 #include "OFstream.H"
55 using namespace Foam;
57 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
58 //  Main program:
60 int main(int argc, char *argv[])
62     argList::addNote
63     (
64         "convert pro-STAR (v4) mesh to OpenFOAM"
65     );
67     argList::noParallel();
68     argList::validArgs.append("pro-STAR prefix");
69     argList::addBoolOption
70     (
71         "ascii",
72         "write in ASCII instead of binary format"
73     );
74     argList::addOption
75     (
76         "scale",
77         "factor",
78         "geometry scaling factor - default is 0.001 ([mm] to [m])"
79     );
80     argList::addBoolOption
81     (
82         "solids",
83         "retain solid cells and treat them like fluid cells"
84     );
86     argList args(argc, argv);
87     Time runTime(args.rootPath(), args.caseName());
89     // default rescale from [mm] to [m]
90     scalar scaleFactor = args.optionLookupOrDefault("scale", 0.001);
91     if (scaleFactor <= 0)
92     {
93         scaleFactor = 1;
94     }
96     meshReaders::STARCD::keepSolids = args.optionFound("solids");
98     // default to binary output, unless otherwise specified
99     IOstream::streamFormat format = IOstream::BINARY;
100     if (args.optionFound("ascii"))
101     {
102         format = IOstream::ASCII;
103     }
105     // increase the precision of the points data
106     IOstream::defaultPrecision(10);
108     // remove extensions and/or trailing '.'
109     const fileName prefix = fileName(args[1]).lessExt();
111     meshReaders::STARCD reader(prefix, runTime, scaleFactor);
113     autoPtr<polyMesh> mesh = reader.mesh(runTime);
114     reader.writeMesh(mesh, format);
117     Info<< "\nEnd\n" << endl;
119     return 0;
122 // ************************************************************************* //