]> SALOME platform Git repositories - tools/solverlab.git/blob - CoreFlows/examples/C/DriftModel_2DInclinedChannelGravity.cxx
Salome HOME
Updated GUI documentation
[tools/solverlab.git] / CoreFlows / examples / C / DriftModel_2DInclinedChannelGravity.cxx
1 #include "DriftModel.hxx"
2
3 using namespace std;
4
5 int main(int argc, char** argv)
6 {
7         int spaceDim = 2;
8
9         //Prepare for the mesh
10         double xinf=0.0;
11         double xsup=1.0;
12         double yinf=0.0;
13         double ysup=4.0;
14         int nx=10;
15         int ny=40;
16
17         // set the limit field for each boundary
18         double wallVelocityX=0;
19         double wallVelocityY=0;
20         double wallTemperature=563;
21
22         double inletConcentration=0;
23         double inletVelocityX=0;
24         double inletVelocityY=1;
25         double inletTemperature=563;
26
27         double outletPressure=155e5;
28
29         // physical constants
30         vector<double> gravite(spaceDim,0.) ;
31         gravite[1]=-8.5;
32         gravite[0]=5;
33
34         DriftModel  myProblem(around155bars600K,spaceDim);
35         int nVar = myProblem.getNumberOfVariables();
36
37         // Prepare for the initial condition
38         vector<double> VV_Constant(nVar);
39         // constant vector
40         VV_Constant[0] = 0;
41         VV_Constant[1] = 155e5;
42         VV_Constant[2] = 0;
43         VV_Constant[3] = 1;
44         VV_Constant[4] = 563;
45
46         //Initial field creation
47         cout << "Building initial data" << endl;
48         myProblem.setInitialFieldConstant(spaceDim,VV_Constant,xinf,xsup,nx,"wall","wall",yinf,ysup,ny,"inlet","outlet");
49
50         //set the boundary conditions
51         vector<double>pressure_reference_point(2);
52         pressure_reference_point[0]=xsup;
53         pressure_reference_point[1]=ysup;
54         myProblem.setOutletBoundaryCondition("outlet", outletPressure,pressure_reference_point);
55         myProblem.setInletBoundaryCondition("inlet", inletTemperature, inletConcentration, inletVelocityX, inletVelocityY);
56         myProblem.setWallBoundaryCondition("wall", wallTemperature, wallVelocityX, wallVelocityY);
57
58         // set physical parameters
59         myProblem.setGravity(gravite);
60
61         // set the numerical method
62         myProblem.setNumericalScheme(upwind, Explicit);
63         myProblem.setWellBalancedCorrection(true);
64         myProblem.setNonLinearFormulation(VFFC);
65
66         // name of result file
67         string fileName = "2DInclinedChannelGravity";
68
69         // computation parameters
70         unsigned MaxNbOfTimeStep = 3 ;
71         int freqSave = 1;
72         double cfl = 0.5;
73         double maxTime = 5;
74         double precision = 1e-6;
75
76         myProblem.setCFL(cfl);
77         myProblem.setPrecision(precision);
78         myProblem.setMaxNbOfTimeStep(MaxNbOfTimeStep);
79         myProblem.setTimeMax(maxTime);
80         myProblem.setFreqSave(freqSave);
81         myProblem.setFileName(fileName);
82         myProblem.usePrimitiveVarsInNewton(true);
83
84         // evolution
85         myProblem.initialize();
86
87         bool ok = myProblem.run();
88         if (ok)
89                 cout << "Simulation "<<fileName<<" is successful !" << endl;
90         else
91                 cout << "Simulation "<<fileName<<"  failed ! " << endl;
92
93         cout << "------------ End of calculation !!! -----------" << endl;
94         myProblem.terminate();
95
96         return EXIT_SUCCESS;
97 }