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
190bbd69
Commit
190bbd69
authored
Dec 07, 2009
by
Mark Olesen
Browse files
add corners() method to boundBox
parent
45f17a9e
Changes
3
Hide whitespace changes
Inline
Side-by-side
applications/utilities/surface/surfaceCheck/surfaceCheck.C
View file @
190bbd69
...
...
@@ -37,7 +37,12 @@ License
using
namespace
Foam
;
// Does face use valid vertices?
bool
validTri
(
const
bool
verbose
,
const
triSurface
&
surf
,
const
label
faceI
)
bool
validTri
(
const
bool
verbose
,
const
triSurface
&
surf
,
const
label
faceI
)
{
// Simple check on indices ok.
...
...
@@ -175,6 +180,11 @@ int main(int argc, char *argv[])
argList
::
addBoolOption
(
"checkSelfIntersection"
);
argList
::
addBoolOption
(
"verbose"
);
argList
::
addBoolOption
(
"blockMesh"
,
"write vertices/blocks for blockMeshDict"
);
argList
args
(
argc
,
argv
);
...
...
@@ -182,7 +192,7 @@ int main(int argc, char *argv[])
bool
verbose
=
args
.
optionFound
(
"verbose"
);
fileName
surfFileName
(
args
.
additionalArgs
()[
0
]);
Pout
<<
"Reading surface from "
<<
surfFileName
<<
" ..."
<<
nl
<<
endl
;
Info
<<
"Reading surface from "
<<
surfFileName
<<
" ..."
<<
nl
<<
endl
;
// Read
...
...
@@ -191,9 +201,33 @@ int main(int argc, char *argv[])
triSurface
surf
(
surfFileName
);
Pout
<<
"Statistics:"
<<
endl
;
surf
.
writeStats
(
Pout
);
Pout
<<
endl
;
Info
<<
"Statistics:"
<<
endl
;
surf
.
writeStats
(
Info
);
Info
<<
endl
;
// write bounding box corners
if
(
args
.
optionFound
(
"blockMesh"
))
{
pointField
cornerPts
=
boundBox
(
surf
.
points
()).
corners
();
Info
<<
"// blockMeshDict info"
<<
nl
;
Info
<<
"vertices
\n
("
<<
nl
;
forAll
(
cornerPts
,
ptI
)
{
Info
<<
" "
<<
cornerPts
[
ptI
]
<<
nl
;
}
// number of divisions needs adjustment later
Info
<<
");
\n
"
<<
nl
<<
"blocks
\n
"
<<
"(
\n
"
<<
" hex (0 1 2 3 4 5 6 7) (10 10 10) simpleGrading (1 1 1)
\n
"
<<
");
\n
"
<<
nl
;
Info
<<
"edges();"
<<
nl
<<
"patches();"
<<
endl
;
}
// Region sizes
...
...
@@ -220,14 +254,14 @@ int main(int argc, char *argv[])
}
}
Pout
<<
"Region
\t
Size"
<<
nl
Info
<<
"Region
\t
Size"
<<
nl
<<
"------
\t
----"
<<
nl
;
forAll
(
surf
.
patches
(),
patchI
)
{
Pout
<<
surf
.
patches
()[
patchI
].
name
()
<<
'\t'
Info
<<
surf
.
patches
()[
patchI
].
name
()
<<
'\t'
<<
regionSize
[
patchI
]
<<
nl
;
}
Pout
<<
nl
<<
endl
;
Info
<<
nl
<<
endl
;
}
...
...
@@ -247,19 +281,19 @@ int main(int argc, char *argv[])
if
(
illegalFaces
.
size
())
{
Pout
<<
"Surface has "
<<
illegalFaces
.
size
()
Info
<<
"Surface has "
<<
illegalFaces
.
size
()
<<
" illegal triangles."
<<
endl
;
OFstream
str
(
"illegalFaces"
);
Pout
<<
"Dumping conflicting face labels to "
<<
str
.
name
()
<<
endl
Info
<<
"Dumping conflicting face labels to "
<<
str
.
name
()
<<
endl
<<
"Paste this into the input for surfaceSubset"
<<
endl
;
str
<<
illegalFaces
;
}
else
{
Pout
<<
"Surface has no illegal triangles."
<<
endl
;
Info
<<
"Surface has no illegal triangles."
<<
endl
;
}
Pout
<<
endl
;
Info
<<
endl
;
}
...
...
@@ -312,28 +346,28 @@ int main(int argc, char *argv[])
labelList
binCount
=
countBins
(
0
,
1
,
20
,
triQ
);
Pout
<<
"Triangle quality (equilateral=1, collapsed=0):"
Info
<<
"Triangle quality (equilateral=1, collapsed=0):"
<<
endl
;
OSstream
&
os
=
Pout
;
OSstream
&
os
=
Info
;
os
.
width
(
4
);
scalar
dist
=
(
1
.
0
-
0
.
0
)
/
20
.
0
;
scalar
min
=
0
;
forAll
(
binCount
,
binI
)
{
Pout
<<
" "
<<
min
<<
" .. "
<<
min
+
dist
<<
" : "
Info
<<
" "
<<
min
<<
" .. "
<<
min
+
dist
<<
" : "
<<
1
.
0
/
surf
.
size
()
*
binCount
[
binI
]
<<
endl
;
min
+=
dist
;
}
Pout
<<
endl
;
Info
<<
endl
;
label
minIndex
=
findMin
(
triQ
);
label
maxIndex
=
findMax
(
triQ
);
Pout
<<
" min "
<<
triQ
[
minIndex
]
<<
" for triangle "
<<
minIndex
Info
<<
" min "
<<
triQ
[
minIndex
]
<<
" for triangle "
<<
minIndex
<<
nl
<<
" max "
<<
triQ
[
maxIndex
]
<<
" for triangle "
<<
maxIndex
<<
nl
...
...
@@ -360,7 +394,7 @@ int main(int argc, char *argv[])
}
OFstream
str
(
"badFaces"
);
Pout
<<
"Dumping bad quality faces to "
<<
str
.
name
()
<<
endl
Info
<<
"Dumping bad quality faces to "
<<
str
.
name
()
<<
endl
<<
"Paste this into the input for surfaceSubset"
<<
nl
<<
nl
<<
endl
;
...
...
@@ -390,7 +424,7 @@ int main(int argc, char *argv[])
const
edge
&
maxE
=
edges
[
maxEdgeI
];
Pout
<<
"Edges:"
<<
nl
Info
<<
"Edges:"
<<
nl
<<
" min "
<<
edgeMag
[
minEdgeI
]
<<
" for edge "
<<
minEdgeI
<<
" points "
<<
localPoints
[
minE
[
0
]]
<<
localPoints
[
minE
[
1
]]
<<
nl
...
...
@@ -411,7 +445,7 @@ int main(int argc, char *argv[])
const
boundBox
bb
(
localPoints
);
scalar
smallDim
=
1E-6
*
bb
.
mag
();
Pout
<<
"Checking for points less than 1E-6 of bounding box ("
Info
<<
"Checking for points less than 1E-6 of bounding box ("
<<
bb
.
span
()
<<
" meter) apart."
<<
endl
;
...
...
@@ -450,7 +484,7 @@ int main(int argc, char *argv[])
if
(
edgeI
==
-
1
)
{
Pout
<<
" close unconnected points "
Info
<<
" close unconnected points "
<<
ptI
<<
' '
<<
localPoints
[
ptI
]
<<
" and "
<<
prevPtI
<<
' '
<<
localPoints
[
prevPtI
]
...
...
@@ -460,7 +494,7 @@ int main(int argc, char *argv[])
}
else
{
Pout
<<
" small edge between points "
Info
<<
" small edge between points "
<<
ptI
<<
' '
<<
localPoints
[
ptI
]
<<
" and "
<<
prevPtI
<<
' '
<<
localPoints
[
prevPtI
]
...
...
@@ -471,7 +505,7 @@ int main(int argc, char *argv[])
}
}
Pout
<<
"Found "
<<
nClose
<<
" nearby points."
<<
nl
Info
<<
"Found "
<<
nClose
<<
" nearby points."
<<
nl
<<
endl
;
}
...
...
@@ -516,25 +550,25 @@ int main(int argc, char *argv[])
if
((
nSingleEdges
!=
0
)
||
(
nMultEdges
!=
0
))
{
Pout
<<
"Surface is not closed since not all edges connected to "
Info
<<
"Surface is not closed since not all edges connected to "
<<
"two faces:"
<<
endl
<<
" connected to one face : "
<<
nSingleEdges
<<
endl
<<
" connected to >2 faces : "
<<
nMultEdges
<<
endl
;
Pout
<<
"Conflicting face labels:"
<<
problemFaces
.
size
()
<<
endl
;
Info
<<
"Conflicting face labels:"
<<
problemFaces
.
size
()
<<
endl
;
OFstream
str
(
"problemFaces"
);
Pout
<<
"Dumping conflicting face labels to "
<<
str
.
name
()
<<
endl
Info
<<
"Dumping conflicting face labels to "
<<
str
.
name
()
<<
endl
<<
"Paste this into the input for surfaceSubset"
<<
endl
;
str
<<
problemFaces
;
}
else
{
Pout
<<
"Surface is closed. All edges connected to two faces."
<<
endl
;
Info
<<
"Surface is closed. All edges connected to two faces."
<<
endl
;
}
Pout
<<
endl
;
Info
<<
endl
;
...
...
@@ -544,11 +578,11 @@ int main(int argc, char *argv[])
labelList
faceZone
;
label
numZones
=
surf
.
markZones
(
boolList
(
surf
.
nEdges
(),
false
),
faceZone
);
Pout
<<
"Number of unconnected parts : "
<<
numZones
<<
endl
;
Info
<<
"Number of unconnected parts : "
<<
numZones
<<
endl
;
if
(
numZones
>
1
)
{
Pout
<<
"Splitting surface into parts ..."
<<
endl
<<
endl
;
Info
<<
"Splitting surface into parts ..."
<<
endl
<<
endl
;
fileName
surfFileNameBase
(
surfFileName
.
name
());
...
...
@@ -585,7 +619,7 @@ int main(int argc, char *argv[])
+
".ftr"
);
Pout
<<
"writing part "
<<
zone
<<
" size "
<<
subSurf
.
size
()
Info
<<
"writing part "
<<
zone
<<
" size "
<<
subSurf
.
size
()
<<
" to "
<<
subFileName
<<
endl
;
subSurf
.
write
(
subFileName
);
...
...
@@ -608,15 +642,15 @@ int main(int argc, char *argv[])
labelList
normalZone
;
label
numNormalZones
=
PatchTools
::
markZones
(
surf
,
borderEdge
,
normalZone
);
Pout
<<
endl
Info
<<
endl
<<
"Number of zones (connected area with consistent normal) : "
<<
numNormalZones
<<
endl
;
if
(
numNormalZones
>
1
)
{
Pout
<<
"More than one normal orientation."
<<
endl
;
Info
<<
"More than one normal orientation."
<<
endl
;
}
Pout
<<
endl
;
Info
<<
endl
;
...
...
@@ -625,19 +659,19 @@ int main(int argc, char *argv[])
if
(
checkSelfIntersection
)
{
Pout
<<
"Checking self-intersection."
<<
endl
;
Info
<<
"Checking self-intersection."
<<
endl
;
triSurfaceSearch
querySurf
(
surf
);
surfaceIntersection
inter
(
querySurf
);
if
(
inter
.
cutEdges
().
empty
()
&&
inter
.
cutPoints
().
empty
())
{
Pout
<<
"Surface is not self-intersecting"
<<
endl
;
Info
<<
"Surface is not self-intersecting"
<<
endl
;
}
else
{
Pout
<<
"Surface is self-intersecting"
<<
endl
;
Pout
<<
"Writing edges of intersection to selfInter.obj"
<<
endl
;
Info
<<
"Surface is self-intersecting"
<<
endl
;
Info
<<
"Writing edges of intersection to selfInter.obj"
<<
endl
;
OFstream
intStream
(
"selfInter.obj"
);
forAll
(
inter
.
cutPoints
(),
cutPointI
)
...
...
@@ -654,11 +688,11 @@ int main(int argc, char *argv[])
intStream
<<
"l "
<<
e
.
start
()
+
1
<<
' '
<<
e
.
end
()
+
1
<<
endl
;
}
}
Pout
<<
endl
;
Info
<<
endl
;
}
Pout
<<
"End
\n
"
<<
endl
;
Info
<<
"
\n
End
\n
"
<<
endl
;
return
0
;
}
...
...
src/OpenFOAM/meshes/boundBox/boundBox.C
View file @
190bbd69
...
...
@@ -110,6 +110,26 @@ Foam::boundBox::boundBox(Istream& is)
}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
pointField
>
Foam
::
boundBox
::
corners
()
const
{
tmp
<
pointField
>
tPts
=
tmp
<
pointField
>
(
new
pointField
(
8
));
pointField
&
pt
=
tPts
();
pt
[
0
]
=
min_
;
// min-x, min-y, min-z
pt
[
1
]
=
point
(
max_
.
x
(),
min_
.
y
(),
min_
.
z
());
// max-x, min-y, min-z
pt
[
2
]
=
point
(
max_
.
x
(),
max_
.
y
(),
min_
.
z
());
// max-x, max-y, min-z
pt
[
3
]
=
point
(
min_
.
x
(),
max_
.
y
(),
min_
.
z
());
// min-x, max-y, min-z
pt
[
4
]
=
point
(
min_
.
x
(),
min_
.
y
(),
max_
.
z
());
// min-x, min-y, max-z
pt
[
5
]
=
point
(
max_
.
x
(),
min_
.
y
(),
max_
.
z
());
// max-x, min-y, max-z
pt
[
6
]
=
max_
;
// max-x, max-y, max-z
pt
[
7
]
=
point
(
min_
.
x
(),
max_
.
y
(),
max_
.
z
());
// min-x, max-y, max-z
return
tPts
;
}
// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * //
Foam
::
Ostream
&
Foam
::
operator
<<
(
Ostream
&
os
,
const
boundBox
&
bb
)
...
...
src/OpenFOAM/meshes/boundBox/boundBox.H
View file @
190bbd69
...
...
@@ -171,6 +171,8 @@ public:
return
cmptAv
(
span
());
}
//- Return corner points in an order corresponding to a 'hex' cell
tmp
<
pointField
>
corners
()
const
;
// Query
...
...
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