Escolar Documentos
Profissional Documentos
Cultura Documentos
Rui M. L. Ferreira
Resumo
As curvas de regolfo traduzem o andamento da superfı́cie livre em canais que trans-
portam caudal constante. O seu cálculo requer a resolução de uma equação diferencial
ordinária de 1a ordem sujeita a uma condição de fronteira. O cálculo é necessariamente
numérico e pode ser levado a cabo por diversos métodos. Neste texto apresenta-se uma
breve revisão de esquemas simples de diferenças finitas que permitem o cálculo expedito
de curvas de regolfo em canais prismáticos de secção rectangular. Mostra-se também
um exemplo de cálculo, a curva de regolfo do tipo F2 .
1
Ê
ϕ : \{hc } → Ê I−J(h)
tal que ϕ(h) = 1−F 2
r (h)
não é definida nos pontos de escoamento crı́tico,
h = hc , i.e. em todos os valores de x tais que Fr (h(x)) = 1.
Assim, o comprimento L deve ser escolhido por forma a que não occorram descontinui-
dades em h ou pontos de escoamento crı́tico. Nestas condições, pode mostrar-se que se se
impuser Fr (h(0)) > 1 então Fr (h(x)) > 1 em x ∈ [0, L] (regime rápido em todo o trecho).
Do mesmo modo, se Fr (h(L)) < 1 então Fr (h(x)) < 1 em x ∈ [0, L] (regime lento em todo o
trecho).
O problema de valores na fronteira representado por (1) e (2) pode ser transformado num
problema de valores iniciais orientando
√ o eixo dos xx de acordo com o sentido da velocidade
das pequenas perturbações, √ gh, relativamente à velocidade média da corrente, U . Assim,
se Fr (h(x)) > 1 tem-se U > gh — o escoamento é controlado por montante√ — e o eixo dos
xx deve orientar-se segundo o escoamento. Se Fr (h(x)) < 1, U < gh — o escoamento é
controlado por jusante — e o eixo dos xx deve orientar-se contra o escoamento. A equação
(1) transforma-se em
dh I − J(h)
=σ (3)
dx 1 − Fr2 (h)
em que o parâmetro σ é +1 quando o regime do escoamento é rápido e −1 quando é lento.
A condição de fronteira (2) transforma-se na condição inicial
h(0) = hmontante se o escoamento é rápido
(4)
h(0) = hjusante se o escoamento é lento
Fr2 (h) ∂S
dh I − J(h) + B(h) ∂x h=cte
=σ (9)
dx 1 − Fr2 (h)
2
em que B(h) = dS dh é a largura superficial do escoamento.
As condições de fronteira para as equações (5) e (6) obtêm-se a partir de (2) por aplicação
de (7) e (8). Para a resolução da equação (9) a condição de fronteira é a equação (2).
A equação (6) é válida em escoamentos que apresentam singularidades em que a energia
não se conserva, nomeadamente ressaltos hidráulicos, o que não acontace com as equações
(5) e (9). Note-se, todavia, que, se o regime de escoamento mudar na descontinuidade, a
resolução da equação (6) é em tudo igual à resolução da equação (5): serão integradas de
montante para jusante, entre uma secção de controlo do escoamento e a descontinuidade, se
o regime for rápido, e a partir de jusante até à descontinuidade, se o regime for lento. De
facto, é o sentido fı́sico de propagação de informação no meio lı́quido que impõe a localização
das condições iniciais e a direcção de resolução da equação.
Notar ainda que, se se optar por integrar as equações (5) ou (6), é necessário calcular a
Å
função h(x) em função de H(x) ou de (x) resolvendo as equações (7) ou (7), respetivamente.
hi º h(xi)
dh hi+1 º h(xi+1)
dx xm
xi xm xi+1
3
2.2 Aproximação de primeira ordem
Como a função h(x) não é conhecida, não é possı́vel estimar o valor da abcissa xm . Assim,
a derivada dh
dx xm terá que ser estimada, processo que envolve uma aproximação e, portanto,
um erro numérico.
Recorrendo a uma discretização por diferenças finitas, a aproximação mais simples para
a derivada dh dh
dx xm é dx xi , ou seja a derivada da altura do escoamento na secção cuja abcissa
é xi . Nesse caso, (11) transforma-se em
dh
hi+1 = hi + Δx + ε1 (12)
dx xi
em que ε1 é o erro cometido na aproximação.
Expandindo a função h(x) em série de Taylor
em torno de xi verifica-se que ε1 = O Δx2 . Diz-se que o esquema numérico representado
por (12) é de 1a ordem porque o erro na diferenciação é da ordem de grandeza de Δx.
Com efeito, re-ordenando os termos de (12), obtém-se
hi+1 − hi dh 1
= + O Δx2
Δx dx xi Δx
dh hi+1 − hi
= + O (Δx) (13)
dx xi Δx
A construção geométrica correspondente à equação representada por (12) pode observar-
se na Figura 2.
hi
dh
dx ü
xi ï
ï
ý e1
ï
ïþ
hi +1
xi xi+1
4
1 æ dh dh ö
ç + ÷
2 çè dx xi dx ÷
xi +1 ø
hi
dh
ü dh
dx ý e2
xi þ
hi +1 dx xi +1
xi xi+1
dh
demonstração desta afirmação encontra-se no Anexo A. Assim, substituindo, em (11),
dx xm
pela média aritmética de dh dh
dx xi e dx xi+1 obtém-se
Δx dh dh
hi+1 = hi + + + ε2 (15)
2 dx xi dx xi+1
em que ε2 = O Δx3 .
A construção gráfica correspondente à equação (15) pode observar-se na Figura 3.
O esquema de 2a ordem resultante, chamado esquema centrado, é
Δx I − J(hi ) I − J(hi+1 )
hi+1 = hi + σ + (16)
2 1 − Fr2 (hi ) 1 − Fr2 (hi+1 )
Devido à não linearidade das funções J(hi+1 ) e F r(hi+1 ), a equação (16) é implı́cita, i.e.,
não tem resolução explı́cita para hi+1 .
Para calcular o valor de hi+1 , a raiz adequada da equação (16) deve ser calculada nume-
ricamente, por exemplo pelo método de Newton. No Anexo B mostra-se como se pode obter,
por aquele método, a raiz apropriada de (16).
5
1 æç dh
~
dh ö
+ ÷
2 ç dx xi dx ÷
hi è xi +1 ø
dh
dx ü~
xi ý e2
þ
~ hi +1
dh
~
dx hi +1
xi +1
xi xi+1
Figura 4: Aproximação de segunda ordem. Esquema de Euler modificado.
em que
hi+1 é calculado por (17).
Q2 Δx Δx
hi+1 + −σ (Ii+1 − J(hi+1 )) = Hi + σ (Ii − J(hi )) (21)
2gS 2 (hi+1 ) 2 2
A equação (21) é uma equação algébrica não linear com que admite três raı́zes distintas,
duas das quais correspondem às soluções de regime rápido e de regime lento. No Anexo C
mostra-se o procedimento algorı́tmico a adoptar para obter estas raı́zes.
A discretização e os passos a empreender para calcular a curva de regolfo por intermédio
Å
da equação (6) são similares aos acima descritos. Deve substituir-se i+1 pela definição (8)
6
e a equação resultante deve ser resolvida numericamente em ordem à altura do escoamento,
procurando se a raı́z de rápido ou a raı́z de lento consoante o regime do escoamento.
Se se optar por resolver a equação (9), os esquemas descritos em 2.2, 2.3 ou 2.4 são
I−J(h)
de aplicação directa, tendo-se apenas que substituir a função ϕ(h) = 1−F 2 (h) por ϕ(h) =
r
F 2 (h)
∂x |h=cte
r ∂S
I−J(h)+ B(h)
1−Fr2 (h) .
dϕ
L −1 (22)
dh
7
105 105
Dx = 3 m Dx = 1 m
104 104
103 103
Cotas (m)
Cotas (m)
102 102
101 101
100 100
99 99
98 98
0 10 20 30 0 10 20 30
Distância (m) Distância (m)
105 105
Dx = 0,5 m Dx = 0,1 m
104 104
103 103
Cotas (m)
Cotas (m)
102 102
101 101
100 100
99 99
98 98
0 10 20 30 0 10 20 30
Distância (m) Distância (m)
8
4 4
Dx = 3 m Dx = 1 m
3 3
h (m)
h (m)
2 2
1 1
0 0
0 2.5 5 7.5 10 0 2.5 5 7.5 10
Distância (m) Distância (m)
4 4
Dx = 0,5 m Dx = 0,1 m
3 3
h (m)
h (m)
2 2
1 1
0
0
0 2.5 5 7.5 10
0 2.5 5 7.5 10
Distância (m) Distância (m)
Referências
[Qui80] Quintela, A. (1980). Hidráulica. 8a edição, Edições Calouste Gulbenkian, Lisboa.
[Manz79] Manzanares, A. (1980). Hidráulica Geral. Edições Associação dos Estudantes do
Instituto Superior Técnico, Lisboa.
[Asc95] Ascher, U. M., Mattheij, R. M. M. & Russell, R. D. (1995). Numerical solution
of boundary value problems for ordinary differential equations. Classics in Applied
Mathematics, Society for Industrial and Applied Mathematics.
9
Multiplicando (24) por −1 e adicionando a (25) obtém-se
hi+1 − hi = hi − hi+1 + Δx dh + Δx dh
+
dx xi dx xi+1
d2 h d2 h
3 (26)
dx2 − dx2
Δx
+ 2 + O Δx
xi xi+1
d2 h d2 h Δx d3 h d3 h
2 − 2 =− 3 + 3 + O Δx2
dx xi dx xi+1 2 dx xi+1 dx xi
d2 h d2 h
− = O (Δx) (29)
dx2 xi dx2 xi+1
Substituindo (29) em (26) obtém-se
dh dh Δx2
hi+1 − hi = hi − hi+1 + Δx + + O (Δx) + O Δx3
dx xi dx xi+1 2!
Δx dh dh
hi+1 = hi + + + O Δx3 (30)
2 dx xi dx xi+1
10
da equação (16). Deve escrever-se aquela equação da forma mais simples. Assim, as seguintes
manipulações são aconselhadas:
Δx I − J(hi ) I − J(hi+1 )
hi+1 = hi + σ +
2 1 − Fr2 (hi ) 1 − Fr2 (hi+1 )
Δx I − J(hi+1 ) Δx I − J(hi )
hi+1 − σ = hi + σ (32)
2 1 − Fr (hi+1 )
2 2 1 − Fr2 (hi )
I−J(hi )
Como as grandezas na secção xi são conhecidas, o conjunto hi + σ Δx 2 1−Fr2 (hi ) é uma
constante numérica para os efeitos do cálculo das raı́zes de (32). Assim, esta fica
Δx I − J(hi+1 )
hi+1 − σ −C =0
2 1 − Fr2 (hi+1 )
Δx
(hi+1 − C) 1 − Fr2 (hi+1 ) − σ (I − J(hi+1 )) = 0 (33)
2
Simplificando a notação, seja hi+1 ≡ h. Procurar-se-ão as raı́zes da equação
Δx
F (h) = 0 ⇔ (h − C) 1 − Fr2 (h) − σ (I − J(h)) = 0 (34)
2
A estrutura algorı́tmica do método de Newton é
−1
k+1
dh
h = h − F hk
k
(35)
dx hk
É necessário determinar a derivada de F (h). É fácil verificar que
dF d Δx
= (h − C) 1 − Fr2 (h) − σ (I − J(h)) =
dh dh 2
d Δx d
= (h − C) 1 − Fr2 (h) − σ (I − J(h)) =
dh 2 dh
d 2 Δx dJ
= 1 − Fr2 (h) − (h − C) F +σ (36)
dh r 2 dh
As derivadas do número de Froude e da perda de carga unitária são, respectivamente
d 2 d Q2 B dB 1 B
Fr = = F 2
r − 3 (37)
dh dh gS 3 dh B S
e
2
dJ d Q 4 1 dP 10 B
= =J − (38)
dh dh KSR 3
2
3 P dh 3 S
Introduzindo (37) e (38) em (36) obtém-se
dF dB 1 B Δx 4 1 dP 10 B
= 1 − Fr (h) − (h − C) Fr
2 2
−3 +σ J − (39)
dh dh B S 2 3 P dh 3 S
Introduzindo (39) e a definição de F (h) (ver equação 34) em (35) obtém-se
hk+1⎛= hk − hk − C 1 − Fr 2 k
(h ) − σ Δx 2 I − J(h
k
⎞ ) /
B(hk )
(1−Fr2 (hk ))−(hk −C )Fr2 (hk ) dBdh |hk B(hk ) −3 S(hk )
1
+
⎝ ⎠ (40)
k
2 J(h ) 3 P (hk ) dh |hk − 3 S(hk )
k B(h )
+σ Δx 4 1 dP 10
11
Para calcular a raiz correcta da equação (16), o valor inicial para o cálculo numérico
representado pela equação (40) é h0 = hi (altura do escoamento na secção anterior) ou h0 =
heq.18
i+1 (altura do escoamento na própria secção calculada pelo algoritmo Euler modificado).
A equação (40) deve ser aplicada recursivamente até que h k+1 k
− h < ξ em que ξ é um
erro previamente estipulado (por exemplo ξ = 10−6 m).
No final do cálculo da raiz da equação (16) tem-se hi+1 ≡ hk+1 .
Q2 Δx
hi+1 + −σ (Ii+1 − J(hi+1 )) = Ci . (41)
2gS 2 (hi+1 ) 2
A raı́z correspondente ao regime rápido pode ser obtida se se resolver a equação (41) em
ordem à secção do escoamento, S(hi+1 ):
Q2 1
S(hi+1 ) = (42)
2g Ci − hi+1 + σ Δx
2 (Ii+1 − J(hi+1 ))
A raı́z correspondente ao regime lento obtém-se resolvendo a equação (41) em ordem a hi+1 :
Q2 Δx
hi+1 = − +σ (Ii+1 − J(hi+1 )) + Ci . (43)
2gS 2 (h i+1 ) 2
O valor inicial deve estar de acordo com o tipo de raı́z que se pretende calcular em
cada um dos algoritmos (43) e (42). Assim, em regime lento, deve ter-se h0 > hcrit e, em
regime rápido, é necessário que h0 < hcrit em que hcrit é a altura do
escoamento crı́tico. Os
algoritmos devem ser aplicados recursivamente até que hk+1 − hk < ξ em que ξ é um erro
previamente estipulado (por exemplo ξ = 10−6 m). No final do cálculo da raiz da equação
(21) tem-se hi+1 ≡ hk+1 .
Sub Regolfo_F()
Dim Q As Double
Dim L, I As Double
Dim Be, Br, m As Double
Dim Dx As Double
Dim h(50000), d(50000) As Double
12
Dim h1 As Double
Dim SumDx As Double
Dim j As Integer
Dim Ks As Double
Dim S, P, R, B, S_p, P_p, R_p, B_p, S_j, P_j, R_j, B_j, S0, P0, R0, B0
As Double
Dim dPdh0, dBdh0 As Double
Dim Sf, Fr, Sf_p, Fr_p, Sf_j, Fr_j, Sf0, Fr0 As Double
Dim d0, dd As Double
Dim F, dFdh As Double
Dim k As Integer
Q = Sheets("Sheet1").Cells(3, 5)
I = Sheets("Sheet1").Cells(4, 5)
L = Sheets("Sheet1").Cells(5, 5)
Br = Sheets("Sheet1").Cells(6, 5)
m = Sheets("Sheet1").Cells(7, 5)
Be = Sheets("Sheet1").Cells(8, 5)
Ks = Sheets("Sheet1").Cells(9, 5)
Dx = Sheets("Sheet1").Cells(10, 5)
h1 = Sheets("Sheet1").Cells(12, 5)
Sheets("Sheet1").Cells(15, 3) = "x(m)"
Sheets("Sheet1").Cells(15, 4) = "z(m)"
Sheets("Sheet1").Cells(15, 5) = "h(m),1aordem"
Sheets("Sheet1").Cells(15, 6) = "Y(m),1aordem"
Sheets("Sheet1").Cells(15, 7) = "h(m),2aordem(p-c)"
Sheets("Sheet1").Cells(15, 8) = "Y(m),2aordem(p-c)"
Sheets("Sheet1").Cells(15, 9) = "h(m),2aordem"
Sheets("Sheet1").Cells(15, 10) = "Y(m),2aordem"
Sheets("Sheet1").Cells(15 + j, 3) = SumDx
Sheets("Sheet1").Cells(15 + j, 4) = 100 - SumDx * I
Sheets("Sheet1").Cells(15 + j, 5) = h(j)
Sheets("Sheet1").Cells(15 + j, 6) = 100 - SumDx * I + h(j)
Sheets("Sheet1").Cells(15 + j, 7) = h(j)
Sheets("Sheet1").Cells(15 + j, 8) = 100 - (SumDx + Dx) * I + h(j)
Sheets("Sheet1").Cells(15 + j, 9) = d(j)
Sheets("Sheet1").Cells(15 + j, 10) = 100 - (SumDx + Dx) * I + d(j)
13
’ ciclo principal
’ esquema de 1a ordem...
S = Area(Br, h(j))
P = Per(Br, h(j))
R = RaioH(P, S)
B = Bsup(Br, h(j))
Sf = Jota(Q, S, R, Ks) ’isto é o J (perda de carga unitária)
Fr = Fr2(Q, S, B) ^ 0.5
Sheets("Sheet1").Cells(15 + j + 1, 7) = h(j + 1)
Sheets("Sheet1").Cells(15 + j + 1, 8) = 100 - (SumDx + Dx) * I + h(j + 1)
’ esquema de 2a ordem
14
’ método de Newton para o cálculo de d(j+1)
d0 = d0 + dd
k = k + 1
Wend
d(j + 1) = d0
Sheets("Sheet1").Cells(15 + j + 1, 9) = d(j + 1)
Sheets("Sheet1").Cells(15 + j + 1, 10) = 100 - (SumDx + Dx) * I
+ d(j + 1)
d(j) = d(j + 1)
’ actualizaç~
ao para o próximo passo de cálculo
SumDx = SumDx + Dx
j = j + 1
Wend
End Sub
15
Anexo E: Código em MatLab para o cálculo de uma curva
de regolfo num canal não prismático.
Apresenta-se um código, em MatLab, para a resolução da equação (21). Resolve-se esta
equação num canal de secção rectangular cuja largura do fundo alarga 5 m, ao longo de 200
m.
close all
clear all
clc
% discretizaç~
ao
% definiç~
ao da geometria: canal de secç~
ao trapezoidal com alargamento suave
% inicializaç~
ao
16
Q = 10; % m3s-1
K = 75; % m1/3s-1
S0 = 0.01; % -
zb(1:101) = 2 - S0.*x;
h_crit(1:101) = (Q^2./(9.8*b.^2)).^(1/3);
% condiç~
ao de fronteira de montante (valor inicial para a
%integraç~ao da eq. diferencial ordinária)
h(i+1) = calcula_prox_h_rapido(dx,h(i),Q,b(i),K,S0);
rapido = true;
else
rapido = false;
end
i = i + 1
end
S(1:101) = b .* h;
hg(1:101) = h/2;
Y(1:101) = h + zb;
u(1:101) = Q./S;
nome_fich = ’regolfo_out.res’;
file_1 = fopen(nome_fich,’wt’);
fprintf(file_1, ’Ficheiro %20s \n ’, nome_fich);
17
fprintf(file_1, ’contador \t distancia(m) \t z(m) \t Y(m) \t h(m) \t ...
u(m/s) \t H(m) \t M(N) \n’);
plot(A(2,:),A(3,:),’k’,A(2,:),A(4,:),’b’);
xlabel(’distancia (m)’,’Fontsize’,12,’Fontname’,’Times’),
ylabel(’Cotas do fundo e da superfı́cie livre (m)’,’Fontsize’,12,’Fontname’,’Times’),
set(gca,’xtick’,0:25:200,’Fontsize’,12,’Fontname’,’Times’),
set(gca,’ytick’,0:.5:3,’Fontsize’,12,’Fontname’,’Times’),
axis([0 200 0.0 3.0]);
plot(A(2,:),A(6,:),’k’);
xlabel(’distancia (m)’,’Fontsize’,12,’Fontname’,’Times’),
ylabel(’velocidade (m/s)’,’Fontsize’,12,’Fontname’,’Times’),
set(gca,’xtick’,0:25:200,’Fontsize’,12,’Fontname’,’Times’),
set(gca,’ytick’,0:.5:5,’Fontsize’,12,’Fontname’,’Times’),
axis([0 200 0.0 5.0]);
plot(A(2,:),A(5,:),’k’);
xlabel(’distancia (m)’,’Fontsize’,12,’Fontname’,’Times’),
ylabel(’profundidade do escoamento (m)’,’Fontsize’,12,’Fontname’,’Times’),
set(gca,’xtick’,0:25:200,’Fontsize’,12,’Fontname’,’Times’),
set(gca,’ytick’,0:.1:.5,’Fontsize’,12,’Fontname’,’Times’),
18
axis([0 200 0.0 .5]);
fim = 1
%%%%%%%%%%%%%%%%%%%%
function calcula_prox_h = funcao(dx,xhi,xQ,xb,xK,xS0)
% Function calcula_prox_h
% resolve a equaç~
ao implı́cita que resulta do esquema de segunda ordem
% baseado na energia especı́fica para a equaç~
ao do regolfo
% - canais rectangulares apenas
%
% Calling sequence:
% funcao(flow_depth_i,discharge,bed_width,K_strickler,bed_slope)
%
h_trial = xhi
erro = 99999
seccao = h_trial*xb
funcao_S = ( (xQ^2/(2*9.8))/(constante0 + constante1) )^.5
h_trial = funcao_S/xb
end
calcula_prox_h = h_trial
%%%%%%%%%%%%%%%%%%%%%%%%%%%
function Jota = funcao(xh,xQ,xb,xK,xS0)
% Function Jota
% calcula a perda de carga unitária
% - canais rectangulares apenas
%
% Calling sequence:
% funcao(discharge,bed_width,K_strickler,bed_slope)
%
xS = xb*xh
19
xR = xb*xh/(xb + 2*xh)
Jota = (xQ/(xK*xS*xR^(2/3)))^2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function calcula_hu = funcao(xQ,xb,xK,xS0)
% Function calcula_hu
% calcula a altura de um escoamento uniforme num canal de secç~
ao
% rectangular
%
% Calling sequence:
% funcao(discharge,bed_width,strickler_K,bed_slope)
%
h_trial(1:101) = xb./2
erro(1:101) = 99999
seccao = xb.*h_trial;
h_trial = seccao1./xb
end
calcula_hu = h_trial
20