Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / mesh / cfMesh / utilities / boundaryLayers / triangulateNonPlanarBaseFaces / triangulateNonPlanarBaseFaces.C
blob39837584f6f149ce3ab8a79bf71b8834a0fa9811
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | cfMesh: A library for mesh generation
4    \\    /   O peration     |
5     \\  /    A nd           | Author: Franjo Juretic (franjo.juretic@c-fields.com)
6      \\/     M anipulation  | Copyright (C) Creative Fields, Ltd.
7 -------------------------------------------------------------------------------
8 License
9     This file is part of cfMesh.
11     cfMesh 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     cfMesh 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 cfMesh.  If not, see <http://www.gnu.org/licenses/>.
24 Description
26 \*---------------------------------------------------------------------------*/
28 #include "triangulateNonPlanarBaseFaces.H"
29 #include "dictionary.H"
30 #include "demandDrivenData.H"
32 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34 namespace Foam
37 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
39 triangulateNonPlanarBaseFaces::triangulateNonPlanarBaseFaces
41     polyMeshGen& mesh
44     mesh_(mesh),
45     invertedCell_(mesh_.cells().size(), false),
46     decomposeFace_(mesh_.faces().size(), false),
47     tol_(0.5)
50 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
52 triangulateNonPlanarBaseFaces::~triangulateNonPlanarBaseFaces()
55 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
57 void triangulateNonPlanarBaseFaces::setRelativeTolerance(const scalar tol)
59     tol_ = tol;
62 void triangulateNonPlanarBaseFaces::triangulateLayers()
64     if( findNonPlanarBoundaryFaces() )
65     {
66         Info << "Decomposing twisted boundary faces" << endl;
68         decomposeBoundaryFaces();
70         decomposeCellsIntoPyramids();
71     }
72     else
73     {
74         Info << "All boundary faces are flat" << endl;
75     }
78 void triangulateNonPlanarBaseFaces::readSettings
80     const dictionary& meshDict,
81     triangulateNonPlanarBaseFaces& triangulator
84     if( meshDict.found("boundaryLayers") )
85     {
86         const dictionary& layersDict = meshDict.subDict("boundaryLayers");
88         if( layersDict.found("optimisationParameters") )
89         {
90             const dictionary& optLayerDict =
91                 layersDict.subDict("optimisationParameters");
93             if( optLayerDict.found("relFlatnessTol") )
94             {
95                 const scalar relTol =
96                     readScalar(optLayerDict.lookup("relFlatnessTol"));
98                 triangulator.setRelativeTolerance(relTol);
99             }
100         }
101     }
104 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
106 } // End namespace Foam
108 // ************************************************************************* //