#include <utilities/aslParametersManager.h>
#include <math/aslTemplates.h>
#include <aslGeomInc.h>
#include <aslGenerators.h>
#include <acl/aclGenerators.h>
#include <writers/aslVTKFormatWriters.h>
#include <num/aslLBGK.h>
#include <num/aslLBGKBC.h>
#include <utilities/aslTimer.h>
#include <num/aslFDAdvectionDiffusion.h>
#include <num/aslBasicBC.h>
{
private:
void init();
public:
void load(
int argc,
char * argv[]);
};
appParamsManager("pitot_tube_ice", "0.1"),
size(3),
dx(0.000125, "dx", "space step"),
dt(1., "dt", "time step"),
tSimulation(2e-3, "simulation_time", "simulation time"),
tOutput(1e-4, "output_interval", "output interval"),
nu(6.25e-10/4., "nu", "viscosity"),
rIn(0.0015, "r_in", "Internal radius, m"),
rEx(0.005, "r_ex", "External radius, m"),
lCyl(0.002, "l_cyl", "Length of cylindric part, m"),
lCone(0.02, "l_cone", "Length of conic part, m"),
temperature(253, "temperature", "temperature, K"),
humidity(.5, "humidity", "relative humidity, K"),
flowVel(0.08, "flow_vel", "flow velocity")
{
}
{
init();
}
{
}
void Parameters::init()
{
}
{
auto centerCyl(center);
centerCyl[0] = params.
lCyl.
v()*.45;
auto centerHole(centerCyl+(params.
lCone.
v()*.6)*orientation);
auto apexCone(centerCyl+orientation*(params.
lCyl.
v()*.49+params.
lCone.
v()));
}
int main(
int argc,
char *argv[])
{
std::cout << "Data initialization...";
std::cout << "Finished" << endl;
std::cout << "Flow: Numerics initialization...";
templ));
lbgk->init();
auto flowVel(lbgk->getVelocity());
std::vector<asl::SPNumMethod> bc;
std::vector<asl::SPNumMethod> bcV;
std::vector<asl::SPNumMethod> bcDif;
{asl::X0,asl::XE,asl::Y0,asl::YE,asl::Z0,asl::ZE}));
std::cout << "Finished" << endl;
std::cout << "Computing..." << endl;
writer.addScalars("map", *mcfMapMem);
writer.addScalars("rho", *lbgk->getRho());
writer.addVector("v", *flowVel);
writer.write();
for(unsigned int i(1); i < 8001; ++i)
{
lbgk->execute();
if(!(i%800))
{
cout << i <<
"/8000; time left (estimated): " << timer.
estimatedRemainder(
double(i)/8000.) << endl;
writer.write();
}
}
cout << "Finished" << endl;
cout << "Computation statistic:" << endl;
cout <<
"Real Time = " << timer.
realTime() <<
"; Processor Time = "
return 0;
}
asl::Parameter< double > lCone
asl::Parameter< double > tOutput
asl::Parameter< double > humidity
asl::UValue< double > nuNum
asl::Parameter< double > lCyl
asl::Parameter< double > tSimulation
asl::Parameter< double > nu
asl::Parameter< double > rEx
asl::Parameter< double > flowVel
asl::Parameter< double > dx
asl::Parameter< double > rIn
asl::ApplicationParametersManager appParamsManager
asl::Parameter< double > temperature
void load(int argc, char *argv[])
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
const double estimatedRemainder(double completeness)
Returns estimated time till finishing current task based on its current completeness [0....
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
void errorMessage(cl_int status, const char *errorMessage)
Prints errorMessage and exits depending on the status.
SPDistanceFunction generateDFCylinder(double r, const AVec< double > &l, const AVec< double > &c)
generates cylinder
SPDistanceFunction generateDFPlane(const AVec< double > &n, const AVec< double > &p0)
SPDistanceFunction normalize(SPDistanceFunction a, double dx)
SPDistanceFunction generateDFCone(double r, const AVec< double > &l, const AVec< double > &a)
generates cone
std::shared_ptr< DistanceFunction > SPDistanceFunction
const VectorTemplate & d3q15()
Vector template.
SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector< SlicesNames > &sl)
SPNumMethod generateBCNoSlipVel(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
SPBCond generateBCConstantPressureVelocity(SPLBGK nm, double p, AVec<> v, const std::vector< SlicesNames > &sl)
SPBCond generateBCNoSlip(SPLBGK nm, const std::vector< SlicesNames > &sl)
SPNumMethod generateBCNoSlipRho(SPLBGK nmU, SPAbstractDataWithGhostNodes map)
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
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)
asl::SPDistanceFunction generateGeometry(asl::Block &block, Parameters ¶ms)