30#include <math/aslVectors.h>
31#include <math/aslTemplates.h>
32#include <aslGeomInc.h>
33#include <math/aslPositionFunction.h>
34#include <aslDataInc.h>
35#include <acl/aclGenerators.h>
36#include <writers/aslVTKFormatWriters.h>
37#include <num/aslLBGK.h>
38#include <num/aslLBGKBC.h>
39#include <utilities/aslTimer.h>
40#include <acl/aclUtilities.h>
41#include <readers/aslVTKFormatReaders.h>
42#include <utilities/aslParametersManager.h>
67 makeAVec(x0, y, z + h * .5)));
68 for(
unsigned int i(1); i < n; ++i)
69 res = res | generateDFCylinder(rNozzel,
71 makeAVec(x0 + i * (xE-x0)/n, y, z+h*.5));
72 return normalize(res, dx);
76int main(
int argc,
char* argv[])
83 appParamsManager.
load(argc, argv);
89 Param nuNum(nu.
v()*dt.
v()/dx.v()/dx.v());
91 std::cout <<
"Data initialization... " << flush;
95 asl::Block block(locomotive->getInternalBlock());
100 std::cout <<
"Finished" << endl;
102 std::cout <<
"Numerics initialization... " << flush;
114 std::vector<asl::SPNumMethod> bc;
115 std::vector<asl::SPNumMethod> bcV;
121 bc.push_back(generateBCNoSlip(lbgk, locomotive));
122 bcV.push_back(generateBCNoSlipVel(lbgk, locomotive));
123 bc.push_back(generateBCConstantPressureVelocity(lbgk, 1.,
124 makeAVec(0.1,0.,0.05),
126 bc.push_back(generateBCConstantPressureVelocity(lbgk, 1., makeAVec(0.,0.,-0.1), nozzelsMap));
130 auto computeForce(generateComputeSurfaceForce(lbgk, forceField, locomotive));
131 computeForce->init();
134 std::cout <<
"Finished" << endl;
135 std::cout <<
"Computing..." << endl;
141 writer.
addVector(
"v", *lbgk->getVelocity());
146 computeForce->execute();
152 for(
unsigned int i(1); i < 40001; ++i)
160 computeForce->execute();
166 cout <<
"Finished" << endl;
168 cout <<
"Computation statistic:" << endl;
169 cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "
void load(int argc, char *argv[])
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.
void addVector(std::string name, AbstractData &data)
void addScalars(std::string name, AbstractData &data)
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.
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
asl::SPDistanceFunction generateNozzels(asl::Block &bl)
asl::UValue< double > Param
std::shared_ptr< LBGK > SPLBGK
void initData(SPAbstractData d, double a)
std::shared_ptr< LBGKUtilities > SPLBGKUtilities