Thread Previous • Date Previous • Date Next • Thread Next |
Martin Sandve Alnæs wrote:
2007/10/12, Anders Logg <logg@xxxxxxxxx>:Martin Sandve Alnæs wrote:2007/10/12, Martin Sandve Alnæs <martinal@xxxxxxxxx>:1) What is wrong with this form?You take a dot product of a scalar with a vector (or a vector with a matrix in the vector case).While I agree of course that the scalar case is wrong, I'd expect dot to handle vector times matrix, the convection term is usually written "u dot grad u".
Yes, we need to fix the dot operator. In the meantime, do u[j]*D(u[i], j) or w[j]*D(u[i], j) /Anders
2) If it's a user mistake and not an ffc bug, ffc should raise an exception and not return NoneYes. Looking at operators.py, the "else" clause seems to be missing for the dot function. /Andersfrom ffc import * fe = FiniteElement("Lagrange", "triangle", 1)This should be: fe = VectorElement("Lagrange", "triangle", 1) but it doesn't change the None returned from dot.v = TestFunction(fe) u = TrialFunction(fe) w = Function(fe) Dw = grad(w) Du = grad(u) uDw = dot(u, Dw) print u print Dw print uDw # None!Output: vi-1 [[w0_a9(dXa11/dx0) | ((d/dXa11)va9[0]), w0_a12(dXa14/dx1) | ((d/dXa14)va12[0])], [w0_a15(dXa17/dx0) | ((d/dXa17)va15[1]), w0_a18(dXa20/dx1) | ((d/dXa20)va18[1])]] NonewDu = dot(w, Du) a = dot(v, uDw+wDu) * dx -- Martin
Thread Previous • Date Previous • Date Next • Thread Next |