Dear all,
I get some UFL errors when trying to assemble the expression
E = 0.5*rho*assemble( (Hb*abs(grad(phi0))**2 + g*eta0**2)*dx )
where phi0, eta0, Hb are functions and the rest are scalars.
At first, I got this:-----------------E0_w = 0.5*rho*assemble( (Hb*abs(grad(phi0))**2 + g*eta0**2)*dx ) # Energy of the waterFile "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble.py", line 70, in assemblereturn assemble_expressions.assemble_expression(f)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 592, in assemble_expressionevaluate_expression(Assign(result, expr), subset)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 577, in evaluate_expressionk = expression_kernel(e, args)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 524, in expression_kernelast_expr = _ast(expr)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 44, in _astreturn expr.astFile "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 128, in astreturn self._ast(_ast(self.ufl_operands[0]), _ast(self.ufl_operands[1]))File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 48, in _astreturn f(expr)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 603, in <lambda>ufl.algebra.Product: (lambda e: ast.Par(_to_prod(e.ufl_operands))),File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 597, in <lambda>_to_prod = lambda o: ast.Prod(_ast(o[0]), _to_sum(o[1:])) if len(o) > 1 else _ast(o[0])File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 596, in <lambda>_to_sum = lambda o: ast.Sum(_ast(o[0]), _to_sum(o[1:])) if len(o) > 1 else _ast(o[0])File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 48, in _astreturn f(expr)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 602, in <lambda>ufl.algebra.Sum: (lambda e: ast.Par(_to_sum(e.ufl_operands))),File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 596, in <lambda>_to_sum = lambda o: ast.Sum(_ast(o[0]), _to_sum(o[1:])) if len(o) > 1 else _ast(o[0])File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 596, in <lambda>_to_sum = lambda o: ast.Sum(_ast(o[0]), _to_sum(o[1:])) if len(o) > 1 else _ast(o[0])File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 48, in _astreturn f(expr)File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 603, in <lambda>ufl.algebra.Product: (lambda e: ast.Par(_to_prod(e.ufl_operands))),File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 597, in <lambda>_to_prod = lambda o: ast.Prod(_ast(o[0]), _to_sum(o[1:])) if len(o) > 1 else _ast(o[0])File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 596, in <lambda>_to_sum = lambda o: ast.Sum(_ast(o[0]), _to_sum(o[1:])) if len(o) > 1 else _ast(o[0])File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 49, in _astraise TypeError("No ast handler for %s" % str(type(expr)))TypeError: No ast handler for <class 'ufl.tensoralgebra.Inner’>-----------------
and then I tried to write instead
E = 0.5*rho*assemble( (Hb*abs(grad(phi0))*abs(grad(phi0)) + g*eta0*eta0)*dx )
and got a different error:-----------------E0_w = 0.5*rho*assemble( (Hb*abs(grad(phi0))*abs(grad(phi0)) + g*eta0*eta0)*dx ) # Energy of the waterFile "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/exproperators.py", line 166, in _mulreturn _mult(self, o)File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/exproperators.py", line 144, in _multerror("Invalid ranks {0} and {1} in product.".format(r1, r2))File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/log.py", line 158, in errorraise self._exception_type(self._format_raw(*message))ufl.log.UFLException: Invalid ranks 1 and 1 in product.-----------------
I don’t understand what’s going wrong. It was working on Friday.
Thank you.
Best, Anna.