FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

surfaceRefineRedGreen.C

Go to the documentation of this file.
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: ************************ //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines