From 92d03c1c1dd6c49350ef6cbee42b931a34cfec47 Mon Sep 17 00:00:00 2001 From: David Bold Date: Tue, 10 Feb 2026 13:53:10 +0100 Subject: [PATCH 1/3] Do not rely on valid region being set --- src/sys/options.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sys/options.cxx b/src/sys/options.cxx index 0a68bab124..c17abb3541 100644 --- a/src/sys/options.cxx +++ b/src/sys/options.cxx @@ -364,8 +364,8 @@ void saveParallel(Options& opt, const std::string& name, const Field3D& tosave) Field3D tmp; tmp.allocate(); const auto& fpar = tosave.ynext(i); - for (auto j : fpar.getValidRegionWithDefault("RGN_NO_BOUNDARY")) { - tmp[j.yp(-i)] = fpar[j]; + for (auto j : tmp.getRegion("RGN_NOY")) { + tmp[j] = fpar[j.yp(i)]; } opt[fmt::format("{}_y{:+d}", name, i)] = tmp; } From 201a969ff45a6503affbd8b6d3b2a7cbd21d1a7f Mon Sep 17 00:00:00 2001 From: David Bold Date: Tue, 10 Feb 2026 14:00:48 +0100 Subject: [PATCH 2/3] Ignore if field is not allocated --- src/sys/options.cxx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/sys/options.cxx b/src/sys/options.cxx index c17abb3541..e864e0cbed 100644 --- a/src/sys/options.cxx +++ b/src/sys/options.cxx @@ -364,10 +364,18 @@ void saveParallel(Options& opt, const std::string& name, const Field3D& tosave) Field3D tmp; tmp.allocate(); const auto& fpar = tosave.ynext(i); - for (auto j : tmp.getRegion("RGN_NOY")) { - tmp[j] = fpar[j.yp(i)]; + if (fpar.isAllocated()) { + for (auto j : tmp.getRegion("RGN_NOY")) { + tmp[j] = fpar[j.yp(i)]; + } + opt[fmt::format("{}_y{:+d}", name, i)] = tmp; + } else { + if (tosave.isFci()) { // likely an error + throw BoutException( + "Tried to save parallel fields - but parallel field {i} is not allocated", + i); + } } - opt[fmt::format("{}_y{:+d}", name, i)] = tmp; } } } From a1647993b69c280b6e554ab1af801a80a3c46378 Mon Sep 17 00:00:00 2001 From: David Bold Date: Mon, 9 Mar 2026 11:54:50 +0100 Subject: [PATCH 3/3] Use fmt syntax, not python f-string --- src/sys/options.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sys/options.cxx b/src/sys/options.cxx index e864e0cbed..7c6f36f85a 100644 --- a/src/sys/options.cxx +++ b/src/sys/options.cxx @@ -372,7 +372,7 @@ void saveParallel(Options& opt, const std::string& name, const Field3D& tosave) } else { if (tosave.isFci()) { // likely an error throw BoutException( - "Tried to save parallel fields - but parallel field {i} is not allocated", + "Tried to save parallel fields - but parallel field {} is not allocated", i); } }