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][email protected]> 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][email protected]> > 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][email protected] > > > Unsubscribe : [4][5]https://launchpad.net/~fenics > > > More help : [5][6]https://help.launchpad.net/ListHelp > > > > Referenser > > > > 1. mailto:[7][email protected] > > 2. [8]https://launchpad.net/~fenics > > 3. mailto:[9][email protected] > > 4. [10]https://launchpad.net/~fenics > > 5. [11]https://help.launchpad.net/ListHelp > > Referenser > > 1. mailto:[email protected] > 2. mailto:[email protected] > 3. https://launchpad.net/~fenics > 4. mailto:[email protected] > 5. https://launchpad.net/~fenics > 6. https://help.launchpad.net/ListHelp > 7. mailto:[email protected] > 8. https://launchpad.net/~fenics > 9. mailto:[email protected] > 10. https://launchpad.net/~fenics > 11. https://help.launchpad.net/ListHelp _______________________________________________ Mailing list: https://launchpad.net/~fenics Post to : [email protected] Unsubscribe : https://launchpad.net/~fenics More help : https://help.launchpad.net/ListHelp

