Salutation ^^
Donc j'ai un soucis sur deux programmes, il y a une partie de mes programmes qui sont bons mais le maillage est loin d'être parfait (il faut dire que j'ai du mal avec les maillages...), voici les énoncés et mes programmes à moi ^^
1) On considère un barreau de section rectangulaire omega = [0,L]x[-H/2,H/2], on néglige la troisième dimension.
Le barreau est chauffé à Tc à une extrémité et est refroidit à Tf à l'autre extrémité, la température à l'équilibre est la solution de l'EDP :
-delta(teta) = f pour (x,y) appartient à omega.
La variable teta = (T-Ta)/Ta est la température adimensionnée par rapport à l'ambiance Ta, les conditions aux limites sont :
sur gamma 4 teta=teta(c) (condition dirichlet)
gamma 2 teta = teta(f) (pareil
gamma1 UU gamma3 d(teta)/d(n) = 0 (paroi isolé, condition Neumann)
Les gamma 1 et 3 correspondent au côté du rectangle [0,L] et les 2 autres au côté [-H/2,H/2]
Programme 1 : résoudre le problème pour la fonction f(x,y)=0 et tracer la distribution de température T en °C
2) On suppose maintenant qu'à l'intérieur du barreau se trouve une résistance électrique cylindrique (domaine circulaire C) qui produit un flux constant de chaleur, elle sera modélisée par la fonction f(x,y) qui est constante sur C et nulle ailleurs.
On positionne le domaine C de rayon r = H/10 au milieu du barreau et on prendra f(x,y) = q = 250
Programme 2 : résoudre ce problème et tracer la distribution T en °C dans le barreau.
Voici mon programme 1 :
Code:real L=1, Ta=293, Tc=575, Tf=278,H=0.4,To=273.15; mesh Th= square(2,2,[x*H/2,y*H/2]); plot(Th); savemesh(Th, "Th.mesh"); fespace Vh(Th,P1); Vh u,v,T; T=Ta*u+Ta-To; func f=0; problem barreau(u,v)=int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v)) -int2d(Th)(f*v)+on(1,u=Tc)+on(2,u=Tf); plot(T);
Voici mon programme 2 :
Code:real L=1, Ta=293, Tc=575, Tf=278,H=0.4,To=273.15,q=250; mesh Th = square(2,2,[x*H/10,y*H/10]); plot(Th); savemesh(Th, "Th.msh"); fespace Vh(Th,P1); Vh u,v,T; T=Ta*u+Ta-To; func f=q; problem barreau(u,v)=int2d(Th)(dx(u)*dx(v)+dy(u)*dy(v)) -int2d(Th)(f*v)+on(1,u=Tc)+on(2,u=Tf); plot(T); fespace Ph(Th,P0); Ph labelR=region; int label1=labelR(0,0); int label2=labelR(0,L/2); cout<<"labels domaines="<<label<<" et "<<label2<<endl; plot(labelR,cmm="labels des domaines", wait=1,fill=1); Ph IdCercle = (region==label2) ? 1: 0; plot(IdCercle, cmm="fonction indicatrice du cercle", wait=1, fill=1);
Le 2 est pas fini, mais mon soucis c'est surtout faire les maillages pour le barreau normal en 1 et pour le barreau avec le cercle dans le 2, c'est ça que je voudrais comprendre, comment faire ces 2 maillages !
Merci d'avance ^^
-----