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 / surfaceTools / meshSurfaceEdgeExtractorFUN / meshSurfaceEdgeExtractorFUN.C
bloba0c5e3bf0f4f0ed916a6f0013d2bfc82e3558ade
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 "meshSurfaceEdgeExtractorFUN.H"
29 #include "meshSurfaceEngine.H"
30 #include "demandDrivenData.H"
32 # ifdef USE_OMP
33 #include <omp.h>
34 # endif
36 // #define DEBUGSearch
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 namespace Foam
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 meshSurfaceEngine& meshSurfaceEdgeExtractorFUN::surfaceEngine()
47     # ifdef USE_OMP
48     if( omp_in_parallel() )
49         FatalErrorIn
50         (
51             "meshSurfaceEngine& meshSurfaceEdgeExtractorFUN::surfaceEngine()"
52         ) << "Cannot create surface engine with a parallel region"
53             << exit(FatalError);
54     # endif
56     if( !surfaceEnginePtr_ )
57         surfaceEnginePtr_ = new meshSurfaceEngine(mesh_);
59     return *surfaceEnginePtr_;
62 void meshSurfaceEdgeExtractorFUN::clearOut()
64     deleteDemandDrivenData(surfaceEnginePtr_);
67 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
69 // Construct from mesh and octree
70 meshSurfaceEdgeExtractorFUN::meshSurfaceEdgeExtractorFUN
72     polyMeshGen& mesh,
73     const meshOctree& octree,
74     const bool createWrapperSheet
77     mesh_(mesh),
78     meshOctree_(octree),
79     surfaceEnginePtr_(NULL),
80     createWrapperSheet_(createWrapperSheet)
82     if( Pstream::parRun() )
83         FatalErrorIn
84         (
85             "meshSurfaceEdgeExtractorFUN::meshSurfaceEdgeExtractorFUN"
86             "(polyMeshGen&, const meshOctree&)"
87         ) << "Cannot run in parallel!" << exit(FatalError);
89     createBasicFundamentalSheets();
91     smoothMeshSurface();
93     remapBoundaryPoints();
96 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
98 meshSurfaceEdgeExtractorFUN::~meshSurfaceEdgeExtractorFUN()
100     deleteDemandDrivenData(surfaceEnginePtr_);
103 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
105 } // End namespace Foam
107 // ************************************************************************* //