From 5b65447e0f55917ae211be5b2336bbe2e9e1ab79 Mon Sep 17 00:00:00 2001 From: Daniel Schwen Date: Fri, 17 Nov 2023 09:33:02 -0700 Subject: [PATCH] Make node patch recovery threadsafe (#26053) --- framework/include/userobjects/NodalPatchRecoveryBase.h | 2 +- framework/src/userobjects/NodalPatchRecoveryBase.C | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/framework/include/userobjects/NodalPatchRecoveryBase.h b/framework/include/userobjects/NodalPatchRecoveryBase.h index 8b4c94f19740..7a89893a7358 100644 --- a/framework/include/userobjects/NodalPatchRecoveryBase.h +++ b/framework/include/userobjects/NodalPatchRecoveryBase.h @@ -31,8 +31,8 @@ class NodalPatchRecoveryBase : public ElementUserObject virtual void initialize() override; virtual void execute() override; + virtual void threadJoin(const UserObject &) override; virtual void finalize() override; - virtual void threadJoin(const UserObject &) override {} protected: /// Compute the quantity to recover using nodal patch recovery diff --git a/framework/src/userobjects/NodalPatchRecoveryBase.C b/framework/src/userobjects/NodalPatchRecoveryBase.C index f55f55fd07c3..e7bedbfd5723 100644 --- a/framework/src/userobjects/NodalPatchRecoveryBase.C +++ b/framework/src/userobjects/NodalPatchRecoveryBase.C @@ -116,6 +116,14 @@ NodalPatchRecoveryBase::execute() _be[elem_id] = be; } +void +NodalPatchRecoveryBase::threadJoin(const UserObject & uo) +{ + const auto & npr = static_cast(uo); + _Ae.insert(npr._Ae.begin(), npr._Ae.end()); + _be.insert(npr._be.begin(), npr._be.end()); +} + void NodalPatchRecoveryBase::finalize() {