diff --git a/python/dune/perftool/compile.py b/python/dune/perftool/compile.py
index cd5344c0da55f68b88a3ea1809f800105160fbbc..f55ec87c890b5840b7a6816a4fed2c0e083b12d6 100644
--- a/python/dune/perftool/compile.py
+++ b/python/dune/perftool/compile.py
@@ -92,7 +92,7 @@ def read_ufl(uflfile):
     if get_option("exact_solution_expression"):
         data.object_by_name[get_option("exact_solution_expression")] = namespace[get_option("exact_solution_expression")]
 
-    magic_names = ("dirichlet_expression",
+    magic_names = ("interpolate_expression",
                    "is_dirichlet",
                    "exact_solution",
                    )
diff --git a/python/dune/perftool/pdelab/driver/__init__.py b/python/dune/perftool/pdelab/driver/__init__.py
index e052fa954f61a3d0890ba373a3527cc770ff3fac..049127442d4a5b4a6c4a07325312516feac2cebd 100644
--- a/python/dune/perftool/pdelab/driver/__init__.py
+++ b/python/dune/perftool/pdelab/driver/__init__.py
@@ -192,8 +192,11 @@ def unroll_list_tensors(data):
             yield e
 
 
-def preprocess_leaf_data(element, data):
+def preprocess_leaf_data(element, data, applyZeroDefault=True):
     data = get_object(data)
+    if data is None and not applyZeroDefault:
+        return None
+
     from ufl import MixedElement
     if isinstance(element, MixedElement):
         # data is None -> use 0 default
diff --git a/python/dune/perftool/pdelab/driver/instationary.py b/python/dune/perftool/pdelab/driver/instationary.py
index fe2cbc5a5a819c7e274759ab9e91cc61d1b14e34..5c9bf3f6be64b6d2f0bd0037ef680ae528a456b7 100644
--- a/python/dune/perftool/pdelab/driver/instationary.py
+++ b/python/dune/perftool/pdelab/driver/instationary.py
@@ -67,7 +67,7 @@ def time_loop():
         osm = name_explicitonestepmethod()
         apply_call = "{}.apply(time, dt, {}, {}new);".format(osm, vector, vector)
     else:
-        dirichlet = preprocess_leaf_data(element, "dirichlet_expression")
+        dirichlet = preprocess_leaf_data(element, "interpolate_expression")
         boundary = name_boundary_function(element, dirichlet)
         osm = name_onestepmethod()
         apply_call = "{}.apply(time, dt, {}, {}, {}new);".format(osm, vector, boundary, vector)
diff --git a/python/dune/perftool/pdelab/driver/interpolate.py b/python/dune/perftool/pdelab/driver/interpolate.py
index c3c5911e7b1207c45878043ed5e2d81b483410fe..c2a7571e68f3c5b00cfbf4df1139cb9c5afc7dda 100644
--- a/python/dune/perftool/pdelab/driver/interpolate.py
+++ b/python/dune/perftool/pdelab/driver/interpolate.py
@@ -18,20 +18,13 @@ from dune.perftool.pdelab.driver.gridoperator import (name_parameters,)
 from ufl import FiniteElement, MixedElement, TensorElement, VectorElement, TensorProductElement
 
 
-def _do_interpolate(dirichlet):
-    if isinstance(dirichlet, (list, tuple)):
-        return any(bool(d) for d in dirichlet)
-    else:
-        return bool(dirichlet)
-
 
 def interpolate_dirichlet_data(name):
     element = get_trial_element()
-    is_dirichlet = preprocess_leaf_data(element, "is_dirichlet")
-    if _do_interpolate(is_dirichlet) or not is_stationary():
+    func = preprocess_leaf_data(element, "interpolate_expression", applyZeroDefault=False)
+    if func is not None:
+        bf = name_boundary_function(element, func)
         gfs = name_trial_gfs()
-        dirichlet = preprocess_leaf_data(element, "dirichlet_expression")
-        bf = name_boundary_function(element, dirichlet)
         interpolate_vector(bf, gfs, name)
 
 
diff --git a/test/blockstructured/nonlinear/nonlinear.ufl b/test/blockstructured/nonlinear/nonlinear.ufl
index 6187bbeb86d8390f578d337727089c254ff4ff06..7932d0a15ff211830cd29298c72d0843014ede29 100644
--- a/test/blockstructured/nonlinear/nonlinear.ufl
+++ b/test/blockstructured/nonlinear/nonlinear.ufl
@@ -10,6 +10,6 @@ u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(grad(u), grad(v)) + u*u*v - f*v)*dx]
-dirichlet_expression = g
+interpolate_expression = g
 exact_solution = g
 is_dirichlet = 1
