
تسهیل سختی شروع به کار با OpenFOAM
متداول ترین شکایتی که من از افراد تازه کار میشنوم و همچنین عمدهترین مشکلاتی که در کار با نرم افزار OpenFOAM مشاهده میکنم، منحنی یادگیری تند آن طبق گفته افراد است. ولی، استدلال من این است که اگر فردی بخواهد به شکل موثری CFD را تمرین کند، منحنی یادگیری در هر نرم افزار دیگری نیز همان تیزی را دارد.
در این بین، تفاوتی بین مفهوم کاربر پسندی و منحنی یادگیری موردنیاز برای انجام CFD خوب وجود دارد که بایستی به آن توجه کرد.
البته که من قبول دارم برنامه های تجاری (Commercial Software) دیگر، کاربرپسندی بهتری دارند (مثلا یک واسط گرافیکی عالی، منو ها، امکان ایجاد نقطه، کلیک و غیره) ولی شما در هنگام کار با این نرم افزار ها، کاملا مشابه با اپنفوم (که کاربرپسندی پایین تری دارد)، ممکن است نتایج بدی به دست بیاورید (چه بسا شاید هم بدتر!). در حقیقت، این نرم افزار تجاری با کاربرپسندی بالا میتواند سطحی از ناآگاهی را در شما ایجاد کند که میتواند بس خطرناک باشد. علاوه بر این، شما وقتی که پس از مدتی در کاربا OpenFOAM احساس راحتی کنید، امکاناتی که در کار با OpenFOAM خواهید داشت بینهایت شده و کارهایی مثل ویرایش کد و اسکریپت نویسی در bash و python به صورت فوق العاده ای کار با OpenFOAM را برای شما پربازده خواهد کرد.
در هر صورت، برای شروع به کار با اپنفوم، در زیر به چند نکته اشاره می کنیم تا با منحنی تیز یادگیری OpenFOAM راحت تر کنار بیایید:
1) CFD را درک کنید:
این کار ممکن است ساده بنظر برسد، اما نه برای همه. اگر شما یک درک حداقلی از آنچه که در زیرلایه های کد در حال رخ دادن است، نداشته باشید، عیب یابی نتایج غلط به دست آمده، یا ناپایداری هایی که منجر به واگرا شدن مساله می شوند، غیرممکن خواهد بود. کتابهایی که برای یادگیری CFD به شما توصیه می کنیم بخوانید:
- The Finite Volume Method in Computational Fluid Dynamics: An Advanced Introduction with OpenFOAM® and Matlab by F. Moukalled, L. Mangani, and M. Darwish
- An introduction to computational fluid dynamics – the finite volume method – by H K Versteeg and W Malalasekera
- Computational fluid dynamics – the basics with applications – By John D. Anderson
2) دینامیک سیالات را درک کنید:
بار دیگر ممکن است موضوع واضح به نظر برسد. اما اگر شما میخواهید که بتوانید صحت نتایج به دست آمده را ارزیابی کنید و محدودیتهای فرضیات مختلفی را که در نظر گرفته اید، به خوبی متوجه باشید، لازم است که تا درک خوبی از دینامیک سیالات داشته باشید. مخصوصا، شما بایستی با اصول آشفتگی، و مدلسازی آن آشنا شوید.

