Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
afdbf9a5
Commit
afdbf9a5
authored
Feb 27, 2009
by
mattijs
Browse files
faceZone derived
parent
f8001200
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/finiteVolume/cfdTools/general/MRF/MRFZone.C
View file @
afdbf9a5
...
...
@@ -29,6 +29,10 @@ License
#include
"volFields.H"
#include
"surfaceFields.H"
#include
"fvMatrices.H"
#include
"PackedList.H"
#include
"syncTools.H"
#include
"faceSet.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
...
...
@@ -39,12 +43,15 @@ Foam::MRFZone::MRFZone(const fvMesh& mesh, Istream& is)
dict_
(
is
),
cellZoneID_
(
mesh_
.
cellZones
().
findZoneID
(
name_
)),
faceZoneID_
(
mesh_
.
faceZones
().
findZoneID
(
name_
)),
outsideFaces_
(
0
),
patchNames_
(
dict_
.
lookup
(
"patches"
)),
origin_
(
dict_
.
lookup
(
"origin"
)),
axis_
(
dict_
.
lookup
(
"axis"
)),
omega_
(
dict_
.
lookup
(
"omega"
)),
Omega_
(
"Omega"
,
omega_
*
axis_
)
{
const
polyBoundaryMesh
&
patches
=
mesh_
.
boundaryMesh
();
axis_
=
axis_
/
mag
(
axis_
);
Omega_
=
omega_
*
axis_
;
...
...
@@ -65,18 +72,78 @@ Foam::MRFZone::MRFZone(const fvMesh& mesh, Istream& is)
if
(
!
faceZoneFound
)
{
FatalError
In
Warning
In
(
"Foam::MRFZone::MRFZone(const fvMesh& , const dictionary&)"
)
<<
"cannot find MRF faceZone "
<<
name_
<<
exit
(
FatalError
);
<<
" ; taking faces on outside of cellZone."
<<
endl
;
// Determine faces in cell zone
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// (does not construct cells)
const
labelList
&
own
=
mesh_
.
faceOwner
();
const
labelList
&
nei
=
mesh_
.
faceNeighbour
();
// Cells in zone
PackedBoolList
zoneCell
(
mesh_
.
nCells
());
if
(
cellZoneID_
!=
-
1
)
{
const
labelList
&
cellLabels
=
mesh_
.
cellZones
()[
cellZoneID_
];
forAll
(
cellLabels
,
i
)
{
zoneCell
[
cellLabels
[
i
]]
=
1u
;
}
}
// Faces in zone
PackedBoolList
zoneFacesSet
(
mesh_
.
nFaces
());
for
(
label
faceI
=
0
;
faceI
<
mesh_
.
nInternalFaces
();
faceI
++
)
{
if
(
zoneCell
.
get
(
own
[
faceI
])
==
1u
||
zoneCell
.
get
(
nei
[
faceI
])
==
1u
)
{
zoneFacesSet
[
faceI
]
=
1u
;
}
}
syncTools
::
syncFaceList
(
mesh_
,
zoneFacesSet
,
orEqOp
<
unsigned
int
>
());
// Transfer to labelList
label
n
=
zoneFacesSet
.
count
();
outsideFaces_
.
setSize
(
n
);
n
=
0
;
forAll
(
zoneFacesSet
,
faceI
)
{
if
(
zoneFacesSet
.
get
(
faceI
)
==
1u
)
{
outsideFaces_
[
n
++
]
=
faceI
;
}
}
Info
<<
nl
<<
"MRFZone "
<<
name_
<<
" : found "
<<
returnReduce
(
outsideFaces_
.
size
(),
sumOp
<
label
>
())
<<
" faces inside cellZone."
<<
endl
;
// Flag use of outsideFaces
faceZoneID_
=
-
2
;
}
patchLabels_
.
setSize
(
patchNames_
.
size
());
forAll
(
patchNames_
,
i
)
{
patchLabels_
[
i
]
=
mesh_
.
boundaryMesh
()
.
findPatchID
(
patchNames_
[
i
]);
patchLabels_
[
i
]
=
patches
.
findPatchID
(
patchNames_
[
i
]);
if
(
patchLabels_
[
i
]
==
-
1
)
{
...
...
@@ -125,7 +192,13 @@ void Foam::MRFZone::relativeFlux(surfaceScalarField& phi) const
const
vector
&
origin
=
origin_
.
value
();
const
vector
&
Omega
=
Omega_
.
value
();
const
labelList
&
faces
=
mesh_
.
faceZones
()[
faceZoneID_
];
// Use either zone faces or outsideFaces_
const
labelList
&
faces
=
(
faceZoneID_
==
-
2
?
outsideFaces_
:
mesh_
.
faceZones
()[
faceZoneID_
]
);
forAll
(
faces
,
i
)
{
...
...
src/finiteVolume/cfdTools/general/MRF/MRFZone.H
View file @
afdbf9a5
...
...
@@ -26,7 +26,7 @@ Class
Foam::MRFZone
Description
MRF zone definition based on
both cell and
face zone
s
and parameters
MRF zone definition based on
cell zone and optional
face zone and parameters
obtained from a control dictionary constructed from the given stream.
The rotation of the MRF region is defined by an origin and axis of
...
...
@@ -68,18 +68,26 @@ class MRFZone
const
fvMesh
&
mesh_
;
word
name_
;
const
word
name_
;
dictionary
dict_
;
const
dictionary
dict_
;
label
cellZoneID_
;
//- label of face zone with faces on outside of cell zone.
// If -2 determines outside faces itself
label
faceZoneID_
;
wordList
patchNames_
;
//- outside faces (only if faceZoneID = -2)
labelList
outsideFaces_
;
const
wordList
patchNames_
;
labelList
patchLabels_
;
dimensionedVector
origin_
;
const
dimensionedVector
origin_
;
dimensionedVector
axis_
;
dimensionedScalar
omega_
;
const
dimensionedScalar
omega_
;
dimensionedVector
Omega_
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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