diff --git a/examples/helmholtz-dirichlet.py b/examples/helmholtz-dirichlet.py index 22f8fa8a0083da62f1f17d7c79053056ce3ab33c..847e5c3fdfec588b6c8d3e10d2b31bb237f74022 100644 --- a/examples/helmholtz-dirichlet.py +++ b/examples/helmholtz-dirichlet.py @@ -96,8 +96,10 @@ def main(): bdry_op_sym = (-loc_sign*0.5*sigma_sym + sqrt_w*( - alpha*sym.S(kernel, inv_sqrt_w_sigma, k=sym.var("k")) - - sym.D(kernel, inv_sqrt_w_sigma, k=sym.var("k")) + alpha*sym.S(kernel, inv_sqrt_w_sigma, k=sym.var("k"), + qbx_forced_limit=+1) + - sym.D(kernel, inv_sqrt_w_sigma, k=sym.var("k"), + qbx_forced_limit="avg") )) # }}} diff --git a/pytential/qbx/__init__.py b/pytential/qbx/__init__.py index 869f92220f16817478375da3001e79f3c512b956..18b356be5c435dd0f5cc9ec14d12e18280b7b174 100644 --- a/pytential/qbx/__init__.py +++ b/pytential/qbx/__init__.py @@ -757,7 +757,7 @@ class QBXLayerPotentialSource(LayerPotentialSourceBase): if self.geometry_data_inspector is not None: perform_fmm = self.geometry_data_inspector(insn, bound_expr, geo_data) if not perform_fmm: - return [(o.name, 0) for o in insn.outputs], [] + return [(o.name, 0) for o in insn.outputs] # }}} @@ -780,7 +780,7 @@ class QBXLayerPotentialSource(LayerPotentialSourceBase): (o.name, all_potentials_on_every_tgt[o.kernel_index][tgt_slice])) - return result, [] + return result # }}} @@ -941,7 +941,7 @@ class QBXLayerPotentialSource(LayerPotentialSourceBase): result.append((o.name, output_for_each_kernel[o.kernel_index])) - return result, [] + return result # }}} diff --git a/pytential/source.py b/pytential/source.py index 6420494e77ba57c6f94288babc37783f142d8b4b..a8d0cba52feee0c4fb5fb3ccf7080d2cb45a7e4c 100644 --- a/pytential/source.py +++ b/pytential/source.py @@ -134,7 +134,7 @@ class PointPotentialSource(PotentialSource): result.append((o.name, output_for_each_kernel[o.kernel_index])) - return result, [] + return result @memoize_method def weights_and_area_elements(self): @@ -268,3 +268,5 @@ class LayerPotentialSourceBase(PotentialSource): # }}} # }}} + +# vim: foldmethod=marker diff --git a/pytential/symbolic/compiler.py b/pytential/symbolic/compiler.py index 17d23ebfe1683362615ac5e30968c5ea7dc3a594..456044e75a3903b08ffdfa6537f1fac0cd1f6e09 100644 --- a/pytential/symbolic/compiler.py +++ b/pytential/symbolic/compiler.py @@ -315,7 +315,7 @@ class Code(object): return "\n".join(lines) - # {{{ dynamic scheduler (generates static schedules by self-observation) + # {{{ dynamic scheduler class NoInstructionAvailable(Exception): pass @@ -372,38 +372,35 @@ class Code(object): done_insns = set() while True: - insn = None discardable_vars = [] + insn = None - # pick the next insn - if insn is None: - try: - insn, discardable_vars = self.get_next_step( - frozenset(list(context.keys())), - frozenset(done_insns)) + try: + insn, discardable_vars = self.get_next_step( + frozenset(list(context.keys())), + frozenset(done_insns)) - except self.NoInstructionAvailable: - # no available instructions: we're done - break - else: - for name in discardable_vars: - del context[name] + except self.NoInstructionAvailable: + # no available instructions: we're done + break + else: + for name in discardable_vars: + del context[name] - done_insns.add(insn) - assignments, new_futures = ( - insn.get_exec_function(exec_mapper) - (exec_mapper.queue, insn, exec_mapper.bound_expr, - exec_mapper)) + done_insns.add(insn) + assignments = ( + insn.get_exec_function(exec_mapper) + (exec_mapper.queue, insn, exec_mapper.bound_expr, + exec_mapper)) - if insn is not None: + assignees = insn.get_assignees() for target, value in assignments: if pre_assign_check is not None: pre_assign_check(target, value) + assert target in assignees context[target] = value - assert not new_futures - if len(done_insns) < len(self.instructions): print("Unreachable instructions:") for insn in set(self.instructions) - done_insns: diff --git a/pytential/symbolic/execution.py b/pytential/symbolic/execution.py index f658a6aa7c25cd3e0dc31caf0a702cbd591df88d..45840de2701898e6de8336d7d25792e9360d8d22 100644 --- a/pytential/symbolic/execution.py +++ b/pytential/symbolic/execution.py @@ -173,7 +173,7 @@ class EvaluationMapper(EvaluationMapperBase): def exec_assign(self, queue, insn, bound_expr, evaluate): return [(name, evaluate(expr)) - for name, expr in zip(insn.names, insn.exprs)], [] + for name, expr in zip(insn.names, insn.exprs)] # {{{ functions diff --git a/pytential/unregularized.py b/pytential/unregularized.py index b0d9926a4b8aedc7fb14a8ab4fe1531aeff743f9..e7fe1b3e73bfe17e14ab9aa6d57a86f6c9c92375 100644 --- a/pytential/unregularized.py +++ b/pytential/unregularized.py @@ -187,7 +187,7 @@ class UnregularizedLayerPotentialSource(LayerPotentialSourceBase): result.append((o.name, output_for_each_kernel[o.kernel_index])) - return result, [] + return result # {{{ fmm-based execution @@ -288,7 +288,7 @@ class UnregularizedLayerPotentialSource(LayerPotentialSourceBase): # }}} - return result, [] + return result # }}}