Salome HOME
ea1b79bff71185a5b25ab425338153f3d25d2568
[modules/yacs.git] / doc / exemples / exemple4 / FreeFem.py
1 import os\r
2 \r
3 class Bord:\r
4     def __init__(self, X, Y, n):\r
5         self.X = X\r
6         self.Y = Y\r
7         self.n = n\r
8     \r
9 class FreeFem:\r
10     def __init__(self):\r
11         self.u1 = "0"\r
12         self.u2 = "0"\r
13         self.bords = [ Bord("x = cos(2*pi*t)", "y = sin(2*pi*t)", 100) ]\r
14         \r
15     def Bords(self, b):\r
16         self.bords = b\r
17 \r
18     def Flux(self, u1, u2):\r
19         self.u1 = u1\r
20         self.u2 = u2\r
21         \r
22     def Convection(self, cond_init, dt, n):\r
23 \r
24         f = open("/tmp/example.edp", "w")\r
25         s = ""\r
26         ib = 1\r
27         nb = len(self.bords)\r
28         for b in self.bords:\r
29             f.write("border b" + str(ib) + "(t=0,1){" + \\r
30                     b.X + "; " + b.Y + "; };\n");\r
31             s = s + "b" + str(ib) + "(" + str(b.n)+ ")"\r
32             if (ib < nb):\r
33                 s = s + "+ "\r
34             else:\r
35                 s = s + ");"\r
36             ib = ib+1\r
37             \r
38         f.write("mesh th = buildmesh(" + s + "\n");\r
39         f.write("fespace Vh(th,P1);\n");\r
40         f.write("Vh v = " + cond_init + ";\nplot(v);\n")\r
41         f.write("real dt = " + str(dt) + ", t=0;\n");\r
42         \r
43         f.write("Vh u1 = " + str(self.u1) + \\r
44                 ", u2 = " + str(self.u2) + ";\n");\r
45         \r
46         f.write("int i;\nVh vv,vo;\n"\r
47                 "for ( i=0; i< " + str(n) + " ; i++) {\n"\r
48                 "t += dt;\nvo=v;\nv=convect([u1,u2],-dt,vo);\n"\r
49                 "plot(v,wait=0);\n};\n");\r
50         f.close()\r
51         os.system('FreeFem++ /tmp/example.edp');\r
52 \r