36 void Foam::cellMapper::calcAddressing()
const
41 || interpolationAddrPtr_
43 || insertedCellLabelsPtr_
47 <<
"Addressing already calculated."
62 labelList& insertedCells = *insertedCellLabelsPtr_;
64 label nInsertedCells = 0;
68 if (directAddr[cellI] < 0)
71 directAddr[cellI] = 0;
72 insertedCells[nInsertedCells] = cellI;
77 insertedCells.setSize(nInsertedCells);
94 const labelList& mo = cfp[cfpI].masterObjects();
96 label cellI = cfp[cfpI].index();
98 if (addr[cellI].
size())
101 <<
"Master cell " << cellI
102 <<
" mapped from point cells " << mo
108 w[cellI] =
scalarList(mo.size(), 1.0/mo.size());
116 const labelList& mo = cfe[cfeI].masterObjects();
118 label cellI = cfe[cfeI].index();
120 if (addr[cellI].
size())
123 <<
"Master cell " << cellI
124 <<
" mapped from edge cells " << mo
130 w[cellI] =
scalarList(mo.size(), 1.0/mo.size());
138 const labelList& mo = cff[cffI].masterObjects();
140 label cellI = cff[cffI].index();
142 if (addr[cellI].
size())
145 <<
"Master cell " << cellI
146 <<
" mapped from face cells " << mo
152 w[cellI] =
scalarList(mo.size(), 1.0/mo.size());
160 const labelList& mo = cfc[cfcI].masterObjects();
162 label cellI = cfc[cfcI].index();
164 if (addr[cellI].
size())
167 <<
"Master cell " << cellI
168 <<
" mapped from cell cells " << mo
174 w[cellI] =
scalarList(mo.size(), 1.0/mo.size());
185 if (cm[cellI] > -1 && addr[cellI].empty())
196 labelList& insertedCells = *insertedCellLabelsPtr_;
198 label nInsertedCells = 0;
202 if (addr[cellI].empty())
208 insertedCells[nInsertedCells] = cellI;
213 insertedCells.setSize(nInsertedCells);
218 void Foam::cellMapper::clearOut()
234 insertedCells_(true),
236 directAddrPtr_(NULL),
237 interpolationAddrPtr_(NULL),
239 insertedCellLabelsPtr_(NULL)
260 insertedCells_ =
false;
275 cm[cfp[cfpI].index()] = 0;
282 cm[cfe[cfeI].index()] = 0;
289 cm[cff[cffI].index()] = 0;
296 cm[cfc[cfcI].index()] = 0;
301 insertedCells_ =
true;
319 return mpm_.cellMap().size();
325 return mpm_.nOldCells();
335 "const unallocLabelList& cellMapper::directAddressing() const"
336 ) <<
"Requested direct addressing for an interpolative mapper."
340 if (!insertedObjects())
343 return mpm_.cellMap();
352 return *directAddrPtr_;
363 "const labelListList& cellMapper::addressing() const"
364 ) <<
"Requested interpolative addressing for a direct mapper."
368 if (!interpolationAddrPtr_)
373 return *interpolationAddrPtr_;
383 "const scalarListList& cellMapper::weights() const"
384 ) <<
"Requested interpolative weights for a direct mapper."
399 if (!insertedCellLabelsPtr_)
401 if (!insertedObjects())
404 insertedCellLabelsPtr_ =
new labelList(0);
412 return *insertedCellLabelsPtr_;