78 void load(
int argc,
char * argv[]);
86 appParamsManager(
"multiphase_flow",
"0.1"),
88 dx(0.002,
"dx",
"space step"),
89 dt(1.,
"dt",
"time step"),
90 tSimulation(2e-3,
"simulation_time",
"simulation time"),
91 tOutput(1e-4,
"output_interval",
"output interval"),
92 nu(4e-8,
"nu",
"viscosity"),
93 tubeL(0.5,
"tubeL",
"tube's length"),
94 tubeD(0.05,
"tubeD",
"tube's diameter"),
95 pumpL(0.025,
"pumpL",
"pump's length"),
96 pumpD(0.03,
"pumpD",
"pump's diameter"),
97 oilInVel(0.02,
"oil_in_velocity",
"flow velocity in the oil input"),
98 waterInVel(0.04,
"water_in_velocity",
"flow velocity in the water input"),
99 gasInVel(0.03,
"gas_in_velocity",
"flow velocity in the gas input")
127 void Parameters::init()
144 orientation[1] = 1.0;
145 orientation[2] = 0.0;
146 center[2]=params.
pumpD.
v() * 1.5;
152 int main(
int argc,
char *argv[])
155 params.
load(argc, argv);
157 std::cout <<
"Data initialization...";
161 auto mpfMapMem(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
164 auto waterFrac(asl::generateDataContainerACL_SP<FlT>(block, 1, 1u));
167 std::cout <<
"Finished" << endl;
169 std::cout <<
"Numerics initialization...";
181 auto flowVel(lbgk->getVelocity());
185 std::vector<asl::SPNumMethod> bc;
186 std::vector<asl::SPNumMethod> bcV;
187 std::vector<asl::SPNumMethod> bcDif;
207 std::cout <<
"Finished" << endl;
208 std::cout <<
"Computing..." << endl;
213 writer.addScalars(
"water", *waterFrac);
214 writer.addScalars(
"rho", *lbgk->getRho());
215 writer.addVector(
"v", *flowVel);
224 for (
unsigned int i(1); i < 2001; ++i)
234 cout << i <<
"/2000; expected left time: " << timer.
getLeftTime(
double(i)/2000.) << endl;
242 std::cout <<
"Finished" << endl;
244 cout <<
"time=" << timer.
getTime() <<
"; clockTime="
248 std::cout <<
"Output...";
249 std::cout <<
"Finished" << endl;
250 std::cout <<
"Ok" << endl;
const double getTime() const
SPFDMultiPhase generateFDMultiPhase(SPDataWithGhostNodesACLData c, SPAbstractDataWithGhostNodes v, const VectorTemplate *vt, bool compressibilityCorrection=false)
const double getProcessorLoad() const
asl::ApplicationParametersManager appParamsManager
asl::Parameter< double > nu
Numerical method for fluid flow.
asl::Parameter< double > waterInVel
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.
int main(int argc, char *argv[])
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.
asl::Parameter< double > tSimulation
acl::VectorOfElements dx(const TemplateVE &a)
differential operator
asl::Parameter< double > tOutput
void load(int argc, char *argv[])
asl::Parameter< double > pumpL
void initData(SPAbstractData d, double a)
asl::SPDistanceFunction generateMixer(asl::Block &block, Parameters ¶ms)
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)
asl::Parameter< double > oilInVel
void addScalars(std::string name, AbstractData &data)
SPBCond generateBCConstantPressure(SPLBGK nm, double p, const std::vector< SlicesNames > &sl)
asl::Parameter< double > gasInVel
asl::Parameter< double > dx
asl::UValue< double > Param
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.
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 ...
SPBCond generateBCNoSlip(SPLBGK nm, const std::vector< SlicesNames > &sl)