This is a read only copy of the old FEniCS QA forum. Please visit the new QA forum to ask questions

replacing Functions with mixed Functions gives wrong assemble results?

0 votes

I am trying to use the same Form to for different Problem settings and found some strange results on the following code, I dont get any errors but different results on assembling the Matrix after replacing Functions with a mixed Function. I want to get a extended Jakobi Matrix, derivative including scalar and not including scalar Function, this is only a example code to show the errors.
I was wondering if there is a known issue why this gives wrong results?

code example

from dolfin import *

mesh = UnitSquareMesh(1,1)
V = FunctionSpace(mesh, "Lagrange", 1)
R=FunctionSpace(mesh, "R", 0)
ME=MixedFunctionSpace([V,V,R])

u=TrialFunction(ME)
w=TestFunction(ME)
(w1,w2,w3)=split(w)
(u1,u2,u3)=split(u)
v1=TestFunction(V)
v2=TestFunction(V)
v3=TestFunction(R)
c1=Function(V)
c2=Function(V)
c3=Function(R)
F= dot(grad(c1),grad(v1))dx + c2v1dx + c3v1dx \
+ dot(grad(c2),grad(v2))
dx + c1v2dx \
+ c1v3dx + c2v3dx + c3v3dx

Fn=replace(F,{c1:u1,c2:u2,c3:u3,v1:w1,v2:w2,v3:w3})
W1=PETScMatrix()
assemble(Fn,tensor=W1)
print W1.array()

'normal' assembling

(c1,c2,c3)=TrialFunctions(ME)
(v1,v2,v3)=TestFunctions(ME)
F= dot(grad(c1),grad(v1))dx + c2v1dx + c3v1dx \
+ dot(grad(c2),grad(v2))
dx + c1v2dx \
+ c1v3dx + c2v3dx + c3v3dx
W2=PETScMatrix()
assemble(F,tensor=W2)
print W2.array()

2 different results

W1:
[[ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[-0.45833333 1.16666667 0.08333333 1.16666667 0.08333333 -0.45833333 -0.45833333 -0.45833333 0.33333333]
[-0.45833333 0.08333333 1.16666667 0.08333333 1.16666667 -0.45833333 -0.45833333 -0.45833333 0.33333333]
[ 1.08333333 -0.45833333 -0.45833333 -0.45833333 -0.45833333 1.08333333 0. 0. 0.16666667]
[ 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[ 0. -0.45833333 -0.45833333 -0.45833333 -0.45833333 0. 1.08333333 1.08333333 0.16666667]
[ 0.16666667 0.33333333 0.33333333 0.33333333 0.33333333 0.16666667 0.16666667 0.16666667 1. ]]
W2:
[[ 1. -0.5 -0.5 0.04166667 0.04166667 0.08333333 0. 0. 0.16666667]
[-0.5 1. 0. 0.16666667 0.08333333 0.04166667 -0.5 0.04166667 0.33333333]
[-0.5 0. 1. 0.08333333 0.16666667 0.04166667 -0.5 0.04166667 0.33333333]
[ 0.04166667 0.16666667 0.08333333 1. 0. -0.5 0.04166667 -0.5 0. ]
[ 0.04166667 0.08333333 0.16666667 0. 1. -0.5 0.04166667 -0.5 0. ]
[ 0.08333333 0.04166667 0.04166667 -0.5 -0.5 1. 0. 0. 0. ]
[ 0. -0.5 -0.5 0.04166667 0.04166667 0. 1. 0.08333333 0.16666667]
[ 0. 0.04166667 0.04166667 -0.5 -0.5 0. 0.08333333 1. 0. ]
[ 0.16666667 0.33333333 0.33333333 0.33333333 0.33333333 0.16666667 0.16666667 0.16666667 1. ]]

asked Aug 17, 2015 by tobiasj FEniCS Novice (170 points)
...