Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
iwr
amdis
Commits
da42e358
Commit
da42e358
authored
Oct 14, 2011
by
Praetorius, Simon
Browse files
findElInfoAtPoint for non-convex geometries
parent
47acd172
Changes
1
Hide whitespace changes
Inline
Side-by-side
AMDiS/src/Mesh.cc
View file @
da42e358
...
...
@@ -705,20 +705,31 @@ namespace AMDiS {
// second time, what can happen with periodic boundary conditions, the point is
// not within the mesh!
std
::
set
<
int
>
macrosVisited
;
macrosVisited
.
insert
(
mel
->
getIndex
());
std
::
stack
<
MacroElement
*>
active
;
// macrosVisited.insert(mel->getIndex());
int
k
;
while
((
k
=
mel_info
->
worldToCoord
(
xy
,
&
lambda
))
>=
0
)
{
if
(
mel
->
getNeighbour
(
k
))
{
macrosVisited
.
insert
(
mel
->
getIndex
());
if
(
mel
->
getNeighbour
(
k
)
&&
!
macrosVisited
.
count
(
mel
->
getNeighbour
(
k
)
->
getIndex
())
{
mel
=
mel
->
getNeighbour
(
k
);
if
(
macrosVisited
.
count
(
mel
->
getIndex
()))
return
false
;
//
if (macrosVisited.count(mel->getIndex()))
// Nur für periodische RB interessant, muss noch implementiert werden
//
return false;
macrosVisited
.
insert
(
mel
->
getIndex
());
mel_info
->
fillMacroInfo
(
mel
);
continue
;
}
else
{
for
(
int
i
=
0
;
i
<
dim
+
1
;
++
i
)
{
if
(
i
!=
k
&&
mel
->
getNeighbour
(
i
)
&&
!
macrosVisited
.
count
(
mel
->
getNeighbour
(
i
)
->
getIndex
())
active
.
push
(
mel
->
getNeighbour
(
i
));
}
if
(
active
.
empty
())
return
false
;
mel
=
active
.
pop
();
mel_info
->
fillMacroInfo
(
mel
);
}
break
;
}
/* now, descend in tree to find leaf element at point */
...
...
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