diff --git a/python/dune/perftool/pdelab/__init__.py b/python/dune/perftool/pdelab/__init__.py index 3d3f3f99cc0abbbabb12c5b766dbea19f3eed7ba..4afe9a97e1fe833af5df9edb204a4dc52bb75e28 100644 --- a/python/dune/perftool/pdelab/__init__.py +++ b/python/dune/perftool/pdelab/__init__.py @@ -92,8 +92,8 @@ class PDELabInterface(object): def pymbolic_list_tensor(self, o, visitor): return pymbolic_list_tensor(o, visitor) - def pymbolic_identity(self, o, visitor): - return pymbolic_identity(o, visitor) + def pymbolic_identity(self, o): + return pymbolic_identity(o) # # Geometry related generator functions diff --git a/python/dune/perftool/pdelab/geometry.py b/python/dune/perftool/pdelab/geometry.py index bb50344c1a553d9587757e58889b9c6fd979ee37..9da0f1ee86df3e836a8091cc55ddfe3d148e0ab0 100644 --- a/python/dune/perftool/pdelab/geometry.py +++ b/python/dune/perftool/pdelab/geometry.py @@ -320,11 +320,7 @@ def define_constant_jacobian_inveser_transposed(name, restriction): globalarg(name, dtype=np.float64, shape=(dim, dim), managed=False) - if get_option('turn_off_diagonal_jacobian'): - jit_type = 'Dune::FieldMatrix<double,{},{}>'.format(dim,dim) - else: - jit_type = 'auto' - + jit_type = type_jacobian_inverse_transposed(restriction) return '{} {} = {}.jacobianInverseTransposed({});'.format(jit_type, name, geo, diff --git a/python/dune/perftool/pdelab/tensors.py b/python/dune/perftool/pdelab/tensors.py index 6c7e4fc5f88eaaa5d019c6c2c26371e6b672b550..aa154bdb1a41a8dfc54b8faf92043be5a4c0b78a 100644 --- a/python/dune/perftool/pdelab/tensors.py +++ b/python/dune/perftool/pdelab/tensors.py @@ -44,7 +44,7 @@ def identity_iname(name, bound): return name -def define_identity(name, expr, visitor): +def define_identity(name, expr): i = identity_iname("i", expr.ufl_shape[0]) j = identity_iname("j", expr.ufl_shape[1]) instruction(assignee=prim.Subscript(prim.Variable(name), (prim.Variable(i), prim.Variable(j))), @@ -54,12 +54,12 @@ def define_identity(name, expr, visitor): @kernel_cached -def pymbolic_identity(expr, visitor): - name = get_counted_variable("identity") +def pymbolic_identity(expr): + name = "identity_{}_{}".format(expr.ufl_shape[0],expr.ufl_shape[1]) temporary_variable(name, shape=expr.ufl_shape, shape_impl=('fm',), dtype=np.float64, ) - define_identity(name, expr, visitor) + define_identity(name, expr) return prim.Variable(name) diff --git a/python/dune/perftool/ufl/extract_accumulation_terms.py b/python/dune/perftool/ufl/extract_accumulation_terms.py index d1615aca972ed0dc191fa17fbe1790fac5c86dfb..4dbebbb8233f06cbb42ac273a72d609dc8fb5059 100644 --- a/python/dune/perftool/ufl/extract_accumulation_terms.py +++ b/python/dune/perftool/ufl/extract_accumulation_terms.py @@ -136,7 +136,7 @@ def split_into_accumulation_terms(expr): # - Replacing (\nabla v)_{k,l} by I_{k,l} after step 4. if len(set(indexed_test_arg.index._indices)) < len(indexed_test_arg.index._indices): if len(indexed_test_arg.index._indices)>2: - raise NotImplementedError("Test argument with more than three indices and double occurence ist not implemted.") + raise NotImplementedError("Test argument with more than three indices and double occurence ist not implemented.") mod_index_map = {indexed_test_arg.index: MultiIndex((newi[0], newi[1]))} mod_indexed_test_arg = replace_expression(indexed_test_arg.expr, replacemap = mod_index_map) diff --git a/python/dune/perftool/ufl/transformations/axiparallel.py b/python/dune/perftool/ufl/transformations/axiparallel.py index cd187da20747eb913f45a532058046a65f3609af..6d7e53e4a2468c0198dabb349017fc885915ef04 100644 --- a/python/dune/perftool/ufl/transformations/axiparallel.py +++ b/python/dune/perftool/ufl/transformations/axiparallel.py @@ -43,7 +43,7 @@ class LocalDiagonalJITReplacer(MultiFunction): return MultiIndex(tuple(self.local_replacemap.get(i, i) for i in o)) def indexed(self, o): - if self.local_replacemap!={}: + if self.local_replacemap: if isinstance(o.ufl_operands[1], MultiIndex): return self.reuse_if_untouched(o, *tuple(self.call(op) for op in o.ufl_operands)) else: diff --git a/python/dune/perftool/ufl/visitor.py b/python/dune/perftool/ufl/visitor.py index a5cf1a9d076d95ae484eb1693f6ff19b891ee0ba..711f92bf6b54a614ddcdd647409e55f310461c08 100644 --- a/python/dune/perftool/ufl/visitor.py +++ b/python/dune/perftool/ufl/visitor.py @@ -229,14 +229,14 @@ class UFL2LoopyVisitor(ModifiedTerminalTracker): def list_tensor(self, o): return self.interface.pymbolic_list_tensor(o, self) + def identity(self, o): + return self.interface.pymbolic_identity(o) + # # Handlers for arithmetic operators and functions # Those handlers would be valid in any code going from UFL to pymbolic # - def identity(self, o): - return self.interface.pymbolic_identity(o, self) - def product(self, o): return Product(tuple(self.call(op) for op in o.ufl_operands))