Skip to content
Snippets Groups Projects
Commit 00738cb8 authored by Markus Holzer's avatar Markus Holzer
Browse files

More fixes

parent 1edb192f
1 merge request!292Rebase of pystencils Type System
...@@ -54,12 +54,15 @@ class KernelConstraintsCheck: ...@@ -54,12 +54,15 @@ class KernelConstraintsCheck:
# Disable double write check inside conditionals # Disable double write check inside conditionals
# would be triggered by e.g. in-kernel boundaries # would be triggered by e.g. in-kernel boundaries
old_double_write = self.check_double_write_condition old_double_write = self.check_double_write_condition
old_independence_condition = self.check_independence_condition
self.check_double_write_condition = False self.check_double_write_condition = False
self.check_independence_condition = False
if obj.false_block: if obj.false_block:
self.visit(obj.false_block) self.visit(obj.false_block)
self.process_expression(obj.condition_expr) self.process_expression(obj.condition_expr)
self.process_expression(obj.true_block) self.process_expression(obj.true_block)
self.check_double_write_condition = old_double_write self.check_double_write_condition = old_double_write
self.check_independence_condition = old_independence_condition
self.scopes.pop() self.scopes.pop()
elif isinstance(obj, ast.Block): elif isinstance(obj, ast.Block):
self.scopes.push() self.scopes.push()
......
...@@ -75,7 +75,7 @@ def create_kernel(assignments: Union[Assignment, List[Assignment], AssignmentCol ...@@ -75,7 +75,7 @@ def create_kernel(assignments: Union[Assignment, List[Assignment], AssignmentCol
warnings.warn(f"It was not possible to apply the default pystencils optimisations to the " warnings.warn(f"It was not possible to apply the default pystencils optimisations to the "
f"AssignmentCollection due to the following problem :{e}") f"AssignmentCollection due to the following problem :{e}")
simplification_hints = assignments.simplification_hints simplification_hints = assignments.simplification_hints
assignments = NodeCollection(assignments.all_assignments) assignments = NodeCollection.from_assignment_collection(assignments)
assignments.simplification_hints = simplification_hints assignments.simplification_hints = simplification_hints
if config.index_fields: if config.index_fields:
......
...@@ -31,7 +31,16 @@ class NodeCollection: ...@@ -31,7 +31,16 @@ class NodeCollection:
@staticmethod @staticmethod
def from_assignment_collection(assignment_collection: AssignmentCollection): def from_assignment_collection(assignment_collection: AssignmentCollection):
return NodeCollection([SympyAssignment(a.lhs, a.rhs) for a in assignment_collection.all_assignments]) nodes = list()
for assignemt in assignment_collection.all_assignments:
if isinstance(assignemt, Assignment):
nodes.append(SympyAssignment(assignemt.lhs, assignemt.rhs))
elif isinstance(assignemt, Node):
nodes.append(assignemt)
else:
raise ValueError(f"Unknown node in the AssignmentCollection: {assignemt}")
return NodeCollection(nodes)
def evaluate_terms(self): def evaluate_terms(self):
evaluate_constant_terms = ReplaceOptim( evaluate_constant_terms = ReplaceOptim(
......
...@@ -89,6 +89,7 @@ class CastFunc(sp.Function): ...@@ -89,6 +89,7 @@ class CastFunc(sp.Function):
else: else:
return super().is_nonnegative return super().is_nonnegative
@property @property
def is_real(self): def is_real(self):
""" """
......
...@@ -129,8 +129,6 @@ def get_type_of_expression(expr, ...@@ -129,8 +129,6 @@ def get_type_of_expression(expr,
expr = sp.sympify(expr) expr = sp.sympify(expr)
if isinstance(expr, sp.Integer): if isinstance(expr, sp.Integer):
return create_type(default_int_type) return create_type(default_int_type)
elif expr.is_real is False:
return create_type((np.zeros((1,), default_float_type) * 1j).dtype)
elif isinstance(expr, sp.Rational) or isinstance(expr, sp.Float): elif isinstance(expr, sp.Rational) or isinstance(expr, sp.Float):
return create_type(default_float_type) return create_type(default_float_type)
elif isinstance(expr, ResolvedFieldAccess): elif isinstance(expr, ResolvedFieldAccess):
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment