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); |
Partager