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