مقدمه و حل جریان توسعه یافته داخل لوله – قسمت 1/2

تست شده در OF 2.3

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

  • تولید یک شبکه بسیار ساده در بلاکمش برای یک لوله با مقطع مستطیلی
  • ایجاد و تنظیم یک مساله جدید در اُپنفوم
  • مشاهده شبکه در پاراویو

اما همانطور که می دانید، نوع پروفیل جریان در داخل لوله ها، با توجه به مقطع آنها متفاوت است. برای مثال جریان بین دو صفحه بی نهایت به صورت دو بعدی و سهموی می باشد. از طرفی جریان در داخل یک لوله دایروی به شکل سهموی سه بعدی می باشد. اما تعیین دقیق پروفیل سه بعدی برای مقاطع مختلف کار ساده نیست. مخصوصا اگر این مقاطع، دارای هندسه ساده ای نباشند. اما به راحتی می توان به روش عددی این پروفیل ها را به دست آورد. در این مثل ابتدا پروفیل سرعت توسعه یافته در یک لوله با مقطع مستطیلی مورد بررسی قرار می گیرد. سپس شبکه مربوط به مساله جریان درون یک کانال حفره دار از گمبیت وارد شده و پروفیل سرعت توسعه یافته برای آن بدست خواهد آمد.

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

1

  • ایجاد مساله جدید و تولید شبکه لوله توسط بلاکمش

و اما بلاکمش! این ابزار اولین ابزار ارائه شده توسط اُپنفوم برای تولید شبکه های ساختاریافته است. اهمیت شبکه های ساختار یافته به خوبی برای همه متخصصین CFD واضح است. در آینده به طور خیلی مفصلی به بحث شبکه های ساختاریافته پرداخته خواهد شد. اما بلاکمش ابزاری بسیار ساده و در عین حال قدرتمند برای تولید چنین شبکه هایی محسوب می شود. تمام تنظیمات این ابزار اعم از نقاط، لبه ها، بلوک ها، تعداد المان ها و شرایط مرزی داخل فایلی به نام blockMeshDict ذخیره می شود. گاهی افراد گله می کنند که عدم وجود محیطی گرافیکی برای این ابزار از نقاط ضعف آن محسوب می شود، اما این مشکل را می توان به راحتی برطرف نمود. این ابزار از شما تنها مختصات نقاط را خواهد خواست. در ادامه هر تنظیماتی که انجام می شود بر اساس همین نقاط خواهد بود. بنابراین کافیست تا با استفاده از روشی مختصات نقاط را به دست آوریم. برای مسائل خیلی ساده می توان به صورت ذهنی هم مختصات نقاط را حساب کرد. اما برای مسائل پیچیده تر بازم هم هیچ مشکلی نیست! مگر سالیدورکس مرده است؟! پیچیده ترین هندسه خود را در یک نرم افزار CAD مثل سالیدورکس طراحی کنید و نقاط را از آن استخراج کنید! همین!

و اما تنظیم همانطور که گفته شد برای استفاده از این ابزار لازم است تا فایل blockMeshDict آن تنظیم شود. این فایل تا نسخه 2.4 از اُپنفوم در داخل پوشه contant/polyMesh قرار دارد و در نسخه بعدی آن یعنی نسخه 3.0 در داخل پوشه system قرار می گیرد. اما این فایل از قسمت هایی تشکیل شده است که به صورت خلاصه در حین شبکه بندی، در اینجا مطرح می شود.

برای شروع هر مساله اُپنفوم لازم است تا ابتدا فایل های ضروری آن ایجاد شوند. برای این کار به هیچ وجه لازم نیست تمام فایل ها از ابتدا توسط کاربر تولید شوند، کافیست فایل ها از نزدیک ترین مثال به مثال حاضر کپی شده و در پوشه run که پوشه اصلی کاربر است کپی شود. پوشه run در داخل پوشه زیر قرار دارد:

$HOME/OpenFOAM/user-2.3.0/run

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

run

