@@ -938,7 +938,7 @@ def callable():
938938
939939 # Interpolate each sub expression into each function space
940940 for Vsub , sub_tensor , sub_op , sub_dual in zip (V , tensor , operands , duals ):
941- sub_expr = ufl . Interpolate (sub_op , sub_dual )
941+ sub_expr = expr . _ufl_expr_reconstruct_ (sub_op , sub_dual )
942942 loops .extend (_interpolator (Vsub , sub_tensor , sub_expr , subset , arguments , access , bcs = bcs ))
943943
944944 if bcs and rank == 1 :
@@ -1050,7 +1050,6 @@ def _interpolator(V, tensor, expr, subset, arguments, access, bcs=None):
10501050 name = kernel .name
10511051 kernel = op2 .Kernel (ast , name , requires_zeroed_output_arguments = True ,
10521052 flop_count = kernel .flop_count , events = (kernel .event ,))
1053-
10541053 parloop_args = [kernel , cell_set ]
10551054
10561055 expr = ufl .Interpolate (operand , v = dual_arg )
@@ -1069,6 +1068,7 @@ def _interpolator(V, tensor, expr, subset, arguments, access, bcs=None):
10691068 else :
10701069 copyin = ()
10711070 copyout = ()
1071+
10721072 if isinstance (tensor , op2 .Global ):
10731073 parloop_args .append (tensor (access ))
10741074 elif isinstance (tensor , op2 .Dat ):
0 commit comments