voronoiMeshGenerator.C
Go to the documentation of this file.
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.
10 
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.
15 
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.
20 
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/>.
23 
24 Description
25 
26 \*---------------------------------------------------------------------------*/
27 
28 #include "voronoiMeshGenerator.H"
29 #include "triSurf.H"
30 #include "demandDrivenData.H"
31 #include "meshOctreeCreator.H"
32 #include "voronoiMeshExtractor.H"
33 #include "meshSurfaceEngine.H"
34 #include "meshSurfaceMapper.H"
35 #include "surfaceMorpherCells.H"
36 #include "meshOptimizer.H"
37 #include "meshSurfaceOptimizer.H"
38 #include "topologicalCleaner.H"
39 #include "boundaryLayers.H"
40 #include "refineBoundaryLayers.H"
41 #include "renameBoundaryPatches.H"
42 #include "checkMeshDict.H"
44 #include "triSurfaceMetaData.H"
47 #include "edgeExtractor.H"
49 
50 //#define DEBUG
51 
52 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
53 
54 namespace Foam
55 {
56 
57 // * * * * * * * * * * * * Private member functions * * * * * * * * * * * * //
58 
60 {
61  //- create voronoi mesh from octree and Delaunay tets
63 
64  vme.createMesh();
65 
66  # ifdef DEBUG
67  mesh_.write();
68  //::exit(EXIT_FAILURE);
69  # endif
70 }
71 
73 {
74  //- removes unnecessary cells and morphs the boundary
75  //- such that there exists only one boundary face per cell
76 
78  cmPtr->morphMesh();
80 
81  # ifdef DEBUG
82  mesh_.write();
83  //::exit(EXIT_FAILURE);
84  # endif
85 }
86 
88 {
89  //- calculate mesh surface
91 
92  //- map mesh surface on the geometry surface
93  meshSurfaceMapper mapper(*msePtr, *octreePtr_);
94  mapper.preMapVertices();
95  mapper.mapVerticesOntoSurface();
96 
97  # ifdef DEBUG
98  mesh_.write();
99  //::exit(EXIT_FAILURE);
100  # endif
101 
102  //- untangle surface faces
104 
105  # ifdef DEBUG
106  mesh_.write();
107  ::exit(EXIT_FAILURE);
108  # endif
109 
110  deleteDemandDrivenData(msePtr);
111 }
112 
114 {
115  edgeExtractor extractor(mesh_, *octreePtr_);
116 
117  Info << "Extracting edges" << endl;
118  extractor.extractEdges();
119 
120  extractor.updateMeshPatches();
121 }
122 
124 {
126 
127  # ifdef DEBUG
128  mesh_.write();
129  //::exit(EXIT_FAILURE);
130  # endif
131 }
132 
134 {
136  meshSurfaceOptimizer surfOptimiser(mse, *octreePtr_);
137  surfOptimiser.optimizeSurface();
138  surfOptimiser.untangleSurface();
139 
140  # ifdef DEBUG
141  mesh_.write();
142  //::exit(EXIT_FAILURE);
143  # endif
144 }
145 
147 {
148  boundaryLayers bl(mesh_);
149 
150  if( meshDict_.found("boundaryLayers") )
151  {
152  boundaryLayers bl(mesh_);
153 
154  const dictionary& bndLayers = meshDict_.subDict("boundaryLayers");
155 
156  if( bndLayers.found("nLayers") )
157  {
158  const label nLayers = readLabel(bndLayers.lookup("nLayers"));
159 
160  if( nLayers > 0 )
162  }
163  else if( bndLayers.found("patchBoundaryLayers") )
164  {
165  const dictionary& patchLayers =
166  bndLayers.subDict("patchBoundaryLayers");
167  const wordList createLayers = patchLayers.toc();
168 
169  forAll(createLayers, patchI)
170  bl.addLayerForPatch(createLayers[patchI]);
171  }
172  }
173 
174  # ifdef DEBUG
175  mesh_.write();
176  //::exit(EXIT_FAILURE);
177  # endif
178 }
179 
181 {
182  if( meshDict_.isDict("boundaryLayers") )
183  {
184  refineBoundaryLayers refLayers(mesh_);
185 
187 
188  refLayers.refineLayers();
189 
190  labelLongList pointsInLayer;
191  refLayers.pointsInBndLayer(pointsInLayer);
192 
193  meshOptimizer mOpt(mesh_);
194  mOpt.lockPoints(pointsInLayer);
195  mOpt.untangleBoundaryLayer();
196  }
197 }
198 
200 {
201  //- untangle the surface if needed
202  bool enforceConstraints(false);
203  if( meshDict_.found("enforceGeometryConstraints") )
204  {
205  enforceConstraints =
206  readBool(meshDict_.lookup("enforceGeometryConstraints"));
207  }
208 
209  if( true )
210  {
212  meshSurfaceOptimizer surfOpt(mse, *octreePtr_);
213 
214  if( enforceConstraints )
215  surfOpt.enforceConstraints();
216 
217  surfOpt.optimizeSurface();
218  }
219 
221 
222  //- final optimisation
223  meshOptimizer optimizer(mesh_);
224  if( enforceConstraints )
225  optimizer.enforceConstraints();
226  optimizer.optimizeMeshFV();
227 
228  optimizer.optimizeLowQualityFaces();
229  optimizer.optimizeBoundaryLayer(false);
230  optimizer.untangleMeshFV();
231 
233 
234  if( modSurfacePtr_ )
235  {
237 
238  //- revert the mesh into the original space
239  meshMod.revertGeometryModification();
240 
241  //- delete modified surface mesh
243  }
244 
245  # ifdef DEBUG
246  mesh_.write();
247  //::exit(0);
248  # endif
249 }
250 
252 {
253  if( !meshDict_.found("anisotropicSources") )
254  return;
255 
258 
260  (
261  *octreePtr_,
262  meshDict_
264 
265  //- calculate mesh surface
267 
268  //- pre-map mesh surface
269  meshSurfaceMapper mapper(mse, *octreePtr_);
270 
271  //- map mesh surface on the geometry surface
272  mapper.mapVerticesOntoSurface();
273 
275 }
276 
278 {
280 
281  # ifdef DEBUG
282  mesh_.write();
283  //::exit(0);
284  # endif
285 }
286 
288 {
290 
291  # ifdef DEBUG
292  mesh_.write();
293  //::exit(0);
294  # endif
295 }
296 
298 {
299  try
300  {
301  if( controller_.runCurrentStep("templateGeneration") )
302  {
304  }
305 
306  if( controller_.runCurrentStep("surfaceTopology") )
307  {
309  }
310 
311  if( controller_.runCurrentStep("surfaceProjection") )
312  {
314  }
315 
316  if( controller_.runCurrentStep("patchAssignment") )
317  {
318  extractPatches();
319  }
320 
321  if( controller_.runCurrentStep("edgeExtraction") )
322  {
324 
326  }
327 
328  if( controller_.runCurrentStep("boundaryLayerGeneration") )
329  {
331  }
332 
333  if( controller_.runCurrentStep("meshOptimisation") )
334  {
336 
338  }
339 
340  if( controller_.runCurrentStep("boundaryLayerRefinement") )
341  {
343  }
344 
345  renumberMesh();
346 
348  }
349  catch(const std::string& message)
350  {
351  Info << message << endl;
352  }
353  catch(...)
354  {
355  WarningIn
356  (
357  "void voronoiMeshGenerator::generateMesh()"
358  ) << "Meshing process terminated!" << endl;
359  }
360 }
361 
362 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
363 
365 :
366  runTime_(time),
367  surfacePtr_(NULL),
368  modSurfacePtr_(NULL),
369  octreePtr_(NULL),
370  pointRegionsPtr_(NULL),
371  meshDict_
372  (
373  IOobject
374  (
375  "meshDict",
376  runTime_.system(),
377  runTime_,
378  IOobject::MUST_READ,
379  IOobject::NO_WRITE
380  )
381  ),
382  mesh_(time),
383  controller_(mesh_)
384 {
385  if( true )
387 
388  const fileName surfaceFile = meshDict_.lookup("surfaceFile");
389 
390  surfacePtr_ = new triSurf(runTime_.path()/surfaceFile);
391 
392  if( true )
393  {
394  //- save meta data with the mesh (surface mesh + its topology info)
395  triSurfaceMetaData sMetaData(*surfacePtr_);
396  const dictionary& surfMetaDict = sMetaData.metaData();
397 
398  mesh_.metaData().add("surfaceFile", surfaceFile, true);
399  mesh_.metaData().add("surfaceMeta", surfMetaDict, true);
400  }
401 
402  if( surfacePtr_->featureEdges().size() != 0 )
403  {
404  //- create surface patches based on the feature edges
405  //- and update the meshDict based on the given data
407 
408  const triSurf* surfaceWithPatches =
409  manipulator.surfaceWithPatches(&meshDict_);
410 
411  //- delete the old surface and assign the new one
413  surfacePtr_ = surfaceWithPatches;
414  }
415 
416  if( meshDict_.found("anisotropicSources") )
417  {
419 
420  modSurfacePtr_ = surfMod.modifyGeometry();
421 
423  }
424  else
425  {
427  }
428 
430 
431  generateMesh();
432 }
433 
434 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
435 
437 {
442 }
443 
444 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
445 
447 {
448  mesh_.write();
449 }
450 
451 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
452 
453 } // End namespace Foam
454 
455 // ************************************************************************* //
Foam::meshOptimizer::optimizeMeshFV
void optimizeMeshFV(const label numLaplaceIterations=5, const label maxNumGlobalIterations=10, const label maxNumIterations=50, const label maxNumSurfaceIterations=2)
final optimisation
Definition: optimizeMeshFV.C:557
Foam::meshOptimizer
Definition: meshOptimizer.H:60
Foam::workflowControls::runCurrentStep
bool runCurrentStep(const word &)
shall the process run the current step
Definition: workflowControls.C:276
Foam::voronoiMeshGenerator::createVoronoiMesh
void createVoronoiMesh()
create voronoi mesh
Definition: voronoiMeshGenerator.C:59
Foam::IOobject
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Definition: IOobject.H:91
Foam::refineBoundaryLayers::refineLayers
void refineLayers()
performs refinement based on the given settings
Definition: refineBoundaryLayers.C:326
meshSurfaceEdgeExtractorFUN.H
Foam::Time
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Definition: Time.H:68
triSurf.H
Foam::refineBoundaryLayers::pointsInBndLayer
void pointsInBndLayer(labelLongList &)
provide the list of points in the boundary layer
Definition: refineBoundaryLayers.C:375
Foam::meshOptimizer::optimizeLowQualityFaces
void optimizeLowQualityFaces(const label maxNumIterations=10)
Definition: optimizeMeshFV.C:469
meshSurfaceMapper.H
Foam::fileName
A class for handling file names.
Definition: fileName.H:69
voronoiMeshExtractor.H
Foam::meshOctreeCreator
Definition: meshOctreeCreator.H:57
Foam::voronoiMeshGenerator::refBoundaryLayers
void refBoundaryLayers()
refine boundary layer
Definition: voronoiMeshGenerator.C:180
triSurfacePatchManipulator.H
Foam::voronoiMeshGenerator::projectSurfaceAfterBackScaling
void projectSurfaceAfterBackScaling()
re-project points back on the surface mesh after back-scaling
Definition: voronoiMeshGenerator.C:251
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:406
Foam::meshOptimizer::untangleBoundaryLayer
void untangleBoundaryLayer()
Definition: optimizeMeshFV.C:405
Foam::voronoiMeshGenerator::octreePtr_
meshOctree * octreePtr_
pointer to the octree
Definition: voronoiMeshGenerator.H:68
demandDrivenData.H
Template functions to aid in the implementation of demand driven data.
renameBoundaryPatches.H
Foam::meshOptimizer::lockPoints
void lockPoints(const labelListType &)
lock points which shall not be moved
Definition: meshOptimizerI.H:203
Foam::checkMeshDict
Definition: checkMeshDict.H:50
Foam::dictionary::lookup
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
Definition: dictionary.C:449
Foam::voronoiMeshGenerator::meshDict_
IOdictionary meshDict_
IOdictionary containing information about cell sizes, etc..
Definition: voronoiMeshGenerator.H:74
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
Foam::LongList::size
label size() const
Size of the active part of the list.
Definition: LongListI.H:203
Foam::voronoiMeshGenerator::generateBoudaryLayers
void generateBoudaryLayers()
add boundary layers
Definition: voronoiMeshGenerator.C:146
Foam::boundaryLayers
Definition: boundaryLayers.H:60
topologicalCleaner.H
Foam::triSurfFeatureEdges::featureEdges
const edgeLongList & featureEdges() const
access to feature edges
Definition: triSurfFeatureEdgesI.H:44
Foam::voronoiMeshGenerator::modSurfacePtr_
const triSurf * modSurfacePtr_
pointer to the modifier surface
Definition: voronoiMeshGenerator.H:65
Foam::dictionary::isDict
bool isDict(const word &) const
Check if entry is a sub-dictionary.
Definition: dictionary.C:600
Foam::voronoiMeshGenerator::optimiseMeshSurface
void optimiseMeshSurface()
optimise surface mesh
Definition: voronoiMeshGenerator.C:133
Foam::voronoiMeshGenerator::surfacePreparation
void surfacePreparation()
prepare mesh surface
Definition: voronoiMeshGenerator.C:72
Foam::voronoiMeshGenerator::renumberMesh
void renumberMesh()
renumber the mesh
Definition: voronoiMeshGenerator.C:287
Foam::voronoiMeshExtractor::createMesh
void createMesh()
Definition: voronoiMeshExtractor.C:81
Foam::LongList< label >
Foam::polyMeshGenGeometryModification
Definition: polyMeshGenGeometryModification.H:53
Foam::deleteDemandDrivenData
void deleteDemandDrivenData(DataPtr &dataPtr)
Definition: demandDrivenData.H:40
Foam::voronoiMeshExtractor
Definition: voronoiMeshExtractor.H:51
polyMeshGenGeometryModification.H
refineBoundaryLayers.H
Foam::meshSurfaceOptimizer::untangleSurface
bool untangleSurface(const labelLongList &activeBoundaryPoints, const label nAdditionalLayers=0)
runs a surface smoother on the selected boundary points
Definition: meshSurfaceOptimizerOptimizeSurface.C:327
Foam::voronoiMeshGenerator::~voronoiMeshGenerator
~voronoiMeshGenerator()
Construct from time and desired cell size.
Definition: voronoiMeshGenerator.C:436
Foam::voronoiMeshGenerator::writeMesh
void writeMesh() const
write the mesh
Definition: voronoiMeshGenerator.C:446
checkMeshDict.H
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::dictionary::found
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
Definition: dictionary.C:304
Foam::Info
messageStream Info
Foam::boundaryLayers::addLayerForPatch
void addLayerForPatch(const label patchLabel)
create a bnd layer for a given patch
Definition: boundaryLayers.C:494
Foam::polyMeshGenCells::clearAddressingData
void clearAddressingData() const
clear addressing data
Definition: polyMeshGenCells.C:346
Foam::refineBoundaryLayers
Definition: refineBoundaryLayers.H:59
surfaceMorpherCells.H
Foam::renameBoundaryPatches
Definition: renameBoundaryPatches.H:51
Foam::triSurfacePatchManipulator::surfaceWithPatches
const triSurf * surfaceWithPatches(IOdictionary *meshDictPtr=NULL, const word prefix="patch_", const bool forceOverwrite=false) const
store regions into subsets with a given prefix
Definition: triSurfacePatchManipulator.C:86
Foam::meshOctreeCreator::createOctreeWithRefinedBoundary
void createOctreeWithRefinedBoundary(const direction maxLevel, const label nTrianglesInLeaf=15)
Definition: meshOctreeCreatorCreateOctreeBoxes.C:498
Foam::boundaryLayers::addLayerForAllPatches
void addLayerForAllPatches()
add layers for all patches
Definition: boundaryLayers.C:653
Foam::meshOctreeCreator::createOctreeBoxes
void createOctreeBoxes()
create octree boxes
Definition: meshOctreeCreatorCreateOctreeBoxes.C:448
voronoiMeshGenerator.H
Foam::polyMeshGen::metaData
const dictionary & metaData() const
return a constant reference to metaDict
Definition: polyMeshGen.H:86
Foam::voronoiMeshGenerator::replaceBoundaries
void replaceBoundaries()
replace boundaries
Definition: voronoiMeshGenerator.C:277
Foam::voronoiMeshGenerator::mapMeshToSurface
void mapMeshToSurface()
map mesh to the surface and untangle surface
Definition: voronoiMeshGenerator.C:87
Foam::triSurfaceMetaData
Definition: triSurfaceMetaData.H:54
Foam::dictionary
A list of keyword definitions, which are a keyword followed by any number of values (e....
Definition: dictionary.H:137
Foam::surfaceMeshGeometryModification
Definition: surfaceMeshGeometryModification.H:55
Foam::meshSurfaceMapper::preMapVertices
void preMapVertices(const label nIterations=3)
Definition: meshSurfaceMapperPremapVertices.C:51
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
meshSurfaceEngine.H
Foam::meshOptimizer::enforceConstraints
void enforceConstraints(const word subsetName="badPoints")
Definition: meshOptimizer.C:192
Foam::edgeExtractor::updateMeshPatches
void updateMeshPatches()
update mesh with selected patches
Definition: edgeExtractor.C:2544
Foam::polyMeshGenModifier::renumberMesh
void renumberMesh()
reorder the cells and faces to reduce the matrix bandwidth
Definition: polyMeshGenModifierRenumberMesh.C:42
Foam::voronoiMeshGenerator::surfacePtr_
const triSurf * surfacePtr_
pointer to the surface
Definition: voronoiMeshGenerator.H:62
Foam::surfaceMorpherCells::morphMesh
void morphMesh()
Definition: surfaceMorpherCells.C:81
Foam::exit
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition: errorManip.H:124
Foam::surfaceMorpherCells
Definition: surfaceMorpherCells.H:51
Foam::voronoiMeshGenerator::pointRegionsPtr_
labelList * pointRegionsPtr_
pointer to the list patches for boundary vertices
Definition: voronoiMeshGenerator.H:71
Foam::meshSurfaceOptimizer::optimizeSurface
void optimizeSurface(const label nIterations=5)
optimize boundary nodes after boundary regions are created
Definition: meshSurfaceOptimizerOptimizeSurface.C:581
Foam::polyMeshGenGeometryModification::revertGeometryModification
void revertGeometryModification()
revert modification of coorinates
Definition: polyMeshGenGeometryModification.C:97
Foam::meshSurfaceOptimizer::enforceConstraints
void enforceConstraints(const word subsetName="badPoints")
Definition: meshSurfaceOptimizer.C:163
Foam::polyMeshGenModifier
Definition: polyMeshGenModifier.H:52
Foam::meshOptimizer::untangleMeshFV
void untangleMeshFV(const label maxNumGlobalIterations=10, const label maxNumIterations=50, const label maxNumSurfaceIterations=2, const bool relaxedCheck=false)
Definition: optimizeMeshFV.C:57
Foam::triSurfacePatchManipulator
Definition: triSurfacePatchManipulator.H:52
Foam::Time::path
fileName path() const
Return path.
Definition: Time.H:281
edgeExtractor.H
Foam::voronoiMeshGenerator::runTime_
const Time & runTime_
reference to Time
Definition: voronoiMeshGenerator.H:59
Foam::voronoiMeshGenerator::optimiseFinalMesh
void optimiseFinalMesh()
mesh optimisation
Definition: voronoiMeshGenerator.C:199
Foam::meshSurfaceOptimizer
Definition: meshSurfaceOptimizer.H:63
Foam::surfaceMeshGeometryModification::modifyGeometry
const triSurf * modifyGeometry() const
modify coordinates
Definition: surfaceMeshGeometryModification.C:77
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: HashTable.H:59
Foam::meshSurfaceMapper
Definition: meshSurfaceMapper.H:59
Foam::polyMeshGen::write
void write() const
Definition: polyMeshGen.C:126
Foam::meshOctree
Definition: meshOctree.H:55
meshOptimizer.H
edgeExtractor
A class with a functions used to detect feature edges in the surface of the volume mesh and to detect...
Foam::meshOptimizer::optimizeBoundaryLayer
void optimizeBoundaryLayer(const bool addBufferLayer=true)
Definition: optimizeMeshFV.C:302
Foam::readLabel
label readLabel(Istream &is)
Definition: label.H:64
Foam::voronoiMeshGenerator::controller_
workflowControls controller_
workflow controller
Definition: voronoiMeshGenerator.H:80
Foam::meshSurfaceMapper::mapVerticesOntoSurface
void mapVerticesOntoSurface()
Definition: meshSurfaceMapperMapVertices.C:202
WarningIn
#define WarningIn(functionName)
Report a warning using Foam::Warning.
Definition: messageStream.H:254
Foam::readBool
bool readBool(Istream &)
Definition: boolIO.C:60
meshOctreeCreator.H
Foam::dictionary::toc
wordList toc() const
Return the table of contents.
Definition: dictionary.C:697
Foam::triSurfaceMetaData::metaData
const dictionary & metaData() const
return a constant reference to meta data
Definition: triSurfaceMetaData.H:88
Foam::meshSurfaceEdgeExtractorFUN
Definition: meshSurfaceEdgeExtractorFUN.H:54
Foam::refineBoundaryLayers::readSettings
static void readSettings(const dictionary &, refineBoundaryLayers &)
read the settings from dictionary
Definition: refineBoundaryLayers.C:406
Foam::voronoiMeshGenerator::mesh_
polyMeshGen mesh_
mesh
Definition: voronoiMeshGenerator.H:77
Foam::dictionary::subDict
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
Definition: dictionary.C:631
Foam::voronoiMeshGenerator::extractPatches
void extractPatches()
assign patches to boundary faces
Definition: voronoiMeshGenerator.C:113
Foam::triSurf
Definition: triSurf.H:59
meshSurfaceOptimizer.H
Foam::system
int system(const std::string &command)
Execute the specified command.
Definition: POSIX.C:1155
boundaryLayers.H
Foam::edgeExtractor::extractEdges
void extractEdges()
assemble the above functionality into a workflow
Definition: edgeExtractor.C:2398
Foam::meshSurfaceEngine
Definition: meshSurfaceEngine.H:54
Foam::voronoiMeshGenerator::mapEdgesAndCorners
void mapEdgesAndCorners()
capture edges and corners
Definition: voronoiMeshGenerator.C:123
Foam::voronoiMeshGenerator::generateMesh
void generateMesh()
generate mesh
Definition: voronoiMeshGenerator.C:297
Foam::voronoiMeshGenerator::voronoiMeshGenerator
voronoiMeshGenerator(const voronoiMeshGenerator &)
Disallow default bitwise copy construct.
Foam::dictionary::add
bool add(entry *, bool mergeEntry=false)
Add a new entry.
Definition: dictionary.C:729
surfaceMeshGeometryModification.H
triSurfaceMetaData.H