Coder Social home page Coder Social logo

Comments (5)

ReubenHill avatar ReubenHill commented on August 29, 2024

I think there's a bug somewhere in cell location - I'm seeing nans returned for the reference cell locations which trigger the error. This will need some debugging in places like locate.c

from firedrake.

ReubenHill avatar ReubenHill commented on August 29, 2024

This may also be related to #3089

from firedrake.

ReubenHill avatar ReubenHill commented on August 29, 2024

This is at least in part due to insufficient robustness in the vertex-only mesh voting algorithm.

2 things need to be done.

Where multiple ranks claim the same $L^1$ distance (in one case here, $0.0$), but disagree about rank, as happens in rare occurrences where a point is exactly on a mesh cell vertex at a parallel boundary which is visible to 3 or more ranks, the cell location algorithm should be triggered again.
The cell that was initially identified should be disregarded, and it should be told to produce the next best cell: when we find a cell with identical $L^1$ distance and rank as given by the voting algorithm, the search stops.
Whilst the parent mesh cell may not be identical, the point will certainly be given the correct parent mesh PyOP2 label.
If no such cell is found, we can safely treat the point as being not-locally visible.
This will ensure halo points are assigned correctly.

In these rare cases, the voting algorithm can also claim that a rank which has identified a point as self-owned will be told by a rank of higher number that a rank of lower number in fact owns the point: if that lower rank does not think it owns it then the above procedure would cause the point to be lost.
At present, when this occurs, an error is triggered.
To fix this, if there is a tie after minimising $L^1$ distance, a point which a rank has identified as self-owned should be chosen before choosing the lowest numbered rank.

from firedrake.

ReubenHill avatar ReubenHill commented on August 29, 2024

@pbrubeck I think #3293 fixes this. I haven't checked the performance implications but I think the algorithm is sound.

from firedrake.

pbrubeck avatar pbrubeck commented on August 29, 2024

@pbrubeck I think #3293 fixes this. I haven't checked the performance implications but I think the algorithm is sound.

Great. We could simply compare the runtime of the relevant VOM tests?

from firedrake.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.