Πέμπτη, 24 Δεκεμβρίου 2015

Το πρόβλημα της παροχής

Στην παρούσα ανάρτηση θα παρουσιάσουμε ένα κλασσικό πρόβλημα της υδραυλικής των κλειστών αγωγών. Συγκεκριμένα, θέλουμε να υπολογίσουμε την παροχή νερού που διαρρέει έναν κλειστό αγωγό (συνιστάται να δείτε εδώ πριν προχωρήσετε παρακάτω). Τα δεδομένα του προβλήματος μας είναι: η διαφορά ολικού φορτίου ΔΗ στα άκρα του αγωγού, η τραχύτητα e, το μήκος L και η διάμετρος D του αγωγού.

Πριν ξεκινήσουμε να αναφέρουμε το εξής: το πρόβλημα που θα επιλύσουμε έχει ομοιότητα με την επίλυση μίας αντίστασης. Ουσιαστικά όταν θέλουμε να βρούμε το ρεύμα I που διέρχεται από έναν αντιστάτη R πρέπει να γνωρίζουμε την τάση V που εφαρμόζεται στα άκρα του. Η αντίσταση R είναι συνάρτηση της διατομής του αντιστάτη, του μήκους του και του υλικού από το οποίο είναι φτιαγμένος. Ομοίως, για να υπολογίσουμε την παροχή Q (ρεύμα) που διέρχεται από έναν αγωγό πρέπει να γνωρίζουμε την διαφορά ολικού φορτίου ΔΗ (τάση) στα άκρα του καθώς και την "αντίσταση" R του. Η αντίσταση R είναι συνάρτηση της διαμέτρου (διατομή), του μήκους και της τραχύτητας (υλικό) του αγωγού. Η ομοιότητα, λοιπόν, είναι φανερή.

Ας ξεκινήσουμε να επιλύουμε θεωρητικά το πρόβλημα μας. Από την αρχή διατήρησης της ενέργειας γνωρίζουμε πως το φορτίο Hin στην αρχή του αγωγού ισούται με το φορτίο Hfin στο τέλους του αγωγού συν τις απώλειες φορτίου h. Δηλαδή
Όμως
Καταλαβαίνουμε λοιπόν πως η διαφορά φορτίου ισούται με τις απώλειες φορτίου. Έπειτα από την σχέση Darcy-Weisbach έχουμε
Στην παραπάνω εξίσωση πρέπει να εισάγουμε την παροχή Q που θέλουμε να υπολογίσουμε. Γνωρίζουμε πως για αγωγό κυκλικής διατομής ισχύει
Οπότε χρησιμοποιώντας την παραπάνω σχέση έχουμε

Ας κάνουμε μερικά σχόλια για την σχέση (1). Καταρχήν, αν γνωρίζαμε τον συντελεστή f, θα μπορούσαμε να επιλύσουμε ως προς Q και να λύναμε το πρόβλημα μας. Οπότε το πρόβλημα μας αυτή την στιγμή είναι η εύρεση του συντελεστή f. Δεύτερον, η εξίσωση (1) είναι ο "νόμος του Ohm" για την περίπτωση του αγωγού. Ο νόμος του Ohm για την περίπτωση γραμμικού αντιστάτη γράφεται ως εξής:
Συγκρίνοντας την σχέση (1) με τον νόμο του Ohm προκύπτει η εξής αντιστοιχία:
Αφού το τετράγωνο της παροχής αντιστοιχεί στο ρεύμα και επειδή, όπως θα δούμε παρακάτω, το f είναι συνάρτηση του V, ο αγωγός είναι "μη γραμμικός αντιστάτης".

