ΛΟΓΙΣΜΙΚΟ ΛΕΙΤΟΥΡΓΙΑΣ ΚΑΙ ΕΛΕΓΧΟΥ ΗΛΙΑΚΟΥ ΘΕΡΜΙΚΟΥ ΣΥΣΤΗΜΑΤΟΣ Επιμέλεια: Νίκος Βασιλειάδης (φοιτητής ΤΜΜ, ΠΘ) Αναπτύσσεται πρόγραμμα, το οποίο επιλύει ηλιακά θερμικά συστήματα. Αρχικά εισάγονται αρχικά τα δεδομένα που αφορούν το περιβάλλον του συστήματος, όπως η ημερήσια κατανομή της θερμοκρασίας και της ηλιακής ακτινοβολίας, η ώρα ανατολής του ηλίου και οι ώρες ηλιοφάνειας. Στη συνέχεια, εισάγονται δεδομένα που αφορούν τον συλλέκτη, το φορτίο αλλά και το δοχείο αποθήκευσης. Μια σειρά μηνυμάτων καθοδηγεί τον χρήστη στα δεδομένα που πρέπει να εισάγει κάθε φορά. Στο συγκεκριμένο πρόγραμμα θεωρείται ότι η θερμοκρασία και ακτινοβολία ακολουθούν ημιτονοειδής κατανομές της μορφής: Για διαφορετικές κατανομές θερμοκρασίας και ακτινοβολίας, οι παραπάνω σχέσεις μπορούν να τροποποιηθούν κατάλληλα από τον χρήστη. Έπειτα, ο χρήστης καθορίζει τον χρόνο ανά τον οποίο θα εξάγονται τα αποτελέσματα, αλλά και τον αριθμό των χρονικών βημάτων. Εφόσον έχουν εισαχθεί όλα τα δεδομένα, το πρόγραμμα εξάγει δύο αρχεία txt στον φάκελο που είναι αποθηκευμένο. Στο πρώτο αρχείο SolSys-Results εξάγονται σαν αποτελέσματα οι ημέρες, οι χρόνοι των αποτελεσμάτων t, η θερμοκρασίες του δοχείου αποθήκευσης Tst και το θερμικό φορτίο Qst. Στο δεύτερο αρχείο εμφανίζονται μόνο οι θερμοκρασίες του δοχείου αποθήκευσης για ευκολότερη δημιουργία πινάκων και διαγραμμάτων με προγράμματα όπως το Excel. Ακολουθεί ο κώδικας σε Fortran: Program SolSys Implicit none real,parameter::pi=3.141592 real::t,trise,td,qs,qmax,qref,ta,tam,dta,a,ta_eff,b,fr,u,mc,c,qu=0,qst=0,ust & &,Ast,Ql,ml,g,Tfin,Tfout,DTl,Tlmin,Tst,Tstmax,Tstag,dc,dl,tr Integer::maxi,daycount Write(*,'("Enviromental Data Input",(/))') Write(*,'("Insert reference heat flux Qs,ref [W/m^2]:")') Read*,qref Write(*,'("Insert max heat flux Qs,max [W/m^2] :")') Read*,qmax Write(*,'("Insert mean temperature Ta,mean [K] :")') Read*,Tam Write(*,'("Insert temperature variation DTa [K] :")') Read*,DTa Write(*,'("Insert time of sunrise in minutes :")') Read*,trise Write(*,'("Insert time of daylight in minutes :",)') Read*,td Write(*,'("Collector Data Input",(/))')
Write(*,'("Insert collector surface A [m^2] :")') Read*,A Write(*,'("Insert collector property ta_eff :")') Read*,ta_eff Write(*,'("Insert collector heat removal parameter FR :")') Read*,Fr Write(*,'("Insert collector value b :")') Read*,b Write(*,'("Insert collector mass flow rate mc [Kg/s]")') Read*,mc Write(*,'("Insert specific heat of working fluid [J/kg*K] :"))') Read*,c Write(*,'("Load Data Input",(/))') Write(*,'("Insert load QL [W] :")') Read*,Ql Write(*,'("Insert load mass flow ml [Kg/s] :")') Read*,ml Write(*,'("Insert load minimum temperature Tl,min [K] :")') Read*,Tlmin Write(*,'("Storage Data Input",(/))') Write(*,'("Insert storage surface Ast [m^2] :")') Read*,Ast Write(*,'("Insert storage heat transfer coefficient Ust [W/m^2*K] :")') Read*,Ust Write(*,'("Insert maximum storage temperature Tst,max :")') Read*,Tstmax Write(*,'("Insert initial storage temperature Tst,initial [K] :")') Read*,Tst Write(*,'("Calculation Data Input")') Write(*,'("Insert time between outpout in minutes :")') Read*,tr Write(*,'("Enter number of time steps [integer] :")') Read*,maxi t=trise dl=0 U=b*qref/Tam g=mc*c*tam/qref/a daycount=1 open (10,file='SolSysExcel Results.txt') open (20,file='SolSys Results.txt') Write (10,*) Tst Write (20,'(8x,"Day Count Time [min]",6x,"tstorage"7x,"qstorage")') Write(20,'(/)') Write (20,*) Daycount,(t (daycount 1)*24*60),Tst,Qst Do While (t<=(maxi 60/tr)*tr+trise) Daycount=t/60/24+1
If (t>=(daycount 1)*24*60+trise.and. t<=(daycount 1)*24*60+trise+td) then qs=qmax*sin(pi*((t (daycount 1)*24*60) trise)/td) qs=0 Ta=Tam+DTa*Sin(2*Pi*(t (trise+360))/1440) Tfin=Tst Tstag=Ta+ta_eff*qs/b/qref*Tam Tfout=Tfin*(1 Fr*b/g)+Fr*Tam/g*(ta_eff*qs/qref+b*Ta/Tam) If (Tstag Tfin>6) then If (Tst>Tstmax) then If (Tfout Tfin>2) then dc=1 DTl=Ql/ml/c If (DTl>2) then If (Tst<Tlmin) then dl=0 dl=1 dl=0 Qu=mc*c*(Tfout Tfin) Qst=dc*Qu dl*ql Ust*Ast*(Tst Ta) Tst=Tst+Qst/mc/c/60. If (mod(t trise,tr)==0) then Write (10,*) Tst Write (20,*) Daycount,((t (daycount 1)*24*60)+tr),Tst,Qst t=t+1 Enddo End
Επιλύεται ένα παράδειγμα ηλιακού θερμικού συστήματος στο οποίο ζητείται η χρονική εξέλιξη της θερμοκρασίας του δοχείου αποθήκευσης. Έπειτα, εξετάζεται η επίδραση της επιφάνειας του συλλέκτη Α, της αδιάστατης ποσότητας b και του φορτίου QL στην κατανομή θερμοκρασίας του δοχείου και στην κάλυψη του φορτίου. Επίλυση: Εισάγονται τα δεδομένα του προβλήματος και το πρόγραμμα τυπώνει αποτελέσματα με χρονικό βήμα 60 λεπτών για 24 χρονικά βήματα, δηλαδή από τις 7π.μ. της πρώτης μέρας έως τις 7π.μ. της δεύτερης μέρας. Ακολουθούν τα δεδομένα εισαγωγής και τα αποτελέσματα από το αρχείο Solsys-Results σε πίνακα.
Day Time [min] Tstorage Qstorage 1 420 300.000-4200.00 1 480 299.950-4200.00 1 540 300.028-238.916 1 600 301.740 4765.33 1 660 306.576 8468.40 1 720 313.489 10565.8 1 780 321.265 10907.2 1 840 328.649 9511.61 1 900 334.457 6564.94 1 960 337.694 2401.55 1 1020 337.280-4200.00 1 1080 334.280-4200.00 1 1140 331.281-4200.00 1 1200 325.282-4200.00 1 1260 322.283-4200.00 1 1320 319.284-4200.00 1 1380 316.285-4200.00 1 1440 313.285-4200.00 2 60 310.286-4200.00 2 120 307.287-4200.00 2 180 304.288-4200.00 2 240 301.288-4200.00 2 300 299.989-4200.00 2 360 299.989 0.00 2 420 299.989 0.00
Τυπικά αποτελέσματα από το αρχείο SolSysExcel-Results δίδονται σε μορφή γραφημάτων για 96 χρονικά βήματα (4 ημέρες): Θερμοκρασία δοχείου αποθήκευσης Η θερμοκρασία του δοχείου αποθήκευσης πέφτει κάτω από τους 300 Κ μεταξύ 5:00 π.μ και 8:00 π.μ, ενώ το ποσοστό του χρόνου κατά το οποίο καλύπτεται το απαιτούμενο φορτίο είναι περίπου 88%. Θερμοκρασία δοχείου αποθήκευσης για επιφάνειες συλλέκτη 15, 30, 45 και 60 τ.μ.