Está en la página 1de 9

UNIVERSIDAD NACIONAL DE TRUJILLO

UNT
ESCUELA DE POSGRADO

MAESTRIA EN CIENCIAS

MENCIÓN EN INGENIERIA DE RECUSOS HÍDRICOS

TRABAJO N°06 SESION 03: Reporte solución numérica de la ecuación de

Saint Venant 1D – no estacionario.

AUTOR:

Jorge Michele Sánchez Monteza.

TUJILLO - PERU

2020
Solución Numérica de la Ecuación de de la ecuación de Saint Venant 1D.

- Para la ecuación de Saint Venant, se habla de dos principios: Principio de


conservación de masa y principio de conservación de momento.
- Principio de conservación de masa: La ecuación que obtuvimos en la sesión que se
trato la solución de onda cinemática, se puede escribir también de la siguiente
dh d (hU ) dh dU dh
forma: + = +h + U =0, esta ecuación se relaciona con la
dt dx dt dx dx
evolución del tirante ‘h’.
- Principio de conservación de momento: Se relaciona principalmente con la
evolución de la velocidad ‘U’. Obtenemos la siguiente ecuación:
dU dU dh dU dU
+U + g + g (S f −S 0 )=0 ; +U : Expresión de la derivada material
dt dx dx dt dx
dh
de la aceleración. g :Expresión de la presión. g( S f −S 0): Expresión que
dx
corresponde a la fricción. Sf : Pendiente del fondo. S0 : Fricción. En el caso de
equilibrio, la ecuación se iguala a cero. Para nuestro caso de un canal rectangular, el
área mojada del canal ‘A’: A=B*h (B: ancho o base del canal, h: tirante del canal),
g
∗dA
la ecuación queda: dU dU B ; ahora poniendo la ecuación
+U + + g (S f −S0 )=0
dt dx dx

( )
2
dQ d Q g∗A∗dh
en términos del caudal: + + + gA (Sf −S0 )=0 . Se pueden
dt dx A dx
escribir las ecuaciones de diversas formas.
- Para el caso de la ecuación de conservación de masa, mis incógnitas son: ‘h’ y ‘U’
tirante y velocidad respectivamente, hace que la ecuación diferencial:
dh dU dh
+h +U =0 , sea no lineal, por lo tanto, complica la solución de la
dt dx dx
ecuación. El mismo problema se presenta para las ecuaciones con el principio de
conservación de momento.
- Las estrategias para resolver la ecuación de momento, es hacer ciertos reemplazos
en las derivadas parciales por diferencias finitas, utilizando ciertas variantes
específicas, que en la practica han demostrado que tienen una mejor región de
estabilidad.
k+ 1 1 k k
hi − (hi −1 +hi +1) k+1 k k
- Trabajamos la derivada parcial: dh 2 2 h −hi−1−hi +1 ,
= = i
dt dt dt
quedando discretizada. La misma idea se plantea para las derivadas parciales:
k+1 k k k k k k k k
dU 2U i −U i−1−U i+1 dh hi+1−hi−1 dU U i+1−U i−1 dQ Q i+1−Qi−1
= ; = ; = ; = ;
dt 2 dt dx 2 dx dx 2 dx dx 2 dx
y además se van a considerar varios promedios, para que las ecuaciones queden
consistentes con las propuestas. Se proponen los siguientes promedios:
k k k k
k U i +1+ U i−1 h +h
Ui = ; hik = i+1 i−1 ; son los promedios de velocidad y tirante
2 2
respectivamente, la misma idea para las áreas: Aki , y también para la pendiente de
fondo: Sf , la misma idea, en esta pendiente de fondo no vamos a considerar que
cambie en el tiempo, pero si se va a considerar el promedio.
- La idea es sustituir las derivadas parciales discretizadas en la ecuación, para
nuestro caso es en un canal rectangular, en la ecuación de masa:
dh dU dh
+h +U =0 , despejando hik+1, nos quedaría:
dt dx dx
k+1 1 k k dt k k k k
hi = (hi+1 +hi−1 )− (hi +1∗U i +1−hi−1∗U i −1 ).
2 2 dx
dU dU dh
- Para la ecuación de momento: +U + g + g (S f −S 0 )=0, despejando U ki +1,
dt dx dx
nos quedaría:

1 k dt g dt k g∗dt
Ui =
k +1
2
( U i +1+U i−1) −
k
4 dx
( ( U i+1 ) −( U i−1 ) )−
k 2 k 2

2 dx
( h i+1−h i−1 ) + g∗dt∗S 0−
k
2
(Sf i −1 + Sf i+1 )

; siendo estas dos ultimas versiones las ecuaciones de masa y momento


discretizadas y explicitas. Mientras mas robusto sea el método, se consideran mucho
más detalle en la codificación. Para el caso explicito, se debe tener en cuenta el
dx
número de courant, para la estabilidad, necesitando que: dt ≤ , donde ‘U’:
|U |+C
velocidad máxima y ‘C’ velocidad de onda, que para el caso del canal rectangular:

1
( )
C=(g∗h) 2 . Lo que se va a aprovechar es la ‘U’ máxima para construir nuestra
implementación.
−Para la codificación se necesita una condición a la izquierda (i-1) y a la derecha (i+1) en
dirección de la velocidad ‘U’, es decir de derecha a izquierda, es decir condiciones aguas
arriba y aguas abajo, necesitando además una distribución inicial para el tirante ‘h’ y
velocidad ‘U’.

