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
e2d12e73
Commit
e2d12e73
authored
Jul 28, 2008
by
Mark Olesen
Browse files
cuttingPlane : handle cutting planes that coincide with a mesh face
parent
a7d1ef36
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/sampling/cuttingPlane/cuttingPlane.C
View file @
e2d12e73
...
...
@@ -29,6 +29,15 @@ License
#include
"linePointRef.H"
#include
"meshTools.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
// set values for what is close to zero and what is considered to
// be positive (and not just rounding noise)
//! @cond localScope
const
Foam
::
scalar
zeroish
=
Foam
::
SMALL
;
const
Foam
::
scalar
positive
=
Foam
::
SMALL
*
1E3
;
//! @endcond localScope
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
// Find cut cells
...
...
@@ -71,8 +80,8 @@ void Foam::cuttingPlane::calcCutCells
if
(
(
dotProducts
[
e
[
0
]]
<
0
&&
dotProducts
[
e
[
1
]]
>
0
)
||
(
dotProducts
[
e
[
1
]]
<
0
&&
dotProducts
[
e
[
0
]]
>
0
)
(
dotProducts
[
e
[
0
]]
<
zeroish
&&
dotProducts
[
e
[
1
]]
>
positive
)
||
(
dotProducts
[
e
[
1
]]
<
zeroish
&&
dotProducts
[
e
[
0
]]
>
positive
)
)
{
nCutEdges
++
;
...
...
@@ -116,8 +125,8 @@ Foam::labelList Foam::cuttingPlane::intersectEdges
if
(
(
dotProducts
[
e
[
0
]]
<
0
&&
dotProducts
[
e
[
1
]]
>
0
)
||
(
dotProducts
[
e
[
1
]]
<
0
&&
dotProducts
[
e
[
0
]]
>
0
)
(
dotProducts
[
e
[
0
]]
<
zeroish
&&
dotProducts
[
e
[
1
]]
>
positive
)
||
(
dotProducts
[
e
[
1
]]
<
zeroish
&&
dotProducts
[
e
[
0
]]
>
positive
)
)
{
// Edge is cut.
...
...
@@ -126,7 +135,19 @@ Foam::labelList Foam::cuttingPlane::intersectEdges
scalar
alpha
=
lineIntersect
(
linePointRef
(
p0
,
p1
));
dynCuttingPoints
.
append
((
1
-
alpha
)
*
p0
+
alpha
*
p1
);
if
(
alpha
<
zeroish
)
{
dynCuttingPoints
.
append
(
p0
);
}
else
if
(
alpha
>
1
.
0
)
{
dynCuttingPoints
.
append
(
p1
);
}
else
{
dynCuttingPoints
.
append
((
1
-
alpha
)
*
p0
+
alpha
*
p1
);
}
edgePoint
[
edgeI
]
=
dynCuttingPoints
.
size
()
-
1
;
}
}
...
...
src/sampling/cuttingPlane/cuttingPlane.H
View file @
e2d12e73
...
...
@@ -30,6 +30,10 @@ Description
No attempt at resolving degenerate cases.
Note
When the cutting plane coincides with a mesh face, the cell edge on the
positive side of the plane is taken.
SourceFiles
cuttingPlane.C
...
...
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