Staudamm: Überflutung bestimmen mit Hilfe der Integralrechnung
Integrative Staudammüberflutung
(A1) Modellierungsthema
[Bearbeiten]Der Nangbeto-Staudamm staut den Mono, den größten Fluss des westafrikanischen Staates Togo.Der Stausee liegt bei Atakpame nahe der Grenze zu Benin. Der Damm ist ein Partnerprojekt zur Bewässerung und zur Erzeugung von Strom aus Wasserkraft zwischen Togo und dem benachbarten Staat Benin und wurde 1987 fertiggestellt. Jährlich liefert das Wasserkraftwerk zwischen 230 Millionen kWh und (1991) 150 Millionen kWh. Die Errichtung erfolgte hauptsächlich durch das deutsche Bauunternehmen Hochtief AG, die Finanzierung des 110 Millionen DM teuren Vorhabens erfolgte größtenteils durch Kredite unter anderem durch die Kreditanstalt für Wiederaufbau, der Weltbank, des Afrikanischen Entwicklungsfonds und auch aus Entwicklungshilfe.
Einige Faktoren/ Daten müssen dabei beachtet/ eingeholt werden:
[Bearbeiten](vereinfachte Darstellung)
- Niederschlagswerte
- Größe (H,L,B) des Staudamms
- Volumen des Stausees
- Koordinaten des Stausees in geographischen Längen und Breite
- Höhe über dem Meeresspiegel
Ziel
[Bearbeiten]Der Staudamm wurde aus einen nützlichen Zweck gebaut (Bewässerung und Erzeugung von Strom aus Wasserkraft zwischen Togo und Benin). Nun möchte ich untersuchen, wie viel Regenwasser fallen muss, bis der Stauinhalt überfüllt ist und der Stausee über den Staudamm fließt um die Dörfer überflutet. Weiterhin möchte ich bestimmen, wie lange dieser Vorgang dauern würde.
(A3) Niveauzuordnung
[Bearbeiten]Sekundarstufe 1
[Bearbeiten]- Geometrie (Geraden)
- Zahlenbereicherweiterung (leichte Aufgaben wie: 1168/12)
Sekundarstufe 2
[Bearbeiten]- Excel (Extrapolieren)
- Lineare Algebra (Matrizen,Vetoren)
- Analysis (Intervalle)
Universität
[Bearbeiten]- Matlab (Plotten)
(A2) Modellierungszyklen
[Bearbeiten]Zyklus 1
[Bearbeiten]Für unseren ersten Plot verwenden wir die Software MATLAB, um später eine Abbildung zu erhalten.
Input eingeben
[Bearbeiten]In der Input-Eingabe werden die Voraussetzungen festgelegt.
Die Ausgangshöhe
- Ausgangshöhe h(1) in m
- h in m
h(0)= 40
- t in Monate
t_step=1
t_max=12
h_step=0.1
(A6) Daten importieren
[Bearbeiten]Mit Hilfe eines Dozenten erhielten wir die geographische Daten (Längen- und Breitengrad) zu unserem Stausee.
Import_Data
Dies ist nur ein kleiner Ausschnitt von der ganzen Datei (Seite 1 von 1615). Diese Daten (x- und y- Werte) haben wir in der Software MATLAB importiert.
Als Kontrolle haben wir mit Hilfe von GoogleMaps die Eckpunkte der geographischen Daten ermittelt.
(A6) Rohdaten bearbeiten
[Bearbeiten]Dazu schauen wir uns die Rohdaten der geographischen Daten nochmal an (Längen- und Breitengrad). Nun definieren wir V_x als die erste Spalte der geographischen Daten, so wie V_y als die erste Zeile der geographischen Daten. M_z ist die Matrix der übrig gebliebenen Daten.
- l= tdd(2:end), 1)
M_z= tdd(2:end, 2:end-1)
- GPS- Koordinaten aus den Rohdaten
- V_y= tdd(1,2:end-1)
- V_x=tdd(2:end,1)
- V_x und V_y in m
V_x= linspace (0,31,39•1000,1024) V_y=linspace (0,20,78•1000,676) V_x=fliplr(V_x) red_face=10 V_x_red=V_x(1:red_fac:end) V_y_red=V_y(1:red_fac:end) M_z_red=M_z(1:red_fac:end,1:red_fac:end)
V_x= V_x_red V_y= V_y_red M_z= M_z_red
Surface Plot
[Bearbeiten]Aus den Vektoren V_x und V_y haben wir eine Matrix erstellt, sodass weitere Aufgaben mit Matrizen berechnet werden können.
[V_x,V_y]= meshgrid(V_x,V_y)
figure(1)
surf (V_x, V_y, M_z)
Des Weiteren haben wir die Farbgebung festgelegt (in 7 Stufen).
colormap (Parula(7))
cb=colorbar
zlab=get(cb,'ylabel')
set (zlab, 'string', 'Höhe/m')
caxis([0 250])
xlabel('x/m')
ylabel('y/m')
zlabel('z/m')
view(2)
2. Zyklus
[Bearbeiten]Niederschlagswerte berechnen
[Bearbeiten]Im unten angegeben Link sind die durchschnittliche Niederschlagswerte (1987/2017)in mm pro Jahr von Togo.
Der durchschnittliche Niederschlagswert liegt bei 1168 Liter pro Quadratmeter.
Da der Wert nur den jährlichen Niederschlag angibt, haben wir diesen Wert durch 12 dividiert. Somit erhalten wir einen Niederschlagswert pro Monat.
- r_regen=Togo Niederschlagswerte
- regen[mm/m2] : r_regen_mm
a=1168/12
r_regen_mm=[a,a,a,a,a,a,a,a,a,a,a,a]
- regen [m/m^2] : r_regen_mm
r_regen = r_regen_mm ./ 1000 ; r_regeng=[r_regen,r_regen,r_regen,r_regen,r_regen,r_regen,r_regen,r_regen,r_regen,r_regen];
Anschließend werden die Voraussetzungen für das Volumen des Regenwassers festgelegt.
- Regen volumen Wasser
V_regen = zeros(t_max,1); t=[1:1:120]; figure(2); plot(t,r_regeng);
- axis([0 0.0120 0 0.0120])
xlabel('t [Monate]') ; ylabel('Regen [m/m^2]'); grid minor;
Konstante berechnen
[Bearbeiten]- Verdunstungsformel
- Verdunstung: V_verdunstung_day [mm/day]
verdunstung_day = zeros(1,100*12);
- Verdunstung Volumen per month: V_verdunstung_day [m^3/month]
V_verdunstung = zeros(1,100*12);
- Temperatur Luft [C]
T_C = [20,20,20,20,20,20,20,20,20,20,20,20]; V_T_C = repmat(T_C,1,100)
- Empirische Monatsfaktoren: f_mon [mm/d]
f_mon = [0.22 0.22 0.22 0.29 0.29 0.28 0.26 0.25 0.23 0.22 0.22 0.22] V_f_mon = repmat(f_mon,1,100);
- Luftdruck: p_a [hPa]
p_a =0.01; for i =1:1:100*12
- Saettigungsdampfdruck der Luft: e_sat [hPa]
p_sat = 6.11*10^(7.48 * V_T_C(i)/(237+V_T_C(i))); verdunstung_day(i) = V_f_mon(i) *(p_sat - p_a);% kommt ein vektor raus end Verdunstung: V_verdunstung [m/month] verdunstung_month = verdunstung_day /1000;
3. Zyklus
[Bearbeiten]Berechnung der Oberfläche eines einzelnen Segments A_single
[Bearbeiten]x_max = 31.39*1000
y_max = 20.78*1000
n_x = length(V_x)
n_y = length(V_y)
l_x = x_max / n_x
l_y = y_max / n_y
A_single = l_x * l_y
Wasserpegel zum Ausgangszeitpunkt t(1)
[Bearbeiten]M_z1 = M_z
- Angabe Höhe h Wasser über Meeresspiegel [m]
h_wasser = zeros(t_max,1);
- min Höhe Boden
h_min_b = min(min(M_z1))
h_wasser(1) = h_min_b + h0
for i = 1:length(V_y)
for j =1:length(V_x) if M_z1(i,j) > h_wasser(1) M_z1(i,j) = h_wasser(1); end end end
- Berechnung Volumen Boden V_B1 unter der Höhe h_wasser
V_B1_matrix = M_z1 .* A_single
V_B1 = zeros(t_max,1) V_B1(1)= sum(sum(V_B1_matrix))
- Berechnung gesamtes Volumen V_G2 (Wasser + Boden) unter der Höhe
V_G2_matrix = h_wasser(1) * ones(length(V_y),length(V_x)) .* A_single
V_G2(1)= sum(sum(V_G2_matrix))
- Berechnung Volumen Wasser V_w
V_wasser = zeros(t_max,1) V_wasser(1) = V_G2(1) - V_B1(1)
- Berechnung Oberfläche Wasser A_wasser
A_wasser = zeros(t_max,1) n_Aw = 0 for i = 1:length(V_y) for j =1:length(V_x) if M_z(i,j) <= h_wasser(1) n_Aw = n_Aw +1 end end
end A_wasser(1) = n_Aw * A_single
Wasserpegel zu den weiteren Zeitpunkten t(:)
disp(['time: ', num2str(1), '[Monat]']) disp(['Volumen Wasser: ', num2str(V_wasser(1)), '[m^3]']) disp(['Ausgangshöhe Wasserpegel über Meeresspiegel: ', num2str(h_wasser(1)), '[m]']) for k = 2:t_step:t_max
t(k) = k; M_z1 = M_z;
- Bestimmung Volumen Wasser durch Regenfall
V_regen(k-1) = r_regeng(k-1) .* A_wasser(k-1);
- Bestimmung Volumen Wasser durch Verdunstung
V_verdunstung(k-1) = verdunstung_month(k-1) .* A_wasser(k-1);
- Bestimmung Wasser im Staussee
V_wasser(k) = V_wasser(k-1) + V_regen(k-1) - V_verdunstung(k-1);
- Iteratives Bestimmen des Wasserpegels
V_wasser_temp = V_wasser(k-1); h_temp = h_wasser(k-1);
isp(['time: ', num2str(k), '[Monate]']);
disp(['Volumen Wasser im Staussee: ', num2str(V_wasser(k)/1000000), '[Mio m^3]']); disp(['Volumen Regen: ', num2str(V_regen(k-1)/1000000), '[Mio m^3]']); disp(['Volumen verdunstetes Wasser: ', num2str(V_verdunstung(k-1)/1000000), '[Mio m^3]']); disp('Beginn Iteration: '); Iter_zaehler = 1; while V_wasser_temp < V_wasser(k) % disp(['time: ', num2str(k),' Iteration : ', num2str(Iter_zaehler) ]); h_temp = h_temp + h_step; M_z1 = M_z; for i = 1:length(V_y) for j =1:length(V_x) if M_z1(i,j) > h_temp M_z1(i,j) = h_temp; end end end
- Berechnung Volumen Boden V_B1 unter der Höhe h
V_B1_matrix_temp = M_z1 .* A_single; V_B1_temp= sum(sum(V_B1_matrix_temp));
- Berechnung gesamtes Volumen V_G2 (Wasser + Boden) unter der Höhe h
V_G2_matrix_temp = h_temp * ones(length(V_y),length(V_x)) .* A_single; V_G2_temp= sum(sum(V_G2_matrix_temp));
- Berechnung Volumen Wasser V_w
V_wasser_temp = V_G2_temp - V_B1_temp;
- disp(['Höhe Wasserpegel _temp: ', num2str(h_temp), '[m]']);
- disp(['Volumen Wasser _temp: ', num2str(V_wasser_temp), '[m^3]']);
Iter_zaehler = Iter_zaehler +1; n_Iterationen = Iter_zaehler; h_wasser(k) = h_temp;
- Bestimmung Oberfläche Wasser A_wasser über Zeit t
n_Aw = 0; for i = 1:length(V_y) for j =1:length(V_x) if M_z(i,j) <= h_wasser(k) n_Aw = n_Aw +1; end end end
A_wasser(k) = n_Aw * A_single; disp(['Anzahl Iterationen: ', num2str(n_Iterationen)]); disp(['Höhe Wasserpegel über Meeresspiegel: ', num2str(h_wasser(k)), '[m]']); disp(['Höhe Talsohle: ', num2str(h_wasser(k)-h_min_b), '[m]']);
- Plot Wasserstand zu jedem Zeitpunkt t
M_w1 = M_z; for i = 1:length(V_y) for j =1:length(V_x) if M_w1(i,j) > h_wasser(k) M_w1(i,j) = 9999; end end end figure(k); title(['time: ', num2str(k), '[Monate]']); surf(V_X,V_Y,M_w1) colormap(parula(7)); cb= colorbar;%('vert'); zlab = get(cb,'ylabel'); set(zlab,'String','Höhe /m'); caxis([0 500]); xlabel('x /m'); ylabel('y /m'); zlabel('Höhe /m'); view(2);
- Ausgabe werte
- Stauseetiefe h_wasser2 über t [m]
h_wasser2 = h_wasser - h_min_b;
- Volumen Wasser im Stausee über t[m^3]
V_wasser;
- Volumen regenfall über Stausee über t[m^3]
V_regen;
- Volumen verdunstung über Stausee über t[m^3]
V_verdunstung;
(A4) Zuordnung des Themas zu den Nachhaltigkeitszielen der Vereinten Nationen
[Bearbeiten]- SDG6: Clean Water and Sanitation
- SDG7: Affordable and Clean Energy
- SDG8: Decent Work and Economic Growth
- SDG10: Reduced Inequalities
- SDG13: Climate Action
- SDG17: Partnerships for the Goals
(A5) Literatur
[Bearbeiten]https://www.tu-braunschweig.de/Medien-DB/geooekologie/nachtrag-verdunstung.pdf
https://de.theglobaleconomy.com/Togo/precipitation/
https://en.wikiversity.org/wiki/Sustainable_Development_Goals
https://de.wikipedia.org/wiki/Nangbeto-Staudamm
die Verdunstung freier Wasseroberflächen; Ufo Naturwissenschaft Band 201; Atelier für Gestaltung und Verlag, 2000
Prof. Dr. M. Schöniger (TU Carolo Wilhelmina, Braunschweig) & Prof. Dr.-Ing. H. Wittenberg (FHNON, Suderburg), Hydrologie I (Nachtrag: Verdunstug)
https://www.google.de/maps/place/Nangbeto-Staudamm/@7.4236108,1.4315232,2887m/data=!3m2!1e3!4b1!4m5!3m4!1s0x1025c21ce9d18b43:0xdc8afb6f504f004a!8m2!3d7.423611!4d1.440278