در نوشته قبلی به تعیین قطر اقتصادی لوله ها در سیستم های آبرسانی پرداختیم. در این نوشته به بررسی تعیین قطر مناسب جهت لوله های شبکه های آبرسانی خواهیم پرداخت. پس با ما تا آخر همراه باشید.

در سیستم های آبرسانی و شبکه های توزیع آب، لازم است تا طراحی به گونه ای صورت پذیرد که جریان آب به میزان کافی و با کمترین فشار در بازه استانداردهای مدوّن از زمان بهره برداری تا انتهای افق طرح در سرتاسر شبکه برقرار بوده و در اختیار مصرف کنندگان قرار گیرد. هر شبکه توزیع آب جهت کارکرد بهینه نیازمند آن است که پارامترهای کلیدی هیدرولیکی آن نظیر فشار، سرعت انتقال جریان عبوری از لوله ها، قطر مربوط به لوله های توزیع (Distribution pipes)، قطر لوله جریان رسان (Supply pipes)، شدّت جریان گذرنده از مجاری انتقال دهنده و … با دقت بررسی و توسط مهندس طراح محاسبه گردد. اگرچه طراحی شبکه های آبرسان در چهارچوب چند اصل محدود و انگشت شمار بررسی می گردد، مع الوصف تدقیق در این اصول معدود نیز منتج به آن خواهد شد که طراحی هر شبکه به صور متعدد و گوناگون امکان پذیر بوده و از میان حالات بیشماری که جهت پیاده سازی عناصر سیستم آبرسان موجود می باشد، گاه این امکان موجود است تا ده ها پاسخ کاملا متفاوت که همگی به لحاظ فنی و اجرایی قابل قبول می باشند ظهور کرده و به عنوان سناریوهای پیشنهادی مطرح گردند. در چنین شرایطی علیرغم وسعت دامنه آلترناتیوهای طراحی، برآورد اقتصادی با رویکرد ملحوظ داشتن کمترین هزینه و بیشترین عمر مفید جهت اجزاء فیزیکال، معرف مناسب ترین گزینه از میان کلیّه گزینه های قابل قبول است؛ با این وجود و علیرغم تمامی تلاش های صورت گرفته توسط کارشناسان، مهندسین، محققین و متولیان امر با عنایت به وسعت دامنه فرآیند هایی که تجمیع آنان منجر به انتخاب یک سناریو به عنوان اقتصادی ترین طرح ممکن خواهد بود، اگر غیر ممکن نباشد بسیار دشوار است! در میان کلیه اجزاء فیزیکال شبکه های توزیع و انتقال آب، پیچیده ترین شرایط زمانی روی می نماید که طراح در صدد انجام محاسبات لازم به منظور تعیین قطر مناسب جهت لوله های شبکه های آبرسانی برآید؛ چرا که برنامه ریزی جهت دستیابی به خواسته یاد شده و ارائه مناسب ترین بازه معنا دار (با توجه به محدودیت اقطار موجود در بازار) برای کارگزاری خطوط لوله نیازمند مدل سازی بر مبنای یک مدل ریاضی غیر خطی بوده که حل آن در ابعاد عملی و با در نظر گرفتن وسعت شبکه های توزیع بسیار پیچییده است.

تعیین قطر مناسب جهت لوله های شبکه های آبرسانی

