Restricted function spaces

Registered by Anders Logg

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

Related branches

Whiteboard

AM: http://www.dune-project.org/pdelab/pdelab-howto-18Mar2011.pdf

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://answers.launchpad.net/dolfin/+question/1690

We might also consider this Blueprint in light of the the Constrained Spaces for DirichletBC:

  https://blueprints.launchpad.net/dolfin/+spec/constrained-spaces

as we probably need similar interface changes.

MER: Current design:

* Define mixed element "as usual" in UFL for instance

  V = FiniteElement("Lagrange", triangle, 1)
  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.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.