Hi,
I need some help.
I can not understand the relationship of global functions in mixed
functions spaces of *two different meshes* on the assembled system matrix.
The code below illustrates my point.
from dolfin import *
mesh1 = UnitIntervalMesh(4)
mesh2 = UnitIntervalMesh(2)
V1 = FunctionSpace(mesh1, "CG", 2) # 9 Lagrange *global* functions
of degree 2
V2 = FunctionSpace(mesh2, "CG", 1) # 3 Lagrange *global* functions
of degree 1
V = V1 * V2
(u1, u2) = TrialFunctions(V)
v1 = TestFunction(V1)
a = (inner(grad(u1), grad(v1)) * dx) + (inner(grad(u2), grad(v1)) * dx)
A = assemble(a)
V1_dofs = V.sub(0).collapse(mesh1)[1].values()
V2_dofs = V.sub(1).collapse(mesh2)[1].values()
print 'V1 dofs = ', V1_dofs
print 'V2 dofs = ', V2_dofs
print 'A = ', A.array()
I would expect to find three V2 dofs associated with the functions of
space V2. Mesh2 has only 3 nodes. But there are five V2 dofs = [4, 2, 6, 9,
13]. There is no problem with V1 dofs = [0, 1, 3, 5, 7, 8, 10, 11, 12].
There are 5 mesh nodes and the midpoints of its elements. The assembled
system matrix do not have 12 columns.
I can t understand it. Any help will be appreciated. Thanks for
availability.
Andre Machado
p.s.: I disturb the FEniCS q&a first...
http://fenicsproject.org/qa/3561/dof-map-of-mixed-space-over-different-meshes
This is from line 483 of site-packages/functions/functionspace.py:
* #if not all(V.mesh() == spaces[0].mesh() for V in spaces):
# cpp.dolfin_error("functionspace.py", "Nonmatching meshes for
mixed function space: " \
# + str([V.mesh() for V in spaces]))*
_______________________________________________
fenics mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics