]> SALOME platform Git repositories - tools/solverlab.git/blob - CoreFlows/examples/C/DriftModel_1DPressureLoss.cxx
Salome HOME
Updated GUI documentation
[tools/solverlab.git] / CoreFlows / examples / C / DriftModel_1DPressureLoss.cxx
1 #include "DriftModel.hxx"
2
3 using namespace std;
4
5 int main(int argc, char** argv)
6 {
7         cout << "Building a regular grid " << endl;
8         int spaceDim=1;
9         double xinf=0.0;
10         double xsup=4.2;
11         int nx=50;
12
13         Mesh M(xinf,xsup,nx);
14         double eps=1.E-8;
15         M.setGroupAtPlan(xsup,0,eps,"Outlet");
16         M.setGroupAtPlan(xinf,0,eps,"Inlet");
17
18         double inletConc=0;
19         double inletVelocityX =1;
20         double inletTemperature=563;
21
22         double outletPressure=155e5;
23
24         // physical parameters
25         Field pressureLossField("pressureLoss", FACES, M, 1);
26         pressureLossField(nx/4)=50;
27         pressureLossField(nx/2)=100;
28         pressureLossField(3*nx/4)=150;
29
30         DriftModel  myProblem(around155bars600K,spaceDim);
31         int nVar = myProblem.getNumberOfVariables();
32
33         // Prepare for the initial condition
34         vector<double> VV_Constant(nVar);
35         // constant vector
36         VV_Constant[0] = inletConc;
37         VV_Constant[1] = outletPressure;
38         VV_Constant[2] = inletVelocityX;
39         VV_Constant[3] = inletTemperature;
40
41         cout << "Building initial data " << endl;
42
43         // generate initial condition
44         myProblem.setInitialFieldConstant( spaceDim, VV_Constant, xinf, xsup, nx,"inlet","outlet");
45
46         //set the boundary conditions
47         myProblem.setInletBoundaryCondition("inlet",inletTemperature,inletConc,inletVelocityX);
48         myProblem.setOutletBoundaryCondition("outlet", outletPressure,vector<double>(1,xsup));
49
50         // physical parameters
51         myProblem.setPressureLossField(pressureLossField);
52
53         // set the numerical method
54         myProblem.setNumericalScheme(upwind, Explicit);
55         myProblem.setWellBalancedCorrection(true);
56
57         // name file save
58         string fileName = "1DPressureLossUpwindWB";
59
60         // parameters calculation
61         unsigned MaxNbOfTimeStep =3;
62         int freqSave = 1;
63         double cfl = 0.95;
64         double maxTime = 5;
65         double precision = 1e-5;
66
67         myProblem.setCFL(cfl);
68         myProblem.setPrecision(precision);
69         myProblem.setMaxNbOfTimeStep(MaxNbOfTimeStep);
70         myProblem.setTimeMax(maxTime);
71         myProblem.setFreqSave(freqSave);
72         myProblem.setFileName(fileName);
73
74         // evolution
75         myProblem.initialize();
76
77         bool ok = myProblem.run();
78         if (ok)
79                 cout << "Simulation "<<fileName<<" is successful !" << endl;
80         else
81                 cout << "Simulation "<<fileName<<"  failed ! " << endl;
82
83         cout << "------------ End of calculation -----------" << endl;
84         myProblem.terminate();
85
86         return EXIT_SUCCESS;
87 }