به همین راحتی، شما به پوشه run وارد خواهید شد. بنابراین قرار دادن مسائل در این پوشه به سریع تر شدن روند دسترسی به فایل ها کمک می کند. به هیج وجه من الوجوه (!) مسائل خود را روی دسکتاپ لینوکس قرار ندهید! همچنین پوشه مربوط به مثال های آموزشی خود اُپنفوم که tutorials نام دارند در داخل پوشه run قرار گرفته است. و اما سوال اینجاست که از کجا بدانیم کدام مثال آموزشی اُپنفوم نزدیکترین مثال به مساله ماست. سوال بسیار بجایی است اما جواب بسیار خشنی در انتظار شماست! یک تحقیق، دو کسب تجربه. هیچ کسی نمی تواند صد در صد به شما بگوید که کدام مثال به مساله شما نزدیک تر است. این خود شما هستید که این تشخیص را خواهید. هرچه تشخیص شما نزدیکتر باشد، تنظیم کردن مساله راحت تر خواهد بود. برای مثال اگر شما به دنبال حل یک مساله ناپایا هستید، به هیچ وجه نباید به سراغ مثال های آماده یک مساله پایا بروید! همین قضیه برای تمام مباحث برقرار است. اولین قدم برای تشخیص درست مثال ها، مطالعه اجمالی بر روی انواع حلگرهای اُپنفوم است. این حلگرها را می توانید در اینترنت و یا در قسمت 3.5 موجود در User Guide نرم افزار بیابید. اما User Guide کجاست. این فایل PDF در محل نصب اُپنفوم شما قرار دارد:

/opt/openfoam230/doc/Guides-a4/userGuide.pdf

در لینوکس / به معنای پوشه ریشه (Root) می باشد. برای دسترسی به آن کافیست در یک پنجره باز شده، گزینه Computer انتخاب شود.

2

بنابراین قبل از هر کاری، سعی کنید تا جای ممکن حلگرهای اُپنفوم را بیابید. در اُپنفوم هیچ کس به اندازه خودتان قادر نیست به شما کمک کند! وقتی تا حدودی با حلگرها آشنا شدید، حال لازم است تا مثال های معروف مربوط به حلگرهای مهم را نیز یاد بگیرید. مثلا همه فومِر ها (حتی مبتدی ترین آنها) مثال Cavity مربوط به حلگر icoFoam را می شناسد. او می داند که اولا این حلگر، یک حلگر ناپایا برای حل جریان های آرام است. ثانیا او می داند که این مساله از ابزار بلاکمش برای شبکه بندی هندسه خود استفاده کرده است. بنابراین در هر مساله ای از جمله مساله حاضر که دارای چنین ویژگی هایی باشد می توان از این مثال آموزشی به عنوان مثال نمونه استفاده کرد. البته مساله حاضر را می توان با استفاده از حلگرهای پایا نیز حل کرد. پس برای شروع کار لازم است تا یک کپی از مثال Cavity در پوشه run کاربر قرار داده شود. مثال Cavity در آدرس زیر قرار دارد:

run/tutorials/incompressible/icoFoam/cavity

با کپی آن پوشه اصلی مثال ما در حال حاضر این خواهد بود:

run/cavity

اما ما ترجیح میدهیم نامی برای مثال خود انتخاب کنیم. بنابراین نام پوشه را مثلا به pipeDevelopedFlow تغییر می دهیم. بنابراین تا اینجای کار:

run/pipeDevelopedFlow

هشدار: لینوکس و از جمله ترمینال آن به حروف بزرگ و کوچک حساس هستند.

حال باید شروع به تغییر فایل های داخل این مثال کنیم تا مساله مورد نظر خود را آماده کنیم. خب هندسه Cavity تا مقدار زیادی شباهت به مساله حاضر دارد. چرا که هر دو مساله از یک بلوک واحد تشکیل یافته اند. تنها کافیست مختصات نقاط بلوک در فایل blockMeshDict تغییر داده شوند تا هندسه مورد نظر ما ایجاد شود. این فایل در داخل پوشه constant/polyMesh قرار دارد.

نکته: شبکه اُپنفوم به صورت چندین فایل در داخل پوشه polyMesh قرار میگیرد. این فایل ها شامل نقاط، سطوح، المان ها، CellZone ها و … هستند. بنابراین اگر نیاز به پاک کردن شبکه دارید کافیست این فایل ها را حذف کنید. البته دقت کنید که در میان این فایل ها فایل blockMeshDict حذف نشود. چرا که این داخل این تنظیمات مربوط به ابزار بلاکمش قرار دارد که برای شبکه بندی مجدد لازم است. البته این برای زمانی است که شما از ابزار بلاکمش استفاده می کنید. برای دیگر حالت ها، هیچ نیازی به وجود فایل blockMeshDict نیست و می توانید برای حذف شبکه، خود پوشه polyMesh را حذف کنید.

در این مثال نیاز است تا قبل از شروع شبکه بندی، شبکه قبلی ایجاد شده حذف شود. معمولا بعد از نصب اُپنفوم برای تست صحت کارکرد آن یکبار مساله Cavity اجرا می شود که این منجر بخ وجود فایل های شبکه در داخل پوشه polyMesh خواهد شد.

