21 template<
typename ShapeType>
33 if(
length(pos[i]-p) < 0.5*(diams[i]+d) )
return true;
39 template<
typename ShapeType>
44 const ShapeType& shapes
52 template<
typename ShapeType>
60 bool& insertionOccured
63 insertionOccured =
false;
65 if(!insertionTime(iter, t, dt))
return true;
67 uint32 newNum = numberToBeInserted(iter, t, dt);
68 if(newNum == 0)
return true;
71 auto internalBox =
pStruct().internalDomainBox();
72 if( !(internalBox.minPoint() < internalBox.maxPoint()))
74 WARNING<<
"Minimum point of internal point is not lower than "<<
75 "the maximum point \n"<<
76 "minimum point: "<< internalBox.minPoint()<<
77 "\nmaximum point:"<<internalBox.maxPoint()<<
END_WARNING;
92 auto allDiameters =
realVector(
"allDiameters");
94 auto& mix = mixture();
95 auto& pReg = pRegion();
97 real maxDiam = shapes_.maxBoundingSphere();
98 auto minP = pReg.minPoint() - maxDiam;
99 auto maxP = pReg.maxPoint() + maxDiam;
106 bDict.add(
"min", minP);
107 bDict.add(
"max", maxP);
109 auto selector = pStructSelector::create(
114 allPositions = selector().selectedPointPositions();
115 allDiameters = selectedFieldVals<real>
131 word name = mix.getNextShapeName();
132 shapes_.shapeNameToIndex(name, idx);
133 real d = shapes_.boundingDiameter(idx);
135 for(
uint32 i=0; i< 100*newNum ; ++i)
139 if(!internalBox.isInside(p))
continue;
141 if( collCheck.checkPoint( p, d) )
143 names.push_back(name);
144 positions.push_back(p);
146 if( numInserted == newNum )
break;
149 allDiameters.push_back(d);
150 allPositions.push_back(p);
151 collCheck.mapLastAddedParticle();
154 name = mix.getNextShapeName();
155 shapes_.shapeNameToIndex(name, idx);
156 d = shapes_.boundingDiameter(idx);
161 insertionOccured =
true;
162 addToNumInserted(numInserted);
163 return numInserted == newNum;