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 <[email protected]> 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, <[email protected]> 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 > >> > > [email protected] > >> > > http://www.fenics.org/mailman/listinfo/dolfin-dev > >> > > >> > _______________________________________________ > >> > DOLFIN-dev mailing list > >> > [email protected] > >> > http://www.fenics.org/mailman/listinfo/dolfin-dev > >> > >> > > > > > _______________________________________________ > DOLFIN-dev mailing list > [email protected] > http://www.fenics.org/mailman/listinfo/dolfin-dev
signature.asc
Description: Digital signature
_______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
