Een stuwmeer is een natuurlijk of kunstmatig meer dat ontstaat doordat de loop van een rivier wordt onderbroken. Dat kan bijvoorbeeld gebeuren door een sneeuwlawine, ijsvorming of een aardverschuiving (natuurlijk stuwmeer), of door een stuwdam in de rivier te plaatsen die het water tegenhoudt (kunstmatig stuwmeer). Bij natuurlijke stuwmeren ontstaan er na verloop van tijd vaak breuken door de grote ophoping van water. Geologisch onderzoek heeft uitgewezen dat er zich op die manier meerdere gigantische overstromingen hebben voorgedaan sinds de laatste ijstijd. De bouw van een stuwdam heeft meestal als doel om groene energie op te wekken, waarbij het groot verval dat op deze manier ontstaat gebruikt wordt om een waterturbine aan te drijven die een elektrische generator laat draaien. In andere gevallen wordt een stuwmeer aangelegd als regulator en voorraad voor irrigatie of drinkwater.

Karibastuwdam
Het Karibameer is het grootste kunstmatige stuwmeer ter wereld, dat ontstaan is als gevolg van de bouw (1955-1959) van de Karibastuwdam in de Zambezi rivier, aan de grens van Zimbabwe en Zambia. Het meer ligt zo’n 385 kilometer stroomafwaarts van de Victoria watervallen, en heeft een lengte van 290 km en een maximale breedte van 32 km. De totale oppervlakte is 6000 km2.

Opgave

Als geologen een site voor de aanleg van een nieuw stuwmeer onderzoeken, dan maken ze in de eerste plaats een twee-dimensionaal profiel op van de hoogtes en laagtes in het landschap. Op basis hiervan kunnen ze de watercapaciteit van het stuwmeer berekenen. Als de bodem op de site voornamelijk bestaat uit grovere materialen (bijvoorbeeld zand en grind), dan moet ook rekening gehouden worden met de hoeveelheid water die in de bodem zal dringen.

Definieer een klasse Stuwmeer waarmee de watercapaciteit van een stuwmeer kan onderzocht worden op basis van een gegeven twee-dimensionaal profiel van het landschap. De objecten van deze klasse moeten minstens de volgende methoden hebben:

Voorbeeld

>>> profiel = [4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 5, 6, 5, 2, 2, 2, 3, 3, 3, 4, 5, 3, 2, 2]
>>> meer = Stuwmeer(profiel)
>>> print(meer)
                 #            
                ###       #   
#               ###      ##   
##              ###   ######  
####           ###############
######       #################
>>> meer.vullen()
63
>>> print(meer)
                 #            
                ###~~~~~~~#   
#~~~~~~~~~~~~~~~###~~~~~~##   
##~~~~~~~~~~~~~~###~~~######  
####~~~~~~~~~~~###############
######~~~~~~~#################
>>> meer.lozen()
63
>>> print(meer)
                 #            
                ###       #   
#               ###      ##   
##              ###   ######  
####           ###############
######       #################
>>> meer.vullen()
63
>>> print(meer)
                 #            
                ###~~~~~~~#   
#~~~~~~~~~~~~~~~###~~~~~~##   
##~~~~~~~~~~~~~~###~~~######  
####~~~~~~~~~~~###############
######~~~~~~~#################
>>> meer.infiltreren()
47
>>> print(meer)
                 #            
                ###~~~~~~~#   
#               ###~~~~~~##   
##              ###~~~######  
####           ###############
######       #################
>>> meer.vullen()
47
>>> print(meer)
                 #            
                ###~~~~~~~#   
#~~~~~~~~~~~~~~~###~~~~~~##   
##~~~~~~~~~~~~~~###~~~######  
####~~~~~~~~~~~###############
######~~~~~~~#################
>>> meer.lozen()
63
>>> print(meer)
                 #            
                ###       #   
#               ###      ##   
##              ###   ######  
####           ###############
######       #################