Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New features
compute_entity_closure_permutations: given a function space, an entity dimension and a subset of (cell, local entity index) pairs, compute the inverse subentity closure permutation for all these entities. This is done in groups by (local entity index, cell permutation info), so each permutation is computed only once per group, instead of once per (cell, local entity) pair.compute_entity_closure_dofs: permute the dofmap of the subset of entities into each entity's own orientation. For facets, this matches the facet submesh.SurfaceSubmeshExtensionandinterpolate_from_surface_submesh. It is extended with zero on all dofs that are not on the facet closures.interpolate, as a vertex (or edge) of a parent cell can lie on the submesh without lying on any of that cell's own facets in the submesh, and interpolate would then set it to zero.scifem.ufl_compat, which uses apply_inverse from Give each pull back an inverse FEniCS/ufl#511 when the installed UFL has it. The Piola Expressions (one per facet permutation) are compiled per process onMPI.COMM_SELF, and the facet interpolation points come frompull_back_to_reference_facet, which is now shared withinterpolate_function_onto_facet_dofsRefactor
interpolate_function_onto_facet_dofsto do fewer loops. Previously, evaluation was done once per marked facet. Now all marked facets with a specific facet permutation are evaluated at once, independent of their local facet index. Should speed things up dramatically at the cost of a slight memory increase.SurfaceSubmeshInterpolation, that caches the compiled expression, connectivities and cell permutation info. For DOLFINx < 0.11 it also caches the closure permutations, and uses them instead of the previous per-entity loop.interpolate_to_surface_submeshis now a wrapper around the class.Compat
compute_integration_domainsfor multiple versions of DOLFINx, and use it inscifem.meshinstead of the inline version check.create_cell_permutationsfor multiple versions of DOLFINx.General utils
group_by_keyfunction that computes the unique keys and how to extract the entries of each key in order afterwards. For now it is used on the facet permutations ininterpolate_function_onto_facet_dofs, and on (local entity index, cell permutation info) pairs incompute_entity_closure_permutations.Documentation