28 #include "math/aslVectors.h"
29 #include "aslGenerators.h"
30 #include "writers/aslVTKFormatWriters.h"
31 #include "aslGeomInc.h"
34 #include "data/aslDataWithGhostNodes.h"
35 #include "num/aslDFOptimizer.h"
36 #include "math/aslTemplates.h"
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));