Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
integration-cfmesh
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Community
integration-cfmesh
Commits
4b578604
Commit
4b578604
authored
Apr 10, 2015
by
Franjo
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'task-boundaryLayerUtility-t73' into developmentPublicRepo
parents
b0bc62a9
da83793c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
161 additions
and
0 deletions
+161
-0
utilities/generateBoundaryLayers/Make/files
utilities/generateBoundaryLayers/Make/files
+3
-0
utilities/generateBoundaryLayers/Make/options
utilities/generateBoundaryLayers/Make/options
+10
-0
utilities/generateBoundaryLayers/generateBoundaryLayers.C
utilities/generateBoundaryLayers/generateBoundaryLayers.C
+148
-0
No files found.
utilities/generateBoundaryLayers/Make/files
0 → 100644
View file @
4b578604
generateBoundaryLayers.C
EXE = $(FOAM_USER_APPBIN)/generateBoundaryLayers
utilities/generateBoundaryLayers/Make/options
0 → 100644
View file @
4b578604
EXE_INC = \
-I../../meshLibrary/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude
EXE_LIBS = \
-lmeshTools \
-ltriSurface \
-L$(FOAM_USER_LIBBIN) \
-lmeshLibrary
utilities/generateBoundaryLayers/generateBoundaryLayers.C
0 → 100644
View file @
4b578604
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | cfMesh: A library for mesh generation
\\ / O peration |
\\ / A nd | Author: Franjo Juretic (franjo.juretic@c-fields.com)
\\/ M anipulation | Copyright (C) Creative Fields, Ltd.
-------------------------------------------------------------------------------
License
This file is part of cfMesh.
cfMesh is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.
cfMesh is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with cfMesh. If not, see <http://www.gnu.org/licenses/>.
Description
Generates boundary layers in the existing mesh, based on the settings
given in meshDict. It also performs necessary quality optimisation.
\*---------------------------------------------------------------------------*/
#include "argList.H"
#include "Time.H"
#include "polyMeshGenModifier.H"
#include "meshOptimizer.H"
#include "boundaryLayers.H"
#include "refineBoundaryLayers.H"
using
namespace
Foam
;
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
void
generateLayer
(
polyMeshGen
&
mesh
,
const
dictionary
&
meshDict
,
const
bool
layers2D
)
{
boundaryLayers
bl
(
mesh
);
if
(
layers2D
)
bl
.
activate2DMode
();
if
(
meshDict
.
found
(
"boundaryLayers"
)
)
{
const
dictionary
&
bndLayers
=
meshDict
.
subDict
(
"boundaryLayers"
);
if
(
bndLayers
.
found
(
"nLayers"
)
)
{
const
label
nLayers
=
readLabel
(
bndLayers
.
lookup
(
"nLayers"
));
if
(
nLayers
>
0
)
bl
.
addLayerForAllPatches
();
}
else
if
(
bndLayers
.
found
(
"patchBoundaryLayers"
)
)
{
const
dictionary
&
patchLayers
=
bndLayers
.
subDict
(
"patchBoundaryLayers"
);
const
wordList
createLayers
=
patchLayers
.
toc
();
forAll
(
createLayers
,
patchI
)
bl
.
addLayerForPatch
(
createLayers
[
patchI
]);
}
}
else
{
bl
.
addLayerForAllPatches
();
}
}
void
meshOptimisation
(
polyMeshGen
&
mesh
)
{
meshOptimizer
mOpt
(
mesh
);
mOpt
.
optimizeMeshFV
();
mOpt
.
optimizeLowQualityFaces
();
mOpt
.
untangleMeshFV
();
mOpt
.
optimizeBoundaryLayer
();
mOpt
.
untangleMeshFV
();
}
void
layerRefinement
(
polyMeshGen
&
mesh
,
const
dictionary
&
meshDict
)
{
if
(
meshDict
.
isDict
(
"boundaryLayers"
)
)
{
refineBoundaryLayers
refLayers
(
mesh
);
refineBoundaryLayers
::
readSettings
(
meshDict
,
refLayers
);
refLayers
.
refineLayers
();
meshOptimizer
(
mesh
).
untangleBoundaryLayer
();
}
}
int
main
(
int
argc
,
char
*
argv
[])
{
argList
::
validOptions
.
insert
(
"2DLayers"
,
"bool"
);
# include "setRootCase.H"
# include "createTime.H"
IOdictionary
meshDict
(
IOobject
(
"meshDict"
,
runTime
.
system
(),
runTime
,
IOobject
::
MUST_READ
,
IOobject
::
NO_WRITE
)
);
//- load the mesh from disk
polyMeshGen
pmg
(
runTime
);
pmg
.
read
();
bool
is2DLayer
(
false
);
if
(
args
.
options
().
found
(
"2DLayers"
)
)
is2DLayer
=
true
;
//- generate the initial boundary layer
generateLayer
(
pmg
,
meshDict
,
is2DLayer
);
//- optimisation of mesh quality
meshOptimisation
(
pmg
);
//- perform layer refinement
layerRefinement
(
pmg
,
meshDict
);
Info
<<
"Writing mesh"
<<
endl
;
pmg
.
write
();
Info
<<
"End
\n
"
<<
endl
;
return
0
;
}
// ************************************************************************* //
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment