00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. 00006 \\/ M anipulation | 00007 ------------------------------------------------------------------------------- 00008 License 00009 This file is part of OpenFOAM. 00010 00011 OpenFOAM is free software: you can redistribute it and/or modify it 00012 under the terms of the GNU General Public License as published by 00013 the Free Software Foundation, either version 3 of the License, or 00014 (at your option) any later version. 00015 00016 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00019 for more details. 00020 00021 You should have received a copy of the GNU General Public License 00022 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. 00023 00024 Application 00025 flattenMesh 00026 00027 Description 00028 Flattens the front and back planes of a 2D cartesian mesh. 00029 00030 Usage 00031 00032 - flattenMesh [OPTIONS] 00033 00034 @param -case <dir>\n 00035 Case directory. 00036 00037 @param -parallel \n 00038 Run in parallel. 00039 00040 @param -help \n 00041 Display help message. 00042 00043 @param -doc \n 00044 Display Doxygen API documentation page for this application. 00045 00046 @param -srcDoc \n 00047 Display Doxygen source documentation page for this application. 00048 00049 \*---------------------------------------------------------------------------*/ 00050 00051 #include <OpenFOAM/argList.H> 00052 #include <OpenFOAM/Time.H> 00053 #include <OpenFOAM/polyMesh.H> 00054 #include <OpenFOAM/emptyPolyPatch.H> 00055 #include <meshTools/twoDPointCorrector.H> 00056 00057 using namespace Foam; 00058 00059 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00060 // Main program: 00061 00062 int main(int argc, char *argv[]) 00063 { 00064 # include <OpenFOAM/setRootCase.H> 00065 # include <OpenFOAM/createTime.H> 00066 # include <OpenFOAM/createPolyMesh.H> 00067 00068 pointIOField points 00069 ( 00070 IOobject 00071 ( 00072 "points", 00073 runTime.findInstance(polyMesh::meshSubDir, "points"), 00074 polyMesh::meshSubDir, 00075 runTime, 00076 IOobject::MUST_READ, 00077 IOobject::NO_WRITE, 00078 false 00079 ) 00080 ); 00081 00082 boundBox bb(points); 00083 00084 Info<< "bounding box: min = " << bb.min() 00085 << " max = " << bb.max() << " meters." 00086 << endl; 00087 00088 00089 point midPoint = gAverage(points); 00090 00091 twoDPointCorrector twoDCorr(mesh); 00092 00093 direction planeNormalCmpt = twoDCorr.normalDir(); 00094 00095 scalar midCmptVal = midPoint[planeNormalCmpt]; 00096 scalar minCmptVal = bb.min()[planeNormalCmpt]; 00097 scalar maxCmptVal = bb.max()[planeNormalCmpt]; 00098 00099 forAll(points, pointI) 00100 { 00101 if (points[pointI][planeNormalCmpt] < midCmptVal) 00102 { 00103 points[pointI][planeNormalCmpt] = minCmptVal; 00104 } 00105 else 00106 { 00107 points[pointI][planeNormalCmpt] = maxCmptVal; 00108 } 00109 } 00110 00111 twoDCorr.correctPoints(points); 00112 00113 // Set the precision of the points data to 10 00114 IOstream::defaultPrecision(10); 00115 00116 Info << "Writing points into directory " << points.path() << nl << endl; 00117 points.write(); 00118 00119 return 0; 00120 } 00121 00122 00123 // ************************ vim: set sw=4 sts=4 et: ************************ //