From 419e4498d813a7ed0872681180f86ed5833d901d Mon Sep 17 00:00:00 2001 From: "James R. Maddison" Date: Mon, 24 Jun 2024 18:16:01 +0100 Subject: [PATCH] Block system: Work around memory leak --- tlm_adjoint/block_system.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tlm_adjoint/block_system.py b/tlm_adjoint/block_system.py index 041294f2..8bacab5f 100644 --- a/tlm_adjoint/block_system.py +++ b/tlm_adjoint/block_system.py @@ -879,11 +879,12 @@ def __init__(self, A, *, nullspace=None, solver_parameters=None, nullspace = BlockNullspace((nullspace,)) if solver_parameters is None: solver_parameters = {} + _pc_pc_fn = [None] if pc_fn is None: pc_pc_fn = None else: def pc_pc_fn(u, b): - pc_fn, = self._pc_pc_fn + pc_fn, = _pc_pc_fn with var_locked(*iter_sub(b)): pc_fn(u, b) @@ -894,7 +895,7 @@ def pc_pc_fn(u, b): self._A = A self._ksp = ksp self._pc_fn = pc_fn - self._pc_pc_fn = [pc_fn] + self._pc_pc_fn = _pc_pc_fn attach_destroy_finalizer(self, ksp)