Δευτέρα, 9 Μαρτίου 2015

Πρόγραμμα για διαστασιολόγηση αγωγών

Βασιζόμενοι στην ανάρτηση Διαστασιολόγηση αγωγών και απώλειες ενέργειας μπορούμε να δημιουργήσουμε έναν κώδικα που να αυτοματοποιεί την όλη διαδικασία και να αποτρέπει τυχόν αριθμητικά λάθη κατά την διάρκεια της. Το παρακάτω πρόγραμμα έχει αναπτυχθεί σε περιβάλλον visual basic 6 και συμπεριλαμβάνει μία φόρμα όπου έχει γραφτεί ο κύριος κώδικας και ένα module όπου έγινε η δήλωση των μεταβλητών.

Η φόρμα του προγράμματος φαίνεται στην εικόνα 1.

εικόνα 1, η φόρμα εισαγωγής και εξαγωγής δεδομένων.
Ο κώδικας που είναι γραμμένος στην φόρμα περιλαμβάνει τρία Commands και είναι ο ακόλουθος:

'Το command1 είναι ο υπολογισμός διαμέτρου κατά Bresse
'εισάγεται η παροχή του αγωγού από το text1 και εξάγεται
'στο text2 η διάμετρος κατά Bresse
Private Sub Command1_Click()
'εισαγωγή παροχής στον κώδικα
Q = Text1.Text
'εφαρμογή του τύπου του Bresse
D = 15.5 * Sqr(Q)
'εξαγωγή διαμέτρου με ακρίβεια 4 δεκαδικών
Text2.Text = Format(D, "0.0000")
End Sub

'Το command2 είναι ο υπολογισμός της ταχύτητας και
'των απωλειών ενέργειας βάση του μήκους L και της νέας
'διαμέτρου που επιλέχθηκε
Private Sub Command2_Click()

'ορισμός του π
pi = 4 * Atn(1)
'εισαγωγή του μήκους του αγωγού στον κώδικα
L = Text13.Text

'διαδικασία if για να μπορεί ο χρήστης να επιλέξει
'αν θα εισάγει κατευθείαν την εσωτερική διάμετρο
'ή αν θα εισάγει την εξωτερική και το πάχος του αγωγού
If Option1.Value = True Then
'εισαγωγή εσωτερικής διαμέτρου στον κώδικα
Din = Text3.Text
ElseIf Option2.Value = True Then
'εισαγωγή εξωτερικής διαμέτρου και πάχους
Dex = Text4.Text
e = Text5.Text
'υπολογισμός εσωτερικής διαμέτρου
Din = Dex - 2 * e
End If

'υπολογισμός εμβαδού διατομής του αγωγού
A = (pi * (Din / 1000) ^ 2) / 4
'υπολογισμός ταχύτητας
V = (Q / 3600) / A
'εξαγωγή ταχύτητας στην φόρμα με ακρίβεια 2 δεκαδικών
Text7.Text = Format(V, "0.00")
'υπολογισμός αριθμού Reynolds
Re = (V * (Din / 1000)) / (1.004 * 10 ^ -6)

'λαμβάνουμε μία αρχική τιμή για την επαναληπτική διαδικασία
'που θα ακολουθήσει
z0 = 7

'επαναληπτική διαδικασία μέχρι να έχουμε σύγκλιση ή
'με το πολύ 10 επαναλήψεις
Do Until flag = True Or I > 10
z1 = -(2 / Log(10)) * Log((0.3 / (3.7 * Din)) + 2.51 * z0 / Re)

If Abs(z0 - z1) < 0.0001 Then
flag = True
End If

z0 = z1
I = I + 1
Loop

'υπολογισμός συντελεστή τριβής βάσει της τιμής z
'που προέκυψε από την επαναληπτική διαδικασία
f = 1 / (z1 ^ 2)

'υπολογισμός απωλειών ενέργειας
h = (f * L * 1000 * V ^ 2) / (2 * 9.81 * Din / 1000)
'εξαγωγή των απωλειών ενέργειας στην φόρμα
Text6.Text = Format(h, "0.0")

End Sub

'Στο command3 εισάγονται οι συνθήκες στα όρια του αγωγού
'δηλαδή τα υψόμετρα στην αρχή και στο τέλος του και η πίεση
'στο τέλος του με σκοπό να υπολογιστεί η απαιτούμενη πίεση
'στην αρχή του
Private Sub Command3_Click()

'εισαγωγή των αρχικών και τελικών υψομέτρων
'και της πίεσης στο τέλος του αγωγού
hin = Text8.Text
hfin = Text9.Text
pfin = Text10.Text

'υπολογισμός της πίεσης στην αρχή του αγωγού
pin = pfin * 101324 + 9810 * (hfin - hin + h)

'εξαγωγή της αρχικής πίεσης στην φόρμα
'με ακρίβεια ενός δεκαδικού ψηφίου και
'ταυτόχρονη μετατροπή του σε atm
Text11.Text = Format(pin / 101324, "0.0")

'αν η αρχική πίεση είναι θετική χρειάζεται αντλία
'ενώ αν είναι αρνητική δεν χρειάζεται
If pin > 0 Then
Text12.Text = "ναι"
ElseIf pin < 0 Then
Text12.Text = "όχι"
End If

End Sub

Το module του προγράμματος είναι το ακόλουθο:

Public Q As Double, h As Double, L As Double
Public Din As Double, Dex As Double, e As Double
Public pi As Double, hin As Double, hfin As Double
Public pfin As Double, flag As Boolean

Σε αυτό γίνεται η δήλωση όλων των μεταβλητών που χρησιμοποιούνται στην φόρμα ώστε να είναι δημόσιες (να χρησιμοποιούνται από πολλά Command) και όχι ιδιωτικές (να χρησιμοποιούνται μόνο από ένα Command).

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου