-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Evaluation of DistributedCellFields at points #113
Comments
We can probably find a way, but you should be more specific on what exactly you want to do. In short, the algorithm to locate arbitrary points in a mesh is not implemented in parallel. Although I dont think it should be, since that would be quite inneficient. In general, you should avoid this kind of things. So what you'll have to do is have each processor search in its part of the mesh. Or better still: pre-sort your points per processor and then have each processor work on its own points at the same time. If you have an array of points, then you should distribute it so that every processor gets the points in its part of the mesh, then use the serial code in each processor to evaluate. Again, I might be able to be more specific if you share some more details. |
Hi @JordiManyer, I believe that the most efficient way to implement this is, as you mentioned, do a first selection of points per process and then apply the serial interpolation. Do you have an idea on how this first search could be done in an efficient way? |
I guess it will depend on the number of points. If the vector is small you provably can replicate it on all processes and find which points are actually in each domain: x_points = ...
map_parts(uh.fields) do uh
for x in x_points
uh(x)
end
end If not, you will provably need to distribute |
Yes, this should work for our application of interest. @emvanderlinde You can try to implement it. In any case, having the interpolate feature for a |
If the interface moves continuously between timepoints, you can probably take advantage of that:
So basically you keep updating a distributed vector of indices containing the (local) cell ids of each point, with which you can create a |
I'm trying to evaluate my distributed solution at given x,y coordinates. In series the code works, but in parallel I cannot. I think the error is caused by the fact that the evaluation of CellFields is only implemented for DistributedCellPoints.
Has anyone faced this issue before? Or do you know how to solve this?
@fverdugo @amartinhuertas @JordiManyer @oriolcg
The text was updated successfully, but these errors were encountered: