55 auto resultGeometry((df1 | df2) & df3);
66 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
86 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
107 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
109 vector<asl::SPDistanceFunction> cylinders;
112 for (
int i = 0; i < size[0] / (2 * r + spacing); ++i)
114 for (
int j = 0; j < size[1] / (2 * r + spacing); ++j)
117 resultGeometry = resultGeometry | cylinders.back();
137 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
139 vector<asl::SPDistanceFunction> cylinders;
143 for (
unsigned int i = 0; i < size[0] / (2 * r + spacing); ++i)
145 for (
unsigned int j = 0; j < size[1] / (2 * r + spacing); ++j)
147 for (
unsigned int d = 0; d < orientation.
getSize(); ++d)
148 orientation[d] = rand() % size[d];
150 cylinders.push_back(
generateDFCylinderInf(r, orientation,
asl::makeAVec(i * (2. * r + spacing) + r + spacing / 2., j * (2. * r + spacing) + r + spacing / 2., (
FlT) (rand() % size[2]))));
151 resultGeometry = resultGeometry | cylinders.back();
170 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
188 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
206 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
229 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
259 FlT hCrystalBase(.5);
260 FlT hCrystalPyramid(.5);
266 vector<asl::AVec<>> pillar1{
asl::makeAVec(wPillar*.5, dPillar*.5,0.),
271 vector<asl::AVec<>> pillar2{
asl::makeAVec(dPillar*.5, wPillar*.5,0.),
276 vector<asl::AVec<>> pillarC{
asl::makeAVec(center[0]+rDisk-dPillar*.5, center[1], 0.),
280 vector<vector<asl::AVec<>>> pillarsPoints(4);
281 for(
unsigned int i(0); i<4; ++i)
282 pillarsPoints[i].resize(4);
284 for(
unsigned int i(0); i<4; ++i)
286 pillarsPoints[0][i] = pillar2[i] + pillarC[0];
287 pillarsPoints[1][i] = pillar2[i] + pillarC[1];
288 pillarsPoints[2][i] = pillar1[i] + pillarC[2];
289 pillarsPoints[3][i] = pillar1[i] + pillarC[3];
294 auto mBath(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
295 auto mPlatform(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
296 auto mCrystal(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
309 asl::makeAVec(center[0], center[1], - .5*hAxis - hDisk*.25 +
dx*size[2])));
314 auto dfPillars((dfPillar1 | dfPillar2 | dfPillar3 | dfPillar4) &
320 center+
makeAVec(-aCrystal, aCrystal,0.),
321 center+
makeAVec(-aCrystal, -aCrystal,0.),
322 center+
makeAVec( aCrystal, -aCrystal,0.)}) &
325 auto cCrPyrBase(
makeAVec(center[0],center[1],hDisk+hCrystalBase-.01));
327 cCrPyrBase+
makeAVec(-aCrystal, aCrystal,0.),
328 cCrPyrBase+
makeAVec(-aCrystal, -aCrystal,0.),
329 cCrPyrBase+
makeAVec( aCrystal, -aCrystal,0.)},
330 cCrPyrBase+
makeAVec(0.,0.,hCrystalPyramid)));
354 auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
bool testDistFOperations3DBlock()
bool testDistFOperations3DPrism()
std::shared_ptr< DistanceFunction > SPDistanceFunction
SPDistanceFunction generateDFSphere(double r, const AVec< double > &c)
generates sphere
bool testDistFAdvanced3D()
void optimizeMap(SPDataWithGhostNodesACLData c, const VectorTemplate *vt)
const AVec normalize(const AVec< T > &a)
SPDistanceFunction generateDFConvexPolygonPrism(std::vector< AVec< double >> points)
generates infinite prism with convex polygon at its base
bool testDistFNormalization2D()
SPDistanceFunction generateDFCylinderInf(double r, const AVec< double > &l, const AVec< double > &c)
generates infinite cylinder
SPDistanceFunction generateDFPlane(const AVec< double > &n, const AVec< double > &p0)
bool testDistFUnorderedCylinders()
bool testDistFOptimizer()
bool testDistFNormalization3D()
const VectorTemplate & d3q15()
Vector template.
acl::VectorOfElements dx(const TemplateVE &a)
differential operator
SPDistanceFunction generateDFConvexPolygonPyramid(std::vector< AVec< double >> points, AVec< double > a)
generates pyramid with convex polygon at its base and apex a
bool testDistFOperations2D()
void initData(SPAbstractData d, double a)
void addScalars(std::string name, AbstractData &data)
void writeVTKXML(const std::string &fileName, const AbstractData &data, const std::string &name)
definition of class АVec<T>
bool testDistFOperations3D()
bool testDistFOrderedCylinders()
const unsigned int & getSize() const
SPDistanceFunction generateDFCylinder(double r, const AVec< double > &l, const AVec< double > &c)
generates cylinder
SPDistanceFunction generateDFInBlock(const Block &b, unsigned int nG)
generates map corresponding to external (ghost) part of the block