#include <utilities/aslParametersManager.h>
#include <aslDataInc.h>
#include <math/aslTemplates.h>
#include <aslGeomInc.h>
#include <acl/aclGenerators.h>
#include <writers/aslVTKFormatWriters.h>
#include <num/aslLBGK.h>
#include <num/aslLBGKBC.h>
#include <utilities/aslTimer.h>
#include <acl/aclUtilities.h>
{
double hCyl (10.);
double rCyl (1.5);
double a(10.);
double b(6.);
vector<AVec<>> rect({.5*
makeAVec( .866*a,-b,-a*.5),.5*
makeAVec(-.866*a,-b, a*.5),
vector<AVec<>> r1(rect.size());
vector<AVec<>> r2(rect.size());
auto r1C(
makeAVec(x,y+rCyl*.5+b*.5,hCyl));
auto r2C(
makeAVec(x,y-rCyl*.5-b*.5,hCyl));
for(unsigned int i(0); i<rect.size();++i)
{
r1[i]=r1C + rect[i];
r2[i]=r2C + rect[i];
}
res = (res &
return res;
}
{
vector<double> xValues;
vector<double> yValues;
for(unsigned int i(0); i < 8; ++i)
for(unsigned int j(0); j < 10; ++j)
{
xValues.push_back(25.+ 20.*i);
yValues.push_back(25.+ 15.*j);
}
for(unsigned int i(1); i < xValues.size(); ++i)
return res;
}
int main(
int argc,
char* argv[])
{
"1.0");
appParamsManager.load(argc, argv);
AVec<> gSize(
dx.v()*AVec<>(size));
std::cout << "Data initialization... ";
auto mirrorsMapMem(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
std::cout << "Finished" << endl;
std::cout << "Numerics initialization... ";
lbgk->init();
bcNoSlip->init();
bcNoSlipM->init();
bcNoSlipV->init();
bcP->init();
bcTop->init();
std::cout << "Finished" << endl;
std::cout << "Computing...";
writer.addScalars("map", *mirrorsMapMem);
writer.addScalars("rho", *lbgk->getRho());
writer.addVector("v", *lbgk->getVelocity());
bcP->execute();
bcTop->execute();
bcNoSlip->execute();
bcNoSlipM->execute();
bcNoSlipV->execute();
writer.write();
for (unsigned int i(0); i < 1000 ; ++i)
{
lbgk->execute();
bcP->execute();
bcTop->execute();
bcNoSlip->execute();
bcNoSlipM->execute();
if (!(i%100))
{
cout << i << endl;
bcNoSlipV->execute();
writer.write();
}
}
cout << "Finished" << endl;
cout << "Computation statistic:" << endl;
cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "
return 0;
}
Numerical method for fluid flow.
contains different kernels for preprocessing and posprocessing of data used by LBGK
const double realTime() const
const double processorTime() const
const double processorLoad() const
int main(int argc, char *argv[])
asl::SPDistanceFunction generateMirrors()
asl::UValue< double > Param
asl::SPDistanceFunction generateMirror(double x, double y)
acl::VectorOfElements dx(const TemplateVE &a)
differential operator
SPDistanceFunction generateDFConvexPolygonPrism(std::vector< AVec< double >> points)
generates infinite prism with convex polygon at its base
SPDistanceFunction generateDFCylinder(double r, const AVec< double > &l, const AVec< double > &c)
generates cylinder
SPDistanceFunction generateDFPlane(const AVec< double > &n, const AVec< double > &p0)
std::shared_ptr< DistanceFunction > SPDistanceFunction
const VectorTemplate & d3q15()
Vector template.
SPBCond generateBCConstantVelocity(SPLBGK nm, AVec<> v, const std::vector< SlicesNames > &sl)
SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector< SlicesNames > &sl)
SPNumMethod generateBCNoSlipVel(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
SPBCond generateBCNoSlip(SPLBGK nm, const std::vector< SlicesNames > &sl)
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
std::shared_ptr< LBGK > SPLBGK
void initData(SPAbstractData d, double a)
std::shared_ptr< LBGKUtilities > SPLBGKUtilities