#include <math/aslVectors.h>
#include <math/aslTemplates.h>
#include <aslGeomInc.h>
#include <math/aslPositionFunction.h>
#include <aslDataInc.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>
#include <readers/aslVTKFormatReaders.h>
#include <utilities/aslParametersManager.h>
{
double y(10.33);
double z(3.08);
double h(1.);
double rNozzel(.3);
double n(4.);
double x0(-20.);
double xE(-6.);
makeAVec(0., 0., h),
makeAVec(x0, y, z + h * .5)));
for(unsigned int i(1); i < n; ++i)
res = res | generateDFCylinder(rNozzel,
makeAVec(0., 0., h),
makeAVec(x0 + i * (xE-x0)/n, y, z+h*.5));
return normalize(res, dx);
}
int main(
int argc,
char* argv[])
{
"1.0");
appParamsManager.load(argc, argv);
Param nuNum(nu.v()*dt.v()/dx.v()/dx.v());
std::cout << "Data initialization... " << flush;
std::cout << "Finished" << endl;
std::cout << "Numerics initialization... " << flush;
lbgk->init();
std::vector<asl::SPNumMethod> bc;
std::vector<asl::SPNumMethod> bcV;
bc.push_back(generateBCNoSlip(lbgk, locomotive));
bcV.push_back(generateBCNoSlipVel(lbgk, locomotive));
bc.push_back(generateBCConstantPressureVelocity(lbgk, 1.,
makeAVec(0.1,0.,0.05),
computeForce->init();
std::cout << "Finished" << endl;
std::cout << "Computing..." << endl;
writer.addScalars("locomotive", *locomotive);
writer.addScalars("nozzels", *nozzelsMap);
writer.addScalars("rho", *lbgk->getRho());
writer.addVector("v", *lbgk->getVelocity());
writer.addVector("force", *forceField);
computeForce->execute();
writer.write();
for(unsigned int i(1); i < 40001; ++i)
{
lbgk->execute();
if(!(i%1000))
{
cout << i << endl;
computeForce->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
Updatable value. This class stores value and its TimeStamp.
SPDataWrapperACLData generateDataContainerACL_SP(const Block &b, unsigned int n=1)
generates pointer to ACL Data field with n components
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.
SPNumMethod generateComputeSurfaceForce(SPLBGK nm, SPDataWithGhostNodesACLData fF, SPAbstractDataWithGhostNodes map)
SPBCond generateBCConstantPressureVelocity(SPLBGK nm, double p, AVec<> v, const std::vector< SlicesNames > &sl)
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
asl::SPDistanceFunction generateNozzels(asl::Block &bl)
void initAll(std::vector< T * > &v)
std::shared_ptr< LBGK > SPLBGK
void initData(SPAbstractData d, double a)
std::shared_ptr< LBGKUtilities > SPLBGKUtilities
void executeAll(std::vector< T * > &v)