← Back to team overview

ffc team mailing list archive

Re: evaluate_basis update

 



On 28 January 2010 18:44, Marie Rognes <meg@xxxxxxxxx> wrote:
k.b.oelgaard@xxxxxxxxx wrote:

Hi,

I'm running some tests on evaluate_basis with different elements and here
are some results.

The following elements are no longer supported by FIAT:
 Crouzeix-Raviart and Brezzi-Douglas-Fortin-Marini, will they be supported
again?



I would say that BDFM is not important, but that CR is.

OK, will CR be added to FIAT_NEW? I don't have any idea about how to do this.


The following elements could not be compiled by gcc because of a problem
with and undefined variable 'copy' in evaluate_dof() and evaluate_dofs():
 FiniteElement('Brezzi-Douglas-Marini', Cell('triangle', 1, Space(2)), 2)
 FiniteElement('Brezzi-Douglas-Marini', Cell('triangle', 1, Space(2)), 3)
 FiniteElement('Brezzi-Douglas-Marini', Cell('tetrahedron', 1, Space(3)),
2)
 FiniteElement('Brezzi-Douglas-Marini', Cell('tetrahedron', 1, Space(3)),
3)
 FiniteElement('Nedelec 1st kind H(curl)', Cell('triangle', 1, Space(2)),
2)
 FiniteElement('Nedelec 1st kind H(curl)', Cell('triangle', 1, Space(2)),
3)
 FiniteElement('Nedelec 1st kind H(curl)', Cell('tetrahedron', 1,
Space(3)), 3)


Known potential issue. Will fix.

Great, thanks.


A funny thing to note is that
 FiniteElement('Nedelec 1st kind H(curl)', Cell('tetrahedron', 1,
Space(3)), 2)
compiles fine.

Values differ for the following DG element:
 FiniteElement('Discontinuous Lagrange', Cell('interval', 1, Space(1)), 2)
 FiniteElement('Discontinuous Lagrange', Cell('interval', 1, Space(1)), 3)
 FiniteElement('Discontinuous Lagrange', Cell('interval', 1, Space(1)), 4)
 FiniteElement('Discontinuous Lagrange', Cell('tetrahedron', 1, Space(3)),
2)
 FiniteElement('Discontinuous Lagrange', Cell('tetrahedron', 1, Space(3)),
3)
 FiniteElement('Discontinuous Lagrange', Cell('tetrahedron', 1, Space(3)),
4)
 FiniteElement('Discontinuous Lagrange', Cell('triangle', 1, Space(2)), 2)
 FiniteElement('Discontinuous Lagrange', Cell('triangle', 1, Space(2)), 3)
 FiniteElement('Discontinuous Lagrange', Cell('triangle', 1, Space(2)), 4)
but Marie changed the ordering of dofs, so that is not big mystery.


I refuse to take the blame for changing the ordering of the dofs! ;)

Hmm, I thought I remembered your name popping up in the same sentence as 'DG', 'reordering' and 'dofs' on the list, but that must be a mistake then. (Note that now your name is actually in a sentence with these three key-words so someone else might blame you later on again :) )

I checked some values manually and it looks like the values has just been
shifted around so the result should be OK.



Good!


Values also differ for the following elements:
 FiniteElement('Nedelec 1st kind H(curl)', Cell('tetrahedron', 1,
Space(3)), 2)
 FiniteElement('Raviart-Thomas', Cell('tetrahedron', 1, Space(3)), 2)
 FiniteElement('Raviart-Thomas', Cell('tetrahedron', 1, Space(3)), 3)
 FiniteElement('Raviart-Thomas', Cell('triangle', 1, Space(2)), 2)
 FiniteElement('Raviart-Thomas', Cell('triangle', 1, Space(2)), 3)
For the Nedelec element values look the same, but they appear in different
places.

If I call tabulate on the FIAT element (reference) I get matching results
as when I call evaluate_basis(), so I guess it is OK. Marie, has the
ordering of dofs changed for Nedelec?


Don't know actually.  I can check evaluate_dof.

OK, thanks.



For the Raviart-Thomas elements the story is almost the same. The only
difference is that for e.g.,
 FiniteElement('Raviart-Thomas', Cell('triangle', 1, Space(2)), 2)
I get values like '0.44444 0.55556 0.22222 -0.22222 -0.33333' in the 'old'
version of FFC and FIAT, but in the new FFC (and the new FIAT) I get values
like:
0.66667 0.33333 -0.00000 -0.00000 -0.33333' when I tabulate the basis at
the same point. Marie, has something changed for RT elements?


Yes. Rob changed the interior degrees of freedom for polynomial degrees > 1
from integral moments to point values. Hence the basis
functions have changed.

(Note that there is a unit test for RT2 on a triangle that passes :) )

Aha, I would have found it if I cared to look for it, but thanks for pointing it out.

Kristian

--
Marie


For both old and new FFC FIAT.tabulate() and evaluate_basis() agrees so I
guess the values are OK.

If the above issues can be confirmed and addressed It looks like
evaluate_basis can be trusted.

Kristian
------------------------------------------------------------------------

_______________________________________________
Mailing list: https://launchpad.net/~ffc
Post to     : ffc@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~ffc
More help   : https://help.launchpad.net/ListHelp
 



Attachment: signature.asc
Description: OpenPGP digital signature