← Back to team overview

fenics team mailing list archive

Re: Breaking change in trunk: *dx now means integration over entire domain

 

This is great!

--
Anders

On Wed, Jan 30, 2013 at 09:32:25AM +0100, Martin Sandve Alnæs wrote:
>    Hi all,
>    yesterday I pushed a change to trunk, which fixes a long standing
>    confusing issue. Unfortunately, the only way to stop this issue from
>    confusing new users is to change the interpretation of some
>    forms. Hopefully few codes will break from this change, but I'll
>    explain it here so you can judge for yourself.
>    Previously dx, ds and dS were aliases for dx(0), ds(0) and dS(0)
>    respectively, and the assembler in dolfin interpreted a missing
>    meshfunction for subdomains as if all cells were labeled with 0. So if
>    you wrote a form
>      u*v*dx      [1a]
>    or
>      u*v*dx(0)   [1b]
>    and assembled it without specifying subdomains, you got the integral
>    over the entire mesh in both cases.
>    However if you wrote
>      f*dx + g*dx(1)   [2]
>    and assembled it with subdomains, then f would only be integrated over
>    the subdomain labeled 0, just as if you wrote
>      f*dx(0) + g*dx(1)   [3]
>    This has naturally caused some confusion and bugs.
>    With the development version of ufc,ufl,ffc,dolfin from today, you can
>    explicitly write
>      f*dx() + g*dx(1)   [4]
>    to integrate f over the entire domain and g over subdomain 1,
>    independent of subdomain labeling.
>    The breaking change is that [2] is now equivalent to [4], not [3].
>    That is, f*dx is now interpreted as f*dx(), and not as f*dx(0). This
>    means that if you have code that depends on *dx being assembled only
>    over subdomain 0, that code will break. I do not believe this to be a
>    big problem, as it would be more natural to write explicitly dx(0) in
>    such a case. However, if you do have such code, I recommend changing
>    *dx to *dx(0) to be explicit, even if you are using 1.0 or 1.1 today.
>    Martin

> _______________________________________________
> Mailing list: https://launchpad.net/~fenics
> Post to     : fenics@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~fenics
> More help   : https://help.launchpad.net/ListHelp



References