From 2049c5c2a47386427a877f05b307870266f2cfdf Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Thu, 9 Feb 2017 15:19:47 +0100 Subject: [PATCH] BUG: using tmp() instead of tmp.ref() in combineFields (closes #400) - templated code that is not actually be used yet. ENH: avoid combineFields for serial case Note: a 'master-only' variant with combineList only on the master and without scatter can be pursued later. --- .../fieldValue/fieldValueTemplates.C | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/functionObjects/field/fieldValues/fieldValue/fieldValueTemplates.C b/src/functionObjects/field/fieldValues/fieldValue/fieldValueTemplates.C index 3414c2a40bb..4353ce35632 100644 --- a/src/functionObjects/field/fieldValues/fieldValue/fieldValueTemplates.C +++ b/src/functionObjects/field/fieldValues/fieldValue/fieldValueTemplates.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -32,26 +32,28 @@ License template<class Type> void Foam::functionObjects::fieldValue::combineFields(Field<Type>& field) { - List<Field<Type>> allValues(Pstream::nProcs()); - - allValues[Pstream::myProcNo()] = field; - - Pstream::gatherList(allValues); - Pstream::scatterList(allValues); - - field = - ListListOps::combine<Field<Type>> - ( - allValues, - accessOp<Field<Type>>() - ); + if (Pstream::parRun()) + { + List<Field<Type>> allValues(Pstream::nProcs()); + allValues[Pstream::myProcNo()] = field; + + Pstream::gatherList(allValues); + Pstream::scatterList(allValues); + + field = + ListListOps::combine<Field<Type>> + ( + allValues, + accessOp<Field<Type>>() + ); + } } template<class Type> void Foam::functionObjects::fieldValue::combineFields(tmp<Field<Type>>& field) { - combineFields(field()); + combineFields(field.ref()); } -- GitLab