Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # CT60A0200 Ohjelmoinnin perusteet 2011 ohjelmien otsikkotiedot.
- # Tekijä: Tuomas Kuusisto
- # Opiskelijanumero: 0387917
- # Päivämäärä: 9.12.2011
- # Yhteistyö:
- #Listat, luokat, muuttujat ja moduulit
- import math
- polttoaineet = []
- talot = []
- lampotilat = []
- class Polttoaine:
- pnimi = ""
- pteho = 0
- phinta = 0
- pkosteus = 0
- class Talo:
- tanimi = ""
- tleveys = 0 # m
- tsyvyys = 0 # m
- tslampo = 0 # °C
- teosuus = 0 # %
- pusyvyys = 0 # m
- pupituus = 0 # m
- putyyppi = ""
- Dp = 0 # m
- Di = 0 # m
- Ds = 0 # m
- E = 0 # m
- H = 0
- Rg = 0
- Ri = 0
- Rm = 0
- K1K2 = 0
- virta = 0
- havio = 0
- kokteho = 0
- class DN25:
- Dp = 0.0337 # m
- Di = 0.1181 # m
- Ds = 0.025 # m
- E = 0.275 # m
- class DN40:
- Dp = 0.0483 # m
- Di = 0.1331 # m
- Ds = 0.04 # m
- E = 0.29 # m
- class DN50:
- Dp = 0.0603 # m
- Di = 0.1531 # m
- Ds = 0.05 # m
- E = 0.31 # m
- class DN65:
- Dp = 0.0761 # m
- Di = 0.1749 # m
- Ds = 0.065 # m
- E = 0.33 # m
- class DN80:
- Dp = 0.0889 # m
- Di = 0.1923 # m
- Ds = 0.08 # m
- E = 0.35 # m
- llklattia = 0.16
- llkseina = 0.17
- llkkatto = 0.09
- llkikkuna = 1.0
- tkorkeus = 2.45
- ulampo = 0 # °C
- hgs = 13.5 # W/m^2, °C
- Gi = 0.03 # W/m^2, °C
- Gg = 2.3 # W/m^2, °C
- Tm = 85.0 # °C
- Tp = 55.0 # °C
- Tg = 5.0 # °C
- Cp = 4200.0 # J/kg
- p = 980.0 # kg/m^3
- #Aliohjelmat
- def valinta0():
- print("Kiitos käytöstä, tervetuloa uudestaan!")
- def valinta1():
- pnimi = input("Anna polttoaineen nimi: ")
- pteho = float(input("Anna tehollinen lämpöarvo (MJ/kg): "))
- phinta = float(input("Anna hinta (€/kg): "))
- pkosteus = float(input("Anna kosteusprosentti (-1 == ei käsitellä): "))
- polttoaine = Polttoaine()
- polttoaine.pnimi = pnimi
- polttoaine.pteho = pteho
- polttoaine.phinta = phinta
- polttoaine.pkosteus = pkosteus
- print("")
- return polttoaine
- def valinta2_1():
- tanimi = input("Anna talon nimi: ")
- tleveys = float(input("Anna talon leveys (m): "))
- tsyvyys = float(input("Anna talon syvyys (m): "))
- tslampo = float(input("Anna haluttu sisälämpötila (°C): "))
- teosuus = float(input("Anna huonetilojen lämmitykseen tarvittavan energian osuus koko talon energian tarpeesta (%): "))
- talo = Talo()
- talo.tanimi = tanimi
- talo.tleveys = tleveys
- talo.tsyvyys = tsyvyys
- talo.tslampo = tslampo
- talo.teosuus = teosuus
- return talo
- def valinta2_2():
- pusyvyys = float(input("Anna putken syvyys (m): "))
- pupituus = float(input("Anna putken pituus (m): "))
- talo = Talo()
- talo.pusyvyys = pusyvyys
- talo.pupituus = pupituus
- print("1 DN25")
- print("2 DN40")
- print("3 DN50")
- print("4 DN65")
- print("5 DN80")
- valinta = int(input("Valitse putkityyppi (1, 2, 3, 4 tai 5): "))
- if valinta == 1:
- talo.putyyppi = "DN25"
- talo.Dp = DN25.Dp
- talo.Di = DN25.Di
- talo.Ds = DN25.Ds
- talo.E = DN25.E
- if valinta == 2:
- talo.putyyppi = "DN40"
- talo.Dp = DN40.Dp
- talo.Di = DN40.Di
- talo.Ds = DN40.Ds
- talo.E = DN40.E
- if valinta == 3:
- talo.putyyppi = "DN50"
- talo.Dp = DN50.Dp
- talo.Di = DN50.Di
- talo.Ds = DN50.Ds
- talo.E = DN50.E
- if valinta == 4:
- talo.putyyppi = "DN65"
- talo.Dp = DN65.Dp
- talo.Di = DN65.Di
- talo.Ds = DN65.Ds
- talo.E = DN65.E
- if valinta == 5:
- talo.putyyppi = "DN80"
- talo.Dp = DN80.Dp
- talo.Di = DN80.Di
- talo.Ds = DN80.Ds
- talo.E = DN80.E
- if valinta < 1 or valinta > 5:
- print("Syöte ei kelpaa.")
- print("")
- return talo
- def valinta3():
- Gg = LammonJohtavuus()
- print("")
- def valinta4():
- if len(talot) == 0:
- print("Tarvittavia arvoja ei ole määritetty.")
- else:
- ltnimi = input("Anna päivittäiset lämpötilat sisältävän tiedoston nimi: ") ## TRY EXCEPT
- talo = PutkenSyvyys()
- talo = MaaperanLampovastus()
- talo = PutkenLampovastus()
- talo = KeskinainenLampovastus()
- talo = Lammonsiirtokerroin()
- talo = Lampovirta()
- talo = Lampohavio()
- talo = EnergianTarve(ltnimi)
- talo = VirtausNopeus(ltnimi)
- PolttoaineTarve(ltnimi)
- print("")
- def valinta5():
- print("lol")
- def valinta6(polttoaineet, talot):
- if len(polttoaineet) == 0:
- print("Tarvittavia arvoja ei ole määritetty.")
- print("")
- if len(talot) == 0:
- print("Tarvittavia arvoja ei ole määritetty.")
- print("")
- else:
- tnimi = input("Anna tallennettavan tiedoston nimi: ")
- tiedosto = open(tnimi, "w", encoding="utf-8")
- tiedosto.write("[polttoaineet]")
- tiedosto.write('\n')
- for polttoaine in polttoaineet:
- ptehostr = str(polttoaine.pteho)
- phintastr = str(polttoaine.phinta)
- pkosteusstr = str(polttoaine.pkosteus)
- pkirj = polttoaine.pnimi + "," + ptehostr + "," + phintastr + "," + pkosteusstr
- tiedosto.write(pkirj)
- tiedosto.write('\n')
- tiedosto.write("[talo]")
- tiedosto.write('\n')
- for talo in talot:
- tleveysstr = str(talo.tleveys)
- tsyvyysstr = str(talo.tsyvyys)
- tslampostr = str(talo.tslampo)
- teosuusstr = str(talo.teosuus)
- tkirj = talo.tanimi + "," + tleveysstr + "," + tsyvyysstr + "," + tslampostr + "," + teosuusstr + "," + pusyvyysstr + "," + pupituusstr + "," + talo.putyyppi
- tiedosto.write(tkirj)
- tiedosto.write('\n')
- tiedosto.close
- print("Tiedot tallennettu.")
- print("")
- def valinta7_1():
- polttoaineet = []
- tiedosto = open(animi, "r", encoding="utf-8")
- while True:
- rivi=tiedosto.readline()
- if rivi == '[polttoaineet]\n':
- while True:
- rivi=tiedosto.readline()
- if rivi == '[talo]\n':
- break
- rivis=rivi.rstrip('\n')
- muunto=rivis.split(",")
- polttoaine = Polttoaine()
- polttoaine.pnimi = muunto[0]
- polttoaine.pteho = float(muunto[1])
- polttoaine.phinta = float(muunto[2])
- polttoaine.pkosteus = float(muunto[3])
- polttoaineet.append(polttoaine)
- return polttoaineet
- def valinta7_2():
- talot = []
- tiedosto = open(animi, "r", encoding="utf-8")
- while True:
- rivi=tiedosto.readline()
- if rivi == '[talo]\n':
- while True:
- rivi=tiedosto.readline()
- if rivi == '[putki]\n':
- break
- rivis=rivi.rstrip('\n')
- muunto=rivis.split(",")
- talo = Talo()
- talo.tanimi = muunto[0]
- talo.tleveys = float(muunto[1])
- talo.tsyvyys = float(muunto[2])
- talo.tslampo = float(muunto[3])
- talo.teosuus = float(muunto[4])
- talo.pusyvyys = float(muunto[5])
- talo.pupituus = float(muunto[6])
- talo.putyyppi = muunto[7]
- if muunto[7] == 'DN25':
- talo.Dp = DN25.Dp
- talo.Di = DN25.Di
- talo.Ds = DN25.Ds
- talo.E = DN25.E
- elif muunto[7] == 'DN40':
- talo.Dp = DN40.Dp
- talo.Di = DN40.Di
- talo.Ds = DN40.Ds
- talo.E = DN40.E
- elif muunto[7] == 'DN50':
- talo.Dp = DN50.Dp
- talo.Di = DN50.Di
- talo.Ds = DN50.Ds
- talo.E = DN50.E
- elif muunto[7] == 'DN65':
- talo.Dp = DN65.Dp
- talo.Di = DN65.Di
- talo.Ds = DN65.Ds
- talo.E = DN65.E
- elif muunto[7] == 'DN80':
- talo.Dp = DN80.Dp
- talo.Di = DN80.Di
- talo.Ds = DN80.Ds
- talo.E = DN80.E
- talot.append(talo)
- return talot
- def LammonJohtavuus():
- Gg = float(input("Anna maan lämmönjohtavuus (W/m,°C): "))
- return Gg
- def PutkenSyvyys():
- for talo in talot:
- talo.H = (talo.pusyvyys+(Gg/hgs))
- return talo
- def MaaperanLampovastus():
- for talo in talot:
- talo.Rg = ((1/(2*math.pi*Gg))*math.log((4*talo.H/talo.Di), math.exp(1)))
- return talo
- def PutkenLampovastus():
- for talo in talot:
- talo.Ri = ((1/(2*math.pi*Gi))*math.log((talo.Di/talo.Dp), math.exp(1)))
- return talo
- def KeskinainenLampovastus():
- for talo in talot:
- talo.Rm = ((1/(4*math.pi*Gg))*math.log((1+(2*talo.H/(talo.E))**2), math.exp(1)))
- return talo
- def Lammonsiirtokerroin():
- for talo in talot:
- talo.K1K2 = (1/(talo.Rg+talo.Ri+talo.Rm))
- return talo
- def Lampovirta():
- for talo in talot:
- talo.virta = (2*talo.K1K2*(((Tm+Tp)/2)-Tg))
- return talo
- def Lampohavio():
- for talo in talot:
- talo.havio = ((talo.virta*talo.pupituus*8760)/1000)
- return talo
- def EnergianTarve(ltnimi):
- lampotilat = []
- kokteho = 0
- tiedosto = open(ltnimi, "r", encoding="utf-8")
- for i in range(0, len(talot)):
- talo=talot[i]
- aika = 24/1000
- lattia = (talo.tleveys*talo.tsyvyys)
- katto = lattia
- ikkuna = (lattia*0.1)
- seina = ((2*talo.tleveys*tkorkeus)+(2*talo.tsyvyys*tkorkeus)-ikkuna)
- lattialasku = lattia*llklattia
- kattolasku = katto*llkkatto
- ikkunalasku = ikkuna*llkikkuna
- seinalasku = seina*llkseina
- teosuus = (talo.teosuus/100)
- while True:
- rivi=tiedosto.readline()
- if len(rivi) == 0:
- break
- rivis=rivi.strip()
- muunto=rivis.split(".")
- ulampo = float(muunto[2])
- if ulampo < 12 and talo.tslampo >= ulampo:
- lampotilat.append(muunto[2])
- for i in range(0, len(lampotilat)):
- ulampo = float(lampotilat[i])
- sulampo = (talo.tslampo-ulampo)
- teho = ((lattialasku+kattolasku+ikkunalasku+seinalasku)*sulampo*aika/teosuus)
- kokteho = kokteho + teho
- talo.kokteho = kokteho
- return talo
- def VirtausNopeus():
- for talo in talot:
- talo.nopeus = (((talo.havio*talo.pupituus)+(talo.kokteho*1000))/(Cp*p*(Tm-Tp)))/(((talo.Ds/2)**2)*math.pi)
- return talo
- def PolttoaineTarve():
- pkosteus = 0
- for i in range(0, len(talot)):
- kokteho = talo.kokteho + talo.havio
- lattiastr = str(talo.tleveys*talo.tsyvyys)
- tslampostr = str(talo.tslampo)
- pupituusstr = str(talo.pupituus)
- nopeusstr = str(talo.nopeus)
- print("=" * len(("Anna päivittäiset lämpötilat sisältävän tiedoston nimi: ") + ltnimi))
- print(talo.tanimi)
- print("Pinta-ala:", lattiastr + "m2,", "Sisälämpötila:", tslampostr + "°C")
- print("Putken pituus:", talo.pupituus + "m,", "Tyyppi:", talo.putyyppi + ",", "Maksimivirtausnopeus:", nopeusstr + "m/s")
- print("Polttoaine" + ("-" * 10) + "Tarvittava määrä-(kg)" + ("-" * 7) + "Kustannus-(€)" + ("-" * (len(("Anna päivittäiset lämpötilat sisältävän tiedoston nimi: ") + ltnimi) - len("Polttoaine" + ("-" * 10) + "Tarvittava määrä-(kg)" + ("-" * 7) + "Kustannus-(€)"))))
- for i in range(0, len(polttoaineet)):
- polttoaine=polttoaineet[i]
- kokteho2 = kokteho * 3.6
- pmaara = kokteho2 / polttoaine.pteho
- pkosteus = polttoaine.pkosteus
- if polttoaine.pkosteus == -1:
- pkosteus = 0
- pmaara2 = pmaara / (1-(pkosteus/100))
- phinta2 = pmaara2 * polttoaine.phinta
- print("{0:<20}{1:20}{2:>20}".format("-" + polttoaine.pnimi, round(pmaara2, 2), round(phinta2)))
- #Pääohjelma
- while True:
- print("********************************")
- print("1) Syötä polttoaine")
- print("2) Syötä talon tiedot")
- print("3) Määritä maan lämmönjohtavuus")
- print("4) Laske polttoaineen tarve ja hinta")
- print("5) Kirjoita polttoaineen tarpeet ja hinnat CSV-tiedostoon")
- print("6) Tallenna tiedot")
- print("7) Lataa tiedot")
- print("0) Lopeta")
- valinta = int(input("Valintasi: "))
- if valinta == 0:
- valinta0()
- break
- elif valinta == 1:
- polttoaine = valinta1()
- polttoaineet.append(polttoaine)
- elif valinta == 2:
- talo = valinta2_1()
- talot.append(talo)
- talo = valinta2_2()
- talot.append(talo)
- elif valinta == 3:
- Gg = valinta3()
- elif valinta == 4:
- valinta4()
- elif valinta == 5:
- print("lol")
- elif valinta == 6:
- valinta6(polttoaineet, talot)
- elif valinta == 7:
- animi = input("Anna tiedot sisältävän tiedoston nimi: ")
- polttoaineet = valinta7_1()
- talot = valinta7_2()
- print("Tiedot ladattu.")
- print("")
- elif valinta < 0 or valinta > 6:
- print("Syöte ei kelpaa.")
- print("")
Add Comment
Please, Sign In to add comment