Add an InducedMetric class in mito/geometry#97
Draft
Pawel024 wants to merge 72 commits into
Draft
Conversation
After this revision, it is now possible to implement 'geomertry-aware' differential operators. Before this change, since {differential.h} was within {fields}, there would be a cyclic dependency between fields->geometry->fields.
… and triangle and D from 1 to 3
…d pullback_metric
… and use this for integration with the Riemannian formula
…ifolds and submanifolds
…rs and replace with pyre function
The weakform stores a single left hand side block and a single right hand side block, as opposed to a collection of them. This requires implementing an algebra of blocks, so we can mix and match them before handing them ot the weakform. Also, this means that blocks do not need to derive from a common parent class any more.
A manifold is now equipped with an {Atlas}, which provides the parametrization of elements in the manifold. The {parametrization} method has hence been removed from {GeometricSimplex}.
Also, now manifolds are able to expose fully-fledged parametrized elements with attached their own metric volume form.
The {Integrator} class is now fully integrated with the differential geometry layer, so it does no longer feel that things are done twice (e.g. element parametrization).
The Poisson benchmark has been temporarily commented out as the function space and blocks still need to adjust to the new design.
Finite elements are now templated with respect to the parametrized element, which provides the geometric context. Finite elements have now access to their own parametrization, which can be used to compute the compute the coordinates of the nodes without resorting to the coordinate system. The function space class does not store the finite elements any more, but it builds them on the fly upon request by endowing mesh cells with local element geometry information (manifold element) and shape functions.
…the mesh cell when possible
… with {parametrized_element_type}
Make explicit the assumption that the metric space to be built is Euclidean.
… infer the space dimension from the value of {D} of {node_t}
…and {parametrizedElementT} are compatibile
…n of Euclidean metric space
…n and metric volume form by reference Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
This pull request introduces the
InducedMetricclass, a geometric abstraction for computing metrics on submanifolds embedded in arbitrary coordinate systems and ambient dimensions.Key changes:
g_induced = J^T * g_ambient * Jand its inversesqrt(det(g_induced))J * (g_inv_induced * dphi_dxi)w = sqrt(det(g_induced)) * (dx^0 ∧ ... ∧ dx^(N-1))