2 november 212 Miniprojekt 1 (4) Institutionen för informationsteknologi Beräkningsvetenskap Besöksadress: MIC hus 2, Polacksbacken Lägerhyddvägen 2 Postadress: Box 337 751 5 Uppsala Telefon: 18 471 (växel) Telefax: 18 51 19 25 Hemsida: http://www.it.uu.se Department of Information Technology Scientific Computing Visiting address: MIC bldg 2, Polacksbacken Lägerhyddvägen 2 Postal address: Box 337 SE-751 5 Uppsala SWEDEN Telephone: +46 18 471 (switch) Telefax: +46 18 51 19 25 Web page: http://www.it.uu.se Beräkningsvetenskap I Beräkningsvetenskap DV Miniprojekt: Vattenledningsnätet i Lutorp 1 Du har blivit engagerad för ett konsultuppdrag åt Gaussby kommun. Kommunen planerar att bygga ett nytt stort bostadsområde i Lutorp. Ditt uppdrag gäller beräkningar av tryckförhållanden i vattenledningsnätet i Lutorp. Del 1 Före den planerade utbyggnaden består Lutorp av ett fåtal bostäder. De är anslutna till en egen del av det kommunala vattenledningsnätet. Hos Tekniska kontoret i Gaussby kommun finns en schematisk skiss över det lokala vattenledningsnätet i Lutorp före utbyggnaden. (Se bilaga. Beteckningarna i figuren förklaras nedan.) Knutpunkterna i nätet är numrerade med heltal: 1, 2, 3, 4. Tekniska kontoret vill att du till att börja med ska beräkna trycket i dessa knutpunkter. De sökta tryckvärdena betecknas med p 1, p 2, p 3, respektive p 4. Trycket anges som skillnaden mellan vattentrycket och det omgivande atmosfäriska trycket. I beräkningarna används därför en skala där det atmosfäriska trycket sätts till. För beräkningen av trycket används följande samband: 1. För rörledning nummer j kan vattenflödeshastigheten Q j (i m 3 /s) uttryckas: Q j = kl (p in p ut ). (1) Beteckningar: 1/k är det hydrauliska motståndet i den aktuella rörledningen, så k är inversen av det hydrauliska motståndet; L är rörledningens längd; p in är trycket vid inloppet till rörledningen och p ut är trycket vid utloppet från samma rörledning. Det inversa motståndet mäts i m 2 /(bar s), trycket i bar och längden i meter. 2. Summan av flödena in till en knutpunkt är lika med summan av flödena ut från samma knutpunkt. Tekniska kontoret tillhandahåller en tabell över värdena på k och L för de rörledningar som ingår i Lutorps vattenledningsnät före utbyggnaden: rör k L rör k L rör k L 1.1 2 2.5 1 3.5 14 4.5 1 5.5 1 6.2 8 7.2 8 8.2 8 9.5 1 1.2 8 Vidare är trycket i vattenreservoaren 1 bar och trycket p vid avtappningsställena cirka bar. 1 Del 1 baseras på Problem 5.1 i A. Quarteroni & F. Saleri, Scientific Computing with MATLAB, Springer-Verlag Berlin Heidelberg, 23
2 (4) Samband 2 ovan ger följande ekvationer för de fyra knutpunkterna i Lutorps befintliga vattenledningsnät (se bifogad figur): Punkt 1 : Q 1 = Q 2 + Q 3 + Q 4 Punkt 2 : Q 2 = Q 9 + Q 1 Punkt 3 : Q 4 = Q 5 + Q 6 Punkt 4 : Q 3 + Q 5 + Q 9 = Q 7 + Q 8 Genom att i dessa ekvationer sätta in sambandet (1) och mätvärdena från Tekniska kontoret, får vi efter förenkling följande system av fyra ekvationer för de fyra sökta tryckvärdena p 1, p 2, p 3, p 4 : 3.7.5.5.7.5 1.16.5.5 1.16.5.7.5.5 2.2 p 1 p 2 p 3 p 4 = 2 Skriv i Matlab ett program som ställer upp detta system, löser det med Matlabs inbyggda backslash -operator samt skriver ut lösningen. Utskriften ska vara sådan att dina uppdragsgivare på Tekniska kontoret förstår den utan att du behöver ge någon kompletterande, muntlig information. (Kom ihåg att när du så småningom ska implementera programmet ska det skrivas in i en.m-fil) Del 2 När den planerade utbyggnaden av Lutorp genomförs kommer antalet bostäder i området att bli mer än tusen gånger större och det behövs en motsvarande utbyggnad av vattenledningsnätet. Ingenjörerna på Tekniska kontoret har tillgång till ett ritprogram med vars hjälp de kan skissa olika alternativ för utbyggnaden. När skissen är klar genererar ritprogrammet en fil som innehåller koefficientmatrisen i det motsvarande ekvationssystemet för tryckberäkning. Dessutom innehåller filen k- och L-värdena för rör nummer 1, det rör som är anslutet till vattenreservoaren. Ritprogrammet använder Matlab-kommandot save för att spara data till filen. De filer som save skapar kallas för.mat-filer. Du ska nu modifiera ditt program för tryckberäkning så att det använder sig av de filer som genererats av ritprogrammet. Du ska alltså skriva ett program som läser in en fil (med Matlab-kommandot load), ställer upp ekvationssystemets högerled, löser ekvationssystemet, samt sparar resultatet i en annan.mat-fil (med Matlab-kommandot save). Se nedan för kort beskrivning av save och load. Alla ekvationer utom den första har i högerledet. Värdet i första ekvationens högerled är klp r, där k- och L-värdena avser rör nummer 1 och p r är vattentrycket i reservoaren. Värdet p r ska matas in av användaren när programmet körs. I utdatafilen ska du spara lösningsvektorn, inga andra data. Ditt modifierade program ska kunna användas av personal på Tekniska kontoret. När programmet körs ska användaren få mata in namnet på den.mat-fil där ekvationssystemet för det planerade vattenledningsnätet finns lagrat. Vidare ska användaren få välja namn på den.mat-fil där resultatet ska sparas. Slutligen ska användaren kunna välja att även få se en plot över resultatet, där man på x-axeln ska se knutpunkternas nummer och i y-led de beräknade tryckvärdena.
3 (4) Om namnet på indatafilen är lagrat som en textsträng i variabeln namnin, så kan filen läsas genom kommandot load(namnin). Om namnet på utdatafilen är lagrat som en textsträng i variabeln namnut och lösningsvektorn är lagrad i variabeln p, så innebär kommandot save(namnut, p ) att lösningsvektorn sparas i utdatafilen. Suffixet.MAT är underförstått vid anrop av save och load och behöver därför inte ingå i de textsträngar som innehåller filnamnen. Se Matlabs hjälpfönster för en utförlig beskrivning av olika sätt att anropa dessa två kommandon. När programmet är färdigt ska du testköra det och förvissa dig om att det fungerar som avsett. Via kurshemsidan kan du hämta filerna lutorp2x2.mat, lutorp5x5.mat och lutorp8x8.mat. Den första av dessa innehåller koefficientmatrisen för det befintliga vattenledningsnätet, med fyra knutpunkter, det vill säga samma koefficientmatris som i Del 1. De två övriga filerna innehåller koefficientmatriser för två alternativa utbyggnader av vattenledningsnätet, med 25 respektive 64 knutpunkter. Du använde ovan kommandot plot för att plotta trycket. En mer illustrativ figur kan man få genom att plotta trycket som en funktion av knutpunkternas position. Vattenledningsnäten är utformade som kartesiska nät av knutpunkter. Du kan därför använda dig av plot-kommandot surf. Förutom koefficientmatris och k- och L-värden innehåller varje.mat-fil matriser X och Y med x- och y- koordinater för knutpunkterna som kan användas som input till surf. Du behöver forma om lösningsvektorn med trycket till en matris med samma storlek som X och Y så att den kan användas som input till surf tillsammans med X och Y. Detta kan åstadkommas med hjälp av kommandot reshape. Del 3 Tekniska kontoret vill bland annat undersöka hur trycket i vattenreservoaren påverkar trycknivåerna i vattenledningsnätet. Därför vill man för ett och samma vattenledningsnät kunna göra upprepade beräkningar, för olika värden på trycket i vattenreservoaren. Nu ska du ändra programmet från Del 2, så att detta blir möjligt. När ekvationssystemet har lösts och resultatet har presenterats, så ska användaren ges möjlighet att i samma körning mata in ett nytt p r -värde, se lösningen till det nya systemet, mata in ytterligare ett p r -värde, etc. Detta upprepas tills användaren väljer att inte mata in ytterligare värden. Du ska föreslå ett effektivt sätt att utföra de upprepade beräkningarna (motivera!), så att resultaten från tidigare beräkningar så långt som möjligt återanvänds när ett nytt p r -värde behandlas. Genomför de motsvarande ändringarna i programmet från Del 2. Använd lutorp5x5.mat och lutorp8x8.mat som testfall. Du kommer att finna att det skulle bli alldeles för lågt tryck i det utbyggda vatttenledningsnätet om utbyggnaden skulle göras enligt de alternativ som motsvaras av filerna lutorp5x5.mat och lutorp8x8.mat. Skulle det gå bättre om man ansluter ytterligare några vattenreservoarer till nätet? Via kurshemsidan hittar du filerna lutorp5x5_8.mat och lutorp8x8_8.mat. De motsvarar en utbyggnad där ytterligare sju vattenreservoarer har anslutits till vattenledningsnätet. Inflödesrören från de nya reservoarerna har samma egenskaper som röret till den ursprungliga reservoaren. Du ska nu modifiera ditt program så att det kan hantera utbyggnaden. Användaren av ditt program skall ges möjlighet
4 (4) att sätta trycket i var och en av de åtta vattenreservoarerna. Raderna i koefficientmatrisen har ordnats på sådant sätt att de åtta ekvationerna för knutpunkterna med anslutna vattenreservoarer kommer först. Det betyder att om användaren matar in ett värde p (i) för trycket i reservoar nr. i så skall ekvation nr. i ha värdet klp (i) i högerledet. Precis som ovan så ska upprepade beräkningar med nya värden på p (i), i = 1, 2,..., 8 utföras på ett effektivt sätt. Använd data från filerna lutorp5x5_8.mat respektive lutorp8x8_8.mat för att beräkna trycket under de nya förutsättningarna. Undersök hur trycket i nätet beror på trycket i de åtta vattenreservoarerna. Vilken skillnad i tryck blir det jämfört med fallet med bara en vattenreservoar? Del 4 (inte obligatorisk) Om du är van programmerare kan du nu gå vidare och lägga in tidtagning i programmet med Matlab-kommandot cputime. Mät dels hur lång tid det tar att lösa det första ekvationssystemet, dels hur lång tid det tar att lösa de efterföljande systemen, där du bara har ändrat tryck-värdena p (i), i = 1, 2,..., 8 för de åtta vattenreservoarerna. Gaussby kommun tackar för dina insatser!
p= Q 1 Q 2 2 Q 9 Q 8 p= Q 1 1 4 Q 3 p= Q 4 3 Q 7 Q 5 p= Q 6 Schematisk skiss av vattenledningsnätet i Lutorp före den planerade utbyggnaden