dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #07849
Re: assembly on sub domains
On Thursday 08 May 2008, you wrote:
> It helps me to think about it this way. Count the number of ds terms in
> your form file. If you have n terms, then any facet marked with (n-1)
> or larger will *NOT* get assembled. So if you have 3 exterior
> subdomains (ds0, ds1, ds2 in your form file), then the relevant markers
> will be 0, 1, and 2, and any number 3 or greater will not have an
> integral associated with it and therefore will not get assembled. So if
> I were you I might consider the following logic.
>
> /// first, since there are no dS terms
> int_facet_domains = 0;
>
> /// set all exterior facets to some number greater than the number of
> ds terms
> ext_facet_domains = 4;
>
> /// loop over facets
> for (FacetIterator facet(mesh); !facet.end(); ++facet) {
>
> /// Check if we have an exterior facet
> if ( facet->numEntities(mesh.topology().dim()) != 2 ) {
> if (first non-zero neumann condition) ext_facet_domains(*facet) = 0;
> if (second non-zero neumann condition) ext_facet_domains(*facet) = 1;
> }
> }
>
>
It makes sense...in this way we don't have to care with the zero neumann
boundary.
> assemble(A,a,mesh, cell_domains, ext_facet_domains, int_facets_domains);
>
> Here I am assuming that you are imposing you Dirichlet BC strongly. If
> not (if you have the Dirichlet BC defined in your form file) add another
> ext_facet_domains(*facet) in the above loop.
I'm imposing strongly.
> > If i want to use different markers for the interior facets then i should
> > considerer 2 different MeshFunctions with the correct order.
> > 0..n-1 for interior
> > 0..n-1 for exterior
> > ??
>
> Yes. Remember that there is a one-to-one correspondence with the domain
> number in the form file and the marker number in the MeshFunction. If
> ds0 = Integral("exterior facet", 0), and ds1 = Integral("exterior
> facet", 1) then the facets on ds0 need to be marked with 0 in
> ext_facet_domains, and the facets on ds1 need to be marked with 1 in
> ext_facet_domains etc.
>
> > And again, if you don't use dS in your forms, the assembler will not take
> > into account the third meshfunction, so it could be whatever you want,
> > right?
>
> Yes, that's right.
>
> Hope this is helpful.
> Jake
>
It's Very Helpful!!!
--
Nuno David Lopes
References