diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py index 3ef8b01efe7909d5cba09eeb495fee9c76dbecf9..1f8988ae4cb39ba0649c1d339e4eb3aba65b05ca 100644 --- a/python/dune/perftool/pdelab/driver.py +++ b/python/dune/perftool/pdelab/driver.py @@ -826,7 +826,8 @@ def interpolate_vector(name, formdata): @preamble def interpolate_solution_expression(name): - define_vector(name) + formdata = _driver_data['formdata'] + define_vector(name, formdata) element = _driver_data['form'].coefficients()[0].ufl_element() sol = name_solution_function(element) gfs = name_gfs(element) @@ -1109,8 +1110,9 @@ def dune_solve(): matrix_free = get_option('matrix_free') if linear and matrix_free: - go = name_gridoperator(_driver_data['formdata']) - x = name_vector() + formdata = _driver_data['formdata'] + go = name_gridoperator(formdata) + x = name_vector(formdata) include_file("dune/perftool/matrixfree.hh", filetag="driver") return "solveMatrixFree({},{});".format(go, x) elif linear and not matrix_free: @@ -1119,7 +1121,9 @@ def dune_solve(): elif not linear and matrix_free: raise NotImplementedError("Nonlinear and matrix free is not yet implemented") elif not linear and not matrix_free: - snp = name_stationarynonlinearproblemsolver() + go_type = type_gridoperator(_driver_data['formdata']) + go = name_gridoperator(_driver_data['formdata']) + snp = name_stationarynonlinearproblemsolver(go_type, go) return "{}.apply();".format(snp) else: assert False @@ -1140,7 +1144,7 @@ def name_vtkfile(): @preamble def compare_dofs(): - v = name_vector() + v = name_vector(_driver_data['formdata']) solution = name_vector_from_solution_expression() return ["", "// Maximum norm of difference between dof vectors of the", @@ -1171,7 +1175,8 @@ def name_discrete_grid_function(gfs, vector_name): @preamble def compare_L2_squared(): element = _driver_data['form'].coefficients()[0].ufl_element() - v = name_vector() + formdata = _driver_data['formdata'] + v = name_vector(formdata) gfs = name_gfs(element) vdgf = name_discrete_grid_function(gfs, v) solution_function = name_solution_function(element) @@ -1287,7 +1292,6 @@ def vtkoutput(): "{}.write({}, Dune::VTK::ascii);".format(vtkwriter, vtkfile)] - @preamble def define_time(name): return "double {} = 0.0;".format(name)