diff --git a/python/dune/perftool/pdelab/function.py b/python/dune/perftool/pdelab/function.py index 2f2e0292377c662169a1a07d48c0867638e91bb3..c10324003955d0bbe2bbbf53f3adc73c57fd10c4 100644 --- a/python/dune/perftool/pdelab/function.py +++ b/python/dune/perftool/pdelab/function.py @@ -29,7 +29,7 @@ def declare_grid_function_range(gridfunction): def pymbolic_evaluate_gridfunction(name, coeff, restriction, grad): diffOrder = 1 if grad else 0 - gridfunction = name_gridfunction_member(coeff, diffOrder) + gridfunction = name_gridfunction_member(coeff, restriction, diffOrder) bind_gridfunction_to_element(gridfunction, restriction) temporary_variable(name, diff --git a/python/dune/perftool/pdelab/localoperator.py b/python/dune/perftool/pdelab/localoperator.py index 948356b467e506171aeb8911983a9a76640699fc..244a1cae99c5039af24792d5a2af75c5d2e28efd 100644 --- a/python/dune/perftool/pdelab/localoperator.py +++ b/python/dune/perftool/pdelab/localoperator.py @@ -157,9 +157,10 @@ def localoperator_basename(form_ident): return get_form_option("classname", form_ident) -def name_gridfunction_member(coeff, diffOrder=0): - name = "local_gridfunction_coeff{}_diff{}".format(coeff.count(), diffOrder) - define_gridfunction_member(name, coeff, diffOrder) +def name_gridfunction_member(coeff, restriction, diffOrder=0): + restr = "_n" if restriction == Restriction.POSITIVE else "" + name = "local_gridfunction_coeff{}_diff{}{}".format(coeff.count(), diffOrder, restr) + define_gridfunction_member(name, coeff, restriction, diffOrder) return name @@ -171,11 +172,11 @@ def name_gridfunction_constructor_argument(coeff): @class_member(classtag="operator") -def define_gridfunction_member(name, coeff, diffOrder): +def define_gridfunction_member(name, coeff, restriction, diffOrder): _type = type_gridfunction_template_parameter(coeff) param = name_gridfunction_constructor_argument(coeff) if diffOrder > 0: - other = name_gridfunction_member(coeff, diffOrder - 1) + other = name_gridfunction_member(coeff, restriction, diffOrder - 1) init = "derivative({})".format(other) initializer_list(name, [init], classtag="operator") return "mutable decltype({}) {};".format(init, name) @@ -741,7 +742,7 @@ def generate_localoperator_kernels(operator): # Iterate over the needed grid functions in correct order for c in sorted(filter(lambda c: c.count() > 2, form.coefficients()), key=lambda c: c.count()): - name_gridfunction_member(c) + name_gridfunction_constructor_argument(c) # Set some options! from dune.perftool.pdelab.driver import isQuadrilateral