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

اگر به تازگی وارد دنیای شبیهسازی با اپنفوم شدهاید، احتمالاً اولین برخورد شما با این نرمافزار، یک ترمینال سیاه و تعدادی پوشه با نامهای عجیب بوده است. این تجربه میتواند کمی دلهرهآور باشد، اما نگران نباشید. این مقاله دقیقاً برای شماست تا این مسیر را شفاف کنیم. پیچیدگیهای خط فرمان و ویرایش فایلهای دیکشنری را دور بزنید. ما با انجام پروژه اپن فوم، قدرت این نرمافزار متنباز را بدون دردسر در اختیار شما میگذاریم.این راهنما بخشی از مجموعه آموزشهای ما در مورد اپنفوم (OpenFOAM): آموزش کامل و جامع نرمافزار CFD متنباز است و در آن به سراغ یکی از کلیدیترین مباحث یعنی آموزش ساختار فایلها و حلگرها در OpenFOAM میرویم.
جدول مقایسه سریع حلگرهای پایه تراکمناپذیر
| حلگر (Solver) | نوع جریان | الگوریتم حل | بهترین کاربرد |
| icoFoam | گذرا (Transient)، آرام (Laminar) | PISO | مسائل ساده و آموزشی، جریانهای وابسته به زمان بدون توربولانس |
| pisoFoam | گذرا (Transient)، آشفته (Turbulent) | PISO | شبیهسازیهای دقیق وابسته به زمان (مثل LES/DES) که نیاز به گام زمانی کوچک دارند |
| simpleFoam | پایا (Steady-State)، آشفته (Turbulent) | SIMPLE | مسائل صنعتی که به دنبال نتیجه نهایی و پایدار جریان هستیم (مثلاً آیرودینامیک خودرو) |
| pimpleFoam | گذرا (Transient)، آشفته (Turbulent) | PIMPLE | ترکیبی از PISO و SIMPLE، برای شبیهسازیهای گذرا با گام زمانی بزرگ (مناسب برای RANS) |
۱. چرا اولین قدم در OpenFOAM، سختترین قدم است؟ (و چگونه آن را آسان کنیم)
راستش را بخواهید، همه ما این مرحله را گذراندهایم. باز کردن یک پروژه نمونه در OpenFOAM و مواجه شدن با پوشههای 0، constant و system بدون هیچ راهنمای گرافیکی، هر کسی را سردرگم میکند. این دقیقاً نقطه مقابل نرمافزارهای تجاری مثل فلوئنت است که همه چیز در یک محیط یکپارچه قرار دارد.
اما این سختی اولیه، بهایی است که برای یک قدرت و انعطافپذیری بینظیر میپردازید. در ادامه به شما نشان میدهیم که این ساختار، نه یک ضعف، بلکه بزرگترین نقطه قوت شما خواهد بود.

