The error is "Adding expressions with non-matching form arguments"

Most likely you have a typo in one of the symbolic expressions.  As a result, you are adding a form containing just a test function to one containing just a trial function, or something similar.

Best,
Andrew

On 19 March 2017 at 11:37, William Booker <scwb@leeds.ac.uk> wrote:

Hi,

How do I fix the following error for the solver?

  File "2d_compressible_stratified.py", line 195, in <module>
    solver = LinearVariationalSolver(problem, solver_parameters={'ksp_rtol': 1e-14})
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/variational_solver.py", line 286, in __init__
    super(LinearVariationalSolver, self).__init__(*args, **kwargs)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/variational_solver.py", line 156, in __init__
    pre_function_callback=pre_f_callback)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/solving_utils.py", line 226, in __init__
    appctx=appctx)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/assemble.py", line 120, in allocate_matrix
    allocate_only=True)
  File "<decorator-gen-279>", line 2, in _assemble
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/utils.py", line 62, in wrapper
    return f(*args, **kwargs)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/assemble.py", line 192, in _assemble
    kernels = tsfc_interface.compile_form(f, "form", parameters=form_compiler_parameters, inverse=inverse)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/tsfc_interface.py", line 193, in compile_form
    number_map).kernels
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/PyOP2/pyop2/caching.py", line 200, in __new__
    obj = make_obj()
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/PyOP2/pyop2/caching.py", line 190, in make_obj
    obj.__init__(*args, **kwargs)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/firedrake/firedrake/tsfc_interface.py", line 112, in __init__
    tree = tsfc_compile_form(form, prefix=name, parameters=parameters)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/tsfc/tsfc/driver.py", line 44, in compile_form
    fd = ufl_utils.compute_form_data(form)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/tsfc/tsfc/ufl_utils.py", line 56, in compute_form_data
    do_estimate_degrees=do_estimate_degrees,
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/ufl/ufl/algorithms/compute_form_data.py", line 387, in compute_form_data
    check_form_arity(preprocessed_form, self.original_form.arguments())  # Currently testing how fast this is
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/ufl/ufl/algorithms/check_arities.py", line 152, in check_form_arity
    check_integrand_arity(itg.integrand(), arguments)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/ufl/ufl/algorithms/check_arities.py", line 145, in check_integrand_arity
    args = map_expr_dag(rules, expr, compress=False)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/ufl/ufl/corealg/map_dag.py", line 37, in map_expr_dag
    result, = map_expr_dags(function, [expression], compress=compress)
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/ufl/ufl/corealg/map_dag.py", line 86, in map_expr_dags
    r = handlers[v._ufl_typecode_](v, *[vcache[u] for u in v.ufl_operands])
  File "/usr/not-backed-up/firedrake/2017-02-28/firedrake/src/ufl/ufl/algorithms/check_arities.py", line 42, in sum
    raise ArityMismatch("Adding expressions with non-matching form arguments {0} vs {1}.".format(a, b))
ufl.algorithms.check_arities.ArityMismatch: Adding expressions with non-matching form arguments (Argument(WithGeometry(FunctionSpace(<firedrake.mesh.MeshTopology object at 0x7f105c981410>, VectorElement(FiniteElement('Discontinuous Lagrange', triangle, 2), dim=2), name=None), Mesh(VectorElement(FiniteElement('Lagrange', triangle, 1), dim=2), 1)), 0, None), Argument(WithGeometry(FunctionSpace(<firedrake.mesh.MeshTopology object at 0x7f105c981410>, VectorElement(FiniteElement('Discontinuous Lagrange', triangle, 2), dim=2), name=None), Mesh(VectorElement(FiniteElement('Lagrange', triangle, 1), dim=2), 1)), 1, None)) vs (Argument(WithGeometry(FunctionSpace(<firedrake.mesh.MeshTopology object at 0x7f105c981410>, VectorElement(FiniteElement('Discontinuous Lagrange', triangle, 2), dim=2), name=None), Mesh(VectorElement(FiniteElement('Lagrange', triangle, 1), dim=2), 1)), 0, None),).