diff --git a/test/blockstructured/poisson/3d/poisson.ufl b/test/blockstructured/poisson/3d/poisson.ufl
index 562606820cf377a80cad2a0826f5207d4f5a2a5d..d45a60748ff806bbd998c45c07c2e3d1bf05e2fd 100644
--- a/test/blockstructured/poisson/3d/poisson.ufl
+++ b/test/blockstructured/poisson/3d/poisson.ufl
@@ -11,6 +11,6 @@ v = TestFunction(V)
 
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
-dirichlet_expression = g
+interpolate_expression = g
 exact_solution = g
 is_dirichlet = 1
diff --git a/test/blockstructured/poisson/poisson.ufl b/test/blockstructured/poisson/poisson.ufl
index d8a7ef0ce23d9cc7cf96445509530af750199743..aa44e75ab0e6d2619905a97b8261a0c07b789378 100644
--- a/test/blockstructured/poisson/poisson.ufl
+++ b/test/blockstructured/poisson/poisson.ufl
@@ -10,6 +10,6 @@ u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
-dirichlet_expression = g
+interpolate_expression = g
 exact_solution = g
 is_dirichlet = 1
diff --git a/test/blockstructured/poisson/poisson_neumann.ufl b/test/blockstructured/poisson/poisson_neumann.ufl
index 867403d8920c6869eee6721a943c3cd6199c57b4..c766be2f985fdc92eb98b8b5152a5b4987d7be7a 100644
--- a/test/blockstructured/poisson/poisson_neumann.ufl
+++ b/test/blockstructured/poisson/poisson_neumann.ufl
@@ -17,6 +17,6 @@ v = TestFunction(V)
 ds = ds(subdomain_data=bctype)
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx - j*v*ds(0)]
-dirichlet_expression = g
+interpolate_expression = g
 exact_solution = g
 is_dirichlet = bctype
diff --git a/test/blockstructured/poisson/poisson_tensor.ufl b/test/blockstructured/poisson/poisson_tensor.ufl
index df8bcbab312335e8e0c8e1160a145288187318fc..5d345c75bdb4594a18d3a6c9ea6dd0f596b99ad2 100644
--- a/test/blockstructured/poisson/poisson_tensor.ufl
+++ b/test/blockstructured/poisson/poisson_tensor.ufl
@@ -13,6 +13,6 @@ u = TrialFunction(V)
 v = TestFunction(V)
 
 forms = [(inner(A*grad(u), grad(v)) + c*u*v -f*v)*dx]
-dirichlet_expression = g
+interpolate_expression = g
 exact_solution = g
 is_dirichlet = 1
diff --git a/test/blockstructured/stokes/stokes.ufl b/test/blockstructured/stokes/stokes.ufl
index c8f630b84aae43a68221ace670fe9fcb027af47d..4fa3f5de3749b1e5b9a6f687603378e9049b999f 100644
--- a/test/blockstructured/stokes/stokes.ufl
+++ b/test/blockstructured/stokes/stokes.ufl
@@ -15,5 +15,5 @@ r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 
 forms = [r]
 is_dirichlet = v_bctype, v_bctype, 0
-dirichlet_expression = g_v, None
+interpolate_expression = g_v, None
 exact_solution = g_v, 8.*(1.-x[0])
diff --git a/test/heatequation/heatequation.ufl b/test/heatequation/heatequation.ufl
index 9fe2e20bff8bead3b823bf86c9cb4b4372f155c9..726b84a310871ba49ba02d9079b63fd46f8a0c32 100644
--- a/test/heatequation/heatequation.ufl
+++ b/test/heatequation/heatequation.ufl
@@ -14,6 +14,6 @@ mass = (u*v)*dx
 poisson = (inner(grad(u), grad(v)) - f*v)*dx
 
 forms = [mass, poisson]
