مقایسه الگوریتمهای SIMPLE، PISO و Coupled در فلوئنت: کدام را انتخاب کنیم؟
چرا انتخاب صحیح الگوریتم کوپلینگ سرعت-فشار مرز باریک بین همگرایی سریع و شکست شبیهسازی است؟
هیچ چیز دردناکتر از این نیست که یک شبیهسازی سنگین را جمعه شب ران (Run) کنید و شنبه صبح با دیدن ارور “Floating Point Exception” یا کانتورهای فشاری که شبیه نقاشیهای انتزاعی شدهاند، مواجه شوید. در طول ۷ سال تجربه کاریم در حوزه CFD و سروکله زدن با پروژههای مختلف در سیمومک، بارها دیدهام که خیلی از بچهها – چه دانشجو و چه مهندسهای شرکت – ساعتها وقت صرف کیفیت مش میکنند اما دقیقاً لحظه آخر، تنظیمات Solution Methods را روی حالت پیشفرض رها میکنند. انگار که این بخش دکوری است!
واقعیت اینه که انتخاب الگوریتم مناسب فقط یک تنظیم نرمافزاری نیست؛ استراتژی جنگ شما با معادلات دیفرانسیل است. یک انتخاب اشتباه اینجا، یا باعث میشود پروژه دو هفته طول بکشد (در حالی که میتوانست دو روزه تمام شود) و یا کلاً واگرا شود. اگر بدونید هر الگوریتم دقیقاً چه رفتاری با ماتریس ضرایب شما دارد، میتوانید پروژههایی که دیگران غیرقابل حل میدانند را به راحتی همگرا کنید.

