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 water File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble.py", line 70, in assemble return assemble_expressions.assemble_expression(f) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 592, in assemble_expression evaluate_expression(Assign(result, expr), subset) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 577, in evaluate_expression k = expression_kernel(e, args) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 524, in expression_kernel ast_expr = _ast(expr) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 44, in _ast return expr.ast File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble_expressions.py", line 128, in ast return 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 _ast return 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 _ast return 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 _ast return 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 _ast raise 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 water File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/exproperators.py", line 166, in _mul return _mult(self, o) File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/exproperators.py", line 144, in _mult error("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 error raise 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.
participants (1)
- 
                
                Anna Kalogirou