← Back to team overview

ffc team mailing list archive

Re: New handling of integrals

 

On Sun, Jan 24, 2010 at 08:58:10PM +0100, Kristian Oelgaard wrote:
>
>
> 2010/1/24 Anders Logg <logg@xxxxxxxxx>:
> >On Sun, Jan 24, 2010 at 08:10:17PM +0100, Kristian Oelgaard wrote:
> >>
> >>
> >>2010/1/24 Anders Logg <logg@xxxxxxxxx>:
> >>>I have pushed a changeset that simplifies the handling of integrals of
> >>>different types and domains. This unfortunately breaks the quadrature
> >>>but the changes should lead to large simplifications. I hope you're up
> >>>for it Kristian...
> >>
> >>Well it has not really been fully operational anyway so the damage is not that big.
> >
> >Good!
> >
> >>>For the tensor representation, I was able to remove large portions of
> >>>code for extracting integrals of various types (domain_type) and on
> >>>different sub domains (domain_id).
> >>
> >>I had a quick look and I'm very impressed. 100 lines of code in tensorrepresentation!!
> >
> >There's quite a bit of stuff still going on in other modules but the
> >reduction in code was big.
> >
> >>>This now happens in UFL and form_data has a new member called
> >>>integral_data, that just lists all the data associated with different
> >>>(UFC) integrals:
> >>>
> >>> [(domain_type, domain_id, integrals, metadata),
> >>>  (domain_type, domain_id, integrals, metadata),
> >>>  ...]
> >>
> >>I only had a very quick look in the code in UFL, my only concern
> >>would be if UFL is becoming too FFC aware? From what I've seen
> >>though it still looks OK.
> >
> >I don't think that's the case. The new integral_data does the natural
> >thing which is to group integrals by their domain_type and domain_id
> >which is what needs to come out at the other end (UFC) so one could
> >say that it is UFC-specific.
>
> Agree. One question here is how we can let the form:
>
> a = inner(grad(v), grad(u))*dx + v*u*dx
>
> be represented by two quadrature loops since there will only be one metadata for the sum and 'quadrature_degree' will be equal to that of the v*u*dx term, although the first term could use a lower order quadrature scheme. Do you group the integrals into a new integral (form) based on the metadata? Perhaps it will be enough to simply store the two integrals in a list.

The input you get to compute_integral_ir contains the variable named

  integrals

This is a list of all the integrals that should be summed inside the
UFC integral specified by (domain_type, domain_id).

The metadata variable you get contains the common metadata for all the
integrals, but each integral in that list should still have its own
individual metadata if you need it.

For the tensor representation, I just use the common quadrature
degree.

--
Anders

Attachment: signature.asc
Description: Digital signature


References