← Back to team overview

dolfin team mailing list archive

Re: Blueprint for 0.9.10: Attaching subdomains to form

 

On Tue, Feb 22, 2011 at 10:51:34AM +0100, Andre Massing wrote:
> Den 22.02.11 09.52, skrev Garth N. Wells:
> >
> >
> >On 22/02/11 07:51, Anders Logg wrote:
> >>I'd like to implement this blueprint for 0.9.10:
> >>
> >>https://blueprints.launchpad.net/dolfin/+spec/attach-subdomains-to-form
> >>
> >>In addition, I'd like to remove the cell_domains,
> >>exterior_facet_domains and interior_facet_domains arguments from the
> >>assembler. It seems overkill to have three different ways to specify
> >>the domains and the logic becomes complex for handling which data
> >>overrides if many are specified. We could also remove these arguments
> >>from VariationalProblem.
> >>
> >>We would then have two ways to specify the subdomains:
> >>
> >>1. As part of the Mesh (MeshData)
> >>
> >>2. As part of the form
> >>
> >>The SystemAssembler would then need to rely on (1).
> >>
> >>Comments and objections?
> >>
>
> I use MeshFunction as domain markers quite a lot and it can be the
> case that you need some marking based on other, more complex
> decision procedures than just the virtual bool inside(...) function
> in subdomain.
> For instances (of course the example must come from my side :) I
> used it heavily in overlapping mesh method. Forcing the use of
> subdomains would force the user to implement the possibly complex
> decision procedure for which cells, facets etc have to be marked
> within the SubDomain class, probably requiring some inheritance,
> with additional constructors which can take the needed extra
> arguments.
>
> At least I would advocate for having the flexibility
> to determine the actual subdomains (maybe could assign MeshFunctions
> to them?) and the possibility to change them, even after they have
> been assigned to a form (so not only const reference access).

That's not the issue here. MeshFunctions would still be used but
it would change from

  A = assemble(a, cell_domains=cell_domains)

to

  a.cell_domains = cell_domains
  A = assemble(a)

--
Anders



References