SystemAssembler problem with subdomains on one form

Issue #78 resolved
Prof Garth Wells created an issue

Code of the form

a = inner(sigma(u), sym_grad(v))*dx
L = inner(h, v)*ds(5)

with SystemAssembler leads to

*** Warning: Bilinear and linear forms do not have same exterior facet subdomains in SystemAssembler. Taking subdomains from bilinear form

which is wrong. When one form has not data, data from the other form should be used.

Comments (11)

  1. Martin Sandve Alnæs

    I've seen it when dx has cell data attached. Does it happen in general?

    What happends then is that the distinction between "has cell data" and "has facet data" is lost somewhere and since "a has domain data", then domain data from L is not used.

    The correct behaviour would be to check separately for each type of domain data.

    A workaround is adding a zero term to a containing the facet data:

    a = ... + Constant(0)*inner(test,trial)*ds(unused_marker)
    
  2. Prof Garth Wells reporter

    I used a work-around. The bug report is mainly so that I remember to fix it later when I have time.

  3. Log in to comment