در این متد از مدلسازی ابتدا به ساکن، جهت کاهش افت فشار (hf)در شبکهء موجود، با در نظر گرفتن عوارض عمرانی و نقشه برداری، طی بررسی دقیق پروفیل مسیر و تعیین احجام خاکی (در صورت وجود محدودیت در انتخاب سازه های آبی)، کوتاه ترین مسیر اجرایی برای انتقال آب به هر نقطه از نقاط مصرف را بدست آورده و با استفاده از آن مقدار دقیق شدّت جریان در هر یک از لوله های موجود در شبکه را مشخص می سازیم. در ادامه با در دست داشتن شدّت جریان گذرنده از هر لوله، یک مدل برنامه ریزی غیر خطی برای بدست آوردن اقطار بهینه حل می شود. علیرغم تلاش های گسترده محقیقن جهت دستیابی به الگوریتمی که منجر به معرفی اقطار بهینه در شبکه آبرسانی شود، نیل به خواسته مذکور تا کنون عقیم مانده و متدهایِ بیشمارِ پیشنهاد شده توسط ایشان ـ که اکثرا بر اساس مدلسازی ریاضی و تکنیک های تحقیق در عملیات متکی هستند ـ هنوز منجر به ارائه مناسب ترین شبکه آبرسان نگردیده است. با این اوصاف به منظور بهینه سازی شبکه های توزیع آب پاره ای معادلات بیش از سایرِ روابطِ ارائه شده مورد توجه کارشناسان بوده و استفاده از آنها در منطق موجود برای تعیین قطر شبکهء لوله ها در نرم افزارهایی نظیر WaterGEMS بکار گرفته می شود. در ذیل به معرفی یکی از این شیوه های محاسباتی که در واقع متدی ترکیبی است اشاره خواهیم کرد.

حتما بخوانید  آموزش ماکرو نویسی در محیط اکسل، کاربردی در مهندسی آب-درس دوم

مُتد مورد بحث بر اساس حل دو الگوریتم مجزا توسط کاربرد حلقه های تکرار متوالی با تکیه بر حدس اولیه استوار بوده و مقایسه نتایج حاصل از هر تکرار در الگوریتم اول، به عنوان ورودی در اختیار حلقه دیگر قرار می گیرد و این روند بارها و بارها تکرار می شود تا زمانیکه اختلاف حاصل از برآورد قطر لوله در الگوریتم اول طی دو حل موالی ناچیز شده و بر اساس اقطار موجود در بازار در یک رنج واقع شوند. مثلا چنانچه پس از واسنجی پاسخ های موجود، قطر یک لوله در یک گام 69 میلیمتر و در گام بعد 69.2 میلیمتر برآورد شود، با توجه به اقطار موجود در بازار، قطر 75 میلیمتر جهت لولهء مذکور تثبیت خواهد شد. در این روش، الگوریتم اول هر شاخه از لوله های شبکهء موجود را بطور مجزا حل نموده و الگوریتم دوم با در نظر گرفتن تأثیر لوله های مشترک در Loop های شبکه های مرکب، اعتبار محاسبات صورت گرفته در الگوریتم دیگر را واسنجی می کند. کاربرد این متد بدین صورت خواهد است که ابتدا زبری لوله به عنوان حدس اولیه به الگوریتم نخست ارسال و بر اساس آن قطر اولیه محاسبه می گردد.

با استفاده از قطر محاسبه شده، میزان عدد رینالذر را بدست آورده اقدام به محاسبه زبری لوله میکند و در ادامه این فرآیند تکراری مجددا با استفاده از دو مقدار یاد شده (عدد رینالدز و زبری) قطر را جدیدی جهت لوله معرفی می کند. همزمان با آن و به موازات محاسبات صورت گرفته، الگوریتم دوم از این قطر استفاده کرده دبی، فشار و سرعت جریان را محاسبه می نماید. در نهایت چنانچه مقدار حاصل منجر به تأمین Demand گره انتهایی نگردد، با علم به این موضوع که در شبکه های حلقوی تأثیر حلقه های متوالی بر روی یکدیگر با در نظر گرفتن معادله انرژی بررسی می گردد (و نه قانون پیوستگی) قطر محاسبه شده توسط الگوریتم اول اصلاح شده و این روند تا زمانیکه کلیه پارامترهای کنترلی در رنج های تعریف شده قرار گیرند ادامه خواهد داشت. در کلیه مراتب حل مسئله توجه به نکات زیر الزامی بوده و باید توسط الگورتیم محاسباتی در نظر گرفته شوند:

  • در تمام Junction ها قانون اول کیرشهف بر قرار است؛
  • در هر حلقه با در نظر گرفتن جهتی فرضی برای جریان، جمع جبری افت فشارها صفر است؛
  • با در نظر گرفتن تراکم جمعیت و توپوگرافی در تمامی Junction ها باید Demand تأمین گردد؛
  • جریان ورودی به هر گره از کوتاهترین مسیر ممکن واصل گشته است؛
  • فشار در Junction ها در رنج استاندارد (حدود 20 تا 40 مترـ آب) باشد؛
  • سرعت جریان در لوله ها ترجیحا در یک بازه اپتیمم (0.8 m/s – 1.2 m/s) باشد؛
  • محاسبات تا جایی ادامه یابد که Demand لازم تأمین و قطر پیشنهادی دو محاسبه متوالی در یک رنج باشد؛

