Salome HOME
update CoreFlows
[tools/solverlab.git] / CoreFlows / examples / Python / DiffusionEquation / DiffusionEquation_1DHeatedRod_FE.py
1 #!/usr/bin/env python
2 # -*-coding:utf-8 -*
3
4 import CoreFlows as cf
5
6 def DiffusionEquation_1DHeatedRod():
7         spaceDim = 1;
8     # Prepare for the mesh
9         xinf = 0 ;
10         xsup=4.2;
11         nx=10;
12         
13         print ("Building of a 1D mesh with ", nx ," cells")
14
15     # set the limit field for each boundary
16         Temperature=623;
17         cp_ur=300
18         rho_ur=10000
19         lambda_ur=5
20
21         FECalculation=True    
22         myProblem = cf.DiffusionEquation(spaceDim,FECalculation,rho_ur,cp_ur,lambda_ur);
23         nVar = myProblem.getNumberOfVariables();
24
25      #Set heat exchanges
26         fluidTemp=573.;#fluid mean temperature
27         heatTransfertCoeff=1000.;#fluid/solid exchange coefficient
28         phi=1e5;#heat power ddensity
29         myProblem.setFluidTemperature(fluidTemp);
30         myProblem.setHeatTransfertCoeff(heatTransfertCoeff);
31         myProblem.setHeatSource(phi);
32
33         # constant vector
34         VV_Constant = [623];
35         
36     #Initial field creation
37         print("Building initial data" );
38         myProblem.setInitialFieldConstant(spaceDim,VV_Constant,xinf,xsup,nx,"Neumann","Neumann");
39
40     # the boundary conditions
41         myProblem.setNeumannBoundaryCondition("Neumann");
42
43     # set the numerical method
44         myProblem.setTimeScheme( cf.Explicit);
45         # myProblem.setLinearSolver(GMRES,ILU,True);
46
47     # name of result file
48         fileName = "1DRodTemperature_FE";
49
50     # computation parameters
51         MaxNbOfTimeStep = 3 ;
52         freqSave = 1;
53         cfl = 0.95;
54         maxTime = 100000000;
55         precision = 1e-6;
56
57         myProblem.setCFL(cfl);
58         myProblem.setPrecision(precision);
59         myProblem.setMaxNbOfTimeStep(MaxNbOfTimeStep);
60         myProblem.setTimeMax(maxTime);
61         myProblem.setFreqSave(freqSave);
62         myProblem.setFileName(fileName);
63
64     # evolution
65         myProblem.initialize();
66         print("Running python "+ fileName );
67
68         ok = myProblem.run();
69         if (ok):
70                 print( "Simulation python " + fileName + " is successful !" );
71                 pass
72         else:
73                 print( "Simulation python " + fileName + "  failed ! " );
74                 pass
75
76         print( "------------ End of calculation !!! -----------" );
77
78         myProblem.terminate();
79         return ok
80
81 if __name__ == """__main__""":
82     DiffusionEquation_1DHeatedRod()