اما فایل blockMeshDict دارای قسمت های مختلفی است. در ابتدای این فایل مشخص می شود که آیا نیازی هست تا اعداد موجود در این دیکشنری به متر تبدیل شوند یا خیر؟ فرض کنید در ادامه و در زمان تعیین مختصات نقاط شما ترجیح می دهید که اعداد به میلیمتر وارد شوند، در این صورت حتما باید در کلیدواژه convertToMeters مقدار 0.001 درج شود. این به این خاطر است که اُپنفوم بر اساس واحد های SI کار می کند.

convertToMeters 1;

در قسمت بعد نوبت به تعیین مختصات نقاط می رسد. در دیکشنری vertices مختصات نقاط باید به ترتیب وارد شوند. ترتیب این نقاط از آنجایی مهم است که در ادامه و در هنگام تعیین بلوک ها و لبه ها، نیاز به شماره این نقاط خواهیم داشت. این نقاط به ترتیب از صفر شماره گذاری می شوند. برای مثال در زیر اولین نقطه دارای شماره صفر، دومین نقطه دارای شماره 1 و همینطور ادامه می یابد. در اینجا تنها کافیست مختصات نقاط به مختصات مورد نظر ما تغییر داده شوند. فرض کنید لوله در جهت z قرار خواهد گرفت و سطح مقطع آن نیز همانطور که گفته شد به شکل مستطیل خواهد بود. بنابراین مختصات نقاط را به شکل زیر وارد می کنیم.

نکته: هیچ محدودیتی در ترتیب نقاط وجود ندارد. اما باید بدانید که نقاط به ترتیب شماره گذاری خواهند شد و شما در ادامه از این شماره ها استفاده خواهید کرد.

vertices
(
    (-1 -0.5 0)
    (1 -0.5 0)
    (1 0.5 0)
    (-1 0.5 0)
    (-1 -0.5 1)
    (1 -0.5 1)
    (1 0.5 1)
    (-1 0.5 1)
);

در ادامه نیاز است تا بلوک ها تعیین شوند. در مبحث شبکه های ساختاریافته کل بحث روی همین بلوک هاست. اما اینجا به این مبحث اشاره نمی شود. بلوک از 8 نقطه تشکیل می شود. لازم است تا با استفاده از نقاط بالا یک بلوک بسازیم. اما ترتیب نقاط برای تعریف یک بلوک در اُپنفوم مهم است. باید ابتدا نقاط موجود روی یک وجه بلوک به صورت پادساعتگرد شمرده شوند، سپس به همین ترتیب برای وجه روبرویی تکرار شود. نحوه شمردن این نقاط و انتخاب وجه (به دلخواه کاربر) منجر به تعریف مختصات مساله خواهد شد.

3

همانطور که در بالا مشاهده می شود، امتداد اتصال نقطه اول و دوم، مختصات اول (x1) خواهد بود. امتداد اتصال نقطه دوم و سوم، مختصات دوم (x2) خواهد بود. امتداد منتهی به وجه روبرویی نیز مختصات سوم (x3) خواهد بود (شاید بگویید مگر مختصات سوم از ضرب خارجی دو مختصات اول به دست نمی آید؟ با تجربه شخصی، این مورد به اشتباه گاهی در این ابزار رعایت نمی شود). در نتیجه بلوک به شکل زیر باید تعریف شود:

blocks
(
    hex (0 1 2 3 4 5 6 7) (40 20 20) simpleGrading (1 1 1)
);

اما پرانتز دوم مربوط به تعداد المان ها در هر امتداد مختصات است. همچنین پرانتز سوم مربوط به Grading است که در هر جهت باید تعیین شود. Grading به معنی جمع شدگی شبکه در یک طرف و یا جتی در دوطرف است. در اینجا برای ریزتر شدن شبکه ها در مجاور لوله، از Grading در جهات y و z استفاده شده است.

قسمت بعدی edges، مربوط به تعریف کمان ها و یا Spline هاست. در صورتی که در مساله چنین لبه هایی موجود نباشد، این قسمت خالی گذاشته می شود.

edges
(
);