با توجه به اینکه پارامترهای موجود در این الگوریتم از گستردگی قابل قبول برخوردار بوده و کارآیی قطر پیشنهادی در تأمین میزان دبی، سرعت و فشار دقیقا کنترل می گردد، استفاده از آن مطلوب تر از حالتی است که الگوریتم نخست بر اساس جانشانی حداقل قطر و بدون در نظر گرفتن تأثیر زبری لوله وارد چرخه محاسبات گردد. از آنجا که قطر لوله های موجود در بازار اقطاری خاص بوده و این خاص بودن تبدیل به عاملی محدود کننده خواهد شد، مدل پیشنهادی باید با استفاده از متغیرهایی در رنج اعداد صحیح ساخته شود ولی با توجه به اینکه در روش حل مسائل برنامه ریزی غیر خطی، امکان محود ساختن مدل بر اساس اعداد صحیح وجود ندارد قطر لوله را پیوسته در فرض نموده و پس از خاتمه کار الگوریتم توصیف شده، این قطر به دو لوله با قطرهای موجود در بازار تبدیل می شود، بطوریکه مجموع افت فشار آنها با تعریف مکان دقیق گره های چاه یا Junction های بدون Demand معادل افت فشار قطر بدست آمده گردد.

در استفاده از متد توصیف شده باید تعداد گام های هر مرحله را برای نرم افزار مشخص ساخته و در هر گام به ترتیب مراحل انجام محاسبات را قید نمود. مراحل گام به گام حل الگوریتمِ نخست به شرح زیر است:

  • ابتدا مقدار مناسبی برای f، ضریب زبری دارسی ـ ویسباخ، حدس بزن
  • به مرحله دوم برو
حتما بخوانید  آنجا که هفته ها به ثانیه تبدیل می شوند! ( VBA در اکسل )

الگوریتم دوم نیز به صورت گام به گام و به شرح ذیل توصیف می گردد:

  • تعداد Loop های شبکه را مشخص کن
  • شماره لوله های هر Loop را معین کن
  • شماره لوله های مشترک بین دو Loop متوالی را مشخص کن
  • قطر بدست آمده از الگوریتم نخست برای هر شاخه را به عنوان ورودی دریافت کن
  • طول هر شاخه را با توجه به مقدار بکار رفته در الگوریتم اول دریافت کن
  • دبی موجود در هر شاخه را از الگوریتم اول دریافت کن
  • با توجه به اطلاعات موجود، افت فشار را در هر شاخه مشخص کن
  • میزان را محاسبه کن
  • در هر Loop مجموع افت فشارها را مشخص کن
  • حاصل عبارت را محاسبه کن. ضریب n توان دبی در معادله افت فشار است.
  • میزان را بدست آورید
  • قرینه مقدار گام قبل را () و به عنوان Adjustment مربوط به لوله مشترک با Loop کناری منظور کنید.
  • در هر شاخه ها حاصل Q + را محاسبه و به عنوان دبی تصحیح شده آن شاخه منظور کنید.
  • به گام هفتم برو

در هر دو الگوریتم فوق، روند تکرار تا جایی ادامه خواهد داشت که دو مقدار بدست آمده در گام ما قبل آخر جزئی شود. در ادامه کد VBA الگوریتم نخست جهت استفاده به عنوان ماکرو در نرم افزار اکسل ارائه می گردد:

Sub diameter()

