From a30296303286e5eb4ace54d8e1ddf3931d3b2ecc Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Wed, 1 Dec 2010 10:46:00 +0000 Subject: [PATCH] ENH: ptscotchDecomp : allow zero sized domains --- .../ptscotchDecomp/ptscotchDecompTemplates.C | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 src/parallel/decompose/ptscotchDecomp/ptscotchDecompTemplates.C diff --git a/src/parallel/decompose/ptscotchDecomp/ptscotchDecompTemplates.C b/src/parallel/decompose/ptscotchDecomp/ptscotchDecompTemplates.C new file mode 100644 index 00000000000..e133dc9ceb6 --- /dev/null +++ b/src/parallel/decompose/ptscotchDecomp/ptscotchDecompTemplates.C @@ -0,0 +1,76 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2010-2010 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "ptscotchDecomp.H" + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +// Insert at front of list +template<class Type> +void Foam::ptscotchDecomp::prepend +( + const UList<Type>& extraLst, + List<Type>& lst +) +{ + label nExtra = extraLst.size(); + + // Make space for initial elements + lst.setSize(lst.size() + nExtra); + for (label i = lst.size()-1; i >= nExtra; i--) + { + lst[i] = lst[i-nExtra]; + } + + // Insert at front + forAll(extraLst, i) + { + lst[i] = extraLst[i]; + } +} + + +// Insert at back of list +template<class Type> +void Foam::ptscotchDecomp::append +( + const UList<Type>& extraLst, + List<Type>& lst +) +{ + label sz = lst.size(); + + // Make space for initial elements + lst.setSize(sz + extraLst.size()); + + // Insert at back + forAll(extraLst, i) + { + lst[sz++] = extraLst[i]; + } +} + + +// ************************************************************************* // -- GitLab