]> SALOME platform Git repositories - tools/solverlab.git/blob - CoreFlows/examples/C/DriftModel_1DChannelGravity.cxx
Salome HOME
Updated GUI documentation
[tools/solverlab.git] / CoreFlows / examples / C / DriftModel_1DChannelGravity.cxx
1 #include "DriftModel.hxx"
2
3 using namespace std;
4
5 int main(int argc, char** argv)
6 {
7         //setting mesh and groups
8         cout << "Building a regular grid " << endl;
9         double xinf=0.0;
10         double xsup=4.2;
11         int nx=50;//50;
12         Mesh M(xinf,xsup,nx);
13         double eps=1.E-8;
14         M.setGroupAtPlan(xsup,0,eps,"Outlet");
15         M.setGroupAtPlan(xinf,0,eps,"Inlet");
16         int spaceDim = M.getSpaceDimension();
17
18         // setting boundary conditions 
19         double inletConc=0;
20         double inletVelocityX=1;
21         double inletEnthalpy=1.3e6;
22         double outletPressure=155e5;
23
24         // setting physical parameters 
25         vector<double> gravite(spaceDim,0.) ;
26         gravite[0]=-10;
27
28         DriftModel  myProblem(around155bars600K,spaceDim);
29         int nbPhase = myProblem.getNumberOfPhases();
30         int nVar = myProblem.getNumberOfVariables();
31
32         // Prepare for the initial condition
33         Vector VV_Constant(nVar);
34         // constant vector
35         VV_Constant(0) = 0.;
36         VV_Constant(1) = 155e5;
37         for (int idim=0; idim<spaceDim;idim++)
38                 VV_Constant(2+idim) = 1;
39         VV_Constant(nVar-1) = 578;
40
41         //Initial field creation
42         cout << "Setting initial data " << endl;
43         myProblem.setInitialFieldConstant(M,VV_Constant);
44
45         //set the boundary conditions
46         myProblem.setInletEnthalpyBoundaryCondition("Inlet",inletEnthalpy,inletConc,inletVelocityX);
47         myProblem.setOutletBoundaryCondition("Outlet", outletPressure,vector<double>(1,xsup));
48
49         // physical parameters
50         myProblem.setGravity(gravite);
51
52         // set the numerical method
53         myProblem.setNumericalScheme(upwind, Implicit);
54         myProblem.setWellBalancedCorrection(true);
55         myProblem.setNonLinearFormulation(VFRoe);
56
57         // name the result file
58         string fileName = "Driftmodel_1DChannelGravity";
59
60         // setting numerical parameters
61         unsigned MaxNbOfTimeStep =3 ;
62         int freqSave = 1;
63         double cfl = 100;
64         double maxTime = 1;
65         double precision = 1e-7;
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         myProblem.usePrimitiveVarsInNewton(true);
74         myProblem.saveAllFields(true);
75         myProblem.displayConditionNumber();
76         myProblem.setSaveFileFormat(CSV);
77
78         // evolution
79         myProblem.initialize();
80
81         bool ok = myProblem.run();
82         if (ok)
83                 cout << "Simulation "<<fileName<<" is successful !" << endl;
84         else
85                 cout << "Simulation "<<fileName<<"  failed ! " << endl;
86
87         cout << "------------ End of calculation -----------" << endl;
88         myProblem.terminate();
89
90         return EXIT_SUCCESS;
91 }