61 center[1] = bl.
position[1] + .25 * rTunnel;
72 auto tunnel(-(generateDFCylinder(rTunnel, makeAVec(l, 0., 0.), center) &
73 generateDFPlane(makeAVec(0., -1., 0.), centerG)));
76 return normalize(tunnel, bl.
dx);
80int main(
int argc,
char* argv[])
110 appParamsManager.
load(argc, argv);
114 AVec<int> size(makeAVec(40., 10., 15.) * (1. / dx.v()));
118 asl::Block bl(size, dx.v(), makeAVec(-30., 8.58, 1.53));
121 FlT nuNum(nu.
v() * dt.
v() / dx.v() / dx.v());
123 cout <<
"Data initialization... " << flush;
129 asl::Block block(locomotive->getInternalBlock());
132 auto tunnelMap(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
137 auto forceField(asl::generateDataContainerACL_SP<FlT>(block, 3, 1u));
141 cout <<
"Finished" << endl;
143 cout <<
"Numerics initialization... " << flush;
159 std::vector<asl::SPNumMethod> bc;
160 std::vector<asl::SPNumMethod> bcV;
163 bc.push_back(generateBCVelocity(lbgk, vfTunnel, tunnelMap));
166 bcV.push_back(generateBCVelocityVel(lbgk, vfTunnel, tunnelMap));
167 bcV.push_back(generateBCNoSlipRho(lbgk, tunnelMap));
170 bc.push_back(generateBCNoSlip(lbgk, locomotive));
171 bcV.push_back(generateBCNoSlipVel(lbgk, locomotive));
172 bcV.push_back(generateBCNoSlipRho(lbgk, locomotive));
175 bc.push_back(generateBCConstantPressureVelocity(lbgk, 1.,
176 makeAVec(0.1, 0., 0.),
184 auto computeForce(generateComputeSurfaceForce(lbgk, forceField, locomotive));
185 computeForce->init();
187 cout <<
"Finished" << endl;
188 cout <<
"Computing..." << endl;
197 writer.
addVector(
"v", *lbgk->getVelocity());
203 computeForce->execute();
210 for (
unsigned int i(1); i < iterations.
v(); ++i)
223 computeForce->execute();
230 cout <<
"Finished" << endl;
232 cout <<
"Computation statistic:" << endl;
233 cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "
void load(int argc, char *argv[])
const V getBPosition() const
contains different kernels for preprocessing and posprocessing of data used by LBGK
const double realTime() const
const double processorTime() const
const double processorLoad() const
void addVector(std::string name, AbstractData &data)
void addScalars(std::string name, AbstractData &data)
SPDataWithGhostNodesACLData readSurface(const string &fileName, double dx, acl::CommandQueue queue=acl::hardware.defaultQueue)
std::shared_ptr< DistanceFunction > SPDistanceFunction
SPPositionFunction generatePFConstant(const AVec< double > &a)
const VectorTemplate & d3q15()
Vector template.
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
asl::SPDistanceFunction generateTunnel(asl::Block &bl)
std::shared_ptr< LBGKUtilities > SPLBGKUtilities
std::shared_ptr< LBGK > SPLBGK
void initData(SPAbstractData d, double a)