Freefem++ conditions périodiques
Bonjour
J'essaie de coder des conditions au limites périodiques pour un problème de transport (Stokes) en freefem++, et le logiciel me retourne le message d'erreur suivant :
Problem build of FEspace (2d) (may be : due to periodic Boundary condition missing ) FH
The number of DF must be 8247 and it is 8550
Mon code est celui ci :
Merci d'avance !
Baptiste.
J'essaie de coder des conditions au limites périodiques pour un problème de transport (Stokes) en freefem++, et le logiciel me retourne le message d'erreur suivant :
Problem build of FEspace (2d) (may be : due to periodic Boundary condition missing ) FH
The number of DF must be 8247 and it is 8550
Mon code est celui ci :
//Choix des paramètres du problème real c = 1; // Côté du carré real a=0.25; //Rayon du cercle real f1 = 1 ; //Force globale appliquée selon axe x //Paramètres du maillage int nAB=50; int nBC=50 ; int nCD=50; int nDA=50; int ncercle=100; border AB(t=0,c){y=0;x=t;label=1;} border BC(t=0,c){x=c;y=t;label=2;} border CD(t=0,c){y=c;x=c-t;label=3;} border DA(t=0,c){x=0;y=c-t;label=4;} border cercle(t=2*pi,0){x=c/2+a*cos(t);y=c/2+a*sin(t);} //Construction du maillage mesh Th=buildmesh(AB(nAB)+BC(nBC)+CD(nCD)+DA(nDA)+cercle(ncercle));//,fixeborder = true); plot(Th); func perio=[[1,x],[3,x],[4,y],[2,y]]; //Th=adaptmesh(Th, 0.25*2, IsMetric=1, nbvx=100000, periodic=perio); //Th=adaptmesh(Th, 0.25*2, IsMetric=1, nbvx=100000, periodic=perio); fespace Vh(Th,P1,periodic=perio),Qh(Th,P1,periodic=perio); Vh v1,v2,vh1,vh2; Qh p,ph; macro d12(u1,u2) (dy(u1) + dx(u2))/2.0 // real delta=0.01; real epsln=1.0e-6; solve stokes(v1,v2,p, vh1,vh2,ph) = int2d(Th)( 2.0*(dx(v1)*dx(vh1) +2.0*d12(v1,v2)*d12(vh1,vh2)+dy(v2)*dy(vh2)) -p*dx(vh1)-p*dy(vh2)-dx(v1)*ph-dy(v2)*ph -delta*hTriangle*hTriangle* // stabilization (dx(p)*dx(ph)+dy(p)*dy(ph)) -p*ph*epsln ) // penalization - int2d(Th)( f1 * vh1 );Auriez-vous une idée de la raison de ce problème, la doc de freefem++ ne disant pas grand chose sur le sujet ?
Merci d'avance !
Baptiste.
Connectez-vous ou Inscrivez-vous pour répondre.