diff --git a/src/dolfinx_adjoint/solvers.py b/src/dolfinx_adjoint/solvers.py index 53e172f..2d172cd 100644 --- a/src/dolfinx_adjoint/solvers.py +++ b/src/dolfinx_adjoint/solvers.py @@ -1020,8 +1020,10 @@ def __init__( coefficients = collect_coefficients(F) - set(u_list) if J is not None: coefficients |= collect_coefficients(J) - set(u_list) + # Has to be sorted when creating placeholders, as function creation is a collective operation + sorted_coefficients = sorted(coefficients, key=lambda c: c.ufl_id()) self._value_placeholders: dict[dolfinx.fem.Function, dolfinx.fem.Function] = { - c: dolfinx.fem.Function(c.function_space) for c in coefficients + c: dolfinx.fem.Function(c.function_space) for c in sorted_coefficients } # Initialize nonlinear solver