VertexOnlyMesh Improvements Plan #2450
Replies: 5 comments 23 replies
-
As far as I understand, DMSwarmSetPointCoordinates (followed by DMLocatePoints) does not have a mechanism to remove such point duplication. Maybe we have enough PETSc functions exposed to implement the voting algorithm in Firedrake. |
Beta Was this translation helpful? Give feedback.
-
I think this is all basically fine and nothing we've done really gets in the way.
This is all orthogonal to the tolerance issue, which can happen on cell boundaries interior to a process. We should fix that too. I think we should also change the default behaviour for point loss to raising an error. We shouldn't silently drop vertices unless the user has explicitly indicated that this is OK by them. |
Beta Was this translation helpful? Give feedback.
-
@dham you mentioned in #2452 that switching to a voting algorithm would allow for points in mesh halos but still ensure uniqueness. How so? |
Beta Was this translation helpful? Give feedback.
-
It is for computing values for points that depend on values on points that belong to other processors.
It seems like you don't need to have points in a parent mesh halo, because another processor will compute them.
…________________________________
From: Reuben W. Nixon-Hill ***@***.***>
Sent: 21 June 2022 14:45
To: firedrakeproject/firedrake ***@***.***>
Cc: Subscribed ***@***.***>
Subject: Re: [firedrakeproject/firedrake] VertexOnlyMesh Improvements Plan (Discussion #2450)
Can you remind me what the point of the halo is on a normal mesh? Voting algorithm aside, why should I need to have points in a parent mesh halo?
—
Reply to this email directly, view it on GitHub<#2450 (reply in thread)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/ABOSV4RS243YT3V2B5MQCC3VQHBPZANCNFSM5WZEJG4A>.
You are receiving this because you are subscribed to this thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Are there possible improvements to single processor performance from using a different spatial data structure for point location? I'm not familiar with how a lot of the parallelism works under the hood, so take this with a grain of salt, but there could be a lot of value to be gained for less effort from putting bounding boxes for each triangle into an R-tree or quadtree. |
Beta Was this translation helpful? Give feedback.
-
The work plan for improvements to VertexOnlyMesh was outlined here #2223.
However, the recent merge of #2437 has made using setting
redundant == PETSC_TRUE
in DMSwarmSetPointCoordinates no longer viable since #2437 switches to usingmesh.locate_cell
for point location.First item on old plan
The issue with using
mesh.locate_cell
was outlined in #2224: namely that you get point duplication for points on cell boundaries. The plan had been to update DMSwarmSetPointCoordinates to useredundant == PETSC_TRUE
by default (meaning that rank 0 would broadcast its point list to all other ranks) such that this would not happen. From #2224:It seems this isn't correct. Consider
test_parallel_vom_create.py
:Before and after the merging of #2437 running this would give you point duplication:
Prior to merging #2437 this diff
ought to have avoided point duplication (if my comment on #2224 is correct) but, confusingly, it still has the issue
So what's going on here?
Do I need to do something I've forgotten about to make my diff have an effect?
Was I just wrong when I said it avoided the issue?
What to do next instead
It's been a while since I wrote the issues and my work plan due to my extended leave of absence.
Any suggestions on how to proceed?
I will tidy up the various issues above following discussion here.
Beta Was this translation helpful? Give feedback.
All reactions