← Back to team overview

ffc team mailing list archive

Re: form integration

 

On Fri, Dec 12, 2008 at 11:59:35AM +0100, Kristian Oelgaard wrote:
> Quoting Martin Sandve Alnæs <martinal@xxxxxxxxx>:
> 
> > In principle UFL isn't concerned with integration method,
> > since this is the main difference between the form compilers.
> 
> I think it would make sense if UFL would compute the degree of a monomial, and
> attach it as a member. Then the compilers could just ask for this info and
> generate the proper integration rule (potentially user specified)

UFL uses a different representation. I will implement an algorithm for
extracting the monomial representation (like we have now in FFC) from
the UFL representation (which is an AST - Abstract Syntax Tree with
either an operator or a terminal symbol at each node) which will be
useful to compute the tensor representation.

The quadrature code generation should work on the AST instead of the
monomial representation and I imagine it will need to first extract
all terms and then find the degree for each term. I suspect Martin
already has some nice utilities for this.

-- 
Anders


> > But we need this functionality in both form compilers,
> > so it should be implemented properly in ufl.algorithms
> > at some point.
> 
> > Martin
> > 
> > 
> > 
> > On Fri, Dec 12, 2008 at 11:41 AM, Anders Logg <logg@xxxxxxxxx> wrote:
> > > I guess it's the following code in monomialtabulation.py that causes
> > > this:
> > >
> > > def __compute_degree(basisfunctions):
> > >    "Compute total degree for given monomial term."
> > >    q = 0
> > >    for v in basisfunctions:
> > >        q += v.element.degree()
> > >        for d in v.derivatives:
> > >            q -= 1
> > >    return q
> > >
> > >
> > > It just looks at v.element.degree() which for a mixed element returns
> > >
> > > def degree(self):
> > >    "Return degree of polynomial basis"
> > >    return max([element.degree() for element in self.__elements])
> > >
> > >
> > > So it's a feature/bug. We would need to modify _compute_degree so that
> > > it calls a new function v.degree() which would look at the element for
> > > that specific component.
> 
> OK, we'll need to fix this in both monomialtabulation.py and monomialintegration.py.
> 
> Kristian
> 
> 
> > >
> > >
> > > On Fri, Dec 05, 2008 at 05:39:23PM +0100, Kristian Oelgaard wrote:
> > >>
> > >> Hi,
> > >>
> > >> I stumbled over the following which seems peculiar to me:
> > >>
> > >> P2 = VectorElement("Lagrange", "triangle", 2)
> > >>
> > >> DG = FiniteElement("Discontinuous Lagrange", "triangle", 0)
> > >>
> > >> ME = MixedElement([P2, DG])
> > >>
> > >>
> > >>
> > >>
> > >> (v, q) = TestFunctions(ME)
> > >>
> > >> (u, p) = TrialFunctions(ME)
> > >>
> > >>
> > >>
> > >>
> > >> a = q*p*dx
> > >>
> > >>
> > >> Now, FFC insists that the degree of the above form is 4 and it will
> > therefore
> > >> use 3x3 integration points. For tensor representation this will lead to
> > an
> > >> increase in FFC compile time, for quadrature an increase in runtime.
> > >>
> > >> Is this a bug? Or something that happens for a good reason and which is
> > hard to
> > >> do anything about? What will UFL do?
> > >>
> > >> Kristian
> > >>
> > >>
> > >> _______________________________________________
> > >> FFC-dev mailing list
> > >> FFC-dev@xxxxxxxxxx
> > >> http://www.fenics.org/mailman/listinfo/ffc-dev
> > >
> > > -----BEGIN PGP SIGNATURE-----
> > > Version: GnuPG v1.4.9 (GNU/Linux)
> > >
> > > iEYEARECAAYFAklCP+QACgkQTuwUCDsYZdH60wCfam6M9xqYqMJygqmQ/HKHVXfw
> > > OQwAn2uInqEQz7Qt3/Qkk1qYc8LSPO92
> > > =V/Dr
> > > -----END PGP SIGNATURE-----
> > >
> > > _______________________________________________
> > > FFC-dev mailing list
> > > FFC-dev@xxxxxxxxxx
> > > http://www.fenics.org/mailman/listinfo/ffc-dev
> > >
> > >
> > _______________________________________________
> > FFC-dev mailing list
> > FFC-dev@xxxxxxxxxx
> > http://www.fenics.org/mailman/listinfo/ffc-dev
> > 
> 
> 
> _______________________________________________
> FFC-dev mailing list
> FFC-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/ffc-dev

Attachment: signature.asc
Description: Digital signature


Follow ups

References