-dirichlet_expression = g
+interpolate_expression = g
 is_dirichlet = 1
 exact_solution = g
\ No newline at end of file
diff --git a/test/heatequation/heatequation_dg.ufl b/test/heatequation/heatequation_dg.ufl
index 8dfd74302e57c53f3672d4a0e25592dd0c4cd34c..288d1e675578c72e8c5b2c150d6677f663cc42f7 100644
--- a/test/heatequation/heatequation_dg.ufl
+++ b/test/heatequation/heatequation_dg.ufl
@@ -33,6 +33,6 @@ poisson = inner(grad(u), grad(v))*dx \
 mass = (u*v)*dx
 
 forms = [mass, poisson]
-dirichlet_expression = g
+interpolate_expression = g
 is_dirichlet = 1
 exact_solution = g
\ No newline at end of file
diff --git a/test/heatequation/heatequation_time_dependent_bc.ufl b/test/heatequation/heatequation_time_dependent_bc.ufl
index ac0079253cc170c757da9ae772eec8e4fd1a6087..8bf2a2d853c27a5a2724f2813f52ae0814983096 100644
--- a/test/heatequation/heatequation_time_dependent_bc.ufl
+++ b/test/heatequation/heatequation_time_dependent_bc.ufl
@@ -17,6 +17,6 @@ mass = (u*v)*dx
 poisson = (inner(grad(u), grad(v)) - f*v)*dx
 
 forms = [mass, poisson]
-dirichlet_expression = g
+interpolate_expression = g
 is_dirichlet = 1
 exact_solution = g
diff --git a/test/hyperbolic/linearacoustics.ufl b/test/hyperbolic/linearacoustics.ufl
index 8b9d48c4433f72395c054c88ea6c4eaeedb9fcb0..d72476ccbf99ae6cae34114b19300064820ded14 100644
--- a/test/hyperbolic/linearacoustics.ufl
+++ b/test/hyperbolic/linearacoustics.ufl
@@ -29,4 +29,4 @@ r = -1. * inner(flux, grad(v))*dx \
   + inner(u, v)*ds
 
 forms = [mass, r]
-dirichlet_expression = f, 0.0, 0.0
+interpolate_expression = f, 0.0, 0.0
diff --git a/test/hyperbolic/lineartransport.ufl b/test/hyperbolic/lineartransport.ufl
index 858a18bd32537eec046de5b382a95d95401e9aae..20ad8bf5a4bf7f2a59ff58e0088ec01b66eaac91 100644
--- a/test/hyperbolic/lineartransport.ufl
+++ b/test/hyperbolic/lineartransport.ufl
@@ -27,5 +27,5 @@ r = -1.*u*inner(beta, grad(v))*dx \
 
 forms = [mass, r]
 is_dirichlet = dirichlet
-dirichlet_expression = initial
+interpolate_expression = initial
 exact_solution = 0
\ No newline at end of file
diff --git a/test/hyperbolic/shallowwater.ufl b/test/hyperbolic/shallowwater.ufl
index 8737b2851cce2fb093a0f6000c8cc649356d3ff3..eee5ea804c3c28d54f1e79365b3437e548f46bac 100644
--- a/test/hyperbolic/shallowwater.ufl
+++ b/test/hyperbolic/shallowwater.ufl
@@ -33,4 +33,4 @@ r = -1. * inner(flux, grad(v))*dx \
   + inner(boundary_flux, v)*ds
 
 forms = [mass, r]
-dirichlet_expression = f, 0.0
+interpolate_expression = f, 0.0
diff --git a/test/nonlinear/diffusivewave.ufl b/test/nonlinear/diffusivewave.ufl
index 66b2524332f317ac05bcdcbd19404315931c974e..fc92f13d4efd9dcaa0826ae47892148b6e6bd234 100644
--- a/test/nonlinear/diffusivewave.ufl
+++ b/test/nonlinear/diffusivewave.ufl
@@ -32,4 +32,4 @@ poisson = inner(K*grad(u), grad(v))*dx \
 mass = (u*v)*dx
 
 forms = [mass, poisson]