3) اجتناب از ایجاد کیس از صفر
هر زمان که من شروع به تنظیم کیس جدید می کنم، کیس های Tutorial را بررسی میکنم تا کیسی را پیدا کنم که بیشترین شباهت را به کار من داشته باشد. این کار تا حد زیادی سرعت کارها را بالا میبرد. این که شما تنظیم هر کیس را از صفر آغاز کنید، زمان بسیار طولانی از شما خواهد گرفت و به احتمال قوی اشتباهات زیادی را نیز نیز مرتکب خواهید شد، مثلا فراموشی در ثبت متغیرهای کلیدی مختلف. توسعه دهندگان OpenFOAM در تنظیم Tutorial ها برای شما تلاش زیادی کردهاند، پس از آنها استفاده کنید!
سعی کنید همانطور که به کار با OpenFOAM در پروژه های مختلف می پردازید، کتابخانهای از کیس های آماده برای خود ایجاد نمایید. بعدا، ازین Template ها برای تنظیم کردن سریع کیس ها استفاده خواهید کرد.
4) استفاده از Ubuntu کار را حیلی راحت تر می کند:
البته این صرفا نظر من است، اما شما همدر طول مدت به این نتیجه خواهید رسید. بله درست است که Ubuntu نیز همانند هر نرم افزار دیگری، منحنی یادگیری مربوط به خود را دارد، اما به نظر من OpenFOAM در Ubuntu – یا هر محیط لینوکس دیگری شبیه به Ubuntu – به صورت روان و راحت کار میکند. در حال حاضر، OpenFOAM به واسطه Docker یا نرم افزارهای مشابه، در ویندوز هم قابل اجرا است؛ البته که الان نمیتوانم در مورد اینکه آنها در ویندوز تا چه حد خوب کار میکنند صحبت کنم – صرفا به خاطر اینکه تابحال این موضوع را تست نکرده ام. اما همین که شما متوجه قدرت لینوکس شوید، تنها دلیلی که ممکن است به ویندوز سر بزنید، استفاده از نرمافزارهای مایکروسافت آفیس خواهد بود (مگر اینکه گیمر باشید! که البته الان کم نیستند بازی هایی که روی لینوکس اجرا می شوند). نه تنها این، بلکه اکثر فروم های بزرگ و عیب یابی مرتبط با OpenFOAM در اینترنت،کاربران Ubuntu هستند.
من شخصا ترجیح میدهم که از Ubuntu همراه با یک محیط ویندوز مجازی (Virtual Environment) در داخل آن استفاده کنم. در حال حاضر میز کار من متشکل از دو لپتاپ است که در یکی Ubuntu همراه با ویندوز در محیط مجازی نصب است و لپتاپ دوم، که از آن برای کارهای سنتی ویندوزی استفاده می کنم. بوت کردن دوگانه بین لینوکس و ویندوز، گزینه دیگری است، اما جابجایی سریع بین لینوکس و ویندوز برای شخص من اولویت است.
5) اگر زیادی درگیر یک موضوع هستید، کار را ساده کنید! همین!
تنها در صورتی یک مساله پیچیده را حل کنید که خودتان می دانید چه کار دارید می کنید، وگرنه اصلا نباید کار را با یک کیس پیچیده شروع کنید! اصلا! این کلمه را سه بار در ذهن خود تکرار کنید. بهترین راه این است که با نسخه ای ساده کارتان را شروع کنید، و پیچیدگی کار را در لایه های بعدی اضافه کنید. در این روش، کشف مشکل در صورت بروز خطا، بسیار راحتتر خواهد بود.سه بار هم از روی آن بنویسید تا ملکه مغزتان شود. بهترین راه این است که با نسخه ای ساده کارتان را شروع کنید، و پیچیدگی کار را در لایه های بعدی اضافه کنید. در این روش، کشف مشکل در صورت بروز خطا، بسیار راحتتر خواهد بود.
6) با انجمن CFD-Online آشنا باشید:
اگر شما به مشکلی بربخورید، سایت CFD-Online.com برای شما بسیار مفید است. به احتمال زیاد، فرد دیگری مشکل مشابه با مسئله شما را قبلا داشته است. اگر اینگونه نباشد، افراد زیادی وجود دارند که می توانند برایتان مفید باشند. به طور کلی این انجمن برای حل معضلات شبیه سازی های شما، یک بهشت است.
7) نتایج حاصل از ابزار CheckMesh
اگر شما checkMesh را اجرا کردید و با خطای Mesh Failed مواجه شدید، مش خودتان را اصلاح کنید. این کار خیلی اهمیت دارد. خصوصا اگر فعلا در ذهنتان برنامه ای برای آشنایی با اسکیم های عددی موجود در OpenFOAM ندارید، حتما باید بتوانید یک مش خوشگل(!) بسازید. این را بدانید که اگر مش شما خیلی نامتعامد (nonOrthogonal) باشد، با مشکلات جدی روبرو خواهید شد. اگر دیگه خیلی اصرار دارید که از یک مش داغون (!) استفاده کنید، باید خودتان را با اسکیم های عددی مختلف که روی مش های کم کیفیت تر، جواب های بهتری می دهند، آشنا کنید. یک منبع خوب برای چگونگی دستکاری اسکیم ها براساس میزان ناتمعامد بودن مش، این مطلب است.