PROGRAMANDO EN OCTAVE:

EDITOR:

function %Solucion Saint Venant 1D con diferencias


[U,h,x,t]=canal(m,U0,AA,h0,hA,S0,Sf,X,T) finitas
%Metodo explicito
%U: velocidad, h: tirante de agua, x: nodos en
el eje ‘x’, t: nodos en el eje’t’, m: numero de
intervalos en el eje ‘x’, U0: distribución inicial
de velocidades, AA: condición inicial aguas
arriba, h0: tirante inicial, hA: tirante aguas
arriba, Sf: pendiente del fondo, S0: fricción,
X:longitud del canal, T: tiempo en el tramo ‘X’
de recorrido.
dx=X/m; %Tamaño de paso
g=9.81; %Gravedad.
Umax=100;Hmax=20; %Umax: seguridad. Para poner una cota.
c=sqrt(g*Hmax); %Velocidad de la onda.
dt=dx/(abs(Umax)+c)/2; dx
%dt ≤ , dt relacionada con la
|U |+C
velocidad de onda. Por seguridad se divide
entre ‘2’, para que ‘dt’ sea estrictamente
menor.
x=linspace(0,X,m+1); %x: nodos en el eje ‘x’, t: nodos en el eje’t’
t=0:dt:T; %t: nodos en el eje’t’
U=zeros(length(t),m+1); %Inicializamos las variables. Numero de filas
es igual a tantas como halla en’t’.
h=zeros(length(t),m+1); % Numero de filas es igual a tantas como
halla en ’t’. Se evalúa en un arreglo del
mismo tamaño que el anterior.
U(1,:)=U0(x); % Se inicia el llenado. Toda la primera fila que
corresponde al tiempo ‘0’ .
h(1,:)=h0(x); % Se inicia el llenado. Toda la primera fila que
corresponde al tiempo ‘0’ .
U(2:end,1)=AA(t(2:end)); %Condición de frontera, llenado de filas
desde la ‘2’ hasta la ultima en la primera
columna.
U(2:end,m+1)=AA(t(2:end)); %Condición de frontera, llenado de filas
desde la ‘2’ hasta la última, en la última
columna.
h(2:end,1)=hA(t(2:end)); %Condición de frontera, llenado de filas
desde la ‘2’ hasta la última en la primera
columna.
h(2:end,m+1)=hA(t(2:end)); %Condición de frontera, llenado de filas
desde la ‘2’ hasta la última, en la última
columna.
for k=1:length(t)-1 %llenado del interior de la matriz.
%Primer ciclo for, que se mueve desde el ‘1’
hasta el penúltimo nivel de ‘t’, recorriendo
los niveles de tiempo.
for i=2:m % Recorrido a lo largo del eje del canal,
segundo ciclo for, desde 2 hasta m, extremos
de los nodos interiores.
h(k+1,i)=1/2*(h(k,i-1)+h(k,i+1))-dt/2/ % Discretización de la ecuación de masa, de
dx*(h(k,i+1)*U(k,i+1)-... forma explícita.
h(k,i-1)*U(k,i-1)); % Continua y termina ecuación de la línea
anterior.
U(k+1,i)=1/2*(U(k,i-1)+U(k,i+1))-dt/4/ % Discretización de la ecuación de momento,
dx*(U(k,i+1)^2-U(k,i-1)^2)-... de forma explícita.
g*dt/2/dx*(h(k,i+1)-h(k,i-1))+g*dt*S0-g*dt/ % Continua y termina ecuación de la línea
2*(Sf(i-1)+Sf(i+1)); anterior.
end
end
end
COMAND WINDOW:

>> t=(0:3:90)*60; (% Tiempo de ‘0’ a ‘90’ minutos, multiplicado por 60, para expresarse en
segundos)

>> h0=.5+.1*sin(6*pi*t/5400) (Nuestro vector ‘t’ genera 31 puntos por lo tanto se necesitan 31
condiciones.)

>> hA=@(T) spline(t,h0,T) (%Condición aguas arriba)

hA =

@(T) spline (t, h0, T)

>> hinicial=@(x) 0.5*ones(size(x)) (%Condición aguas arriba, como va a estar el tirante a la


entrada, es una condición de entrada.)

hinicial =

@(x) 0.5 * ones (size (x))

>> AA=@(T) 0.2*ones(size(T)) (% Relacionado los valores de ‘t’ para la velocidad de entrada)

AA =

@(T) 0.2 * ones (size (T))

>> U0=@(x) 0.2*ones(size(x)) (% Velocidad de entrada. Como va a ir modificando el tirante a lo


largo del canal.)

U0 =

@(x) 0.2 * ones (size (x))

>> S0=0.01;

>> Sf=@(x) 0.001*ones(size(x));

>> [U,h,x,t]=canal(50,U0,AA,hinicial,hA,S0,Sf,9000,5400);

>> surf(x,t,U)

>> xlabel('x');ylabel('y');zlabel('U')
- La velocidad es bastante alta.
>> surf(x,t,h)

>> xlabel('x');ylabel('y');zlabel('h')
>> figure
>> plot(t,h(:,26))

>> axis equal

También podría gustarte