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