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 surfaceRefineRedGreen 00026 00027 Description 00028 Refine by splitting all three edges of triangle ('red' refinement). 00029 Neighbouring triangles (which are not marked for refinement get split 00030 in half ('green') refinement. 00031 00032 (R. Verfuerth, "A review of a posteriori error estimation and adaptive mesh 00033 refinement techniques", Wiley-Teubner, 1996) 00034 00035 Usage 00036 00037 - surfaceRefineRedGreen [OPTIONS] <Foam surface file> <surface output file> 00038 00039 @param <Foam surface file> \n 00040 @todo Detailed description of argument. 00041 00042 @param <surface output file> \n 00043 @todo Detailed description of argument. 00044 00045 @param -case <dir>\n 00046 Case directory. 00047 00048 @param -help \n 00049 Display help message. 00050 00051 @param -doc \n 00052 Display Doxygen API documentation page for this application. 00053 00054 @param -srcDoc \n 00055 Display Doxygen source documentation page for this application. 00056 00057 \*---------------------------------------------------------------------------*/ 00058 00059 #include <triSurface/triSurface.H> 00060 #include <meshTools/triSurfaceTools.H> 00061 #include <OpenFOAM/argList.H> 00062 #include <OpenFOAM/OFstream.H> 00063 00064 using namespace Foam; 00065 00066 00067 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 00068 // Main program: 00069 00070 int main(int argc, char *argv[]) 00071 { 00072 argList::noParallel(); 00073 argList::validArgs.clear(); 00074 argList::validArgs.append("surface file"); 00075 argList::validArgs.append("output surface file"); 00076 argList args(argc, argv); 00077 00078 fileName surfFileName(args.additionalArgs()[0]); 00079 fileName outFileName(args.additionalArgs()[1]); 00080 00081 Info<< "Reading surface from " << surfFileName << " ..." << endl; 00082 00083 triSurface surf1(surfFileName); 00084 00085 // Refine 00086 triSurface surf2 = triSurfaceTools::redGreenRefine 00087 ( 00088 surf1, 00089 identity(surf1.size()) //Hack: refine all 00090 ); 00091 00092 Info<< "Original surface:" << endl 00093 << " triangles :" << surf1.size() << endl 00094 << " vertices(used):" << surf1.nPoints() << endl 00095 << "Refined surface:" << endl 00096 << " triangles :" << surf2.size() << endl 00097 << " vertices(used):" << surf2.nPoints() << endl << endl; 00098 00099 00100 Info<< "Writing refined surface to " << outFileName << " ..." << endl; 00101 00102 surf2.write(outFileName); 00103 00104 Info << "End\n" << endl; 00105 00106 return 0; 00107 } 00108 00109 00110 // ************************ vim: set sw=4 sts=4 et: ************************ //