28 #include <utilities/aslParametersManager.h> 29 #include <math/aslTemplates.h> 30 #include <aslGeomInc.h> 31 #include <aslDataInc.h> 32 #include <acl/aclGenerators.h> 33 #include <writers/aslVTKFormatWriters.h> 34 #include <num/aslLBGK.h> 35 #include <num/aslLBGKBC.h> 36 #include <utilities/aslTimer.h> 37 #include <num/aslFDAdvectionDiffusion.h> 38 #include <num/aslBasicBC.h> 75 void load(
int argc,
char * argv[]);
84 dx(0.0005,
"dx",
"space step"),
85 dt(1.,
"dt",
"time step"),
86 tSimulation(2e-3,
"simulation_time",
"simulation time"),
87 tOutput(1e-4,
"output_interval",
"output interval"),
88 nu(4e-8/1.6,
"nu",
"viscosity"),
89 tubeL(0.25,
"tubeL",
"tube's length"),
90 tubeD(0.05,
"tubeD",
"tube's diameter"),
91 pumpL(0.025,
"pumpL",
"pump's length"),
92 pumpD(0.03,
"pumpD",
"pump's diameter"),
93 component1InVel(0.16,
"component1_in_velocity",
"flow velocity in the component1 input"),
94 component2InVel(0.08,
"component2_in_velocity",
"flow velocity in the component2 input"),
95 component3InVel(0.1,
"component3_in_velocity",
"flow velocity in the component3 input")
116 void Parameters::init()
134 orientation[1] = 1.0;
135 orientation[2] = 0.0;
136 center[2] = params.
pumpD.
v() * 1.5;
138 orientation, center);
144 int main(
int argc,
char *argv[])
147 params.
load(argc, argv);
149 cout <<
"Data initialization..." << endl;
153 auto mcfMapMem(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
156 auto component1Frac(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
158 auto component3Frac(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
162 cout <<
"Finished" << endl;
164 cout <<
"Numerics initialization..." << endl;
176 auto flowVel(lbgk->getVelocity());
179 nmcomponent1->init();
182 nmcomponent3->init();
184 std::vector<asl::SPNumMethod> bc;
185 std::vector<asl::SPNumMethod> bcV;
186 std::vector<asl::SPNumMethod> bcDif;
214 cout <<
"Finished" << endl;
215 cout <<
"Computing..." << endl;
220 writer.
addScalars(
"component1", *component1Frac);
221 writer.
addScalars(
"component3", *component3Frac);
232 for (
unsigned int i(1); i < 10001; ++i)
236 nmcomponent1->execute();
237 nmcomponent3->execute();
243 cout << i <<
"/10000; time left (expected): " << timer.
getLeftTime(
double(i)/10000.) << endl;
251 cout <<
"Finished" << endl;
253 cout <<
"Computation statistic:" << endl;
254 cout <<
"time = " << timer.
getTime() <<
"; clockTime = " asl::Parameter< double > dt
const double getTime() const
const double getProcessorLoad() const
asl::ApplicationParametersManager appParamsManager
asl::Parameter< double > nu
Numerical method for fluid flow.
const double getClockTime() const
SPDistanceFunction normalize(SPDistanceFunction a, double dx)
void errorMessage(cl_int status, const char *errorMessage)
Prints errorMessage and exits depending on the status.
void addVector(std::string name, AbstractData &data)
asl::Parameter< double > tubeL
asl::Parameter< double > pumpD
void initAll(std::vector< T * > &v)
SPBCond generateBCConstantPressureVelocity(SPLBGK nm, double p, AVec<> v, const std::vector< SlicesNames > &sl)
SPDistanceFunction generateDFCylinderInf(double r, const AVec< double > &l, const AVec< double > &c)
generates infinite cylinder
const VectorTemplate & d3q15()
Vector template.
SPFDAdvectionDiffusion generateFDAdvectionDiffusion(SPDataWithGhostNodesACLData c, double diffustionCoeff, SPAbstractDataWithGhostNodes v, const VectorTemplate *vt, bool compressibilityCorrection=false)
asl::Parameter< double > tSimulation
asl::Parameter< double > tOutput
void load(int argc, char *argv[])
asl::Parameter< double > component1InVel
asl::Parameter< double > pumpL
void initData(SPAbstractData d, double a)
asl::Parameter< double > component2InVel
asl::UValue< double > nuNum
const double getLeftTime(double fractTime)
SPBCond generateBCConstantGradient(SPAbstractDataWithGhostNodes d, double v, const VectorTemplate *const t, const std::vector< SlicesNames > &sl)
Bondary condition that makes fixed gradient.
void executeAll(std::vector< T * > &v)
void addScalars(std::string name, AbstractData &data)
SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector< SlicesNames > &sl)
asl::Parameter< double > component3InVel
asl::Parameter< double > dx
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
asl::Parameter< double > tubeD
SPBCond generateBCConstantValue(SPAbstractDataWithGhostNodes d, double v, const std::vector< SlicesNames > &sl)
Bondary condition that puts fixed value in each point.
asl::SPDistanceFunction generateMixer(asl::Block &block, Parameters ¶ms)
asl::Parameter< double > flowVel
void load(int argc, char *argv[])
SPDistanceFunction generateDFInBlock(const Block &b, unsigned int nG)
generates map corresponding to external (ghost) part of the block
SPNumMethod generateBCNoSlipVel(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
for velocity field
contains different kernels for preprocessing and posprocessing of data used by LBGK ...
int main(int argc, char *argv[])
SPBCond generateBCNoSlip(SPLBGK nm, const std::vector< SlicesNames > &sl)