/** # Breaking of a waVe on a slope Une vague se propage en eau peu profonde de profondeur constante et arrive sur une plage en pente droite: "how many seas must a white dove sail before she sleeps in the sand?" Pour répondre à la question: Résolution de Saint Venant simple en 1D avec topographie $$ \left\{\begin{array}{l} \partial_t h+\partial_x Q=0\\ \partial_t Q+ \partial_x \left[\dfrac{Q^2}{h}+g\dfrac{h^2}{2}\right] = - gh \partial_x Z_b \end{array}\right. $$ avec au temps t=0, $\eta=0$ et une vitesse nulle, le fond initialement en -1 remonte avec un angle $\alpha$ ensuite. Des vagues rentrent de la gauche. On utilise le solveur de Saint-Venant et on utilise une grille simple cartésienne: ## Code */ #include "grid/cartesian1D.h" #include "saint-venant.h" /** declarations ... */ double a,tmax; /** condition de sortie à gauche, mais surtout condition de caractéristique à gauche */ u.n[left] = neumann(0); u.n[left] = - radiation(a*sin(0.25*t)); /*This can be used to implement open boundary conditions at low Froude numbers. The idea is to set the velocity normal to the boundary so that the water level relaxes towards its desired value (ref). `radiation(ref) (sqrt (G*max(h[],0.)) - sqrt(G*max((ref) - zb[], 0.)))` forme du fond, */ event init (i = 0) { foreach(){ zb[] = -1+ (x>10)*(x-10)/(25); u.x[]=0 ; h[]=u.x[]+max(-zb[],0); } } /** sortie pour gnuplot */ event field (t