Sheet1.Select
Rows(1).Clear
Sheet1.Name = ” قطر لوله ها”
Cells.HorizontalAlignment = xlCenter
Columns(1).Clear
Range(“A1″) = ” ID ”
Range(“B1″) = ” Label ”
Range(“C1″) = ” Length (m) ”
Range(“D1″) = ” Darcy – Weisbach Roughness (m)”
Range(“F1″) = ” Flow (m³/s) ”
Range(“G1″) = ” hf (mH2O) ”
Range(“E:E”).ClearContents
Range(“E1″) = ” Diameter (inch) ”
Range(“H:H”).ClearContents
Range(“H1″) = ” Darcy – Weisbach Coefficient of Friction”
Range(“I:I”).ClearContents
Range(“I1”) = “Velosity (m / s) ”

‘ ================================================
Range(“A1:I1”).Select
Selection.AutoFilter
With Selection
.Interior.Color = RGB(100, 180, 230)
.Font.Bold = True
End With
Rows(“2:2”).Select
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
‘ ================================================

Cells.Select
Selection.Columns.AutoFit
Range(“A2”).Select

Dim Q, L, V, d, hf, f, Re, E, X, LR, C1, C2 As Double
Dim i, j, r As Long
Dim Cell As Range

Const Pi = 3.14159265358979
Const g = 9.806
Const Kv = 1.12 * 10 ^ (-6)

LR = Cells(Rows.Count, 2).End(xlUp).Row
r = 2
n = 0
‘ ================================================

f = 0.02

‘ ================================================

‘ Q = Cells(r, 6).Value
‘ L = Cells(r, 3).Value
‘ hf = Cells(r, 7).Value
‘ V = Cells(r,9).Value

‘ D^5 = (8 * L * Q^2)/(g * Pi^2 *hf) =C1 * f (1)
‘ Re= (4 * Q)/(Pi * Kv * D) = C2 / D => C2 = (4 * Q)/(Pi * Kv) (2)

For Each Cell In ActiveSheet.UsedRange.Cells()
If IsNumeric(Cell.Value) And Cell.Value < 0 Then
Cell.Value = -1 * Cell.Value
End If
Next Cell

TheFirstLoop:
Do
If Cells(r, 7).Value <> 0 Then
C1 = VBA.Abs((8 * Cells(r, 3).Value * Cells(r, 6).Value * Cells(r, 6).Value) / (g * Pi * Pi * Cells(r, 7).Value))
C2 = VBA.Abs((4 * Cells(r, 6).Value) / (Pi * Kv))
End If

For i = 1 To 50
‘ : (1) ØÈÞ ÑÇÈØå
d = (C1 * f) ^ 0.2
‘ : (2) ØÈÞ ÑÇÈØå
If d <> 0 Then
Re = C2 / d
End If
If d > 0 And Re > o Then
f = (0.25 / (Log(((E) / (3.7 * d)) + (5.74) / (Re ^ 0.9))) ^ 2)
If f < 0 Then GoTo TheFirstLoop
hf = ((f * (Cells(r, 3)) * (Cells(r, 6)) * (Cells(r, 6))) / (2 * d * g * (Pi * d * d / 4) ^ 2))
If hf < 0 Then GoTo TheFirstLoop
Cells(r, 5).Value = d
If d < 0 Then GoTo TheFirstLoop
Cells(r, 8).Value = f
If f < 0 Then GoTo TheFirstLoop
Cells(r, 7).Value = hf
End If
Next i

TheSecondLoop:

Cells(r, 5).Value = VBA.Abs(d / 0.0254)

