J ai un système de Navier Stokes a résoudre avec un programme C++, mais avant ça je voudrais trouver la solution exacte avec FreeFem++.

Alors voilà le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
//maillage
 
border a(t=1,0){x=0;y=0.5+0.5*t;label=1;};
border b(t=0,1){x=5*t;y=0.5;label=2;};
border c(t=1,0){x=5 ;y=0.5*t;label=2;};
border d(t=0,1){x=5+15*t;y=0;label=2;};
border e(t=0,1){x=20 ;y=t;label=3;};
border h(t=1,0){x=20*t;y=1;label=4;};
mesh Th = buildmesh( a(7) + b(40) + c(10) + d(150) + e(5) + h(100));
plot(Th,wait=1);
 
 
fespace Xh(Th,P2);		//discretisation pour la vitesse
fespace Mh(Th,P1);		//discretisation pour la pression
 
real nu = 0.0025, dt = 0.2;
 
Xh v1 ,v2 , u1=1 , u2=0; 	//initialisation du vecteur vitesse deplacement horizontal, et du vecteur pour la F.V
Mh p=0, q=0;
 
real area= int2d(Th)(1.);
 
for (int n=0; n<100; n++){
Xh u1old =u1, u2old = u2;
Xh f=convect([u1, u2], -dt, u1old), g=convect([u1, u2], -dt, u2old);
solve pb([u1,u2,p],[v1,v2,q],solver=LU)
      = int2d(Th)( v1*u1 + v2*u2 
		 + dt*nu*(dx(v1)*dx(u1)+ dy(v1)*dy(u1) + dx(v2)*dx(u2)+ dy(v2)*dy(u2))
      		 - dt*(p*dx(v1) - p*dy(v2))
		 - p*q*(0.000001)
		 - dx(u1)*q - dy(u2)*q -(f*v1+g*v2) 
      + on (2,4 , u1=0,u2=0)
      + on (1 , u1=1,u2=0)      
      + on (3 , u1=f, u2=0);
}
 
//plot ( u1,u2, wait = 1);
plot (p, wait=1);

et voila l'erreur que j obtiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 Error line number 32, in file stokes.edp, before  token +
 
  current line = 31
Compile error : 
        line number :32, +
error Compile error : 
        line number :32, +
 code = 1
Si quelqu un connais un peu FreeFem++ ce serrait super, sinon je suis ouverte à toutes propositions pour les conditions limites, sachant que je suis pas trop physiciennne, ces conditions sont un peu floues pour moi.

Merci à tous.