#include <stdlib.h>
#include <time.h>
{
auto resultGeometry((df1 | df2) & df3);
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
vector<asl::SPDistanceFunction> cylinders;
for (int i = 0; i < size[0] / (2 * r + spacing); ++i)
{
for (int j = 0; j < size[1] / (2 * r + spacing); ++j)
{
resultGeometry = resultGeometry | cylinders.back();
}
}
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
vector<asl::SPDistanceFunction> cylinders;
srand (time(NULL));
for (unsigned int i = 0; i < size[0] / (2 * r + spacing); ++i)
{
for (unsigned int j = 0; j < size[1] / (2 * r + spacing); ++j)
{
for (unsigned int d = 0; d < orientation.getSize(); ++d)
orientation[d] = rand() % size[d];
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]))));
resultGeometry = resultGeometry | cylinders.back();
}
}
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
vector<asl::AVec<>> pillar1{
asl::makeAVec(wPillar*.5, dPillar*.5,0.),
vector<asl::AVec<>> pillar2{
asl::makeAVec(dPillar*.5, wPillar*.5,0.),
vector<asl::AVec<>> pillarC{
asl::makeAVec(center[0]+rDisk-dPillar*.5, center[1], 0.),
vector<vector<asl::AVec<>>> pillarsPoints(4);
for(unsigned int i(0); i<4; ++i)
pillarsPoints[i].resize(4);
for(unsigned int i(0); i<4; ++i)
{
pillarsPoints[0][i] = pillar2[i] + pillarC[0];
pillarsPoints[1][i] = pillar2[i] + pillarC[1];
pillarsPoints[2][i] = pillar1[i] + pillarC[2];
pillarsPoints[3][i] = pillar1[i] + pillarC[3];
}
auto mBath(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
auto mPlatform(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
auto mCrystal(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
asl::makeAVec(center[0], center[1], -.5*hDisk - hAxis + dx*size[2])));
asl::makeAVec(center[0], center[1], - .5*hAxis - hDisk*.25 + dx*size[2])));
auto dfPillars((dfPillar1 | dfPillar2 | dfPillar3 | dfPillar4) &
center+
makeAVec(-aCrystal, aCrystal,0.),
center+
makeAVec(-aCrystal, -aCrystal,0.),
center+
makeAVec( aCrystal, -aCrystal,0.)}) &
auto cCrPyrBase(
makeAVec(center[0],center[1],hDisk+hCrystalBase-.01));
cCrPyrBase+
makeAVec(-aCrystal, aCrystal,0.),
cCrPyrBase+
makeAVec(-aCrystal, -aCrystal,0.),
cCrPyrBase+
makeAVec( aCrystal, -aCrystal,0.)},
cCrPyrBase+
makeAVec(0.,0.,hCrystalPyramid)));
writer.addScalars("Bath", *mBath);
writer.addScalars("Platform", *mPlatform);
writer.addScalars("Crystal", *mCrystal);
writer.write();
return true;
}
{
auto data(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
return true;
}
{
return 0;
}
definition of class АVec<T>
acl::VectorOfElements dx(const TemplateVE &a)
differential operator
SPDistanceFunction generateDFInBlock(const Block &b, unsigned int nG)
generates map corresponding to external (ghost) part of the block
SPDistanceFunction generateDFCylinder(double r, const AVec< double > &l, const AVec< double > &c)
generates cylinder
SPDistanceFunction generateDFConvexPolygonPyramid(std::vector< AVec< double > > points, AVec< double > a)
generates pyramid with convex polygon at its base and apex a
SPDistanceFunction generateDFPlane(const AVec< double > &n, const AVec< double > &p0)
SPDistanceFunction generateDFConvexPolygonPrism(std::vector< AVec< double > > points)
generates infinite prism with convex polygon at its base
SPDistanceFunction generateDFSphere(double r, const AVec< double > &c)
generates sphere
SPDistanceFunction generateDFCylinderInf(double r, const AVec< double > &l, const AVec< double > &c)
generates infinite cylinder
void writeVTKXML(const std::string &fileName, const AbstractData &data, const std::string &name)
std::shared_ptr< DistanceFunction > SPDistanceFunction
const VectorTemplate & d3q15()
Vector template.
QuaternionOfElements normalize(QuaternionOfElements &a)
void optimizeMap(SPDataWithGhostNodesACLData c, const VectorTemplate *vt)
void initData(SPAbstractData d, double a)
bool testDistFOperations2D()
bool testDistFOperations3DPrism()
bool testDistFOperations3DBlock()
bool testDistFAdvanced3D()
bool testDistFOrderedCylinders()
bool testDistFOperations3D()
bool testDistFOptimizer()
bool testDistFNormalization3D()
bool testDistFNormalization2D()
bool testDistFUnorderedCylinders()