Error with increasing order of Real vector function space in increase_order

Issue #409 resolved
Miro Kuchta created an issue

Hi, consider

from dolfin import VectorFunctionSpace, UnitTriangleMesh, FunctionSpace,\
                MixedFunctionSpace
from dolfin.fem.formmanipulations import increase_order
from ufl import VectorElement

mesh = UnitTriangleMesh()

V = FunctionSpace(mesh, 'R', 0)
Vi = increase_order(V)
assert Vi.ufl_element().degree() == 0

Vm = MixedFunctionSpace([V, V])
Vi = increase_order(V)
print isinstance(V.ufl_element(), VectorElement)
assert all(Vi.sub(i).ufl_element().degree() == 0
                for i in range(Vi.num_sub_spaces()))

VV = VectorFunctionSpace(mesh, 'R', 0)
V = MixedFunctionSpace([VV, V])
print isinstance(VV.ufl_element(), VectorElement)  # True -> attempt order++
vi = increase_order(V)

In the first two cases increase_order correctly identifies the Real function space and does not increase it's order. The last case raises an exception because the Real function space is missed by this test.

The bug was observed by bseguin.

Comments (3)

  1. Log in to comment