۲. فلسفه OpenFOAM: چرا ساختار پوشهها، کلید قدرت این نرمافزار است؟
اپنفوم مثل یک جعبه لگو پیشرفته برای مهندسان است. به جای اینکه یک مدل آماده به شما بدهد، تمام قطعات لازم را در اختیارتان میگذارد تا هر سازهای که میخواهید را خودتان بسازید. این ساختار پوشهای، همان قطعات لگو هستند. هر پوشه و هر فایل، مسئولیت یک بخش مشخص از فیزیک یا محاسبات مسئله را بر عهده دارد.
این یعنی شما کنترل کامل بر تمام جنبههای شبیهسازی دارید؛ از تعریف یک مدل توربولانسی جدید گرفته تا دستکاری معادلات حاکم. همین انعطافپذیری است که آن را به ابزاری بیرقیب برای پروژههای تحقیقاتی و صنعتی پیچیده تبدیل کرده. این ویژگی یکی از بزرگترین برتریهای نرمافزار متنباز OpenFOAM در مقایسه با رقبایش است.
۳. کالبدشکافی یک پروژه در OpenFOAM: راهنمای گام به گام ۳ پوشه اصلی
خب، بیایید آستینها را بالا بزنیم و این سه پوشه معروف را تشریح کنیم. فرض کنید یک کیس شبیهسازی دارید، داخل آن همیشه این سه جزء اصلی را خواهید دید:
این پوشه، همانطور که از نامش پیداست، شامل اطلاعاتی است که در طول شبیهسازی تغییر نمیکنند. مهمترین چیزهایی که اینجا پیدا میکنید:
- پوشه polyMesh: قلب هندسی پروژه شما. تمام اطلاعات مربوط به مش (نقاط، سطوح، سلولها) که توسط ابزارهایی مثل blockMesh یا snappyHexMesh تولید شده، اینجا ذخیره میشود.
- فایل transportProperties: در این فایل متنی، خواص سیال مانند ویسکوزیته (kinematic viscosity) را تعریف میکنید.
این پوشه، شرایط اولیه (Initial Conditions) و شرایط مرزی (Boundary Conditions) مسئله را در خود جای داده است. نام پوشه (0) به معنای زمان شروع شبیهسازی (t=0) است. داخل این پوشه، برای هر متغیری که حل میکنید (مثل سرعت یا فشار)، یک فایل جداگانه وجود دارد.
مثلاً:
- فایل U: برای تعریف شرایط مرزی و مقدار اولیه میدان سرعت.
- فایل p: برای تعریف شرایط مرزی و مقدار اولیه میدان فشار.
اینجا پیچیدهترین و در عین حال قدرتمندترین بخش ماجراست. تنظیمات این پوشه به اپنفوم میگوید که مسئله را چگونه حل کند. سه فایل حیاتی در این پوشه عبارتند از:
- controlDict: کنترلکننده اصلی شبیهسازی. مواردی مثل حلگر مورد استفاده، زمان شروع و پایان، گام زمانی و فرکانس ذخیره نتایج در این فایل تعیین میشود.
- fvSchemes: در این فایل، روشهای گسستهسازی (Discretization Schemes) برای بخشهای مختلف معادلات (مثلاً مشتق زمانی، گرادیان، دیورژانس) را مشخص میکنید. انتخاب اشتباه در این بخش میتواند نتایج شما را کاملاً بیاعتبار کند.
- fvSolution: الگوریتمهای حل دستگاه معادلات خطی و پارامترهای کنترلی آنها (مثل تلرانس و تعداد تکرارها) در این فایل قرار دارند.
باور کنید، بعد از حدود هفت سال کار مداوم با این نرمافزار، هنوز هم بیشترین زمان عیبیابی من صرف همین دو فایل fvSchemes و fvSolution میشود. اگر تنظیم این بخش برایتان پیچیده است یا با خطاهای مکرر مواجهاید، بدانید که بخش بزرگی از خدمات ما در انجام پروژه OpenFOAM دقیقاً بر روی همین تنضیمات تخصصی برای مسائل صنعتی متمرکز است.
جدول خلاصهی فایلهای کلیدی در یک کیسOpenFOAM
| پوشه | فایل نمونه | وظیفه اصلی | نکته کلیدی |
| constant | transportProperties | تعریف خواص فیزیکی ثابت سیال | واحدها (Units) باید در کل پروژه یکسان باشند. |
| constant/polyMesh | boundary | تعریف هندسه و نامگذاری مرزها | نام مرزها در اینجا باید دقیقاً با نام آنها در پوشه 0 یکی باشد. |
| 0 (یا زمان شروع) | U, p, k, epsilon | تعریف شرایط اولیه و مرزی برای هر متغیر | نوع شرط مرزی (مثلاً fixedValue, zeroGradient) باید با فیزیک مسئله همخوانی داشته باشد. |
| system | controlDict | کنترل کلی فرآیند حل (زمان، حلگر، ذخیرهسازی) | deltaT و endTime حیاتیترین پارامترها برای کنترل حل هستند. |
| system | fvSchemes | تعیین روشهای گسستهسازی معادلات | انتخاب روشهای مرتبه دوم دقت را بالا میبرد اما ممکن است پایداری را کم کند. |
| system | fvSolution | تعیین الگوریتمها و تلرانسهای حل عددی | تنظیمات این بخش مستقیماً بر سرعت و پایداری همگرایی تاثیر میگذارد. |
۴. انتخاب حلگر (Solver) مناسب: اولین تصمیم استراتژیک در پروژه شما
در OpenFOAM، “حلگر” یک برنامه اجرایی است که برای حل یک دسته خاص از مسائل فیزیکی نوشته شده است. نام حلگرها تصادفی نیست و معمولاً ترکیبی از فیزیک مسئله و الگوریتم حل است. برای مثال، icoFoam حلگری برای جریان آرام (Laminar) و تراکمناپذیر (Incompressible) است که از الگوریتم PISO استفاده میکند.
بنابراین، قبل از هر کاری، باید فیزیک مسئله خود را به درستی بشناسید تا بتوانید حلگره مناسب را انتخاب کنید. این انتخاب، مسیر کل پروژه شما را تعیین میکند.
برای شروع، آشنایی با این سه حلگر کلیدی برای هر کاربر اپنفوم ضروری است. اینها پرکاربردترین حلگرها برای شبیهسازی جریانهای تراکمناپذیر هستند، اما هرکدام کاربرد خاص خود را دارند.
جدول زیر تفاوتهای اصلی آنها را به طور خلاصه نشان میدهد:
| حلگر (Solver) | نوع جریان | الگوریتم حل | بهترین کاربرد |
| icoFoam | گذرا (Transient)، آرام (Laminar) | PISO | مسائل ساده و آموزشی، جریانهای وابسته به زمان بدون توربولانس |
| pisoFoam | گذرا (Transient)، آشفته (Turbulent) | PISO | شبیهسازیهای دقیق وابسته به زمان (مثل LES/DES) که نیاز به گام زمانی کوچک دارند |
| simpleFoam | پایا (Steady-State)، آشفته (Turbulent) | SIMPLE | مسائل صنعتی که به دنبال نتیجه نهایی و پایدار جریان هستیم (مثلاً آیرودینامیک خودرو) |
وقتی دما وارد بازی میشود و اثرات شناوری (Buoyancy) اهمیت پیدا میکنند، دیگر نمیتوان از حلگرهای ساده استفاده کرد. اینجا پای حلگرهایی مثل buoyantPimpleFoam به میان میآید. این حلگر برای شبیهسازی جریانهای گذرا، تراکمناپذیر (یا تراکمپذیر) و غیرهمدما (non-isothermal) طراحی شده است.
تصور کنید میخواهید جابجایی طبیعی هوا در یک اتاق که یک رادیاتور گرم دارد را شبیهسازی کنید. این دقیقاً کاری است که buoyantPimpleFoam برای آن ساخته شده. اگر در حال انجام پروژهای هستید که ترکیبی از انتقال حرارت و جریان سیال است، این حلگر یکی از بهترین گزینههای شماست. اگر برای توسعه حلگرهای جدید یا شبیهسازیهای پژوهشی خاص نیاز به کدنویسی دارید، روی تخصص ما در انجام پروژه اپن فوم حساب کنید.
۵. فراتر از استانداردها: چگونه در “سیمومک” برای مسائل پیچیده صنعتی، حلگر سفارشی میسازیم؟
زیبایی واقعی اپنفوم اینجا مشخص میشود. گاهی اوقات مسائل صنعتی آنقدر پیچیده هستند که هیچکدام از حلگرهای استاندارد به تنهایی پاسخگو نیستند. مثلاً شبیهسازی جریان همراه با واکنش شیمیایی در یک کوره، یا تحلیل اندرکنش سیال و سازه (FSI) برای یک پل معلق.
در “سیمومک”، ما با تکیه بر دانش عمیق از ساختار اپنفوم، میتوانیم حلگرهای استاندارد را دستکاری کنیم یا حتی یک حلگر کاملاً جدید بنویسیم که دقیقاً فیزیک مسئله کارفرما را مدل کند. این سطح از سفارشیسازی چیزی است که با نرمافزارهای تجاری تقریباً غیرممکن یا بسیار پرهزینه است. این همان چیزی است که به ما اجازه میدهد مسائل واقعا چالش برانگیز را حل کنیم.
۶. چکلیست نهایی سیمومک: قبل از اجرای دستور run چه چیزهایی را باید کنترل کنید؟
قبل از اینکه با هیجان دستور run را در ترمینال وارد کنید و ساعتها منتظر نتیجه بمانید، این چکلیست سریع را مرور کنید. اینها درسهایی هستند که ما با صرف ساعتها (و گاهی روزها!) عیبیابی یاد گرفتهایم:
- واحدها (Units): آیا واحد ویسکوزیته در transportProperties با بقیه واحدها همخوانی دارد؟ (متریک یا انگلیسی؟)
- نام پچها (Patches): آیا نام شرایط مرزی در پوشه 0 دقیقاً با نام آنها در boundary فایل داخل polyMesh یکی است؟ یک حرف بزرگ یا کوچک اشتباه کل شبیهسازی را خراب میکند.
- تنظیمات controlDict: آیا endTime منطقی است؟ گام زمانی (deltaT) با توجه به عدد کورانت (Courant Number) مناسب انتخاب شده؟
- نصب نرمافزار: مطمئن شوید که نصب اپنفوم روی ویندوز یا لینوکس به درستی انجام شده و متغیرهای محیطی فعال هستند. یک نصب ناقص میتواند باعث خطاهای غیرمنتظره شود.
۷. خطاهای رایج در تنظیم فایلها و روشهای عیبیابی سریع (تجربه تیم سیمومک)
خطا در اپنفوم مثل سرماخوردگی است، همه دیر یا زود تجربهاش میکنند! یکی از رایجترین خطاها، Floating point exception است که معمولاً به خاطر تقسیم بر صفر رخ میدهد. این اتفاق زمانی میافتد که سرعت در یک سلول به صفر میل کند و شما در حال نرمالایز کردن برداری بر اساس آن باشید.
یک خطای دیگر، واگرایی سریع حل است که نمودار باقیماندهها (residuals) سر به فلک میکشد. این مشکل اغلب به خاطر انتخاب یک گسستهسازی خیلی تهاجمی در fvSchemes یا یک گام زمانی بزرگ در controlDict رخ میدهد. اولین قدم برای عیبیابی در این حالت، کاهش deltaT و استفاده از روشهای گسستهسازی مرتبه اول و پایدارتر است.
۸. جمعبندی: اکنون شما نقشه راه تسلط بر ساختار OpenFOAM را در دست دارید
همانطور که دیدید، ساختار فایلها و حلگرهای اپنفوم در نگاه اول پیچیده به نظر میرسد، اما در واقع یک معماری بسیار منطقی و قدرتمند دارد. با درک نقش هر پوشه و هر فایل، شما دیگر یک کاربر معمولی نیستید، بلکه یک مهندس هستید که کنترل کامل بر ابزار خود دارد.
این مقاله یک نمای کلی از این ساختار ارائه داد. تسلط کامل نیازمند تمرین و کار با کیسهای مختلف است. اما حالا شما نقشه را در دست دارید و میدانید هر جزء چه وظیفهای دارد.
۹. پروژه OpenFOAM شما با چالش مواجه شده است؟
کار با OpenFOAM میتواند چالشبرانگیز باشد، اما نتایج آن برای پروژههای تخصصی بینظیر است.
اگر در مسیر پروژه پایاننامه یا تحقیقات آکادمیک خود با اپنفوم به مشکل برخوردهاید، تیم ما میتواند به شما در موارد زیر کمک کند:
- عیبیابی و رفع خطاهای عدم همگرایی
- انتخاب مدل فیزیکی و حلگر مناسب
- تنظیمات پیشرفته مشبندی و شرایط مرزی
برای بهینهسازی محصولات و فرآیندهای صنعتی، تیم “سیمومک” آماده ارائه خدمات تخصصی است. ما با درک عمیق از ساختار فایلها و حلگرهای OpenFOAM، راهحلهای سفارشی برای چالشهای صنعتی شما طراحی میکنیم.
- شبیهسازیهای حرارتی و سیالاتی پیچیده
- تحلیلهای آیرودینامیک و هیدرودینامیک
- توسعه حلگرهای اختصاصی برای مسائل خاص صنعتی
تیم ما با تسلط کامل بر ساختار OpenFOAM، آماده انجام پروژه اپن فوم شما با کمترین هزینه و بهترین کیفیت است.
سوالات متداول
- سوال: تفاوت اصلی پوشههای fvSchemes و fvSolution چیست؟
- پاسخ: به زبان ساده، fvSchemes به اپنفوم میگوید “چگونه“ معادلات را گسسته کند (مثلاً از چه روشی برای محاسبه گرادیان استفاده کند). اما fvSolution میگوید “چگونه“ دستگاه معادلات خطی حاصل از گسستهسازی را حل کند (مثلاً از چه الگوریتمی و با چه تلرانسی). اولی مربوط به دقت مدلسازی و دومی مربوط به روش حل عددی است.
- سوال: برای شبیهسازی جریان آشفته حول یک خودرو، از simpleFoam استفاده کنم یا pisoFoam؟
- پاسخ: اگر به دنبال نتایج حالت پایا (Steady-State) هستید (مثلاً ضریب درگ نهایی)، simpleFoam انتخاب بهتری است چون سریعتر به جواب میرسد. اما اگر میخواهید پدیدههای وابسته به زمان مثل گردابههای پشت خودرو (Vortex Shedding) را تحلیل کنید، باید از حلگر گذرا مانند pisoFoam استفاده کنید.
- سوال: آیا میتوانم از مشی که در نرمافزار دیگری (مثلاً Ansys Meshing) تولید کردهام در OpenFOAM استفاده کنم?
- پاسخ: بله، قطعاً. اپنفوم ابزارهای تبدیلی (Conversion Utilities) مختلفی دارد. مثلاً با دستور fluentMeshToFoam میتوانید مشی که با فرمت فلوئنت ذخیره شده را به فرمت polyMesh اپنفوم تبدیل کنید.
- سوال: منظور از پوشه 0 چیست؟ آیا میتوانم نام آن را تغییر دهم؟
- پاسخ: پوشه 0 نشاندهنده زمان شروع شبیهسازی (t=0) است و شرایط اولیه و مرزی در آن تعریف میشود. بله، میتوانید نام آن را به عدد دیگری تغییر دهید تا شبیهسازی از آن زمان شروع شود، اما 0 استاندارد و رایجترین حالت است.
- سوال: خطای FOAM FATAL ERROR: “cannot find file” به چه معناست؟
- پاسخ: این یکی از رایجترین خطاهاست و معمولاً به یکی از این دلایل رخ میدهد: یا در پوشه system/controlDict نام حلگر را اشتباه وارد کردهاید، یا یکی از فایلهای ضروری (مثل transportProperties) در پوشه constant وجود ندارد، یا در مسیر درستی دستور run را اجرا نکردهاید.
- سوال: آیا OpenFOAM برای انتقال حرارت هم کاربرد دارد؟
- پاسخ: بله، بسیار هم قدرتمند است. حلگرهایی مانند buoyantBoussinesqSimpleFoam (برای جابجایی طبیعی پایا) یا chtMultiRegionSimpleFoam (برای انتقال حرارت مزدوج بین جامد و سیال) از جمله ابزارهای تخصصی اپنفوم برای مسائل حرارتی هستند.
- سوال: چگونه میتوانم نتایج شبیهسازی OpenFOAM را مشاهده کنم؟
- پاسخ: بهترین و رایجترین ابزار برای پسپردازش (Post-processing) نتایج اپنفوم، نرمافزار متن-باز ParaView است. با ایجاد یک فایل خالی با نام case.foam در پوشه پروژه و باز کردن آن در ParaView، میتوانید به تمام نتایج دسترسی داشته باشید.
- سوال: عدد کورانت (Courant Number) چیست و چرا در controlDict اهمیت دارد؟
- پاسخ: عدد کورانت (Co) یک پارامتر کلیدی در شبیهسازیهای گذرا است که پایداری حل را کنترل میکند. این عدد نشان میدهد که سیال در یک گام زمانی (deltaT) چه مسافتی را در یک سلول مش طی میکند. برای پایداری حل، این عدد معمولاً باید کمتر از ۱ باشد. اپنفوم به شما اجازه میدهد deltaT را به صورت خودکار و بر اساس maxCo تنظیم کنید.
- سوال: آیا میتوانم مدل توربولانسی خودم را در OpenFOAM اضافه کنم؟
- پاسخ: بله، این یکی از بزرگترین مزایای اپنفوم است. به دلیل ساختار شیءگرای آن، شما میتوانید مدلهای توربولانسی جدید را به صورت کتابخانههای دینامیکی کامپایل کرده و در زمان اجرا به حلگر خود اضافه کنید بدون اینکه نیاز به کامپایل مجدد کل نرمافزار داشته باشید.
- سوال: چرا برند “سیمومک” روی استفاده از OpenFOAM تمرکز دارد؟
- پاسخ: ما در “سیمومک” معتقدیم که OpenFOAM به دلیل انعطافپذیری بینظیر، عدم وجود هزینه لایسنس و قابلیت سفارشیسازی عمیق، بهترین ابزار برای حل چالشهای پیچیده و غیر استاندارد صنعتی است که با نرمافزارهای تجاری محدودیت دارند. این به ما اجازه میدهد راهحلهای دقیق و بهینهای برای مشتریان خود ارائه دهیم.