If Cells(r, 5).Value > 0 And Cells(r, 5).Value <= 0.125 Then
Cells(r, 5).Value = 0.125
ElseIf Cells(r, 5).Value > 0.125 And Cells(r, 5).Value <= 0.25 Then
Cells(r, 5).Value = 0.25
ElseIf Cells(r, 5).Value > 0.25 And Cells(r, 5).Value <= 0.375 Then
Cells(r, 5).Value = 0.375
ElseIf Cells(r, 5).Value > 0.375 And Cells(r, 5).Value <= 0.5 Then
Cells(r, 5).Value = 0.5
ElseIf Cells(r, 5).Value > 0.5 And Cells(r, 5).Value <= 0.75 Then
Cells(r, 5).Value = 0.75
ElseIf Cells(r, 5).Value > 0.75 And Cells(r, 5).Value <= 1 Then
Cells(r, 5).Value = 1
ElseIf Cells(r, 5).Value > 1 And Cells(r, 5).Value <= 1.25 Then
Cells(r, 5).Value = 1.25
ElseIf Cells(r, 5).Value > 1.25 And Cells(r, 5).Value <= 1.5 Then
Cells(r, 5).Value = 1.5
ElseIf Cells(r, 5).Value > 1.5 And Cells(r, 5).Value <= 2 Then
Cells(r, 5).Value = 2
ElseIf Cells(r, 5).Value > 2 And Cells(r, 5).Value <= 2.5 Then
Cells(r, 5).Value = 2.5
ElseIf Cells(r, 5).Value > 2.5 And Cells(r, 5).Value <= 3 Then
Cells(r, 5).Value = 3
ElseIf Cells(r, 5).Value > 3 And Cells(r, 5).Value <= 3.5 Then
Cells(r, 5).Value = 3.5
ElseIf Cells(r, 5).Value > 3.5 And Cells(r, 5).Value <= 4 Then
Cells(r, 5).Value = 4
ElseIf Cells(r, 5).Value > 4 And Cells(r, 5).Value <= 5 Then
Cells(r, 5).Value = 5
ElseIf Cells(r, 5).Value > 5 And Cells(r, 5).Value <= 6 Then
Cells(r, 5).Value = 6
ElseIf Cells(r, 5).Value > 6 And Cells(r, 5).Value <= 8 Then
Cells(r, 5).Value = 8
ElseIf Cells(r, 5).Value > 8 And Cells(r, 5).Value <= 10 Then
Cells(r, 5).Value = 10
ElseIf Cells(r, 5).Value > 10 And Cells(r, 5).Value <= 12 Then
Cells(r, 5).Value = 12
ElseIf Cells(r, 5).Value > 12 And Cells(r, 5).Value <= 14 Then
Cells(r, 5).Value = 14
ElseIf Cells(r, 5).Value > 14 And Cells(r, 5).Value <= 16 Then
Cells(r, 5).Value = 16
ElseIf Cells(r, 5).Value > 16 And Cells(r, 5).Value <= 18 Then
Cells(r, 5).Value = 18
ElseIf Cells(r, 5).Value > 18 And Cells(r, 5).Value <= 20 Then
Cells(r, 5).Value = 20
ElseIf Cells(r, 5).Value > 20 And Cells(r, 5).Value <= 22 Then
Cells(r, 5).Value = 22
ElseIf Cells(r, 5).Value > 22 And Cells(r, 5).Value <= 24 Then
Cells(r, 5).Value = 24
ElseIf Cells(r, 5).Value > 24 And Cells(r, 5).Value <= 26 Then
Cells(r, 5).Value = 26
ElseIf Cells(r, 5).Value > 26 And Cells(r, 5).Value <= 28 Then
Cells(r, 5).Value = 28
ElseIf Cells(r, 5).Value > 28 And Cells(r, 5).Value <= 30 Then
Cells(r, 5).Value = 30
ElseIf Cells(r, 5).Value > 30 And Cells(r, 5).Value <= 32 Then
Cells(r, 5).Value = 32
ElseIf Cells(r, 5).Value > 32 And Cells(r, 5).Value <= 34 Then
Cells(r, 5).Value = 34
ElseIf Cells(r, 5).Value > 34 And Cells(r, 5).Value <= 36 Then
Cells(r, 5).Value = 36
ElseIf Cells(r, 5).Value > 36 And Cells(r, 5).Value <= 38 Then
Cells(r, 5).Value = 38
ElseIf Cells(r, 5).Value > 38 And Cells(r, 5).Value <= 40 Then
Cells(r, 5).Value = 40
ElseIf Cells(r, 5).Value > 40 And Cells(r, 5).Value <= 42 Then
Cells(r, 5).Value = 42
ElseIf Cells(r, 5).Value > 42 And Cells(r, 5).Value <= 44 Then
Cells(r, 5).Value = 44
ElseIf Cells(r, 5).Value > 44 And Cells(r, 5).Value <= 46 Then
Cells(r, 5).Value = 46
ElseIf Cells(r, 5).Value > 46 And Cells(r, 5).Value <= 48 Then
Cells(r, 5).Value = 48
ElseIf Cells(r, 5).Value > 48 And Cells(r, 5).Value <= 52 Then
Cells(r, 5).Value = 52
ElseIf Cells(r, 5).Value > 52 And Cells(r, 5).Value <= 56 Then
Cells(r, 5).Value = 56
ElseIf Cells(r, 5).Value > 56 And Cells(r, 5).Value <= 60 Then
Cells(r, 5).Value = 60
ElseIf Cells(r, 5).Value > 60 And Cells(r, 5).Value <= 64 Then
Cells(r, 5).Value = 64
ElseIf Cells(r, 5).Value > 64 And Cells(r, 5).Value <= 68 Then
Cells(r, 5).Value = 68
ElseIf Cells(r, 5).Value > 68 And Cells(r, 5).Value <= 72 Then
Cells(r, 5).Value = 72
ElseIf Cells(r, 5).Value > 72 And Cells(r, 5).Value <= 76 Then
Cells(r, 5).Value = 76
ElseIf Cells(r, 5).Value > 76 And Cells(r, 5).Value <= 80 Then
Cells(r, 5).Value = 80
ElseIf Cells(r, 5).Value > 80 And Cells(r, 5).Value <= 88 Then
Cells(r, 5).Value = 88
End If

