← Back to team overview

ffc team mailing list archive

Re: Status (again)

 

On Wed, 2010-01-27 at 16:54 +0100, Kristian Oelgaard wrote:
> 
> 2010/1/27 Medhi Nikbakht <m.nikbakht@xxxxxxxxxx>:
> > On Wed, 2010-01-27 at 15:50 +0100, Marie Rognes wrote:
> >>
> >> FFC compilation fails for
> >>
> >>     ElementRestriction.ufl
> >
> > The error message says that "ElementRestriction" is not supported by
> > FIAT.
> > How will the restricted elements be implemented? Wouldn't it be better
> > to support them inside FFC?
> 
> There are two types of restrictions supported in UFL (and the old FFC).
> 1) Restriction onto Measure (like 'dc'), which is what you want.
> 2) Restriction onto Cell, as for instance restricting a Lagrange element defined on a 'triangle' to its facets.
> 
> The third restriction that we might want in the future is restriction onto subdomains possible in UFL but not in FFC.
> 
> To implement 1) I think it is enough to just attach the Measure as a member to the fiat_element and the simply look for it in appropriate places when generating the code. That means handle it in FFC.fiatinterface, could that work?
> 

Yes, it works. In my case just adding these few lines to the beginning
of create_fiat_element is enough,

    domain = ufl_element.domain_restriction()
    if isinstance(domain, Measure):
      if domain.domain_type() == "surface":
        ufl_element = ufl_element._element

Since I have the same properties as non-restricted element.

Mehdi

> To implement 2) I modified the return value of entity_dofs() and tabulate() accordingly. To do it this way again we will need to make changes in FIAT_NEW.FiniteElement and FFC.MixedElement. I'm not sure it is a good idea to make FIAT_NEW.PolynomialSet aware of restrictions, but I don't know enough about the FIAT internals to back up this claim.
> 
> I'm not really sure how to handle the restriction onto subdomains, but it should most likely be implemented in FFC.
> 
> Kristian
> 
> > Mehdi
> >
> >>     QuadratureElement.ufl
> >>     TensorWeightedPoisson.ufl
> >>
> >> Running test programs fails for
> >>
> >>     P5tet.bin    (Segmentation faults after evaluate_basis(0, ...)
> >>
> >> Differences in output
> >>
> >>     evaluate_basis*
> >>
> >>     FacetIntegrals.out      (missing value in generated code (many))
> >>     SubDomain.out            (missing value in generated code
> >> (tabulate_tensor))
> >>
> >>
> >> Others:
> >>
> >>     tabulate_entity_dofs     (errors thrown are all wrong. Marie will fix)
> >>
> >>
> >> --
> >> Marie
> >>
> >>
> >> _______________________________________________
> >> Mailing list: https://launchpad.net/~ffc
> >> Post to     : ffc@xxxxxxxxxxxxxxxxxxx
> >> Unsubscribe : https://launchpad.net/~ffc
> >> More help   : https://help.launchpad.net/ListHelp
> >
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~ffc
> > Post to     : ffc@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~ffc
> > More help   : https://help.launchpad.net/ListHelp
> >
> 




References