کوپلینگ سرعت و فشار در معادلات ناویر-استوکس دقیقاً چه چالشی را در حل عددی ایجاد میکند؟
بیایید کمی فنی اما خودمونی صحبت کنیم. مشکل اصلی اینجاست که در جریانهای تراکمناپذیر (مثل آب داخل لوله یا جریان هوا با سرعت پایین)، چگالی ثابت است. توی معادلات بقای جرم (پیوستگی)، هیچ ترمی که فشار را مستقیم به سرعت ربط بدهد نداریم. این یعنی ما سه تا مؤلفه سرعت داریم (u, v, w) و یک فشار، اما معادله مستقلی برای فشار نداریم! اینجاست که الگوریتمهای کوپلینگ وارد بازی میشوند تا یک رابطه مصنوعی یا اصلاحی بین سرعت و فشار ایجاد کنند.
اگر این ارتباط درست برقرار نشود، فلوئنت نمیتواند حدس بزند که فشار در سلول بعدی چقدر باید باشد تا جرم بقا داشته باشد. برای درک عمیقتر اینکه چرا حلگرهای مختلف رویکرد متفاوتی به این قضیه دارند، پیشنهاد میکنم نگاهی به مقاله تفاوت حلگرهایPressure-Based وDensity-Based بیندازید تا متوجه شوید چرا در سرعتهای پایین، این دردسرها بیشتر است. 🧪
آیا الگوریتم SIMPLE همچنان پادشاه حل مسائل پایا در دینامیک سیالات محاسباتی محسوب میشود؟
الگوریتم SIMPLE (Semi-Implicit Method for Pressure-Linked Equations) مثل پراید میمونه؛ قدیمی، ساده، ولی هنوز هم کار را راه میاندازد! 🚗 برای اکثر مسائل حالت پایا (Steady-State) که فیزیک خیلی پیچیدهای ندارند، SIMPLE هنوز هم گزینه اول من است. دلیلش پایداری فوقالعادهاش است. این الگوریتم با یک مکانیزم “پیشبینی-تصحیح” کار میکند؛ اول سرعت را حدس میزند، بعد فشار را اصلاح میکند.
اما یک نکته که کمتر کسی بهش توجه میکنه: SIMPLE به شدت وابسته به ضرایب زیر-تخفیف (Under-Relaxation Factors) است. یادم هست سر یک پروژه تهویه مطبوع سالن کنفرانس، فقط به خاطر اینکه عجله داشتم و از SIMPLE استفاده کردم ولی ضرایب را کم نکردم، حل نوسان کرد و واگرا شد. پس اگر دنبال دردسر نیستید و عجله ندارید، برای جریانهای آرام و ساده، همین گزینه را انتخاب کنید.
تفاوت ظریف اما حیاتی میان SIMPLE و SIMPLEC در سرعت همگرایی مشهای باکیفیت چیست؟
حالا فرض کنید شما یک هندسه ترتمیز دارید و مشبندی را با وسواس انجام دادید (یعنی Skewness زیر 0.8 است). اینجا SIMPLEC (SIMPLE-Consistent) میتواند ناجی زمان شما باشد. تفاوتش با SIMPLE در فرمولبندی فلاکسهای اصلاحی است که اجازه میدهد از ضرایب زیر-تخفیف بزرگتری استفاده کنید.
به زبان ساده: اگر مش شما باکیفیت است، با انتخاب SIMPLEC میتوانید سرعت همگرایی را حدود ۲۰ تا ۳۰ درصد افزایش دهید چون نیازی نیست ترمهای فشار را آنقدر محدود کنید. اما – و این یک امای بزرگ است – اگر مش شما در نقاطی مثل گوشهها یا لایههای مرزی کیفیت پایینی دارد، SIMPLEC خیلی سریعتر از SIMPLE ناپایدار میشود. پس اگر از کیفیت مش مطمئن نیستید، ریسک نکنید.
چرا الگوریتم PISO گزینه بیرقیب برای شبیهسازیهای دقیق جریانهای گذرا و وابسته به زمان است؟
وقتی صحبت از حل وابسته به زمان (Transient) میشود، داستان کاملاً عوض میشود. اینجا ما نیاز داریم که در هر گام زمانی (Time Step)، رابطه فشار و سرعت کاملاً ارضا شود. الگوریتم PISO (Pressure-Implicit with Splitting of Operators) برخلاف سیمپل که یک مرحله تصحیح فشار دارد، دو مرحله تصحیح انجام میدهد (Neighbor Correction).
این یعنی چی؟ یعنی در هر گام زمانی، PISO تلاش بیشتری میکند تا معادلات را دقیقتر حل کند که اجازه میدهد از گامهای زمانی (Time Steps) بزرگتری استفاده کنید بدون اینکه دقت را از دست بدهید. ما در سیمومک برای پروژههایی مثل شبیهسازی حرکت پیستون یا جریانهای گردابی پشت استوانه، تقریباً همیشه از PISO استفاده میکنیم. اگر بخواهید در این مسائل از SIMPLE استفاده کنید، باید گام زمانی را آنقدر کوچک کنید که احتمالاً پیر میشوید تا حل تمام شود! ⏳
در چه شرایطی استفاده از الگوریتم Coupled با وجود مصرف بالای رم بهترین انتخاب مهندسی است؟
رسیدیم به غول مرحله آخر: الگوریتم Coupled. این روش برخلاف روشهای قبلی (که Segregated هستند و معادلات را جداجدا حل میکنند)، معادلات پیستگی و مومنتوم را همزمان و در یک دستگاه معادلات غولپیکر حل میکند.
چه زمانی باید سراغش بروید؟
- وقتی جریان تراکمپذیر با سرعت بالا دارید.
- وقتی نیروهای بویانسی (شناوری) قوی هستند (مثل دودکشهای صنعتی).
- وقتی مشبندی دینامیک دارید و سلولها مدام تغییر شکل میدهند.
در یکی از پروژههای اخیرم که مربوط به طراحی نازل سوخت یک مشعل صنعتی بود، هر کاری کردیم با SIMPLE همگرا نشد. کانتور سرعت مدام پرش داشت. به محض اینکه سوئیچ کردیم روی Coupled، رزیدوالها مثل سنگ سقوط کردند! البته هزینهاش این است که مصرف RAM شما بین ۱.۵ تا ۲ برابر میشود. اگر سیستمتان ضعیف است، این گزینه ممکن است کلاً کامپیوتر را فریز کند. برای اینکه بدانید چه چیزهای دیگری ممکن است حل را خراب کند، حتما مقاله ۷دلیل اصلی عدم همگرایی(Divergence) در فلوئنت را بخوانید.

