← Back to team overview

dolfin team mailing list archive

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

 

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)))"

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