1 #include "SinglePhase.hxx"
5 int main(int argc, char** argv)
7 //Preprocessing: mesh and group creation
8 cout << "Building cartesian mesh" << endl;
14 int spaceDim = M.getSpaceDimension();
17 double initialVelocityX =1;
18 double initialTemperature=600;
19 double initialPressure=155e5;
21 // physical parameters
22 Field porosityField("Porosity", CELLS, M, 1);
23 for(int i=0;i<M.getNumberOfCells();i++){
24 double x=M.getCell(i).x();
25 if (x> (xsup-xinf)/3 && x< 2*(xsup-xinf)/3)
30 porosityField.writeVTK("PorosityField",true);
33 SinglePhase myProblem(Liquid,around155bars600K,spaceDim);
34 int nVar = myProblem.getNumberOfVariables();
36 // Prepare for the initial condition
37 vector<double> VV_Constant(nVar);
39 VV_Constant[0] = initialPressure;
40 VV_Constant[1] = initialVelocityX;
41 VV_Constant[2] = initialTemperature;
43 cout << "Building initial data " << endl;
45 // generate initial condition
46 myProblem.setInitialFieldConstant( spaceDim, VV_Constant, xinf, xsup, nx,"Inlet","Outlet");
48 //set the boundary conditions
49 myProblem.setInletBoundaryCondition("Inlet",initialTemperature,initialVelocityX);
50 myProblem.setOutletBoundaryCondition("Outlet",initialPressure,vector<double>(1,xsup));
51 // physical parameters
52 myProblem.setPorosityField(porosityField);
54 // set the numerical method
55 myProblem.setNumericalScheme(upwind, Explicit);
56 myProblem.setWellBalancedCorrection(true);
57 myProblem.setNonLinearFormulation(VFFC) ;
60 string fileName = "1DPorosityJumpUpwindWB";
63 /* set numerical parameters */
64 unsigned MaxNbOfTimeStep =3;
68 double precision = 1e-5;
70 myProblem.setCFL(cfl);
71 myProblem.setPrecision(precision);
72 myProblem.setMaxNbOfTimeStep(MaxNbOfTimeStep);
73 myProblem.setTimeMax(maxTime);
74 myProblem.setFreqSave(freqSave);
75 myProblem.setFileName(fileName);
79 myProblem.initialize();
83 cout << "Simulation "<<fileName<<" is successful !" << endl;
85 cout << "Simulation "<<fileName<<" failed ! " << endl;
87 cout << "------------ End of calculation -----------" << endl;
88 myProblem.terminate();