← Back to team overview

dolfin team mailing list archive

Re: [HG DOLFIN] Make Mixed FunctionSpace access more consistant.

 



Garth N. Wells wrote:


Johan Hake wrote:
On Saturday 17 October 2009 21:08:14 Garth N. Wells wrote:
Garth N. Wells wrote:
DOLFIN wrote:
One or more new changesets pushed to the primary dolfin repository.
A short summary of the last three changesets is included below.

changeset:   7378:e5c921e0293a
tag:         tip
user:        "Johan Hake <hake@xxxxxxxxx>"
date:        Sat Oct 17 15:45:36 2009 +0200
files:       site-packages/dolfin/function.py
site-packages/dolfin/functionspace.py description:
Make Mixed FunctionSpace access more consistant.
  - All methods are now defined in FunctionSpaceBase.
  - We now do not save any spaces in MixedFunctionSpace
This change broke my code. See below.
Seems that the problem arises with spaces which are restricted,

     V = FunctionSpace(mesh, "CG", 1, "facet")

This is an error in the generated FFC code.
   ufc::finite_element::signature()
should return a string that can be executed in a ufl namespace and then generate the corresponding ufl.FiniteElement.

For a restricted element the signature returns:

   "FiniteElement('Lagrange', 'triangle', 1)|_{<interval of degree 1>}"

where it should return:

"ElementRestriction(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), Cell('interval', 1, Space(1)))"



I've had a look, and while I don't yet follow where UFL defines its signatures, things are dangerous because FFC formats its own signature strings, see line 227 of

    ffc/ffc/fem/finiteelement.py

We stopped using signature strings in DOLFIN because it gave us all sorts of problems. Is it desirable to have PyDOLFIN depend on the generated strings? Can it be avoided?

Garth


If I look at the generated code in Poisson.h (the DOLFIN demo), the signature is

    "FiniteElement('Lagrange', 'triangle', 1)"

so the restricted one looks consistent to me. How does PyDOFLIN use the signature?

Garth


Johan
Garth

Garth

   File "solver.py", line 96, in solve
     (uhat, uu) = Uh.split()
   File
"/home/garth/code/fenics/dolfin/dolfin-all/local/lib/python2.6/site-packa
ges/dolfin/function.py", line 150, in split
     return tuple(self._sub(i,deepcopy) for i in
xrange(self._V.num_sub_spaces()))
   File
"/home/garth/code/fenics/dolfin/dolfin-all/local/lib/python2.6/site-packa
ges/dolfin/function.py", line 150, in <genexpr>
     return tuple(self._sub(i,deepcopy) for i in
xrange(self._V.num_sub_spaces()))
   File
"/home/garth/code/fenics/dolfin/dolfin-all/local/lib/python2.6/site-packa
ges/dolfin/function.py", line 135, in _sub
     return Function(self, i)
   File
"/home/garth/code/fenics/dolfin/dolfin-all/local/lib/python2.6/site-packa
ges/dolfin/function.py", line 80, in __init__
     self._V = V.sub(i)
   File
"/home/garth/code/fenics/dolfin/dolfin-all/local/lib/python2.6/site-packa
ges/dolfin/functionspace.py", line 88, in sub
     return FunctionSpaceFromCpp(cpp.SubSpace(self,i))
   File
"/home/garth/code/fenics/dolfin/dolfin-all/local/lib/python2.6/site-packa
ges/dolfin/functionspace.py", line 101, in __init__
     self._ufl_element = eval(cppV.element().signature(), ufl.__dict__)
   File "<string>", line 1
     FiniteElement('Lagrange', 'triangle', 1)|_{<interval of degree 1>}

changeset:   7377:40cca61143c6
user:        "Garth N. Wells <gnw20@xxxxxxxxx>"
date:        Sat Oct 17 13:24:47 2009 +0100
files:       dolfin/mesh/SubDomain.h
description:
Small formatting fix.


changeset:   7376:8ee974ed5f7e
user:        Anders Logg <logg@xxxxxxxxx>
date:        Sat Oct 17 00:05:34 2009 +0200
files:       dolfin/function/Function.cpp
description:
Remove unnecessary lines in Function::eval noted by Marc S.

----------------------------------------------------------------------
For more details, visit http://www.fenics.org/hg/dolfin
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev







Follow ups

References