8) عدد CFL اهمیت دارد!
اگر شما در حال تنظیم یک کیس گذرا هستید، عدد کورانت- فریدریش- لویس (CFL) بسیار با اهمیت است. نه فقط به خاطر صحت نتایج (در شبیه سازی گذرا) بلکه به منظور پایداری در حل کیس نیز بسیار با اهمیت است. اگر گام زمانی شما خیلی بزرگ باشد، شما با مشکل مواجه خواهید شد. یک مبنای ریاضیاتی محکم، برای این معیار پایداری در مسائل نفوذ- انتقال (Advection-Diffusion) وجود دارد. هم چنین، معادلات ناویر- استوکس بسیار غیرخطی بوده و پیچیدگی مسئله و کیفیت مش و غیره میتوانند باعث پایداری کمتر شبیه سازی هم بشوند. وقتی کیس گذرای من Fail شود، و مطمئن باشم که مشکل از مش نیست، گام زمانی را نصف می کنم. بیشتر اوقات، همین یک کار مسئله را حل میکند.
برای گام های زمانی بزرگ، شما میتوانید براساس الگوریتم پیمپل (PIMPLE) حلقه های خارجی را به حلگرها اضافه کنید، اما این کار شما ممکن است باعث از دست رفتن بعضی از اصلاعات در لابلای گام های زمانی شود. توضیح کامل اینکه چگونه این کار انجام میپذیرد در کتاب T. Holzmann آورده شده است.
9) با دوره 3 هفته ای OpenFOAM Wikiکار کنید:
اگر شما برای اولین بار است که شروع به کار با OpenFOAM میکنید، بهتر است تا با یک برنامه یادگیری سازماندهی شده کار کنید. یک نمونه ازین برنامه ها دوره سه هفته ای وبسایت OpenFOAM Wiki است.
اگر شما فارغ التحصیل هستید، و کاری جز یادگیری OpenFOAM ندارید، این کار، سه هفته زمان نخواهد برد. این دوره به همه نکات ضروری که شما برای شروع به کار با OpenFOAM نیاز دارید، اشاره می کند.
10) OpenFOAM یک نرم افزار درجه دو نیست، یک نرم افزار ممتاز و درجه یک است:
من افرادی را می بینم که از همان اول، نق و ناله خود را شروع می کنند که کاش از نرم افزار دیگری استفاده می کردند. آنها اینگونه فکر می کنند که متن- باز بودن به معنی خوب نبودن یک نرم افزار است! این یک دیدگاه کاملا احمقانه است. بسیاری از محققین مشهور در سراسر دنیا هم اکنون در حال استفاده از OpenFOAM یا دیگر نرم افزار های مشابه متن- باز هستند. تعداد ارجاعات به OpenFOAM هرساله به شکل ثابتی رشد کرده است. در اینجا ببینید.
به نظر من، تنها جایی که نسبت به استفاده از بسته های تجاری CFD پافشاری خواهد شد، شرکت های صنعتی است که هزینه در آنها جای نگرانی ندارد و تغییر نرم افزار نسبت به سود آن مشکلات زیادتری ایجاد می کند. OpenFOAM به طور گسترده در بنچمارک های مختلف استفاده شده و به شکل وسیعی از جریانهای اصلی گرفته تا فراصوت، اعتبارسنجی شده است . اگر نتایج شما خوب نباشد، احتمالا شما چیزی را اشتباه انجام داده اید.
اگر در پس ذهن شما همیشه این وجود داشته باشد که آه من باید از نرم افزار راحت تر دیگری استفاده کنم (!)، و این وقتی بدتر می شود که استاد راهنمای شما، شما را به استفاده از OpenFOAM مجبور کرده باشد؛ در چنین اوضاعی در صورت مواجهه با کوچکترین مشکلی، فکر خواهید کرد که مشکل از OpenFOAM است (که تفکری س بس احمقانه :D) و عطای آن را به لقایش خواهید بخشید! پس صبر پیشه کنید!
11) مش بندی… آه مش بندی!
فقط صرف اطلاع، مش بندی در هر نرم افزاری که استفاده بکنید، یک هنر محسوب می شود (بله اگر شما یک مشزن خوب هستید، هنرمندی بزرگ محسوب می شوید!). اما شاید مش بندی تنها حوزهای باشد که در آن من محدودیت OpenFOAM را تا حدودی می پذیرم. با این حال، همانگونه که در این پست اشاره شده کارهای زیادی می توان برای مش زنی در OpenFOAM انجام داد. همچنین برنامه های مش بندی فراوانی در بازار موجودند که شما نباید هیچ نگرانی بابت این موضوع داشته باشید.
جمع بندی
اساسا، اگر شما قصد یادگیری CFD و به خصوص OpenFOAM داشته باشید، لازم است که برای این کار وقت مجزا در نظر بگیرید. اگر انتظار دارید که فقط بنشینید و نتایج فوق العاده ای به دست آورید، مطمئن باشید که ناامید خواهید شد. ممکن است شما کلا از انجام کار انصراف بدهید و البته که صادقانه اگر بگوییم این یک رویکرد کاملا احمقانه است. به هر حال اگر شما قبول داشته باشید که CFD و دینامیک سیالات قلمرو وسیعی هستند که در حال پیشرفت مداوم هستند و روز به روز سرعت آنها بیشتر می شود، موانع کمی جلوی شما را خواهد گرفت و به احتمال زیاد موفق خواهید شد.
لطفا برای این کار زمان بگذارید! اگر میخواهید CFD کار کنید، یادگیری OpenFOAM بسیار ارزشمند است. واقعا ارزشش را دارد! از ما گفتن!
منبع: Curiosity Fluids