Πως όμως θα υπολογίσουμε τον συντελεστή τριβής f; Στην βιβλιογραφία υπάρχουν πολλές διαθέσιμες εξισώσεις. Επιλέγουμε την εξίσωση Swamee-Jain η οποία έχει την μορφή
Όμως, πριν χρησιμοποιήσουμε την εξίσωση Swamee-Jain, πρέπει να υπολογίσουμε τον αριθμό Re της ροής ο οποίος εξαρτάται από την ταχύτητα του νερού. Η ταχύτητα του νερού όμως είναι άγνωστη αφού είναι συνάρτηση της παροχής. Με άλλα λόγια, για να υπολογίσουμε την παροχή με την εξίσωση (1), πρέπει να λύσουμε την εξίσωση Swamee-Jain αλλά για να λύσουμε την εξίσωση αυτή πρέπει να γνωρίζουμε την ταχύτητα και ως εκ τούτου την παροχή. Συνεπώς η διαδικασία είναι επαναληπτική και δεν μπορεί να λυθεί (εύκολα) αναλυτικά. Η επίλυση της εξίσωσης (1) μπορεί να γίνει με τον ακόλουθο αλγόριθμο:
  1. υποθέτουμε πως το νερό έχει ορισμένη ταχύτητα (και συνεπώς ορισμένη παροχή)
  2. υπολογίσουμε τον αριθμό Re
  3. υπολογίζουμε τον συντελεστή τριβής
  4. ελέγχουμε αν τα στοιχεία που υπολογίσαμε παραπάνω ικανοποιούν την εξίσωση (1). Αν ναι τότε η ταχύτητα που επιλέξαμε στην αρχή είναι η λύση στο πρόβλημα μας και ως εκ τούτου υπολογίζουμε την αντίστοιχη παροχή. Αν όχι επιλέγουμε άλλη ταχύτητα και επιστρέφουμε στο βήμα 1.
Ο παραπάνω αλγόριθμος υλοποιείται από τον κώδικα:

Module Module1

    Sub Main()

        'δήλωση μεταβλητών
        Dim v As Double, f As Double, DH As Double
        Dim e As Double, vtop As Double, Re As Double
        Dim D As Double, diff As Double, L As Double
        Dim Q As Double

        'εισαγωγή δεδομένων
        Console.WriteLine("δώσε το μήκος του αγωγού σε m")
        L = Convert.ToDouble(Console.ReadLine())
        Console.WriteLine("δώσε την διάμετρο του αγωγού σε mm")
        D = Convert.ToDouble(Console.ReadLine())
        Console.WriteLine("δώσε την τραχύτητα του αγωγού σε mm")
        e = Convert.ToDouble(Console.ReadLine())
        Console.WriteLine("δώσε την διαφορά φορτίου σε m")
        DH = Convert.ToDouble(Console.ReadLine())

        'ορίζουμε το πεδίο αναζήτησης της λύσης
        v = 0.1
        vtop = 10

        'έναρξη δοκιμών
        Do While v <= vtop
            'υπολογισμός Re
            Re = v * D * 10 ^ 3
            'υπολογισμός συντελεστή τριβής
            f = 0.25 * ((Math.Log10(e / (3.7 * D) + (5.74 / (Re ^ 0.9)))) ^ (-2))
            'υπολογισμός σφάλματος
            diff = DH - (f * L * v ^ 2) / (2 * 9.81 * (D / 1000))
            'έλεγχος αν ικανοποιείται η εξίσωση (1)
            If Math.Abs(diff) < 0.1 Then
               'αν βρέθηκε λύση υπολόγισε την παροχή
               'και εκτύπωσε την στην οθόνη
                Q = 1000 * v * (Math.PI * (D / 1000) ^ 2) / 4
                Console.WriteLine("V[m/s]=:{0}, Q[lt/s]=:{1}", v, Q)
                Console.ReadLine()
                End
            End If
            'πηγαίνουμε στην επόμενη τιμή της ταχύτητας
            v = v + 0.001
        Loop
        Console.WriteLine("no solution")
        Console.ReadLine()
    End Sub

End Module

Αριθμητική εφαρμογή

Υπολογίστε την ταχύτητα και την παροχή σε έναν κλειστό αγωγό γνωρίζοντας πως ΔH=20 m, L=1 km, D=200 mm και e=0.1 mm.

Αρχικά, τρέχουμε το πρόγραμμα και εισάγουμε δεδομένα. Η όλη διαδικασία φαίνεται στην παρακάτω εικόνα.

η διεπαφή χρήστη-προγράμματος.
Δηλαδή η παροχή που διαρρέει τον αγωγό ισούται με 65.5 lt/s και η ταχύτητα του νερού στον αγωγό ισούται με 2.1 m/s.

Ο κώδικας που είδαμε είναι πολύ απλός αλλά μας διευκολύνει πολύ επιλύοντας ένα πρόβλημα το οποίο απαιτεί πολλές πράξεις. Κατεβάστε τον κώδικα σε μορφή αρχείου .exe από εδώ.

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

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