Open dham opened 5 years ago
Implementation of `SubMesh' seems to require some special treatments for the edge case described in the attached file.
I think the right thing to do is to transfer ownership of entities in PETSc? I don't want to extract subdomains on a root process because this is not scalable.
To rearrange ownership, you need to rewrite the pointSF of the DM. (This is what is used by Firedrake to determine which entities live in ghost region/are owned by someone else).
I think the thing to do is for the ownership selection on the submesh to proceed by everyone marking entities that they can see through the closure of their cells by their rank, then you do a reduction with MPI_MAX (this is what happens now for ownership). In your sketched case here, this would result in rank-0 owning the "shared" points on the interface.
Thanks! Sounds great. I'll work on that.
Hi, I want to solve a set a equations on different domains coupled by a boundary condition. Is that already possible? And is there a an docker image with the current status, that I could use for testing? Thank you!
Hi @MariusCausemann, it is not in master yet. There are some branches that are in progress (@ksagiyam can provide more details). We only build docker images of master (docker pull firedrakeproject/firedrake:latest
) I think (these are built on every successful build of master, so are reasonably up to date).
Hi wence, thank you for your fast replay. I'm trying to build an image based on the dmplex-submesh branch. Is there any example for the new submesh functionality available?
Hi @MariusCausemann , dmplex-submesh
branch in Firedrake depends on many other branches in PyOP2
, ufl
, tsfc
, PETSc
, and petsc4py
, and we have been making some changes in the related petsc
branch, so it probably fails at this moment. But firedrake/tests/submesh
will give you a feel of what will become available.
Hi @ksagiyam , do you have a rough estimate when the submesh functionality will be available and added to the master branch? Looks already quit promising!
Hi @MariusCausemann , I am very poor at estimating the time, but we plan to do this in a few steps; we first would like to have our branch of petsc
merged to upstream, which will take a few weeks. We will then try to merge some useful functionality of submesh
in Firedrake, which will allow us to extract subdomain and solve problems on the subdomain; this will hopefully be done some time next month. We will then work on coupling, using both original mesh and submesh. This work will most likely take another few months.
Is there any update on the implementation of SubDomains? The corresponding branches in PETSc seem to be stuck. I am wondering if they are being the bottleneck here.
Dear Miguel, we just got an update on this at Firedrake 2020. Koki is making a lot of progress and has some simple demos, but the Firedrake team is trying to figure out some technical/math issues about how traces should work to support boundary terms. I don’t know the status of petsc — it may or may not be a bottleneck, but it’s not the main limitation.
On Feb 19, 2020, at 1:23 PM, Miguel Salazar de Troya notifications@github.com wrote:
Is there any update on the implementation of SubDomains? The corresponding branches in PETSc seem to be stuck. I am wondering if they are being the bottleneck here.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.
Thanks. Correct me if I am wrong, but it seems to be that this capability will enable several features in Firedrake. Namely, marking subdomains in a mesh, creating function spaces in submeshes, mixed dimensional problems and domain decomposition methods (#1354). What among those are priority?
Hello, is there any update on the implementation of SubDomains?
This issue documents proposals for the Firedrake level of Submesh support. Probably supersedes #723 .
In the first instance, this proposal refers to the creation of sub meshes with the same cell dimension as the base mesh. Extension to lower dimension manifolds will follow.
Object creation
The following code would create a sub mesh over the closure of the cells marked 2 and 4 of the mesh
m
.A
SubMesh
subclassesMesh
, so it is possible to createFunctionSpace
s andFunction
s oversm
, or even to use it as the basis for anotherSubMesh
.Integration
The core principle is that parent meshes know how to iterate over data stored on child meshes, but the converse is not true. This means that integrals which access data defined on different domains must be defined on the common ancestor domain, and be restricted to subdomain IDs over which all the accessed data is defined.
Facet integrals demand further consideration since
Coefficient
s andArgument
s may be defined on one or both sides of the facet.