J’ai la fonction suivante :
q_{\delta}(x/eps,y/eps)= 1 si (x/eps,y/eps) \in B_{\delta} x Z^2, et 0 sinon.
\eps est fixé, B_{\delta}= {x : |x| < \delta} tel que \delta = \sqrt{1/(\pi*w)}, et w est fixé.
Je sais programmer cette fonction et ça nous donne plein de boules de même calibre et espacé d’un \eps.
Ce que je souhaite faire maintenant, c’est obtenir un milieu périodique de période \eps mais divisé en deux : un côté droit qui contient des boules B_{\delta_d} tel que \delta_d=\sqrt{1/(\piw_d)} et un côté gauche qui contient des boules plus petite que celle qui sont du côté droit B_{\delta_g} tel que \delta_g=\sqrt{1/(\piw_g)} .
J’ai essayé le code ci joint mais ça donne un espace périodique avec des boules de même mesure, donc ce n’est pas bon.
load “UMFPACK64”
DefaultSolver=“UMFPACK64”;
load “iovtk”
verbosity=1;
real wd=24.0;
real wg=1250.0;
func real qdelta (real t, real s, real wd, real wg) {
real t1 = t - rint(t);
real s1 = s - rint(s);
real deltad=1.0/sqrt(wdpi);
real deltag=1.0/sqrt(wgpi);
if ( square(s1)+square(t1) <= square(deltad))
return wd;
else
if ( square(s1)+square(t1) <= square(deltag))
return wg;
else
return 0.0;
};
// initial values for the spatial domain
int N=100;
real eps=0.2;
real t=0.0;
real dt=0.1;
mesh Th=square(N,N,[x,y]);
fespace Vh(Th,P1,periodic=[[2,y],[4,y],[1,x],[3,x]]);
fespace Wh(Th,P2,periodic=[[2,y],[4,y],[1,x],[3,x]]);
Wh uplot;
uplot=qdelta(x/eps,y/eps,wd,wg);
plot(uplot,fill=true,value=true,ps=“qdelta.eps”);
Je vous remercie d’avance pour votre aide.