Subject: [Ffc] Current ffc-dev status element/dofmap

From: Marie Rognes <[email-masked]>
Date: Fri, 22 Jan 2010 14:39:28 +0100

Summary of current status for non-mixed elements:

- CG matches old results for (at least) k = 1, ..., 4, which is good :)

Errors:

(1) The generated code for evaluate_basis_derivatives_all for DG_0 does 
not compile.

Changes in output:

(i) num_sub_elements is 0 instead of 1 for all non-mixed elements

(ii) The ordering of the degrees of freedom for DG has changed. This 
affects evaluate_dof, interpolate_vertex_value and tabulate_coordinates.
Hence, the output from these functions will not match reference. The 
results look correct in the eye-norm though.

(iii) There is a bug in the ffc-stable codegenerator_utils.py 
'inner_product'  (-1*1 =  1)! This affects interpolate_vertex_values
for H(div/curl) elements (at least). The old values are wrong. The new 
values look right.

(iv) FIAT has changed the dofs for interior moments for H(div/curl) 
elements. This affects evaluate_dof, tabulate_coordinates etc.

Bottom-line: Things look good. I'll go through the higher-order 
H(div/curl) elements in FIAT and add suitable unit tests.

For mixed elements such as

    element = MixedElement([VectorElement('CG', 'triangle', 3), 
FiniteElement('DG', 'triangle', 2)])

I'm still getting errors like:

This is FFC, the FEniCS Form Compiler, version 0.7.1.
For further information, visit http://www.fenics.org/ffc/.

Compiler stage 1: Analyzing form(s)
-----------------------------------
 
Compiler stage 1 finished in 0.000413179 seconds.

Compiler stage 2: Computing intermediate representation
-------------------------------------------------------
  Computing representation of 3 elements
  Reusing element from cache
  Reusing element from cache
  Reusing element from cache
  Reusing element from cache
Traceback (most recent call last):
  File "/home/meg/local/bin/ffc", line 167, in <module>
    sys.exit(main(sys.argv[1:]))
  File "/home/meg/local/bin/ffc", line 151, in main
    compile_element(ufd.elements, ufd.object_names, prefix, options)
  File "/home/meg/local/lib64/python2.6/site-packages/ffc/compiler.py", 
line 181, in compile_element
    ir = compute_ir(analysis, options)
  File 
"/home/meg/local/lib64/python2.6/site-packages/ffc/representation.py", 
line 52, in compute_ir
    ir_elements = [_compute_element_ir(e, i, element_map) for (i, e) in 
enumerate(elements)]
  File 
"/home/meg/local/lib64/python2.6/site-packages/ffc/representation.py", 
line 92, in _compute_element_ir
    ir["create_sub_element"] = _create_sub_foo(ufl_element, element_map)
  File 
"/home/meg/local/lib64/python2.6/site-packages/ffc/representation.py", 
line 316, in _create_sub_foo
    return [element_map[e] for e in ufl_element.sub_elements()]
KeyError: FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 3)

--
Marie

---

From: Kristian Oelgaard <[email-masked]>
Date: Fri, 22 Jan 2010 15:39:42 +0100 (CET)

2010/1/22 Marie Rognes <[email-masked]>:
> (1) The generated code for evaluate_basis_derivatives_all for DG_0 does not
> compile.

I've fixed this.

> (ii) The ordering of the degrees of freedom for DG has changed. This affects
> evaluate_dof, interpolate_vertex_value and tabulate_coordinates.
> Hence, the output from these functions will not match reference. The results
> look correct in the eye-norm though.
>
> Bottom-line: Things look good. I'll go through the higher-order H(div/curl)
> elements in FIAT and add suitable unit tests.
>
>
>

Fixed.

Kristian

>  File "/home/meg/local/lib64/python2.6/site-packages/ffc/compiler.py", line
> 181, in compile_element
>  File "/home/meg/local/lib64/python2.6/site-packages/ffc/representation.py",
> line 52, in compute_ir
>  File "/home/meg/local/lib64/python2.6/site-packages/ffc/representation.py",
>  File "/home/meg/local/lib64/python2.6/site-packages/ffc/representation.py",
> _______________________________________________
> Mailing list: https://launchpad.net/~ffc
> Post to     : [email-masked]
> Unsubscribe : https://launchpad.net/~ffc
> More help   : https://help.launchpad.net/ListHelp
>

---

From: Anders Logg <[email-masked]>
Date: Fri, 22 Jan 2010 21:30:09 +0100

On Fri, Jan 22, 2010 at 02:39:28PM +0100, Marie Rognes wrote:
> (1) The generated code for evaluate_basis_derivatives_all for DG_0
> does not compile.
>
> Changes in output:
>
> for H(div/curl) elements (at least). The old values are wrong. The
> new values look right.
>

Nice! :-)

--
Anders

> "/home/meg/local/lib64/python2.6/site-packages/ffc/compiler.py",
>    ir_elements = [_compute_element_ir(e, i, element_map) for (i, e)
> in enumerate(elements)]