33 template<
class Patch,
class ProcPatch>
41 label nNeighbours = 0;
47 const Patch& patch = patches[
patchi];
49 if (isA<ProcPatch>(patch))
51 const ProcPatch& procPatch =
52 refCast<const ProcPatch>(patch);
56 maxNb =
max(maxNb, procPatch.neighbProcNo());
62 procPatchMap_.setSize(maxNb + 1);
69 const Patch& patch = patches[
patchi];
71 if (isA<ProcPatch>(patch))
73 const ProcPatch& procPatch =
74 refCast<const ProcPatch>(patch);
76 neighbours[nNeighbours++] = procPatch.neighbProcNo();
79 procPatchMap_[procPatch.neighbProcNo()] =
patchi;
90 template<
class Patch,
class ProcPatch>
97 patchSchedule_(2*patches.
size())
99 if (Pstream::parRun())
102 operator[](Pstream::myProcNo()) = procNeighbours(patches);
105 Pstream::gatherList(*
this);
106 Pstream::scatterList(*
this);
109 if (Pstream::parRun() && Pstream::defaultCommsType == Pstream::scheduled)
111 label patchEvali = 0;
118 if (!isA<ProcPatch>(patches[
patchi]))
120 patchSchedule_[patchEvali].patch =
patchi;
121 patchSchedule_[patchEvali++].init =
true;
122 patchSchedule_[patchEvali].patch =
patchi;
123 patchSchedule_[patchEvali++].init =
false;
136 nComms += operator[](procI).size();
142 const labelList& nbrs = operator[](procI);
161 ).procSchedule()[Pstream::myProcNo()]
166 label commI = mySchedule[iter];
169 label nb = comms[commI][0];
170 if (nb == Pstream::myProcNo())
172 nb = comms[commI][1];
174 label
patchi = procPatchMap_[nb];
176 if (Pstream::myProcNo() > nb)
178 patchSchedule_[patchEvali].patch =
patchi;
179 patchSchedule_[patchEvali++].init =
true;
180 patchSchedule_[patchEvali].patch =
patchi;
181 patchSchedule_[patchEvali++].init =
false;
185 patchSchedule_[patchEvali].patch =
patchi;
186 patchSchedule_[patchEvali++].init =
false;
187 patchSchedule_[patchEvali].patch =
patchi;
188 patchSchedule_[patchEvali++].init =
true;
194 label patchEvali = 0;
206 if (!isA<ProcPatch>(patches[
patchi]))
208 patchSchedule_[patchEvali].patch =
patchi;
209 patchSchedule_[patchEvali++].init =
true;
210 patchSchedule_[patchEvali].patch =
patchi;
211 patchSchedule_[patchEvali++].init =
false;
221 if (isA<ProcPatch>(patches[
patchi]))
223 patchSchedule_[patchEvali].patch =
patchi;
224 patchSchedule_[patchEvali++].init =
true;
231 if (isA<ProcPatch>(patches[
patchi]))
233 patchSchedule_[patchEvali].patch =
patchi;
234 patchSchedule_[patchEvali++].init =
false;