1 #include "DriftModel.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();
18 double initialVelocityX =1;
19 double initialTemperature=600;
20 double initialPressure=155e5;
22 // physical parameters
23 Field porosityField("Porosity", CELLS, M, 1);
24 for(int i=0;i<M.getNumberOfCells();i++){
25 double x=M.getCell(i).x();
26 if (x> (xsup-xinf)/3 && x< 2*(xsup-xinf)/3)
31 porosityField.writeVTK("PorosityField",true);
34 DriftModel myProblem(around155bars600K,spaceDim);
35 int nVar = myProblem.getNumberOfVariables();
37 // Prepare for the initial condition
38 vector<double> VV_Constant(nVar);
40 VV_Constant[1] = initialConc;
41 VV_Constant[1] = initialPressure;
42 VV_Constant[2] = initialVelocityX;
43 VV_Constant[3] = initialTemperature;
45 cout << "Building initial data " << endl;
47 // generate initial condition
48 myProblem.setInitialFieldConstant( spaceDim, VV_Constant, xinf, xsup, nx,"Inlet","Outlet");
50 //set the boundary conditions
51 myProblem.setInletBoundaryCondition("Inlet",initialTemperature,initialConc,initialVelocityX);
52 myProblem.setOutletBoundaryCondition("Outlet",initialPressure,vector<double>(1,xsup));
54 // physical parameters
55 myProblem.setPorosityField(porosityField);
57 // set the numerical method
58 myProblem.setNumericalScheme(upwind, Explicit);
59 myProblem.setWellBalancedCorrection(true);
60 myProblem.setNonLinearFormulation(VFFC) ;
63 string fileName = "1DPorosityJumpUpwindWB";
66 /* set numerical parameters */
67 unsigned MaxNbOfTimeStep =3;
71 double precision = 1e-5;
73 myProblem.setCFL(cfl);
74 myProblem.setPrecision(precision);
75 myProblem.setMaxNbOfTimeStep(MaxNbOfTimeStep);
76 myProblem.setTimeMax(maxTime);
77 myProblem.setFreqSave(freqSave);
78 myProblem.setFileName(fileName);
82 myProblem.initialize();
86 cout << "Simulation "<<fileName<<" is successful !" << endl;
88 cout << "Simulation "<<fileName<<" failed ! " << endl;
90 cout << "------------ End of calculation -----------" << endl;
91 myProblem.terminate();