Guest User

Untitled

a guest
Apr 24th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.56 KB | None | 0 0
  1. # CT60A0200 Ohjelmoinnin perusteet 2011 ohjelmien otsikkotiedot.
  2. # Tekijä: Tuomas Kuusisto
  3. # Opiskelijanumero: 0387917
  4. # Päivämäärä: 9.12.2011
  5. # Yhteistyö:
  6.  
  7.  
  8. #Listat, luokat, muuttujat ja moduulit
  9. import math
  10.  
  11. polttoaineet = []
  12. talot = []
  13. lampotilat = []
  14.  
  15. class Polttoaine:
  16. pnimi = ""
  17. pteho = 0
  18. phinta = 0
  19. pkosteus = 0
  20.  
  21. class Talo:
  22. tanimi = ""
  23. tleveys = 0 # m
  24. tsyvyys = 0 # m
  25. tslampo = 0 # °C
  26. teosuus = 0 # %
  27. pusyvyys = 0 # m
  28. pupituus = 0 # m
  29. putyyppi = ""
  30. Dp = 0 # m
  31. Di = 0 # m
  32. Ds = 0 # m
  33. E = 0 # m
  34. H = 0
  35. Rg = 0
  36. Ri = 0
  37. Rm = 0
  38. K1K2 = 0
  39. virta = 0
  40. havio = 0
  41. kokteho = 0
  42.  
  43. class DN25:
  44. Dp = 0.0337 # m
  45. Di = 0.1181 # m
  46. Ds = 0.025 # m
  47. E = 0.275 # m
  48.  
  49. class DN40:
  50. Dp = 0.0483 # m
  51. Di = 0.1331 # m
  52. Ds = 0.04 # m
  53. E = 0.29 # m
  54.  
  55. class DN50:
  56. Dp = 0.0603 # m
  57. Di = 0.1531 # m
  58. Ds = 0.05 # m
  59. E = 0.31 # m
  60.  
  61. class DN65:
  62. Dp = 0.0761 # m
  63. Di = 0.1749 # m
  64. Ds = 0.065 # m
  65. E = 0.33 # m
  66.  
  67. class DN80:
  68. Dp = 0.0889 # m
  69. Di = 0.1923 # m
  70. Ds = 0.08 # m
  71. E = 0.35 # m
  72.  
  73. llklattia = 0.16
  74. llkseina = 0.17
  75. llkkatto = 0.09
  76. llkikkuna = 1.0
  77. tkorkeus = 2.45
  78. ulampo = 0 # °C
  79. hgs = 13.5 # W/m^2, °C
  80. Gi = 0.03 # W/m^2, °C
  81. Gg = 2.3 # W/m^2, °C
  82. Tm = 85.0 # °C
  83. Tp = 55.0 # °C
  84. Tg = 5.0 # °C
  85. Cp = 4200.0 # J/kg
  86. p = 980.0 # kg/m^3
  87.  
  88.  
  89. #Aliohjelmat
  90.  
  91. def valinta0():
  92. print("Kiitos käytöstä, tervetuloa uudestaan!")
  93.  
  94. def valinta1():
  95. pnimi = input("Anna polttoaineen nimi: ")
  96. pteho = float(input("Anna tehollinen lämpöarvo (MJ/kg): "))
  97. phinta = float(input("Anna hinta (€/kg): "))
  98. pkosteus = float(input("Anna kosteusprosentti (-1 == ei käsitellä): "))
  99. polttoaine = Polttoaine()
  100. polttoaine.pnimi = pnimi
  101. polttoaine.pteho = pteho
  102. polttoaine.phinta = phinta
  103. polttoaine.pkosteus = pkosteus
  104. print("")
  105. return polttoaine
  106.  
  107. def valinta2_1():
  108. tanimi = input("Anna talon nimi: ")
  109. tleveys = float(input("Anna talon leveys (m): "))
  110. tsyvyys = float(input("Anna talon syvyys (m): "))
  111. tslampo = float(input("Anna haluttu sisälämpötila (°C): "))
  112. teosuus = float(input("Anna huonetilojen lämmitykseen tarvittavan energian osuus koko talon energian tarpeesta (%): "))
  113. talo = Talo()
  114. talo.tanimi = tanimi
  115. talo.tleveys = tleveys
  116. talo.tsyvyys = tsyvyys
  117. talo.tslampo = tslampo
  118. talo.teosuus = teosuus
  119. return talo
  120.  
  121. def valinta2_2():
  122. pusyvyys = float(input("Anna putken syvyys (m): "))
  123. pupituus = float(input("Anna putken pituus (m): "))
  124. talo = Talo()
  125. talo.pusyvyys = pusyvyys
  126. talo.pupituus = pupituus
  127. print("1 DN25")
  128. print("2 DN40")
  129. print("3 DN50")
  130. print("4 DN65")
  131. print("5 DN80")
  132. valinta = int(input("Valitse putkityyppi (1, 2, 3, 4 tai 5): "))
  133. if valinta == 1:
  134. talo.putyyppi = "DN25"
  135. talo.Dp = DN25.Dp
  136. talo.Di = DN25.Di
  137. talo.Ds = DN25.Ds
  138. talo.E = DN25.E
  139. if valinta == 2:
  140. talo.putyyppi = "DN40"
  141. talo.Dp = DN40.Dp
  142. talo.Di = DN40.Di
  143. talo.Ds = DN40.Ds
  144. talo.E = DN40.E
  145. if valinta == 3:
  146. talo.putyyppi = "DN50"
  147. talo.Dp = DN50.Dp
  148. talo.Di = DN50.Di
  149. talo.Ds = DN50.Ds
  150. talo.E = DN50.E
  151. if valinta == 4:
  152. talo.putyyppi = "DN65"
  153. talo.Dp = DN65.Dp
  154. talo.Di = DN65.Di
  155. talo.Ds = DN65.Ds
  156. talo.E = DN65.E
  157. if valinta == 5:
  158. talo.putyyppi = "DN80"
  159. talo.Dp = DN80.Dp
  160. talo.Di = DN80.Di
  161. talo.Ds = DN80.Ds
  162. talo.E = DN80.E
  163. if valinta < 1 or valinta > 5:
  164. print("Syöte ei kelpaa.")
  165. print("")
  166. return talo
  167.  
  168. def valinta3():
  169. Gg = LammonJohtavuus()
  170. print("")
  171.  
  172. def valinta4():
  173. if len(talot) == 0:
  174. print("Tarvittavia arvoja ei ole määritetty.")
  175. else:
  176. ltnimi = input("Anna päivittäiset lämpötilat sisältävän tiedoston nimi: ") ## TRY EXCEPT
  177. talo = PutkenSyvyys()
  178. talo = MaaperanLampovastus()
  179. talo = PutkenLampovastus()
  180. talo = KeskinainenLampovastus()
  181. talo = Lammonsiirtokerroin()
  182. talo = Lampovirta()
  183. talo = Lampohavio()
  184. talo = EnergianTarve(ltnimi)
  185. talo = VirtausNopeus(ltnimi)
  186. PolttoaineTarve(ltnimi)
  187. print("")
  188.  
  189. def valinta5():
  190. print("lol")
  191.  
  192. def valinta6(polttoaineet, talot):
  193. if len(polttoaineet) == 0:
  194. print("Tarvittavia arvoja ei ole määritetty.")
  195. print("")
  196. if len(talot) == 0:
  197. print("Tarvittavia arvoja ei ole määritetty.")
  198. print("")
  199. else:
  200. tnimi = input("Anna tallennettavan tiedoston nimi: ")
  201. tiedosto = open(tnimi, "w", encoding="utf-8")
  202. tiedosto.write("[polttoaineet]")
  203. tiedosto.write('\n')
  204. for polttoaine in polttoaineet:
  205. ptehostr = str(polttoaine.pteho)
  206. phintastr = str(polttoaine.phinta)
  207. pkosteusstr = str(polttoaine.pkosteus)
  208. pkirj = polttoaine.pnimi + "," + ptehostr + "," + phintastr + "," + pkosteusstr
  209. tiedosto.write(pkirj)
  210. tiedosto.write('\n')
  211. tiedosto.write("[talo]")
  212. tiedosto.write('\n')
  213. for talo in talot:
  214. tleveysstr = str(talo.tleveys)
  215. tsyvyysstr = str(talo.tsyvyys)
  216. tslampostr = str(talo.tslampo)
  217. teosuusstr = str(talo.teosuus)
  218. tkirj = talo.tanimi + "," + tleveysstr + "," + tsyvyysstr + "," + tslampostr + "," + teosuusstr + "," + pusyvyysstr + "," + pupituusstr + "," + talo.putyyppi
  219. tiedosto.write(tkirj)
  220. tiedosto.write('\n')
  221. tiedosto.close
  222. print("Tiedot tallennettu.")
  223. print("")
  224.  
  225. def valinta7_1():
  226. polttoaineet = []
  227. tiedosto = open(animi, "r", encoding="utf-8")
  228. while True:
  229. rivi=tiedosto.readline()
  230. if rivi == '[polttoaineet]\n':
  231. while True:
  232. rivi=tiedosto.readline()
  233. if rivi == '[talo]\n':
  234. break
  235. rivis=rivi.rstrip('\n')
  236. muunto=rivis.split(",")
  237. polttoaine = Polttoaine()
  238. polttoaine.pnimi = muunto[0]
  239. polttoaine.pteho = float(muunto[1])
  240. polttoaine.phinta = float(muunto[2])
  241. polttoaine.pkosteus = float(muunto[3])
  242. polttoaineet.append(polttoaine)
  243. return polttoaineet
  244.  
  245. def valinta7_2():
  246. talot = []
  247. tiedosto = open(animi, "r", encoding="utf-8")
  248. while True:
  249. rivi=tiedosto.readline()
  250. if rivi == '[talo]\n':
  251. while True:
  252. rivi=tiedosto.readline()
  253. if rivi == '[putki]\n':
  254. break
  255. rivis=rivi.rstrip('\n')
  256. muunto=rivis.split(",")
  257. talo = Talo()
  258. talo.tanimi = muunto[0]
  259. talo.tleveys = float(muunto[1])
  260. talo.tsyvyys = float(muunto[2])
  261. talo.tslampo = float(muunto[3])
  262. talo.teosuus = float(muunto[4])
  263. talo.pusyvyys = float(muunto[5])
  264. talo.pupituus = float(muunto[6])
  265. talo.putyyppi = muunto[7]
  266. if muunto[7] == 'DN25':
  267. talo.Dp = DN25.Dp
  268. talo.Di = DN25.Di
  269. talo.Ds = DN25.Ds
  270. talo.E = DN25.E
  271. elif muunto[7] == 'DN40':
  272. talo.Dp = DN40.Dp
  273. talo.Di = DN40.Di
  274. talo.Ds = DN40.Ds
  275. talo.E = DN40.E
  276. elif muunto[7] == 'DN50':
  277. talo.Dp = DN50.Dp
  278. talo.Di = DN50.Di
  279. talo.Ds = DN50.Ds
  280. talo.E = DN50.E
  281. elif muunto[7] == 'DN65':
  282. talo.Dp = DN65.Dp
  283. talo.Di = DN65.Di
  284. talo.Ds = DN65.Ds
  285. talo.E = DN65.E
  286. elif muunto[7] == 'DN80':
  287. talo.Dp = DN80.Dp
  288. talo.Di = DN80.Di
  289. talo.Ds = DN80.Ds
  290. talo.E = DN80.E
  291. talot.append(talo)
  292. return talot
  293.  
  294. def LammonJohtavuus():
  295. Gg = float(input("Anna maan lämmönjohtavuus (W/m,°C): "))
  296. return Gg
  297.  
  298. def PutkenSyvyys():
  299. for talo in talot:
  300. talo.H = (talo.pusyvyys+(Gg/hgs))
  301. return talo
  302.  
  303. def MaaperanLampovastus():
  304. for talo in talot:
  305. talo.Rg = ((1/(2*math.pi*Gg))*math.log((4*talo.H/talo.Di), math.exp(1)))
  306. return talo
  307.  
  308. def PutkenLampovastus():
  309. for talo in talot:
  310. talo.Ri = ((1/(2*math.pi*Gi))*math.log((talo.Di/talo.Dp), math.exp(1)))
  311. return talo
  312.  
  313. def KeskinainenLampovastus():
  314. for talo in talot:
  315. talo.Rm = ((1/(4*math.pi*Gg))*math.log((1+(2*talo.H/(talo.E))**2), math.exp(1)))
  316. return talo
  317.  
  318. def Lammonsiirtokerroin():
  319. for talo in talot:
  320. talo.K1K2 = (1/(talo.Rg+talo.Ri+talo.Rm))
  321. return talo
  322.  
  323. def Lampovirta():
  324. for talo in talot:
  325. talo.virta = (2*talo.K1K2*(((Tm+Tp)/2)-Tg))
  326. return talo
  327.  
  328. def Lampohavio():
  329. for talo in talot:
  330. talo.havio = ((talo.virta*talo.pupituus*8760)/1000)
  331. return talo
  332.  
  333. def EnergianTarve(ltnimi):
  334. lampotilat = []
  335. kokteho = 0
  336. tiedosto = open(ltnimi, "r", encoding="utf-8")
  337. for i in range(0, len(talot)):
  338. talo=talot[i]
  339. aika = 24/1000
  340. lattia = (talo.tleveys*talo.tsyvyys)
  341. katto = lattia
  342. ikkuna = (lattia*0.1)
  343. seina = ((2*talo.tleveys*tkorkeus)+(2*talo.tsyvyys*tkorkeus)-ikkuna)
  344. lattialasku = lattia*llklattia
  345. kattolasku = katto*llkkatto
  346. ikkunalasku = ikkuna*llkikkuna
  347. seinalasku = seina*llkseina
  348. teosuus = (talo.teosuus/100)
  349. while True:
  350. rivi=tiedosto.readline()
  351. if len(rivi) == 0:
  352. break
  353. rivis=rivi.strip()
  354. muunto=rivis.split(".")
  355. ulampo = float(muunto[2])
  356. if ulampo < 12 and talo.tslampo >= ulampo:
  357. lampotilat.append(muunto[2])
  358. for i in range(0, len(lampotilat)):
  359. ulampo = float(lampotilat[i])
  360. sulampo = (talo.tslampo-ulampo)
  361. teho = ((lattialasku+kattolasku+ikkunalasku+seinalasku)*sulampo*aika/teosuus)
  362. kokteho = kokteho + teho
  363. talo.kokteho = kokteho
  364. return talo
  365.  
  366. def VirtausNopeus():
  367. for talo in talot:
  368. talo.nopeus = (((talo.havio*talo.pupituus)+(talo.kokteho*1000))/(Cp*p*(Tm-Tp)))/(((talo.Ds/2)**2)*math.pi)
  369. return talo
  370.  
  371. def PolttoaineTarve():
  372. pkosteus = 0
  373. for i in range(0, len(talot)):
  374. kokteho = talo.kokteho + talo.havio
  375. lattiastr = str(talo.tleveys*talo.tsyvyys)
  376. tslampostr = str(talo.tslampo)
  377. pupituusstr = str(talo.pupituus)
  378. nopeusstr = str(talo.nopeus)
  379. print("=" * len(("Anna päivittäiset lämpötilat sisältävän tiedoston nimi: ") + ltnimi))
  380. print(talo.tanimi)
  381. print("Pinta-ala:", lattiastr + "m2,", "Sisälämpötila:", tslampostr + "°C")
  382. print("Putken pituus:", talo.pupituus + "m,", "Tyyppi:", talo.putyyppi + ",", "Maksimivirtausnopeus:", nopeusstr + "m/s")
  383. 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-(€)"))))
  384. for i in range(0, len(polttoaineet)):
  385. polttoaine=polttoaineet[i]
  386. kokteho2 = kokteho * 3.6
  387. pmaara = kokteho2 / polttoaine.pteho
  388. pkosteus = polttoaine.pkosteus
  389. if polttoaine.pkosteus == -1:
  390. pkosteus = 0
  391. pmaara2 = pmaara / (1-(pkosteus/100))
  392. phinta2 = pmaara2 * polttoaine.phinta
  393. print("{0:<20}{1:20}{2:>20}".format("-" + polttoaine.pnimi, round(pmaara2, 2), round(phinta2)))
  394.  
  395.  
  396. #Pääohjelma
  397. while True:
  398. print("********************************")
  399. print("1) Syötä polttoaine")
  400. print("2) Syötä talon tiedot")
  401. print("3) Määritä maan lämmönjohtavuus")
  402. print("4) Laske polttoaineen tarve ja hinta")
  403. print("5) Kirjoita polttoaineen tarpeet ja hinnat CSV-tiedostoon")
  404. print("6) Tallenna tiedot")
  405. print("7) Lataa tiedot")
  406. print("0) Lopeta")
  407. valinta = int(input("Valintasi: "))
  408. if valinta == 0:
  409. valinta0()
  410. break
  411. elif valinta == 1:
  412. polttoaine = valinta1()
  413. polttoaineet.append(polttoaine)
  414. elif valinta == 2:
  415. talo = valinta2_1()
  416. talot.append(talo)
  417. talo = valinta2_2()
  418. talot.append(talo)
  419. elif valinta == 3:
  420. Gg = valinta3()
  421. elif valinta == 4:
  422. valinta4()
  423. elif valinta == 5:
  424. print("lol")
  425. elif valinta == 6:
  426. valinta6(polttoaineet, talot)
  427. elif valinta == 7:
  428. animi = input("Anna tiedot sisältävän tiedoston nimi: ")
  429. polttoaineet = valinta7_1()
  430. talot = valinta7_2()
  431. print("Tiedot ladattu.")
  432. print("")
  433. elif valinta < 0 or valinta > 6:
  434. print("Syöte ei kelpaa.")
  435. print("")
Add Comment
Please, Sign In to add comment