Example: Multicomponent flow
{
private:
void init();
public:
void load(
int argc,
char * argv[]);
};
dx(0.0005,
"dx",
"space step"),
dt(1.,
"dt",
"time step"),
tSimulation(2e-3,
"simulation_time",
"simulation time"),
tOutput(1e-4,
"output_interval",
"output interval"),
nu(4e-8/1.6,
"nu",
"viscosity"),
tubeL(0.25,
"tubeL",
"tube's length"),
tubeD(0.05,
"tubeD",
"tube's diameter"),
pumpL(0.025,
"pumpL",
"pump's length"),
pumpD(0.03,
"pumpD",
"pump's diameter"),
component1InVel(0.16,
"component1_in_velocity",
"flow velocity in the component1 input"),
component2InVel(0.08,
"component2_in_velocity",
"flow velocity in the component2 input"),
component3InVel(0.1,
"component3_in_velocity",
"flow velocity in the component3 input")
{
}
{
init();
}
{
}
void Parameters::init()
{
}
{
center);
orientation[1] = 1.0;
orientation[2] = 0.0;
center[2] = params.
pumpD.
v() * 1.5;
orientation, center);
}
int main(
int argc,
char *argv[])
{
cout << "Data initialization..." << endl;
auto mcfMapMem(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
auto component1Frac(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
auto component3Frac(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
cout << "Finished" << endl;
cout << "Numerics initialization..." << endl;
templ));
lbgk->init();
nmcomponent1->init();
nmcomponent3->init();
std::vector<asl::SPNumMethod> bc;
std::vector<asl::SPNumMethod> bcV;
std::vector<asl::SPNumMethod> bcDif;
cout << "Finished" << endl;
cout << "Computing..." << endl;
for (unsigned int i(1); i < 10001; ++i)
{
lbgk->execute();
nmcomponent1->execute();
nmcomponent3->execute();
if (!(i%100))
{
cout << i <<
"/10000; time left (estimated): " << timer.
estimatedRemainder(
double(i)/10000.) << endl;
}
}
cout << "Finished" << endl;
cout << "Computation statistic:" << endl;
cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = " return 0;
}