fenics team mailing list archive
-
fenics team
-
Mailing list archive
-
Message #01835
Re: New feature: integration over regions
Very nice.
--
Anders
On Wed, Jan 30, 2013 at 01:41:00PM +0100, Martin Sandve Alnæs wrote:
> A note to developers on this: You can no longer use
> ufc::form::num_cell_domains() etc to check if a form has integrals of
> that type. Instead use ufc::form::has_cell_integrals(). See the
> assemblers for how to use these, and the UFC.cpp file. I've added some
> inline helper functions to UFC.h, get_cell_integral(domain), which
> handle proper fallback to default and removes some boilerplate code
> from the assemblers.
> Martin
>
> On 30 January 2013 12:32, Anders Logg <[1]logg@xxxxxxxxx> wrote:
>
> ok.
>
> On Wed, Jan 30, 2013 at 12:31:25PM +0100, Martin Sandve Alnæs wrote:
> > Yes and yes. The dx() notation is just to be more explicit and
> > distinguish it from the old dx=dx(0) notation. I might add an
> optional
> > warning for uses like f*dx+g*dx(1), which could be forms intending
> > dx(0) or dx().
> > Martin
> >
>
> > On 30 January 2013 12:15, Anders Logg <[1][2]logg@xxxxxxxxx>
> wrote:
> >
> > On Wed, Jan 30, 2013 at 09:54:39AM +0100, Martin Sandve Alnæs
> wrote:
> > > In addition to integration over the entire domain, explained
> in
> > another
> > > post, we have introduced a concept called 'regions' in ufl.
> For
> > this
> > > post, assume a single mesh. Support for multiple meshes will
> get
> > some
> > > attention in the future.
> > > The ufl language changes for expressing domain relations is
> work
> > in
> > > progress, but some useful features are already possible in
> trunk.
> > We
> > > keep the concept of disjoint numbered subdomains, which can
> be
> > easily
> > > represented as a single meshfunction in dolfin, having a
> single
> > integer
> > > label for each cell. In addition we introduce the concept of
> a
> > region,
> > > which is the union of any number of subdomains. Thus regions
> of
> > one
> > > domain can be overlapping by including some of the same
> > subdomain(s).
> > > With some automatic symbolic manipulation in ufl, we can now
> > express
> > > integrals over overlapping regions with zero additional cost
> at
> > > assembly time.
> >
> > Nice!
> >
> > > Here's the currently simplest syntax for integrals over
> regions:
> > > # Define regions as tuples of subdomain labels
> > > DL, DM, DR = (1,2), (2,), (2,3) # ***
> >
> > I guess 'DM = 2' will also work fine here? It will be passed to
> > dx(DM)
> > so that will result in an integral over subdomain 2.
> >
> > > # Define new measures associated with the interior domains
> > > dx = Measure("dx")[domains]
> > > # Make forms for equation
> > > a = u*v*dx() + alpha*dot(grad(u), grad(v))*dx() # Integrals
> over
> > entire
> > > domain
> >
> > Is the '()' necessary here in 'dx()'? Will it work with just dx?
> >
>
> > > L = f*v*dx(DR) + g*v*dx(DL) - (f+g)/2*v*dx(DM) # Integrals
> over
> > regions
> > > For the full running code, see this demo in the latest
> dolfin:
> > >
> > >
> >
> demo/undocumented/overlapping-regions/python/demo_overlapping-regions.p
> > > y
> > > Martin
> >
> > > _______________________________________________
>
> > > Mailing list: [2][3]https://launchpad.net/~fenics
> > > Post to : [3][4]fenics@xxxxxxxxxxxxxxxxxxx
> > > Unsubscribe : [4][5]https://launchpad.net/~fenics
> > > More help : [5][6]https://help.launchpad.net/ListHelp
> >
> > Referenser
> >
> > 1. mailto:[7]logg@xxxxxxxxx
> > 2. [8]https://launchpad.net/~fenics
> > 3. mailto:[9]fenics@xxxxxxxxxxxxxxxxxxx
> > 4. [10]https://launchpad.net/~fenics
> > 5. [11]https://help.launchpad.net/ListHelp
>
> Referenser
>
> 1. mailto:logg@xxxxxxxxx
> 2. mailto:logg@xxxxxxxxx
> 3. https://launchpad.net/~fenics
> 4. mailto:fenics@xxxxxxxxxxxxxxxxxxx
> 5. https://launchpad.net/~fenics
> 6. https://help.launchpad.net/ListHelp
> 7. mailto:logg@xxxxxxxxx
> 8. https://launchpad.net/~fenics
> 9. mailto:fenics@xxxxxxxxxxxxxxxxxxx
> 10. https://launchpad.net/~fenics
> 11. https://help.launchpad.net/ListHelp
References