/** #Effondrement d'un tas de sable dans une gouttière Résolution des équations de Saint Venant 2D avec un frottement de Coulomb, un tas initial disposée sur une pente incurvée en forme de gouttière est relâché au temps t=0, il s'effondre et finit par s'arrêter sur le sol plat. Grâce à: */ #include "saint-venant.h" /** on résout le problème de fluide parfait (sans la friction µ qui sera traîtée plus loin)$$ \left\{\begin{array}{l} \frac{\partial }{\partial t} h \; +\; \frac{\partial }{\partial x} Q_x \;+\; \frac{\partial }{\partial y} Q_y=0\\ \frac{\partial }{\partial t} Q_x+ \frac{\partial }{\partial x} \dfrac{Q_x^2}{h}+ \frac{\partial }{\partial y} \dfrac{Q_xQ_y}{h}+ \frac{\partial }{\partial x}g\dfrac{h^2}{2} = - gh \frac{\partial }{\partial x} Z-\mu gh\frac{Q_x}{|Q|}\\ \frac{\partial }{\partial t} Q_y+ \frac{\partial }{\partial x} \dfrac{Q_xQ_y}{h}+ \frac{\partial }{\partial y} \dfrac{Q_y^2}{h}+ \frac{\partial }{\partial y}g\dfrac{h^2}{2} = - gh \frac{\partial }{\partial y} Z-\mu g h \frac{Q_y}{|Q|}\\ \end{array}\right., $$ */ double tmax; #define MAXLEVEL 7 #define MINLEVEL 4 #define LEVEL 6 /** Conditions aux limites dirichlet en vitesse */ u.n[left] =0; u.t[left] =0; u.n[top] =0; u.t[top] =0; u.n[right] =0; u.t[right] =0; /** Une gouttière pour la topo zb et un tas de grains h relâchés */ event init (i = 0) { double wg2=1,Ltas=0.5,pmax=.25,xtas=1; foreach(){ zb[] = fmin(2,fmax(0,(2+(y*y/2/1.2)*(y*ywg2)*wg2/2/1.2 -x*tan(40*pi/180)))); h[]=(sqrt((x-xtas)*(x-xtas)+y*y) eta.mpg", "w"); scalar m[], etam[]; foreach() { etam[] = eta[]*(h[] > dry); m[] = etam[] - zb[]; } boundary ({m, etam}); output_ppm (h, fp, mask = m, min = 0, max = 0.1, n = 1024, linear = true);} /** et sortie directe gnuplot */ event splot(t <= tmax;t+=.05) { double dx=L0/pow(2.,LEVEL),dy=dx; fprintf (stderr,"--- %lf \n",t); printf("set hidden3d; unset border ; unset ytics ;unset xtics ; unset ztics;\n"); // printf("set view 30,%lf \n",t/tmax*360); printf("sp[:][:][0:3] '-' u 1:2:($3+$4-.01) not w l linec -1,''u 1:2:4 not w l linec 2\n"); for(double x=X0; x v.out echo "set term gif animate; set output 'bosse.gif'" > dmp cat v.out >> dmp mv dmp v.out cat v.out | gnuplot gifsicle --colors 256 --optimize --delay 1 --loopcount=0 bosse.gif > bosse_aval_gray.gif rm bosse.gif rm v.out ~~~ ce qui produit: ![gouttière et granulaire](/sandbox/M1EMN/Exemples/Img/bosse_aval_gray.gif) #Bibliographie M. WIELAND, J. M. N. T. GRAY AND K. HUTTER Channelized free-surface flow of cohesionless granular avalanches in a chute with shallow lateral curvature J. Fluid Mech. (1999), vol. 392, pp. 73–100. */