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 :

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
40
41
42
43
44
45
//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