Giter Site home page Giter Site logo

Comments (4)

roystgnr avatar roystgnr commented on June 25, 2024

This implies that the computed orientation for the quads/hexes on the grid must also match that of the first element

Not ⇒, ⇐. If the orientations match, then cached_nodes_still_fit and we don't recompute. If they don't, we do. That's how it's supposed to work, anyway; you're right that we don't have nearly the level of test coverage we should here.

is that why you use point coordinates instead of global ids to compute orientation?

The main reason for avoiding global ids is that we like to be able to renumber those; otherwise doing transient adaptive mesh refinement+coarsening can leave you with a very sparse id set very quickly, and lots of codes (perhaps unwisely, but understandably) want to use ids as efficient global array indices.

On the other hand, the main reason to avoid using point coordinates is that doing so makes orientation-dependent finite elements unusable on problems with moving meshes. I could probably be talked into switching back (after rewriting our renumbering code to always be monotone; right now it does things like sorting by processor id on a DistributedMesh...).

from libmesh.

roystgnr avatar roystgnr commented on June 25, 2024

Pinging @cticenhour since he might find the conversation interesting, either in a reassuring "yeah, we're using Nedelec on far more complicated meshes in the MOOSE EM module tests" way or in a dismaying "what do you mean we're not supposed to be using them on moving meshes" way...

from libmesh.

nmnobre avatar nmnobre commented on June 25, 2024

Let me rephrase, the orientation needs to be computed using the lexicographic order on point coordinates and not the natural order on global ids, because otherwise, the reinit() code, which only checks the element spatial configuration to determine cached_nodes_still_fit, will incorrectly assume the orientation (as given by the global ids) is also preserved.

from libmesh.

roystgnr avatar roystgnr commented on June 25, 2024

I sure let this get buried, didn't I? I think we came to an understanding, despite me misunderstanding your question at first, so I'll close the issue unless there's still something confusing.

otherwise, the reinit() code, which only checks the element spatial configuration to determine cached_nodes_still_fit, will incorrectly assume the orientation (as given by the global ids) is also preserved.

This is indeed the case. Which means that as soon as we add an option to determine orientation via unique_id() rather than geometry, we're also going to need to ... probably disable caching entirely, when an element needs that option? "This element is just a translation of the last one you computed" is an extremely common case, but "this element also happens to be numbered with the exact same ordering" is a 1/N! case, not even worth testing for. On the bright side, the displaced-mesh cases where we can't trust geometrically determined orderings to stay unchanged are also the cases where we're perturbing every element and can't cache much anyway.

from libmesh.

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.