-dirichlet_expression = sin(pi*x[0])
+interpolate_expression = sin(pi*x[0])
diff --git a/test/nonlinear/nonlinear.ufl b/test/nonlinear/nonlinear.ufl
index f81b287e504909b1381a4ac71f3a84af5e34a01c..b22d743777aec41147d727988e020785b7b710bc 100644
--- a/test/nonlinear/nonlinear.ufl
+++ b/test/nonlinear/nonlinear.ufl
@@ -12,5 +12,5 @@ r = (inner(grad(u), grad(v)) + u*u*v - f*v)*dx
 
 forms = [r]
 exact_solution = g
-dirichlet_expression = g
+interpolate_expression = g
 is_dirichlet = 1
\ No newline at end of file
diff --git a/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl b/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl
index 5eefb2d7c12d0e18f1638949abb4bd0524512fd8..4125994aadff64d73b54ce2d2e86b9be4462eebf 100644
--- a/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_1d_cg_interval.ufl
@@ -12,4 +12,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl b/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl
index d3771aacfe8f806cb3fd1e31d9ba581106885247..5b870f088e98633790d8e6f21c67e7cc432f14de 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_2d_cg_quadrilateral.ufl
@@ -12,4 +12,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl b/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl
index e95064dfb1e0d947c51a1c021ac4f0f7a9f7adc1..c07533d54897d68192803935ac2b212a46376402 100644
--- a/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_2d_cg_triangle.ufl
@@ -11,4 +11,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl b/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl
index 93e880daec3964f358b303d02dcb45bca0314743..7bfd73703228482b235fab077e5a2f874132ae04 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_3d_cg_hexahedron.ufl
@@ -11,4 +11,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl b/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl
index 61ebabe881158548f770b69b999759285520439e..b6e70a98065893ed033907bfea4ef418d39d7363 100644
--- a/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl
+++ b/test/poisson/dimension-grid-variations/poisson_3d_cg_tetrahedron.ufl
@@ -11,4 +11,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/poisson/poisson.ufl b/test/poisson/poisson.ufl
index 2bfe33131e8fc3456a1d68781874a1bcae0f87af..025f1e8ca033d97f0ae0399dbf936d72eee9187d 100644
--- a/test/poisson/poisson.ufl
+++ b/test/poisson/poisson.ufl
@@ -13,5 +13,5 @@ v = TestFunction(V)
 
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
-dirichlet_expression = g
+interpolate_expression = g
 is_dirichlet = 1
\ No newline at end of file
diff --git a/test/poisson/poisson_neumann.ufl b/test/poisson/poisson_neumann.ufl
index d951842134b2859689629189bed631c28caf2442..aa69d6fe42e68476d80da264c625ebead752436d 100644
--- a/test/poisson/poisson_neumann.ufl
+++ b/test/poisson/poisson_neumann.ufl
@@ -19,4 +19,4 @@ ds = ds(subdomain_data=bctype)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx - j*v*ds(0)]
 exact_solution = g
 is_dirichlet = bctype
