47 Info <<
"Finding leaf for vertex " <<
p <<
endl;
55 Info <<
"Vertex " <<
p <<
" is not in the initial cube" <<
endl;
60 "label meshOctree::findLeafContainingVertex(const point&) const"
61 ) <<
"Point " <<
p <<
" is not inside the initial cube" <<
endl;
63 throw "Found invalid locations of points";
72 if( ocPtr && !ocPtr->
isLeaf() )
83 if( !isQuadtree_ &&
p.z() >=
c.z() )
109 containedLeaves.
clear();
111 initialCubePtr_->leavesInSphere(rootBox_,
c, r, containedLeaves);
131 (nc.
posX() >= levelLimiter) || (nc.
posX() < 0) ||
132 (nc.
posY() >= levelLimiter) || (nc.
posY() < 0) ||
133 (!isQuadtree_ && (nc.
posZ() >= levelLimiter || nc.
posZ() < 0)) ||
134 (isQuadtree_ && (nc.
posZ() != initialCubePtr_->posZ()))
146 else if( neiPtr->
isLeaf() )
149 if( leaves_[neiPtr->
cubeLabel()] != neiPtr )
150 FatalError <<
"Cube does not correspond to itself"
158 for(
label scI=0;scI<8;++scI)
176 "label meshOctree::findNeighbourOverNode("
177 "const meshOctreeCubeCoordinates& cc,"
178 "const label nodeI) const"
191 if( isQuadtree_ && (eI < 8) )
193 neighbourLeaves.
append(-1);
205 (nc.
posX() >= levelLimiter) || (nc.
posX() < 0) ||
206 (nc.
posY() >= levelLimiter) || (nc.
posY() < 0) ||
207 (!isQuadtree_ && (nc.
posZ() >= levelLimiter || nc.
posZ() < 0)) ||
208 (isQuadtree_ && (nc.
posZ() != initialCubePtr_->posZ()))
211 neighbourLeaves.
append(-1);
218 else if( neiPtr->
isLeaf() )
221 if( leaves_[neiPtr->
cubeLabel()] != neiPtr )
222 FatalError <<
"Cube does not correspond to itself"
230 for(
label scI=0;scI<8;++scI)
248 neighbourLeaves.
append(sc[7-eNodes[1]]);
249 neighbourLeaves.
append(sc[7-eNodes[0]]);
253 if( sc[7-eNodes[1]] >= 0 )
254 neighbourLeaves.
append(sc[7-eNodes[1]]);
255 if( (sc[7-eNodes[0]] >= 0) && (sc[7-eNodes[0]] != sc[7-eNodes[1]]) )
256 neighbourLeaves.
append(sc[7-eNodes[0]]);
268 if( isQuadtree_ && dir >= 4 )
270 neighbourLeaves.
append(-1);
321 (cpx >= levelLimiter) || (cpx < 0) ||
322 (cpy >= levelLimiter) || (cpy < 0) ||
323 (!isQuadtree_ && (cpz >= levelLimiter || cpz < 0)) ||
324 (isQuadtree_ && (cpz != initialCubePtr_->posZ()))
327 neighbourLeaves.
append(-1);
334 else if( neiPtr->
isLeaf() )
337 if( leaves_[neiPtr->
cubeLabel()] != neiPtr )
338 FatalError <<
"Cube does not correspond to itself"
346 for(
label scI=0;scI<8;++scI)
361 for(
label i=0;i<4;++i)
363 if( isQuadtree_ && sc[7-fNodes[i]] < 0 )
366 neighbourLeaves.
append(sc[7-fNodes[i]]);
377 neighbourLeaves.
clear();
379 const label nCubeFaces = isQuadtree_?4:6;
380 for(
label i=0;i<nCubeFaces;++i)
382 findNeighboursInDirection(cc, i, neighbourLeaves);
392 neighbourLeaves.
clear();
397 for(
label i=0;i<8;++i)
398 neighbourLeaves.
append(findNeighbourOverNode(cc, i));
401 for(
label i=0;i<12;++i)
402 findNeighboursOverEdge(cc, i, neighbourLeaves);
405 for(
label i=0;i<6;++i)
406 findNeighboursInDirection(cc, i, neighbourLeaves);
412 for(
label i=8;i<12;++i)
413 findNeighboursOverEdge(cc, i, neighbourLeaves);
416 for(
label i=0;i<4;++i)
417 findNeighboursInDirection(cc, i, neighbourLeaves);
433 for(
label i=0;i<8;++i)
435 positions[i] = cc + vrtLeavesPos_[vrtI][i];
440 neighbours[posI] = -1;
442 const label nei = findLeafLabelForPosition(positions[posI]);
444 if( (nei > -1) && leaves_[nei]->isLeaf() )
445 neighbours[posI] = nei;
450 Info <<
"Vertex " << short(vrtI) <<
endl;
464 Info <<
"Finding position " << cc <<
endl;
472 label levelLimiter = (1 << l);
474 (cpx >= levelLimiter) || (cpx < 0) ||
475 (cpy >= levelLimiter) || (cpy < 0) ||
476 (!isQuadtree_ && (cpz >= levelLimiter || cpz < 0)) ||
477 (isQuadtree_ && (cpz != initialCubePtr_->posZ()))
485 for(
label i=(l-1);i>=0;--i)
487 if( neiPtr && !neiPtr->
isLeaf() )
489 levelLimiter = (1 << i);
493 if( cpx & levelLimiter )
495 if( cpy & levelLimiter )
497 if( !isQuadtree_ && (cpz & levelLimiter) )
509 Info <<
"Found position is " << *neiPtr <<
endl;
522 if( ocPtr && ocPtr->
isLeaf() )
526 else if( !ocPtr && (neiProcs_.size() != 0) )
530 (cc.
posX() < levelLimiter) && (cc.
posX() >= 0) &&
531 (cc.
posY() < levelLimiter) && (cc.
posY() >= 0) &&
532 ((!isQuadtree_ && (cc.
posZ() < levelLimiter && cc.
posZ() >= 0)) ||
533 (isQuadtree_ && (cc.
posZ() == initialCubePtr_->posZ())))