1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | foam-extend: Open Source CFD
4 \\ / O peration | Version: 3.2
5 \\ / A nd | Web: http://www.foam-extend.org
6 \\/ M anipulation | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
9 This file is part of foam-extend.
11 foam-extend is free software: you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation, either version 3 of the License, or (at your
14 option) any later version.
16 foam-extend is distributed in the hope that it will be useful, but
17 WITHOUT ANY WARRANTY; without even the implied warranty of
18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 General Public License for more details.
21 You should have received a copy of the GNU General Public License
22 along with foam-extend. If not, see <http://www.gnu.org/licenses/>.
28 - collapses small edges, removing triangles.
29 - converts sliver triangles into split edges by projecting point onto
32 \*---------------------------------------------------------------------------*/
34 #include "triSurface.H"
38 #include "collapseBase.H"
39 #include "collapseEdge.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 int main(int argc, char *argv[])
49 argList::validArgs.clear();
50 argList::noParallel();
51 argList::validArgs.append("surface file");
52 argList::validArgs.append("min length");
53 argList::validArgs.append("output surface file");
54 argList args(argc, argv);
56 fileName inFileName(args.additionalArgs()[0]);
57 scalar minLen(readScalar(IStringStream(args.additionalArgs()[1])()));
58 fileName outFileName(args.additionalArgs()[2]);
60 Pout<< "Reading surface " << inFileName << nl
61 << "Collapsing all triangles with edges or heights < " << minLen << nl
62 << "Writing result to " << outFileName << nl << endl;
65 Pout<< "Reading surface from " << inFileName << " ..." << nl << endl;
66 triSurface surf(inFileName);
67 surf.writeStats(Pout);
70 Pout<< "Collapsing triangles to edges ..." << nl << endl;
74 label nEdgeCollapse = collapseEdge(surf, minLen);
76 if (nEdgeCollapse == 0)
83 label nSplitEdge = collapseBase(surf, minLen);
91 Pout<< nl << "Resulting surface:" << endl;
92 surf.writeStats(Pout);
95 Pout<< "Writing refined surface to " << outFileName << " ..." << endl;
96 surf.write(outFileName);
99 Pout<< "End\n" << endl;
105 // ************************************************************************* //