← Back to team overview

ffc team mailing list archive

Re: Quadrature degree=None

 

On Mon, Nov 23, 2009 at 08:50:14AM +0100, Kristian Oelgaard wrote:
> Quoting Anders Logg <logg@xxxxxxxxx>:
>
> > On Mon, Nov 23, 2009 at 07:39:24AM +0100, Kristian Oelgaard wrote:
> > > Quoting Anders Logg <logg@xxxxxxxxx>:
> > >
> > > > On Tue, Nov 17, 2009 at 09:28:23PM +0000, Garth N. Wells wrote:
> > > > >
> > > > >
> > > > > Anders Logg wrote:
> > > > > >I've added support in UFL and FFC for letting quadrature degree be
> > > > > >None for a quadrature element.
> > > > > >
> > > > > >This lets the form compiler choose the quadrature. What currently
> > > > > >happens is that the degree is counted as 1
> > > > >
> > > > > Polynomial degree or 'quadrature degree' (whatever that is)?
> > > > >
> > > > > (default value controllable
> > > > > >from the form compiler) and the summed with other functions
> > > > > >multiplying the coefficient.
> > > > > >
> > > > > >  L = v*f*dx
> > > > > >
> > > > > >If v is P2, then the total degree will be 2 + 1 = 3, which means the
> > > > > >quadrature degree chosen by FFC is 3 for that integral and so also
> > > > > >for the element for f.
> > >
> > > Sounds reasonable.
> > >
> > > > > >Then there seems to be some confusion about the difference between
> > > > > >quadrature order and degree. At least I'm confused.
> > > > >
> > > > > Me too.
> > >
> > > It should be the same thing, but we could sort out the naming to avoid
> > > confusion. I think this originates from Martin using 'polynomial degree'
> > and I
> > > used 'polynomial order' when first implementing this.
> >
> > I think degree is better. Quadrature order q can mean either that the error
> > converges as h^q and polynomials of degree q - 1 are integrated
> > exactly, or it can (in the case of Gauss quadrature) that it
> > integrates polynomials of degree 2q - 1 exactly.
> >
> > We can define degree of a quadrature rule to be the polynomial degree
> > it integrates exactly. Then there's no confusion.
>
> That's how I defined it, only I used 'order' instead of 'degree'.
> But let's do a search and replace to change order to degree.

ok.

> > The problem is the following though. Should the quadrature rule of an
> > element be an appropriate rule for the entire integrand, or should it
> > be the polynomial degree approximation of the coefficient?
> >
> > Currently, if one has w being defined on a quadrature element of
> > degree q, then the form
> >
> >   w^n * dx
> >
> > gets a total degree of n * q and FFC adjusts the quadrature rule to
> > that total degree.
>
> If I compute some field e.g., the strain from the displacement field at
> quadrature points and then pass it as a coefficient to some other form, then
> the order has to stay the same otherwise this get screwed up.
> So if the order is set by the user, it shouldn't change, but if it is set to
> None FFC should set it equal to the order needed to evaluate the integrand
> exactly.

Sounds good, with the following modification:

  if degree is None:
    if quadrature_degree(form) is None:
      degree = polynomial_degree(form)
    else:
      degree = quadrature_degree(form)

quadrature_degree is the degree of any other quadrature elements in
the form (which needs to be the same for all if specified).

polynomial_degree is the total polynomial degree of the form.

--
Anders

Attachment: signature.asc
Description: Digital signature


Follow ups

References