lduPrimitiveMeshTemplates.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2013 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 \*---------------------------------------------------------------------------*/
27 
28 #include "lduPrimitiveMesh.H"
29 
30 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
31 
32 template<class ProcPatch>
34 (
35  const lduInterfacePtrsList& interfaces
36 )
37 {
38  lduSchedule schedule(2*interfaces.size());
39  label slotI = 0;
40 
41  forAll(interfaces, i)
42  {
43  if (interfaces.set(i) && !isA<ProcPatch>(interfaces[i]))
44  {
45  schedule[slotI].patch = i;
46  schedule[slotI].init = true;
47  slotI++;
48  schedule[slotI].patch = i;
49  schedule[slotI].init = false;
50  slotI++;
51  }
52  }
53 
54  forAll(interfaces, i)
55  {
56  if (interfaces.set(i) && isA<ProcPatch>(interfaces[i]))
57  {
58  schedule[slotI].patch = i;
59  schedule[slotI].init = true;
60  slotI++;
61  }
62  }
63 
64  forAll(interfaces, i)
65  {
66  if (interfaces.set(i) && isA<ProcPatch>(interfaces[i]))
67  {
68  schedule[slotI].patch = i;
69  schedule[slotI].init = false;
70  slotI++;
71  }
72  }
73 
74  return schedule;
75 }
76 
77 
78 // ************************************************************************* //
Foam::UPtrList::size
label size() const noexcept
The number of elements in the list.
Definition: UPtrListI.H:106
forAll
#define forAll(list, i)
Loop across all elements in list.
Definition: stdFoam.H:296
Foam::lduPrimitiveMesh::nonBlockingSchedule
static lduSchedule nonBlockingSchedule(const lduInterfacePtrsList &)
Get non-scheduled send/receive schedule.
Foam::UPtrList< const lduInterface >
Foam::UPtrList::set
const T * set(const label i) const
Definition: UPtrList.H:176
Foam::List< lduScheduleEntry >
lduPrimitiveMesh.H