حتما بخوانید  تفاوت‌های آزمون‎‌های نقطه عطف و کندال

d = Cells(r, 5).Value
d = d * 0.0254
If d <> 0 Then
Re = C2 / d
V = Cells(r, 6) / (Pi * d * d / 4)
End If
If d < 2.032 And V > 1.2 Then
d = d + 0.0508
GoTo TheSecondLoop
End If
If d = 0.127 And V < 0.6 Then
n = n + 1
d = d – 0.0254
If n > 100 Then GoTo TheThirdLoop
GoTo TheSecondLoop
End If
If d >= 0.1524 And V < 0.6 Then
n = n + 1
If n > 100 Then GoTo TheThirdLoop
d = d – 0.508
GoTo TheSecondLoop
End If
TheThirdLoop:
If Cells(r, 5).Value <> 0 Then
f = 0.25 / (Log(((E) / (3.7 * d)) + (5.74) / (Re ^ 0.9))) ^ 2
Cells(r, 8).Value = f
hf = 8 * f * Cells(r, 3).Value * ((Cells(r, 6).Value) ^ 2) / ((Pi ^ 2) * (d ^ 5) * g)
Cells(r, 7).Value = hf
Cells(r, 9) = V
End If
r = r + 1
Loop Until (r > LR)
Cells(r, 1).Select
Columns(7).NumberFormat = “0.000”
Columns(8).NumberFormat = “0.00000”
Columns(9).NumberFormat = “0.00”

‘ ========================================================================
Sheet1.AutoFilter.Sort.SortFields.Clear
With Sheet1.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
[A2] = 1
[A3] = 2
Range(“A2:A3”).Select
Selection.AutoFill Destination:=Range(“A2:A” & LR)
Range(“A1”).Select
‘ ========================================================================

End Sub

آرش ازکیا
اگر دورتر ها را دیدم، بر دوش بزرگان ایستاده بودم!
نظر خود را بنویسید:
ثبت دیدگاه
دیدگاه های کاربران
فرزاد
12:04 - 1402/08/16
پاسخ دهید

مقاله مفیدی بود

ابراهیم
23:57 - 1402/03/29
پاسخ دهید

تشکر. خیلی مفید وعالی

لطفا صبر کنید