اما قسمت آخر مربوط به تعریف شرایط مرزی می باشد. شرایط مرزی در اُپنفوم در کل سه نوع می باشد. نوع اول، نوع Basic نام دارد که تنها شامل شش عنوان patch، wall، symmetry، cyclic، empty و processor می شود. شما فعلا تنها کافیست دو نوع شرط مرزی patch و wall را بشناسید. شرط مرزی patch برای مرزهای ورودی و خروجی استفاده می شود و شرط مرزی wall برای دیوارها. البته می توان از شرط مرزی patch برای مرز دیوار، اما فقط در جریان های آرام نیز استفاده کرد. اما نحوه تعیین شرایط مرزی با تعیین نوع مرز برای سطوح بلوک انجام می گیرد. در اینجا نیز سطوح با شماره نقاط سازنده آنها مشخص می شود. در اینجا یک ورودی، یک خروجی و یک مرز مربوط به لوله وجود دارد. مرز لوله خود از چهار سطح تشکیل شده است. بنابراین خواهیم داشت:

boundary
(
    inlet
    {
        type patch;
        faces
        (
            (0 3 2 1)
        );
    }

    outlet
    {
        type patch;
        faces
        (
            (4 5 6 7)
        );
    }

    walls
    {
        type wall;
        faces
        (
            (0 4 7 3)
            (2 6 5 1)
            (1 5 4 0)
            (3 7 6 2)
        );
    }
);

بنابراین تا اینجای کار تنظیم ابزار بلاکمش پایان یافته و می توان شبکه را تولید کرد. برای تولید شبکه باید دستور بلاکمش اجرا شود. اما برای اجرای این دستور حتما باید در پوشه اصلی مساله باشید. بنابراین با استفاده از ترمینال لینوکس لازم است تا وارد این پوشه شوید. خب پس کافیست یک ترمینال با کلید های میانبر Ctrl+Alt+T باز کنیم. سپس برای وارد شدن به پوشه run کافیست دستور زیر را وارد کنیم:

run

حالا کافیست وارد پوشه مساله شویم. دستور cd مخفف Change Directory این کار را برای ما انجام خواهد داد. کافیست دستور زیر را در ترمینال وارد کنیم:

cd pipeDevelopedFlow

نکته: برای نوشتن نام یک فایل یا پوشه در ترمینال لازم نیست تمام حروف آن را خودتان تایپ کنید. کافیست چند حرف ابتدایی نام را وارد کنید سپس با فشردن کلید Tab، ترمینال به صورت خودکار نام آن را برای شما کامل خواهد کرد. در صورتی که نام کامل نشد یا فایلی به این نام موجود نیست و یا حداقل دو فایل با حروف نوشته شما شما موجود است. بنابراین حرف بعدی را وارد کنید و باز Tab بزنید.

حالا در پوشه اصلی مساله قرار گرفته ایم. کافیست با دستور زیر شبکه را تولید کنیم:

blockMesh

اگر سری به پوشه constant/polyMesh بزنیم خواهیم دید که شبکه در آن ذخیره شده است.

  • مشاهده شبکه در نرم افزار پاراویو

خب چگونه شبکه مان را به صورت گرافیکی ببینیم؟ برای این کار کافیست در ترمینال دستور زیر را وارد کنید. این دستور نرم افزار پاراویو را برای شما باز خواهد کرد.

paraFoam

نکته: به تفاوت بین paraFoam و paraview دقت کنید. paraview نام نرم افزاری است برای انجام اعمال پس پردازشی، اما paraFoam یک اسکریپت نوشته شده برای اُپنفوم است که به وسیله آن می توان مستقیم مساله اُپنفوم را در پاراویو باز کنید.

با باز شدن نرم افزار پاراویو باید هندسه خود را برای لود شدن انتخاب کنید. قبل از کلیک بر روی دکمه Apply لازم است دو کار انجام دهید. اول باید تمام شرایط مرزی را انتخاب کنید. برای اینکار فقط یک بار روی گزینه تیک موجود در بالای تمام شرایط مرزی کلیک کنید. اما از طرفی چون هنوز شرایط مرزی تنظیم نشده اند و به دلیل عدم مطابقت نام شرایط مرزی شبکه با نام های ذکر شده در پوشه صفر مساله، لازم است تا تیک مربوط به لود کردن میدان های فشار (p) و سرعت (U) برداشته شود:

4-5

حالا می توانید با کلیک بر روی دکمه Apply شبکه را لود کنید برای دیدن المان های شبکه می توانید از قسمت بالای پاراویو آن را روی حالت wireframe تنظیم کنید:

6

فایل های آموزشی مساله اول

این قسمت فقط برای اعضا قابل مشاهده است. لطفا وارد شوید.

در قسمت دوم این آموزش با ما همراه باشید با نحوه تنظیم مساله برای حل میدان جریان توسط حلگر icoFoam. همچنین نحوه وارد کردن شبکه از نرم افزار گمبیت نیز عنوان خواهد شد.

آموزشی
برای نوشتن دیدگاه باید وارد بشوید.
فهرست
X