چگونه محدودیتهای سختافزاری و مقدار حافظه رم سیستم شما نوع الگوریتم انتخابی را دیکته میکند؟
بیایید روراست باشیم، همهمان دسترسی به کلاسترهای محاسباتی نداریم. خیلی وقتها باید پروژه را روی لپتاپ یا یک ورکستیشن معمولی ببندیم. مقایسه الگوریتمهای SIMPLE، PISO و Coupled در فلوئنت بدون در نظر گرفتن سختافزار بیمعنی است.
جدول زیر نتیجه تستهای واقعی ما روی یک کیس استاندارد (جریان داخلی لوله خمدار با ۱ میلیون سلول) است تا دستتان بیاید چه خبر است:
| ویژگی | الگوریتم SIMPLE / SIMPLEC | الگوریتم PISO | الگوریتم Coupled |
| مصرف حافظه (RAM) | پایین (بهینه) | متوسط (کمی بیشتر از SIMPLE) | بسیار بالا (۱.۵ تا ۲ برابر) |
| زمان پردازش هر تکرار | سریع | متوسط | کند (محاسبات سنگین) |
| تعداد تکرار تا همگرایی | زیاد | متوسط | بسیار کم |
| حساسیت به کیفیت مش | کم (مقاوم) | متوسط | کم (بسیار پایدار) |
اگر رم سیستم شما ۸ یا ۱۶ گیگابایت است و مش سنگینی دارید، دور Coupled را خط بکشید؛ چون اگر سیستم وارد حالت Swap (استفاده از هارد به جای رم) شود، سرعت حل عملاً به صفر میرسد.
نقش کیفیت مشبندی و Skewness سلولها در پایداری الگوریتمهای مختلف حلگر چگونه ظاهر میشود؟
کیفیت مش، پاشنه آشیل هر شبیهسازی است. بارها پیش آمده که مشتری فایلی برای ما فرستاده و گفته “این همگرا نمیشه”، و وقتی چک کردیم دیدیم Skewness ماکسیمم روی 0.98 است! در این شرایط، الگوریتمهای Segregated مثل SIMPLEC سریعاً واگرا میشوند چون فرضیات سادهسازیشان بهم میریزد.
تجربه من میگوید اگر مجبورید با مش بیکیفیت (Skewness بالای 0.85) کار کنید (مثلاً هندسه خیلی پیچیده است و وقت ترمیم ندارید)، الگوریتم Coupled قدرت تحمل بیشتری دارد. این الگوریتم به دلیل حل همزمان معادلات، بهتر میتواند خطاهای ناشی از سلولهای کجوکوله را هضم کند. البته این راه حل تنبلهاست! راه درستش اینه که برگردید و مش را اصلاح کنید. ما در خدمات سیمومک همیشه اولویت اول را روی اصلاح مش میگذاریم، چون حتی بهترین حلگر هم نمیتواند معجزه کند.
خدمات تخصصی ما در این بخش شامل موارد زیر میشه:
- بهینهسازی مشهای هیبریدی و Polyhedral
- رفع مشکلات Skewness و Orthogonality
- ایجاد مش سازمانیافته (Structured) برای هندسههای پیچیده
برای شبیهسازی جریانهای تراکمپذیر و سرعت بالا دقیقاً کدام گزینه دقت نتایج را تضمین میکند؟
وقتی عدد ماخ (Mach) بالا میرود (مثلاً بالای ۰.۷) و اثرات تراکمپذیری مثل امواج شاک (Shock Waves) ظاهر میشوند، ارتباط بین فشار و چگالی به شدت قوی میشود. اینجا الگوریتمهای SIMPLE و PISO که ذاتاً برای جریانهای تراکمناپذیر توسعه یافتهاند، گیج میزنند.
برای جریانهای تراکمپذیر (Compressible Flows)، بدون شک انتخاب اول و آخرتان باید Coupled باشد. چرا؟ چون این الگوریتم ترمهای مربوط به تغییرات چگالی را مستقیماً در ماتریس ضرایب وارد میکند و میتواند تغییرات ناگهانی فشار در عرض شاک را کپچر کند. یادم هست سر پروژه تحلیل آیرودینامیک یک پهپاد، استفاده از SIMPLE باعث میشد شاک روی بال “پخش” شود و ضریب درگ (Drag) غلط از آب دربیاید. با تغییر به Coupled، مکان شاک دقیقاً سر جای خودش فیکس شد. اگر میخواهید کنترل بیشتری روی پایداری حل در این شرایط داشته باشید، حتماً نگاهی به نکات مقاله ضرایبUnder-Relaxation در فلوئنت چیست؟ داشته باشید تا بتوانید جلوی نوسانات اولیه حل را بگیرید.
چرا در مسائل انتقال حرارت جابجایی طبیعی یا بویانسی الگوریتمهای معمول دچار ناپایداری میشوند؟
این یکی از آن بخشهایی است که موی مهندس جماعت را سفید میکند! در جابجایی طبیعی (Natural Convection)، حرکت سیال فقط و فقط ناشی از اختلاف چگالی است؛ یعنی سرعتهای خیلی پایین و وابستگی شدید معادله مومنتوم به معادله انرژی. اینجا الگوریتم SIMPLE معمولاً “کم میآورد”. چرا؟ چون سعی میکند سرعت و فشار را اصلاح کند، اما دما (که محرک اصلی است) را در مرحلهای جداگانه حل میکند. این تاخیر در انتقال اطلاعات بین معادلات، باعث نوسان شدید حل میشود.
تجربه شخصی من در شبیهسازی تهویه طبیعی یک گلخانه بزرگ نشان داد که استفاده از گزینه “Body Force Weighted” برای فشار به همراه الگوریتم Coupled، تنها راه نجات است. الگوریتم Coupled چون معادلات را در هم میتند، سریعتر متوجه میشود که تغییر دما باید بلافاصله روی میدان سرعت اثر بگذارد. پس اگر با بویانسی سروکار دارید، وقتتان را با روشهای معمولی تلف نکنید. 🌡️
متخصصان سیمومک برای کاهش زمان انجام پروژههای صنعتی عظیم از چه استراتژی ترکیبی استفاده میکنند؟
ما در سیمومک یک “قلق” خاص برای پروژههای سنگین داریم که اسمش را گذاشتیم “استراتژی استارت سبک، فینیش سنگین”. ببینید، شروع حل با الگوریتم Coupled روی یک مش ۱۰ میلیون سلولی، مثل این است که بخواهید با دنده ۵ ماشین را حرکت دهید؛ هم فشار زیادی به سیستم میآید و هم احتمال خاموش شدن (واگرایی) بالاست.
ما معمولاً ۵۰۰ تا ۱۰۰۰ تکرار اول را با الگوریتم SIMPLE و دقت مرتبه اول (First Order) جلو میرویم تا جریان کلی شکل بگیرد و خطاهای اولیه مش گرفته شود. وقتی رزیدوالها کمی آرام شدند، سوئیچ میکنیم روی Coupled با دقت مرتبه دوم. این کار نه تنها پایداری را تضمین میکند، بلکه زمان کل حل را هم کاهش میدهد. البته برای اجرای این روش باید سیستمتان کشش داشته باشد، پس پیشنهاد میکنم حتماً راهنمای کامل انتخاب سختافزار(CPU, RAM, GPU) برای شبیهسازیهایCFD را چک کنید تا وسط کار سیستم هنگ نکند.
ضرایب زیر-تخفیف یا Under-Relaxation Factors چگونه باید متناسب با الگوریتم انتخابی تنظیم شوند؟
خیلیها میترسند به این ضرایب دست بزنند، اما اینها در واقع پدال گاز و ترمز حلگر شما هستند. در الگوریتم SIMPLE، ضرایب پیشفرض (فشار 0.3 و مومنتوم 0.7) محافظهکارانه هستند چون این الگوریتم ذاتاً ناپایدارتر است. اما داستان در مورد Coupled کاملاً متفاوت است.
وقتی مقایسه الگوریتمهایSIMPLE، PISO وCoupled در فلوئنت را انجام میدهیم، بزرگترین مزیت Coupled این است که میتوانید ضرایب URF را تا 0.75 یا حتی بالاتر ببرید (پیشفرض فلوئنت معمولاً 0.75 است). این یعنی در هر تکرار، گام بلندتری به سمت جواب نهایی برمیدارید. اگر دیدید حلگر Coupled پایدار است اما کند پیش میرود، نترسید و ضریب Flow Courant Number را کمی بالا ببرید؛ البته نه آنقدر که حل منفجر شود!
نشانههای رایج انتخاب غلط الگوریتم کوپلینگ در نمودارهای باقیمانده یا Residuals چیست؟
نمودار باقیماندهها مثل نوار قلب بیمار است؛ باید بلد باشید آن را بخوانید. اگر دیدید خطوط رزیدوال (مخصوصاً پیوستگی یا Continuity) به صورت سینوسی و منظم بالا و پایین میروند و کم نمیشوند، معمولاً نشانه این است که “ارتباط” بین فشار و سرعت شل است و الگوریتم انتخابی (مثلاً SIMPLE) زور کافی برای دمپ کردن نوسانات را ندارد.
از طرف دیگر، اگر رزیدوالها ناگهان فریز شدند و صاف ماندند (Stalling)، شاید مشکل از الگوریتم نباشد و مشبندی ایراد داشته باشد. در این حالت تغییر الگوریتم فایدهای ندارد. برای اینکه دقیقتر متوجه شوید چه زمانی مشکل از حلگر است و چه زمانی از فیزیک مسئله، مطالعه مقاله آیا کاهش باقیماندهها(Residuals) برای همگرایی کافی است؟ راهنمای تفسیر نمودار حل دیدتان را بازتر میکند. 📉
آیا استفاده از گزینه Pseudo Transient در کنار الگوریتم Coupled معجزه همگرایی در مسائل پایا است؟
بگذارید روراست بگم: بله، تقریباً یک معجزه است! گزینه Pseudo Transient (شبه گذرا) که در نسخههای جدیدتر فلوئنت (از ۲۰۱۹ به بعد) خیلی بهینه شده، به حلگر اجازه میدهد که برای مسائل Steady، از یک گام زمانی مصنوعی استفاده کند. این کار باعث میشود حلگر، ماتریسها را خیلی راحتتر مدیریت کند.
ترکیب Coupled + Pseudo Transient برای جریانهای پیچیده صنعتی مثل مبدلهای حرارتی یا جریانهای ایرودینامیک، فوقالعاده است. این روش به طور خودکار عدد کورانت را در طول حل کنترل میکند. اگر میخواهید بدانید این “گام زمانی” چطور محاسبه میشود و چه تاثیری دارد، مقاله عدد کورانت(CFL) چیست و چگونه گام زمانی(Time Step) مناسب را انتخاب کنیم؟ را از دست ندهید، چون درک CFL کلید تسلط بر این روش است.
چگونه میتوان از صحت نتایج خروجی فارغ از نوع الگوریتم استفاده شده اطمینان حاصل کرد؟
یک نکته طلایی که نباید فراموش کنید: “الگوریتم حلگر، مسیر رسیدن به جواب را تعیین میکند، نه خود جواب را.” اگر دو الگوریتم SIMPLE و Coupled هر دو به درستی همگرا شوند و معیارهای همگرایی رعایت شده باشد، نتایج نهایی باید یکسان (یا با اختلاف ناچیز) باشد. اگر با تغییر الگوریتم، جواب شما ۲۰ درصد تغییر کرد، یعنی حل هنوز همگرا نشده بوده است!
برای اینکه خیالتان راحت شود، همیشه باید بالانس جرمی و حرارتی را در Flux Report چک کنید. ما در سیمومک هیچ پروژهای را بدون این چک نهایی تحویل نمیدهیم. همچنین برای اطمینان صددرصدی، باید نتایج را با دادههای تجربی یا تحلیلی مقایسه کنید. جزئیات این فرآیند حیاتی را در راهنمای جامع اعتبارسنجی(Validation) و صحتسنجی(Verification) در شبیهسازیCFD توضیح دادهایم. ✅
چه زمانی برونسپاری چالشهای همگرایی در پروژههای پیچیده به تیم فنی سیمومک راهحل نهایی است؟
گاهی اوقات مسئله فراتر از انتخاب یک گزینه در نرمافزار است. وقتی فیزیکهای پیچیده مثل اندرکنش سازه و سیال (FSI)، جریانهای چندفازی با تغییر فاز (مثل کاویتاسیون یا جوشش) یا واکنشهای شیمیایی پیچیده وارد میدان میشوند، همگرایی تبدیل به یک هنر میشود تا علم صرف.
اگر با وجود تست کردن تمام این روشها، باز هم با واگرایی روبرو هستید یا سختافزارتان کشش حلهای Coupled سنگین را ندارد، تیم ما میتواند در بخشهای زیر کمککننده باشد:
- دیباگ کردن تنظیمات حلگر و اصلاح مش
- نوشتن کدهای UDF برای کنترل فرآیند حل
- انجام شبیهسازیهای پیشرفته FSI (حتماً مقاله شبیهسازی اندرکنش سیال و سازه(FSI) چیست؟ را ببینید تا با عمق این نوع پروژهها آشنا شوید)
- اجرای پروژه روی سرورهای محاسباتی قدرتمند
چکلیست نهایی و فلوچارت تصمیمگیری برای انتخاب الگوریتم مناسب در نرمافزار فلوئنت چیست؟
برای جمعبندی و اینکه دیگر سردرگم نشوید، این راهنمای سریع را همیشه دم دست داشته باشید. این خلاصه ۷ سال تجربه من در یک قاب است:
- آیا مسئله وابسته به زمان (Transient) است؟
- بله (گام زمانی کوچک نیاز دارید) ⬅️ انتخاب: PISO
- بله (گام زمانی بزرگ میخواهید) ⬅️ انتخاب: Coupled (اگر رم دارید)
- خیر (Steady) ⬅️ برو به سوال بعدی.
- آیا جریان تراکمپذیر (سرعت بالا/شاک) یا بویانسی قوی است؟
- بله ⬅️ انتخاب: Coupled
- خیر ⬅️ برو به سوال بعدی.
- آیا مش باکیفیت دارید (Skewness < 0.8)؟
- بله ⬅️ انتخاب: SIMPLEC (برای سرعت بیشتر)
- خیر یا معمولی ⬅️ انتخاب: SIMPLE (برای اطمینان بیشتر)
در نهایت، یادمان باشد که مقایسه الگوریتمهای SIMPLE، PISO و Coupled در فلوئنت فرمول جادویی ندارد و بسته به منابع سختافزاری و ددلاین پروژه شما متغیر است. امیدوارم این مقاله توانسته باشه کمی از سردرگمیهای تنظیمات Solver کم کنه. موفق باشید! 🛠️