]> SALOME platform Git repositories - tools/solverlab.git/blob - CoreFlows/examples/C/DriftModel_1DBoilingChannel.cxx
Salome HOME
Updated GUI documentation
[tools/solverlab.git] / CoreFlows / examples / C / DriftModel_1DBoilingChannel.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 inletTemperature=565;
22         double outletPressure=155e5;
23
24         // setting physical parameters 
25         double heatPower=1e8;
26
27         DriftModel  myProblem(around155bars600K,spaceDim);
28         int nbPhase = myProblem.getNumberOfPhases();
29         int nVar = myProblem.getNumberOfVariables();
30
31         // Prepare for the initial condition
32         Vector VV_Constant(nVar);
33         // constant vector
34         VV_Constant(0) = 0.;
35         VV_Constant(1) = 155e5;
36         for (int idim=0; idim<spaceDim;idim++)
37                 VV_Constant(2+idim) = 1;
38         VV_Constant(nVar-1) = 565;
39
40         //Initial field creation
41         cout << "Setting initial data " << endl;
42         myProblem.setInitialFieldConstant(M,VV_Constant);
43
44         //set the boundary conditions
45         myProblem.setInletBoundaryCondition("Inlet",inletTemperature,inletConc,inletVelocityX);
46         myProblem.setOutletBoundaryCondition("Outlet", outletPressure,vector<double>(1,xsup));
47
48         // physical parameters
49         myProblem.setHeatSource(heatPower);
50
51
52         // set the numerical method
53         myProblem.setNumericalScheme(upwind, Implicit);
54         myProblem.setWellBalancedCorrection(true);
55         myProblem.setNonLinearFormulation(VFFC);
56
57         // name the result file
58         string fileName = "Driftmodel1DBoilingChannel";
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 }