dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #13146
Re: tensor function space in Dolfin
See if it works now.
--
Anders
On Tue, Apr 21, 2009 at 12:18:50PM +0200, Martin Sandve Alnæs wrote:
> The bug is in FFC's jit, easy to spot but I don't have time to elaborate.
>
> Martin
>
>
>
> On Tue, Apr 21, 2009 at 10:53 AM, Kent Andre <kent-and@xxxxxxxxx> wrote:
> >
> > I now try:
> >
> >
> >
> > class TensorFunctionSpace(FunctionSpaceBase):
> >
> > def __init__(self, mesh, family, degree, shape=None, symmetry=None):
> >
> >
> > # Create subspaces
> > if shape == None:
> > dim = mesh.topology().dim()
> > shape = (dim, dim)
> > cell = dim2domain[mesh.topology().dim()]
> > element = ufl.TensorElement(family, cell, degree, shape,
> > symmetry)
> >
> > # Initialize base class
> > FunctionSpaceBase.__init__(self, mesh, element)
> >
> >
> > but I get,
> >
> > Traceback (most recent call last):
> > File "test_fung.py", line 8, in <module>
> > fe = TensorFunctionSpace(mesh, 'CG', 1)
> > File
> > "/home/kent-and/local/src/dolfin-dev/local/lib/python2.5/site-packages/dolfin/ufl/functionspace.py", line 291, in __init__
> > FunctionSpaceBase.__init__(self, mesh, element)
> > File
> > "/home/kent-and/local/src/dolfin-dev/local/lib/python2.5/site-packages/dolfin/ufl/functionspace.py", line 43, in __init__
> > ufc_element, ufc_dofmap = jit(self._element)
> > File
> > "/home/kent-and/local/src/dolfin-dev/local/lib/python2.5/site-packages/dolfin/ufl/jit.py", line 65, in jit
> > return jit_compile(form, options)
> > File "/usr/local/lib/python2.5/site-packages/ffc/jit/jit.py", line 64,
> > in jit
> > return jit_element(object, options, use_ufl)
> > File "/usr/local/lib/python2.5/site-packages/ffc/jit/jit.py", line
> > 143, in jit_element
> > form = UFLTestFunction(element)[0]*UFLdx
> > File "/usr/local/lib/python2.5/site-packages/ufl/integral.py", line
> > 75, in __rmul__
> > % (integrand.rank(), integrand.free_indices()))
> > File "/usr/local/lib/python2.5/site-packages/ufl/assertions.py", line
> > 20, in ufl_assert
> > condition or error(*message)
> > File "/usr/local/lib/python2.5/site-packages/ufl/log.py", line 97, in
> > error
> > raise UFLException(self._format_raw(*message))
> > ufl.log.UFLException: Trying to integrate expression of rank 1 with free
> > indices
> >
> > Kent
> >
> >
> > On ti., 2009-04-21 at 03:03 +0200, Johan Hake wrote:
> >> On Monday 20 April 2009 22:59:19 Martin Sandve Alnæs wrote:
> >> > See TensorElement in UFL, there should be a natural correspondence
> >> > FiniteElement <-> FunctionSpace
> >> > MixedElement <-> MixedFunctionSpace
> >> > VectorElement <-> VectorFunctionSpace
> >> > TensorElement <-> TensorFunctionSpace
> >>
> >> I think we have a problem here.
> >>
> >> The value_shape of the mixed element in your TensorFunctionSpace is probably
> >> not computed correct here Kent. This is done in the TensorElement construtor,
> >> which is not called in your case.
> >>
> >> We could let TensorFunctionSpace inherit FunctionSpaceBase instead of
> >> MixedFunctionSpace. Then in the constructor of TensorFunctionSpace we can:
> >>
> >> element = TensorElement(...)
> >>
> >> and pass the element to FunctionSpaceBase. Unfortunaltely we break the
> >> inheritance correlation with ufl. And some of the implemented PyDOLFIN
> >> functions such as split, check the provided functionspace for beeing a
> >> MixedFunctionSpace. this could be changed to check for the element of the
> >> provided FunctionSpace to be a MixedElement.
> >>
> >> We still needs to construct the SubSpaces though, which could be done in the
> >> TensorFunctionSpace constructor similare to what is done in the
> >> MixedFunctionSpace constructor?
> >>
> >> Not sure if this approach covers all bases?
> >>
> >>
> >> Johan
> >>
> >>
> >> > Martin
> >> >
> >> > On Mon, Apr 20, 2009 at 10:30 PM, <kent-and@xxxxxxxxx> wrote:
> >> > > Are there any thoughts on how to implement TensorFunctionSpace in Dolfin
> >> > > ?
> >> > >
> >> > > Copying code for VectorFunctionSpace it could be something like:
> >> > >
> >> > >
> >> > > class TensorFunctionSpace(MixedFunctionSpace):
> >> > > "VectorFunctionSpace represents a vector-valued finite element
> >> > > function space."
> >> > >
> >> > > def __init__(self, mesh, family, degree, dim=None):
> >> > > """Create tensor-valued finite element function space. The
> >> > > function space
> >> > > may be created by
> >> > >
> >> > > V = TensorFunctionSpace(mesh, family, domain, degree,
> >> > > dim=None)
> >> > >
> >> > > mesh : a Mesh
> >> > > family : a string specifying the element family
> >> > > degree : the degree of the element
> >> > > dim : an optional argument specifying the number of
> >> > > components
> >> > >
> >> > > If the dim argument is not provided, the dimension will be deduced
> >> > > from
> >> > > the dimension of the mesh.
> >> > > """
> >> > >
> >> > > # Create subspaces
> >> > > dim = dim or mesh.geometry().dim()
> >> > > spaces = dim*[VectorFunctionSpace(mesh, family, degree, dim)]
> >> > >
> >> > > # Initialize base class
> >> > > MixedFunctionSpace.__init__(self, spaces)
> >> > >
> >> > >
> >> > >
> >> > > But then I get the following when in use:
> >> > >
> >> > > condition or error(*message)
> >> > > File "/usr/local/lib/python2.5/site-packages/ufl/log.py", line 97, in
> >> > > error raise UFLException(self._format_raw(*message))
> >> > > ufl.log.UFLException: Transposed is only defined for rank 2 tensors.
> >> > >
> >> > > Any thoughts ?
> >> > >
> >> > >
> >> > > Kent
> >> > >
> >> > >
> >> > >
> >> > > _______________________________________________
> >> > > 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
Attachment:
signature.asc
Description: Digital signature
References