Hi David, I have tried to implement my problem (attached) using the real function spaces but I get the error below. The code can be found here<https://bitbucket.org/annakalog/buoy2d/src/d6a805b6a8d0/Mixed%20system/?at=master>. I define the real space by V_R = FunctionSpace(mesh, "R", 0). Is that correct? Also, is it a problem that the linear part of the variational form does not depend on one of the test functions from the mixed function space (only depends on v1, v2, v3 and not v4)? Best, Anna. Traceback (most recent call last): File "buoy-swe.py", line 89, in <module> F_solver = solver_F(phi0_5, eta1, mu0_5, I, w, phi0, eta0, Z0, W0, step_b, etaR, phi_t, eta_t, mu_t, I_t, v1, v2, v3, v4, dt, Hb, H0, L, dR_dt, g, rho, Mass, solvers_print); File "/Users/matak/Documents/Simulations/Firedrake/Ship/Modules/Mixed system/solvers.py", line 41, in solver_F F_solver = LinearVariationalSolver(F_problem, solver_parameters=solvers_print) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/variational_solver.py", line 264, in __init__ super(LinearVariationalSolver, self).__init__(*args, **kwargs) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/variational_solver.py", line 127, in __init__ ctx = solving_utils._SNESContext(problem) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/solving_utils.py", line 107, in __init__ for problem in problems) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/solving_utils.py", line 107, in <genexpr> for problem in problems) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble.py", line 67, in assemble inverse=inverse, nest=nest) File "<decorator-gen-294>", line 2, in _assemble File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/utils.py", line 62, in wrapper return f(*args, **kwargs) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/assemble.py", line 101, in _assemble inverse=inverse) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/tsfc_interface.py", line 307, in compile_form number_map).kernels File "/Users/matak/firedrake/lib/python2.7/site-packages/pyop2/caching.py", line 198, in __new__ obj = make_obj() File "/Users/matak/firedrake/lib/python2.7/site-packages/pyop2/caching.py", line 188, in make_obj obj.__init__(*args, **kwargs) File "/Users/matak/firedrake/lib/python2.7/site-packages/firedrake/tsfc_interface.py", line 212, in __init__ tree = tsfc_compile_form(form, prefix=name, parameters=parameters) File "/Users/matak/firedrake/lib/python2.7/site-packages/tsfc/driver.py", line 47, in compile_form do_estimate_degrees=True) File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/algorithms/compute_form_data.py", line 386, in compute_form_data check_form_arity(preprocessed_form, self.original_form.arguments()) # Currently testing how fast this is File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/algorithms/check_arities.py", line 152, in check_form_arity check_integrand_arity(itg.integrand(), arguments) File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/algorithms/check_arities.py", line 145, in check_integrand_arity args = map_expr_dag(rules, expr, compress=False) File "/Users/matak/firedrake/lib/python2.7/site-packages/ufl/corealg/map_dag.py", line 37, in map_expr_dag result, = map_expr_dags(function, [expression], compress=compress) File "/Users/matak/firedrake/lib/python2.7/site-packages/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 "/Users/matak/firedrake/lib/python2.7/site-packages/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 () vs (Argument(WithGeometry(IndexedProxyFunctionSpace(<firedrake.mesh.ExtrudedMeshTopology object at 0x113e6b890>, TensorProductElement(FiniteElement('Lagrange', interval, 1), FiniteElement('Lagrange', interval, 1), cell=TensorProductCell(interval, interval)), name=None, index=0, component=None), Mesh(VectorElement(TensorProductElement(FiniteElement('Lagrange', interval, 1), FiniteElement('Lagrange', interval, 1), cell=TensorProductCell(interval, interval)), dim=2), 4)), 1, None),).