-dirichlet_expression = g
\ No newline at end of file
+interpolate_expression = g
\ No newline at end of file
diff --git a/test/poisson/poisson_tensor.ufl b/test/poisson/poisson_tensor.ufl
index 7208c1e0271e91d6ece79ee388510dc2f64a7a25..08898c93f560a329072736e1557b2a19f7645646 100644
--- a/test/poisson/poisson_tensor.ufl
+++ b/test/poisson/poisson_tensor.ufl
@@ -15,4 +15,4 @@ v = TestFunction(V)
 forms = [(inner(A*grad(u), grad(v)) + c*u*v -f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
\ No newline at end of file
+interpolate_expression = g
\ No newline at end of file
diff --git a/test/stokes/stokes.ufl b/test/stokes/stokes.ufl
index 4307fbeee64a03e4ace5cb63931458ae5d9edbcf..6debda650ade492ace562e3f671cefeb8356afc6 100644
--- a/test/stokes/stokes.ufl
+++ b/test/stokes/stokes.ufl
@@ -15,5 +15,5 @@ r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 
 forms = [r]
 is_dirichlet = v_bctype, v_bctype, 0
-dirichlet_expression = g_v, None
+interpolate_expression = g_v, None
 exact_solution = g_v, 8.*(1.-x[0])
\ No newline at end of file
diff --git a/test/stokes/stokes_3d_quadrilateral.ufl b/test/stokes/stokes_3d_quadrilateral.ufl
index 0888298844ccf8e7ebda072c26c4908e96565072..24d799a8ebea2dc902019efa6d93e289181282bf 100644
--- a/test/stokes/stokes_3d_quadrilateral.ufl
+++ b/test/stokes/stokes_3d_quadrilateral.ufl
@@ -16,4 +16,4 @@ r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 forms = [r]
 exact_solution = g_v, 8.*(1.-x[0])
 is_dirichlet = v_bctype, v_bctype, v_bctype, 0
-dirichlet_expression = g_v, None
+interpolate_expression = g_v, None
diff --git a/test/stokes/stokes_quadrilateral.ufl b/test/stokes/stokes_quadrilateral.ufl
index c8f630b84aae43a68221ace670fe9fcb027af47d..4fa3f5de3749b1e5b9a6f687603378e9049b999f 100644
--- a/test/stokes/stokes_quadrilateral.ufl
+++ b/test/stokes/stokes_quadrilateral.ufl
@@ -15,5 +15,5 @@ r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 
 forms = [r]
 is_dirichlet = v_bctype, v_bctype, 0
-dirichlet_expression = g_v, None
+interpolate_expression = g_v, None
 exact_solution = g_v, 8.*(1.-x[0])
diff --git a/test/stokes/stokes_stress.ufl b/test/stokes/stokes_stress.ufl
index a25a73adba1baa7fc141864320f7c639ff9808df..8e8aaf14a831322ef8539a80647f426835b897a3 100644
--- a/test/stokes/stokes_stress.ufl
+++ b/test/stokes/stokes_stress.ufl
@@ -16,5 +16,5 @@ r = (inner(grad(v), S) + inner(grad(u) - S, T) - div(v)*p - q*div(u))*dx
 
 forms = [r]
 is_dirichlet = v_bctype, v_bctype, 0, 0, 0, 0, 0
-dirichlet_expression = 4*x[1]*(1.-x[1]), 0.0, None, None, None, None, None
+interpolate_expression = 4*x[1]*(1.-x[1]), 0.0, None, None, None, None, None
 exact_solution = 4*x[1]*(1.-x[1]), 0.0, 8*(1.-x[0]), 0.0, 0.0, -1.*8*x[1] + 4., 0.0
\ No newline at end of file
diff --git a/test/stokes/stokes_stress_sym.ufl b/test/stokes/stokes_stress_sym.ufl
index f5dc520c07202ee05b4294b153d90f3dcd5b4ab0..012f70dbd5de6dccdf5f88021aaec320b460c970 100644
--- a/test/stokes/stokes_stress_sym.ufl
+++ b/test/stokes/stokes_stress_sym.ufl
@@ -22,5 +22,5 @@ r = (inner(grad(v), S) + inner(2*sym(grad(u)) - S, T) - div(v)*p - q*div(u))*dx
 
 forms = [r]
 is_dirichlet = v_bctype, v_bctype, 0, 0, 0, 0
-dirichlet_expression = 4*x[1]*(1.-x[1]), 0.0, None, None, None, None
+interpolate_expression = 4*x[1]*(1.-x[1]), 0.0, None, None, None, None
 exact_solution = 4*x[1]*(1.-x[1]), 0.0, 8*(1.-x[0]), 0.0, 0.0, -1.*8*x[1] + 4.
\ No newline at end of file
diff --git a/test/stokes/stokes_sym.ufl b/test/stokes/stokes_sym.ufl
index 1ae13db697976a046b461096a530ef315a2d7417..554101ab123556bfa3affb47fcc6726c88b3d9d8 100644
--- a/test/stokes/stokes_sym.ufl
+++ b/test/stokes/stokes_sym.ufl
@@ -18,5 +18,5 @@ r = (inner(2*sym(grad(u)), grad(v)) - div(v)*p - q*div(u))*dx - inner(grad(u).T*
 
 forms = [r]
 is_dirichlet = v_bctype, v_bctype, 0
-dirichlet_expression = g_v, None
+interpolate_expression = g_v, None
 exact_solution = g_v, 8.*(1.-x[0])
\ No newline at end of file
diff --git a/test/sumfact/hyperbolic/linearacoustics.ufl b/test/sumfact/hyperbolic/linearacoustics.ufl
index 8b9d48c4433f72395c054c88ea6c4eaeedb9fcb0..d72476ccbf99ae6cae34114b19300064820ded14 100644
--- a/test/sumfact/hyperbolic/linearacoustics.ufl
+++ b/test/sumfact/hyperbolic/linearacoustics.ufl
@@ -29,4 +29,4 @@ r = -1. * inner(flux, grad(v))*dx \
   + inner(u, v)*ds
 
 forms = [mass, r]
-dirichlet_expression = f, 0.0, 0.0
+interpolate_expression = f, 0.0, 0.0
diff --git a/test/sumfact/hyperbolic/lineartransport.ufl b/test/sumfact/hyperbolic/lineartransport.ufl
index 8fa698d935c924f4c79fb9653c1d43e959909ccb..d1f412504a8f86f2d041a37fb763fee4bc2aea93 100644
--- a/test/sumfact/hyperbolic/lineartransport.ufl
+++ b/test/sumfact/hyperbolic/lineartransport.ufl
@@ -28,4 +28,4 @@ r = -1.*u*inner(beta, grad(v))*dx \
 forms = [mass, r]
 exact_solution = 0.0
 is_dirichlet = dirichlet
-dirichlet_expression = initial
\ No newline at end of file
+interpolate_expression = initial
\ No newline at end of file
diff --git a/test/sumfact/hyperbolic/shallowwater.ufl b/test/sumfact/hyperbolic/shallowwater.ufl
index 9fca496e9fab29d58e91e79f15fb6fed3b4265af..0db71cf107d01edf42a679677dfeed23c22c4dc1 100644
--- a/test/sumfact/hyperbolic/shallowwater.ufl
+++ b/test/sumfact/hyperbolic/shallowwater.ufl
@@ -36,4 +36,4 @@ r = -1. * inner(flux, grad(v))*dx \
   + inner(boundary_flux, v)*ds
 
 forms = [mass, r]
-dirichlet_expression = f, 0.0, 0.0
+interpolate_expression = f, 0.0, 0.0
diff --git a/test/sumfact/poisson/poisson_2d.ufl b/test/sumfact/poisson/poisson_2d.ufl
index d2c78a8d2a1a928ae1f941db4e1a337c8d308bbb..97cc99c407283e8e65bda1fdbb98921c96d6a50b 100644
--- a/test/sumfact/poisson/poisson_2d.ufl
+++ b/test/sumfact/poisson/poisson_2d.ufl
@@ -15,4 +15,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/sumfact/poisson/poisson_3d.ufl b/test/sumfact/poisson/poisson_3d.ufl
index 529db2a042c01c43ffb7c71c390c323dd3c3d4ac..75f0331a54427d11bcf86dc9613afde38847f881 100644
--- a/test/sumfact/poisson/poisson_3d.ufl
+++ b/test/sumfact/poisson/poisson_3d.ufl
@@ -12,4 +12,4 @@ v = TestFunction(V)
 forms = [(inner(grad(u), grad(v)) - f*v)*dx]
 exact_solution = g
 is_dirichlet = 1
-dirichlet_expression = g
+interpolate_expression = g
diff --git a/test/sumfact/stokes/stokes.ufl b/test/sumfact/stokes/stokes.ufl
index fafe0714ccee659ee18ef550cc2a17fba01077e6..1286a48d91b8807534345385f8f0b796c72d8012 100644
--- a/test/sumfact/stokes/stokes.ufl
+++ b/test/sumfact/stokes/stokes.ufl
@@ -16,5 +16,5 @@ r = (inner(grad(v), grad(u)) - div(v)*p - q*div(u))*dx
 
 forms = [r]
 exact_solution = g_v, 8.*(1.-x[0])
-dirichlet_expression = g_v, None
+interpolate_expression = g_v, None
 is_dirichlet = v_bctype, v_bctype, None
\ No newline at end of file