polyTopoChangeTemplates.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "polyTopoChange.H"
27 
28 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
29 
30 template<class T>
31 void Foam::polyTopoChange::reorder
32 (
33  const labelList& oldToNew,
34  DynamicList<T>& lst
35 )
36 {
37  // Create copy
38  DynamicList<T> oldLst(lst);
39 
40  forAll(oldToNew, elemI)
41  {
42  label newElemI = oldToNew[elemI];
43 
44  if (newElemI != -1)
45  {
46  lst[newElemI] = oldLst[elemI];
47  }
48  }
49 }
50 
51 
52 template<class T>
53 void Foam::polyTopoChange::reorder
54 (
55  const labelList& oldToNew,
56  List<DynamicList<T>>& lst
57 )
58 {
59  // Create copy
60  List<DynamicList<T>> oldLst(lst);
61 
62  forAll(oldToNew, elemI)
63  {
64  label newElemI = oldToNew[elemI];
65 
66  if (newElemI != -1)
67  {
68  lst[newElemI].transfer(oldLst[elemI]);
69  }
70  }
71 }
72 
73 
74 template<class T>
75 void Foam::polyTopoChange::renumberKey
76 (
77  const labelList& oldToNew,
78  Map<T>& elems
79 )
80 {
81  Map<T> newElems(elems.size());
82 
83  forAllConstIter(typename Map<T>, elems, iter)
84  {
85  label newElem = oldToNew[iter.key()];
86 
87  if (newElem >= 0)
88  {
89  newElems.insert(newElem, iter());
90  }
91  }
92 
93  elems.transfer(newElems);
94 }
95 
96 
97 // ************************************************************************* //
#define forAll(list, i)
Loop across all elements in list.
Definition: UList.H:434
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
List< label > labelList
A List of labels.
Definition: labelList.H:56
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
Definition: pEqn.H:29