← Back to team overview

ffc team mailing list archive

Re: FFC

 

I'll look into Python 2.4.

I don't however have access to the CVS version of FFC.


Quoting Anders Logg <logg@xxxxxxxxx>:

> I think this is a Python 2.3 problem. Can you update to Python 2.4?
> 
> The built-in data type set was added in Python 2.4. If you are unable
> to upgrade to Python 2.4, I can change to use the class Set from the
> module sets which should work with both 2.3 and 2.4.
> 
> Also note that you need the latest CVS version of FFC to run the test
> problems (0.1.7 was released before the bug fix).
> 
> /Anders
> 
> 	On Tue, May 03, 2005 at 11:35:35PM +0200, Garth N. Wells wrote:
> > Anders,
> > 
> > I can't try the forms that you gave, because I can't get FFC 0.1.7 + FIAT
> 0.2.1
> > to run. The output from 'ffc Poisson.form' (using the Poisson.form demo in
> > ffc-0.1.7/src/demo) is 
> > 
> > mech136/<4>ffc-0.1.7/src/demo>ffc Poisson.form
> > This is FFC, the FEniCS Form Compiler, version 0.1.7.
> > For further information, go to http://www/fenics.org/ffc/.
> > 
> > Parsing Poisson.form
> > Output written to Poisson.py
> > 
> > Compiling form: (dXa0/dxb0)(dXa1/dxb0) | ((d/dXa0)vi1)*((d/dXa1)vi0)*dX
> > Finite element of test space:  Lagrange finite element of degree 1 on a
> Triangle
> > Finite element of trial space: Lagrange finite element of degree 1 on a
> Triangle
> > Computing 36 integrals, this may take some time
> >
> ...............................................................................
> > Traceback (most recent call last):
> >   File "/usr/bin/ffc", line 80, in ?
> >     main(sys.argv[1:])
> >   File "/usr/bin/ffc", line 58, in main
> >     execfile(outname)
> >   File "Poisson.py", line 38, in ?
> >     compile([a, L], name, "0.1.7", "C++", "GNU GPL Version 2")
> >   File "/usr/lib/python2.3/site-packages/ffc/compiler/compiler.py", line
> 75, in
> > compile
> >     form.AKi = ElementTensor(form.sum, "interior", format)
> >   File "/usr/lib/python2.3/site-packages/ffc/compiler/elementtensor.py",
> line
> > 41, in __init__
> >     gK_used = set()
> > NameError: global name 'set' is not defined
> > 
> > Garth
> > 
> > 
> > Quoting Anders Logg <logg@xxxxxxxxx>:
> > 
> > > You were right, there was a (serious) bug in FFC for handling constant
> > > indices. Thanks for pointing this out.
> > > 
> > > It has been fixed in the latest CVS version of FFC. However, the new
> > > version of FFC uses FIAT directly to generate vector-valued elements
> > > (previously handled in FFC), and FIAT assumes that a vector-valued
> > > Lagrange element on a triangle has two components. I think Rob will
> > > fix this shortly. Until then, try the following forms and see that you
> > > get the expected results:
> > > 
> > > element = FiniteElement("Vector Lagrange", "triangle", 1)
> > > 
> > > v  = BasisFunction(element)
> > > u1 = BasisFunction(element)
> > > 
> > > # Form 1
> > > #a = v[1] *(u1[0].dx(0) + u1[1].dx(1)) * dx
> > > 
> > > #Form 2
> > > #a = v[1] *(u1[0] + u1[1]) * dx
> > > 
> > > #Form 3
> > > a = v[1] *(u1[0].dx(0) + u1[1].dx(1)) * dx
> > > 
> > > #Form 4
> > > #a = v[1] *(u1[i].dx(i) ) * dx
> > > 
> > > /Anders
> > > 
> > > On Mon, May 02, 2005 at 05:19:37PM +0200, Garth N. Wells wrote:
> > > > Dear Anders,
> > > > 
> > > > I've been trying to use FFC for some forms which cannot be written
> using
> > > > summation convention, so I've been writing out the forms explicitly.
> > > > However, I have a problem with terms that involve a derivative, e.g.
> > > > u1[0].dx(0). Terms like u1[i].dx(i) (using indices) work fine.
> > > > 
> > > > Below is the code from an FFC file. What I've labelled Form 1 is
> basically
> > > the
> > > > continuity equation for 2D Navier-Stokes. Form 1 and Form 2 produce
> > > erroneously
> > > > exactly the same header file. In the case of Form 1, the resulting
> header
> > > file
> > > > does not involve any terms from the Jacobian (g00, g10, etc.) which it
> > > should
> > > > do. I would expect Form 3 and Form 4 to produce the same result.
> However,
> > > Form 4
> > > > produces the expected result, and Form 3 does not. Is there something
> wrong
> > > with
> > > > the synatax that I'm using? Notably, terms like u1[0].dx() do produce
> the
> > > > expected result (no index between the round brackets).
> > > > 
> > > > We're having some trouble with our mail server here, so I'd be grateful
> if
> > > you
> > > > could send a cc of any response to gnwells@xxxxxxxxxxx.
> > > > 
> > > > Regards,
> > > > Garth
> > > > 
> > > > name = "Test"
> > > > vector = FiniteElement("Lagrange", "triangle", 1, 3)
> > > > 
> > > > v    = BasisFunction(vector)
> > > > u1   = BasisFunction(vector)
> > > > 
> > > > # Form 1
> > > > a = v[2] *(u1[0].dx(0) + u1[1].dx(1)) * dx
> > > > 
> > > > #Form 2
> > > > #a = v[2] *(u1[0] + u1[1]) * dx
> > > > 
> > > > #Form 3
> > > > #a = v[2] *(u1[0].dx(0) + u1[1].dx(1) + u1[2].dx(2)) * dx
> > > > 
> > > > #Form 4
> > > > #a = v[2] *(u1[i].dx(i) ) * dx
> > > > 
> > > > 
> > > 
> > 
> 
> -- 
> Anders Logg
> Research Assistant Professor
> Toyota Technological Institute at Chicago
> http://www.tti-c.org/logg/
> 



Follow ups

References