Restricted function spaces
Implement restricted function spaces.
Restricted function spaces
Foo::FunctionSpace V(mesh, sub_domain); // restrict to cells on a SubDomain
Foo::FunctionSpace V(mesh, cell_function, 0); // restrict to cells marked by 0
Foo::FunctionSpace V(mesh, facet_function, 0); // restrict to facets marked by 0
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- High
- Drafter:
- None
- Direction:
- Needs approval
- Assignee:
- Anders Logg
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Whiteboard
AM: http://
might be worth to look at, especially chaper 8 "More on Constrained Function Spaces".
JH: It would also be nice to be able to constrain Real spaces to particular subdomains. For example introducing a lagrange multiplier at a subdomain is possible right now, but as it is now it turns up at each cell on the mesh, which is not necessary.
MER: I'm copying this from another blueprint on this:
This Blueprint is related to discussion in the following Question:
https:/
We might also consider this Blueprint in light of the the Constrained Spaces for DirichletBC:
https:/
as we probably need similar interface changes.
MER: Current design:
* Define mixed element "as usual" in UFL for instance
V = FiniteElement(
W = V*V
* Define cpp restriction of mesh to domains:
Restriction R0(mesh, D0);
Restriction R1(mesh, D1);
* Initialize cpp FunctionSpace via #subelements domains:
XX::FunctionSpace W(R0, R1);
AL: (Copied by MER from other superseded blueprint.)
Improve the Restriction class with functionality for iterating over it. Should it be a Mesh? Should it hold a collection of cell indices? Also, should Restriction have another name?
MER: An advantage of it being Mesh would be that we could also combine
meshes that are not restrictions of something else.
MER: If we reuse the mixed element abstraction for restrictions, there is the question
of whether the functions should be implicitly extended by zero. One reason for why
they should be so, would be that evaluation at a point would still follow the same
convention/make sense as before.
Work Items
Work items:
[massing] : Implement dofmap/dofmap builder for mixed elements of restricted spaces (aka. multi-domain function spaces): TODO
[massing] : Update assemble to use the new functionality: TODO
Dependency tree
* Blueprints in grey have been implemented.