اتوماسیون فرآیندها و بهینهسازی با اسکریپتنویسی TUI Journal در فلوئنت
۱. چگونه از شر تنظیمات تکراری و زمانبر در پروژههای فلوئنت برای همیشه خلاص شویم؟
شما هم از این چرخه بیپایان خسته شدهاید؟ باز کردن فلوئنت، خواندن مش، تنظیم مدل توربولانسی، تعریف مواد، ست کردن شرایط مرزی، مقداردهی اولیه و در نهایت کلیک روی دکمه Calculate… حالا تصور کنید باید همین فرآیند را برای ۲۰ حالت مختلف با سرعت ورودی متفاوت تکرار کنید. اینجاست که اکثر مهندسان و دانشجویان، به خصوص زیر فشار ددلاین، دچار فرسودگی میشوند. اما یک راه قدرتمند و مخفی در دل فلوئنت وجود دارد که میتواند شما را از این کارهای تکراری نجات دهد و زمانتان را برای تحلیل واقعی نتایج آزاد کند. این مقاله دقیقاً برای همین نوشته شده است. تیم سیمومک در تمام مراحل انجام پروژه فلوئنت کنار شماست؛ چه برای انجام پروژه دانشجویی فلوئنت و مشاوره تخصصی انجام پایان نامه فلوئنت نیاز به راهنمایی داشته باشید ما راهکار دقیق را به شما ارائه میدهیم. اگر میخواهید یک دید کلی و جامع نسبت به نرم افزار داشته باشید، پیشنهاد میکنم حتما راهنمای کامل انسیس فلوئنت از مقدماتی تا پیشرفته را مطالعه کنید.
جدول چکلیست دستورات پرکاربردTUI در فلوئنت
| وظیفه (Task) | نمونه دستور TUI |
| خواندن فایل Case & Data | file/read-case-data C:\project.cas.h5 |
| تغییر مدل توربولانسی به k-ω SST | define/models/viscous/k-omega-sst yes |
| تغییر سرعت در ورودی (velocity-inlet-1) | define/boundary-conditions/velocity-inlet velocity-inlet-1 () vmag yes 15 no |
| مقداردهی اولیه هیبریدی | solve/initialize/hybird-initialize |
| اجرای ۱۰۰۰ تکرار | solve/iterate 1000 |
| ایجاد گزارش ضریب درگ | report/forces/wall-forces drag-coefficient () wall-airfoil no “drag.txt” yes |
| ذخیره تصویر کانتور سرعت | display/save-picture velocity-contour.png |
| خروج از فلوئنت | exit yes |

۲. اسکریپتنویسی TUI Journal در فلوئنت چیست و چگونه میتواند پروژههای CFD شما را متحول کند؟
به زبان ساده، TUI (Text User Interface) همان خط فرمان فلوئنت است. هر کاری که شما با کلیک کردن در محیط گرافیکی انجام میدهید، یک معادل دستوری در TUI دارد. فایل ژورنال (Journal) هم یک فایل متنی ساده (.jou) است که این دستورات را پشت سر هم ذخیره میکند. وقتی شما این فایل را اجرا میکنید، فلوئنت تمام آن دستورات را به ترتیب و بدون نیاز به حتی یک کلیک از جانب شما انجام میدهد.
این یعنی اتوماسیون فرآیندها و بهینهسازی با اسکریپتنویسی TUI Journal در فلوئنت فقط یک تکنیک فانتزی نیست؛ یک ابزار استراتژیک برای انجام کارهای زیر است:
- اجرای صدها شبیهسازی پارامتریک به صورت خودکار
- تضمین تکرارپذیری و حذف خطای انسانی در تنظیمات پروژهها
- صرفهجویی در دهها ساعت زمان کاری
- اجرای فرآیندهای بهینهسازی پیچیده، حتی فراتر از ابزارهای داخلی نرمافزار مثل بهینهسازی توپولوژی با Adjoint Solver.
۳. اولین قدم برای اتوماسیون: چگونه یک فایل ژورنال (Journal) ساده در فلوئنت ضبط و اجرا کنیم؟
نگران نباشید، قرار نیست از همان ابتدا کدنویسی پیچیدهای انجام دهید. فلوئنت خودش این کار را برایتان انجام میدهد. سادهترین راه برای شروع، ضبط کردن کارهایتان است:
- شروع ضبط: از منوی File گزینه Write و سپس Start Journal… را انتخاب کنید. یک نام برای فایل خود (مثلاً my_first_script.jou) انتخاب و آن را ذخیره کنید.
- انجام کارها: حالا هر کاری که در محیط گرافیکی فلوئنت انجام میدهید (مثلاً خواندن یک فایل مش یا تغییر مدل ویسکوزیته) دستور معادل آن در فایل ژورنال شما نوشته میشود.
- پایان ضبط: وقتی کارتان تمام شد، دوباره از منوی File > Write > Stop Journal را بزنید. 📝
- اجرا: برای اجرای اسکریپت، از منوی File > Read > Journal… فایل ذخیره شده را انتخاب کنید و ببینید که فلوئنت چطور تمام کارها را خودش تکرار میکند. به همین سادگی!

۴. چگونه میتوان فرآیندهای پیشپردازش مانند خواندن مش و بررسی کیفیت را با اسکریپت خودکار کرد؟
یکی از اولین و تکراریترین مراحل، کار با مش است. به جای اینکه هر بار به صورت دستی مش را بخوانید و کیفیت آن را چک کنید، میتوانید یک اسکریپت کوچک برای این کار داشته باشید. محتوای فایل ژورنال شما میتواند چیزی شبیه به این باشد:
code Tui
downloadcontent_copy
expand_less
; Read the mesh file
file/read-case C:\CFD\Project-X\mesh_final.msh.h5
; Check mesh quality
mesh/check
این دستورات ساده، فایل مش مشخص شده را میخوانند و گزارش کیفیت آن را در کنسول نمایش میدهند. این کار به خصوص وقتی با مشهای مختلف کار میکنید، جلوی اشتباهات را میگیرد و مطمئن میشوید که همیشه معیارهای کیفیت مش مثل Skewness و Orthogonal Quality را قبل از شروع حل بررسی کردهاید.
۵. چطور تنظیمات کلیدی حلگر فلوئنت مانند مدل توربولانسی و خواص مواد را با دستورات TUI کنترل کنیم؟
اینجا قدرت واقعی اتوماسیون مشخص میشود. ⚙️ در طول ۷ سالی که به صورت تخصصی روی پروژههای صنعتی CFD کار میکنم، یک خاطره همیشه در ذهنم هست. اوایل کارم، روی یک پروژه بهینهسازی هیتسینک برای یک قطعه الکترونیکی کار میکردم. باید اثر ۱۰ آلیاژ مختلف آلومینیوم (با رسانایی حرارتی متفاوت) را بررسی میکردم. دو روز اول را صرفاً به تغییر دستی خواص ماده، اجرای شبیهسازی و خروجی گرفتن گذراندم. کاملاً کلافه شده بودم.
بعد از کمی تحقیق، با اسکریپتنویسی آشنا شدم و یک اسکریپت ساده نوشتم که در یک حلقه، خواص ماده را تغییر میداد، مسئله را حل میکرد و دمای ماکزیمم را در یک فایل ذخیره میکرد. کاری که دو روز طول کشیده بود، با اسکریپت در کمتر از ۳ ساعت (بدون دخالت من) انجام شد. این تجربه نگاهم را برای همیشه به فلوئنت تغییر داد. شما هم میتوانید با دستوراتی مثل define/models/viscous/ke-standard yes یا define/materials/change-create… تمام تنظیمات را کنترل کنید. این رویکرد حتی از تعریف شرایط مرزی پیچیده با Expression ها هم میتواند کارآمدتر باشد.
۶. آیا میتوان شرایط مرزی پیچیده را در فلوئنت به صورت پارامتریک و از طریق اسکریپت تعریف نمود؟
قطعاً. این یکی از کاربردهای اصلی اسکریپتنویسی برای مطالعات پارامتریک است. فرض کنید میخواهید اثر زاویه حمله یک ایرفویل را روی نیروی لیفت بررسی کنید. به جای اینکه هر بار به صورت دستی سرعت ورودی را به مولفههای x و y تجزیه کنید، میتوانید یک اسکریپت بنویسید که زاویه را به عنوان ورودی بگیرد و شرایط مرزی را خودش تنظیم کند.
مثلاً با دستور define/boundary-conditions/velocity-inlet… میتوانید تمام پارامترهای یک ورودی سرعت را تغییر دهید. این کار نه تنها سریع است، بلکه وقتی با هندسههای متحرک سروکار دارید و نیاز به تکنیکهای پیشرفته مش دینامیک دارید، هماهنگ کردن تغییر شرایط مرزی با حرکت قطعه حیاتی میشود.
۷. چگونه فرآیند حل، از مقداردهی اولیه (Initialization) تا رسیدن به همگرایی را به طور کامل خودکار کنیم؟
بعد از اینکه تمام تنظیمات را با اسکریپت انجام دادید، نوبت به بخش جذاب ماجرا یعنی حل مسئله میرسد. شما میتوانید کل فرآیند را به دست فلوئنت بسپارید. دستورات کلیدی در این بخش عبارتند از:
- solve/initialize/hybird-initialize : برای انجام مقداردهی اولیه هیبریدی.
- solve/iterate 1000 : برای اجرای حل به تعداد ۱۰۰۰ تکرار.
حتی میتوانید معیارهای همگرایی را هم از طریق اسکریپت تنظیم کنید تا حل به محض رسیدن به دقت مورد نظر متوقف شود. این کار به خصوص برای اجرای شبیهسازیهای سنگین روی سرورها یا سیستمهای HPC بسیار کارآمده، چون میتوانید چندین کیس را در یک صف قرار دهید تا به ترتیب و بدون نیاز به حضور شما حل شوند. البته هواستون باشه که یک اسکریپت خودکار که به مشکل میخورد، میتواند ساعتها منابع سیستم را هدر دهد، پس بهتر است با دلایل رایج عدم همگرایی در فلوئنت و راههای جلوگیری از آن آشنا باشید. از پروژههای کلاسی و انجام پروژه دانشجویی فلوئنت گرفته تا سطوح پیشرفته مثل انجام پایان نامه فلوئنت و انجام پروژه انسیس فلوئنت با هندسههای پیچیده، تیم ما آماده انجام پروژه فلوئنت با تضمین کیفیت و آموزش کامل است.

۸. چطور میتوان نتایج کلیدی مثل ضریب درگ یا کانتورهای سرعت را پس از اتمام شبیهسازی به صورت خودکار استخراج کرد؟
یک شبیهسازی بدون تحلیل نتایج هیچ ارزشی ندارد. خبر خوب این است که میتوانید بخش خستهکننده استخراج داده را هم به طور کامل خودکار کنید. به جای اینکه بعد از هر اجرا به صورت دستی وارد بخش Reports شوید، میتوانید به اسکریپت خود دستور دهید تا مقادیر مورد نیاز را در یک فایل متنی ذخیره کند. 📄
مثلاً با دستور report/forces/wall-forces drag-coefficient () inlet no “drag-report.txt” yes، فلوئنت به طور خودکار ضریب درگ روی دیواره مشخص شده را محاسبه و در فایل drag-report.txt ذخیره میکند. به همین ترتیب میتوانید دستوراتی برای ذخیره تصاویر کانتورها یا پلاتها اضافه کنید. این کار به خصوص برای استخراج دادههای کمی دقیق مثل نرخ انتقال حرارت و افت فشار در مطالعات پارامتریک، فوقالعاده حیاتی است.
جدول مقایسه ابزارهای اتوماسیون و سفارشیسازی در فلوئنت
| ویژگی | TUI Journal | UDF (به زبان C) | PyFluent (به زبان Python) |
| هدف اصلی | اتوماسیون دستورات داخلی | تعریف فیزیک جدید | کنترل کامل فلوئنت با پایتون |
| سطح پیچیدگی | ساده | پیچیده | متوسط تا پیشرفته |
| نیاز به کامپایلر | خیر | بله (C Compiler) | خیر |
| قابلیتهای شرطی/حلقه | خیر | بله (در کد C) | بله (تمام قدرت پایتون) |
| بهترین کاربرد | مطالعات پارامتریک ساده | تعریف خواص مواد پیچیده | ساخت اپلیکیشنهای بهینهسازی |
| منحنی یادگیری | بسیار کوتاه | طولانی | متوسط |
۹. چگونه با اسکریپتنویسی یک مطالعه پارامتریک (مثلاً بررسی زوایای حمله مختلف) را در فلوئنت اجرا کنیم؟
اینجا جایی است که قدرت واقعی اسکریپتنویسی خودش را نشان میدهد. اگرچه خود TUI فلوئنت به طور مستقیم از حلقههای for یا while پشتیبانی نمیکنه، اما میتوان با کمی خلاقیت این محدودیت را دور زد. یک روش رایج، نوشتن یک اسکریپت خارجی (مثلاً با پایتون یا حتی یک فایل Batch ساده در ویندوز) است که فایل ژورنال فلوئنت را با پارامترهای مختلف فراخوانی میکند.
هر فراخوانی، یک شبیهسازی با یک پارامتر جدید (مثلاً سرعت ورودی متفاوت یا خاصیت یک ماده) را اجرا میکند. این رویکرد به شما اجازه میدهد صدها شبیهسازی را در صف قرار دهید تا در طول شب یا آخر هفته اجرا شوند. این دقیقاً همان تکنیکی است که برای پروژههای پیچیدهای مثل بهینهسازی سیستم خنککاری باتری خودروی الکتریکی استفاده میشود، جایی که دهها پارامتر طراحی باید برای رسیدن به بهترین عملکرد تست شوند.
۱۰. چه نکات و ترفندهایی برای نوشتن اسکریپتهای TUI تمیز، قابل فهم و بدون خطا وجود دارد؟
یک اسکریپت که فقط خودتان همان لحظه از آن سر در میآورید، به درد نمیخورد. برای اینکه اسکریپتهایتان حرفهای و قابل استفاده مجدد باشند، این چند نکته را همیشه رعایت کنید:
- از کامنت استفاده کنید: با گذاشتن ; در ابتدای هر خط، میتوانید توضیحات بنویسید. همیشه توضیح دهید که هر بخش از کد چه کاری انجام میدهد.
- اسکریپت را ماژولار بنویسید: به جای یک فایل طولانی، اسکریپتهای جداگانه برای مشزنی، تنظیمات حل، و پسپردازش بنویسید. اینطوری مدیریتشان راحتتر است.
- نامگذاری واضح: نام Boundary Conditionها و فایلها را طوری انتخاب کنید که گویا باشد.
- مسیرهای نسبی: تا جای ممکن از مسیرهای مطلق (مثل C:\Users\…) پرهیز کنید تا اسکریپت روی سیستمهای دیگر هم کار کند.
یادتان باشد، TUI برای دستورات مستقیم و پشت سر هم عالی است. اما اگر نیاز به منطق پیچیده، شروط if، یا محاسبات ریاضی دارید، بهتر است به فکر یادگیری انواع UDF در فلوئنت باشید که قدرت بسیار بیشتری در اختیارتان قرار میدهد.
۱۱. وقتی اسکریپت ژورنال فلوئنت با خطا مواجه میشود، چگونه آن را به سرعت عیبیابی کنیم؟
هیچ چیز ناامیدکنندهتر از این نیست که یک اسکریپت را برای اجرا در طول شب تنظیم کنید و صبح با یک پیغام خطا مواجه شوید. رایجترین دلیل خطا، یک اشتباه تایپی ساده در نام یک ناحیه یا یک دستور است. بهترین راه برای دیباگ کردن این است که دستورات فایل ژورنال را خط به خط در کنسول TUI خود فلوئنت کپی و اجرا کنید. به محض اینکه به خط مشکلدار برسید، فلوئنت خطا میدهد و شما دقیقاً میفهمید مشکل از کجاست.
گاهی اوقات هم مشکل عمیقتر است و به خود فیزیک مسئله برمیگردد، مثلاً تنظیماتی که با هم همخوانی نداره و باعث بروز خطاهایی مثل خطای معروف Floating Point Exception در فلوئنت میشود. در این موارد، اسکریپت شما بیتقصیر است و باید به سراغ تنظیمات حلگر بروید.

۱۲. سیمومک چگونه از اتوماسیون با TUI Journal برای بهینهسازی طراحیهای صنعتی و کاهش هزینهها استفاده میکند؟
در سیمومک، ما از اسکریپتنویسی صرفاً برای سرعت بخشیدن به کارها استفاده نمیکنیم؛ بلکه آن را به عنوان یک ابزار استراتژیک برای بهینهسازی و حل مسائل واقعی صنعت به کار میگیریم. وقتی یک شرکت برای کاهش مصرف سوخت به ما مراجعه میکند، ما فقط یک شبیهسازی انجام نمیدهیم. ما یک فرآیند خودکار طراحی میکنیم که دهها یا حتی صدها تغییر کوچک در هندسه را شبیهسازی میکند تا به بهینهترین حالت برسد. این سطح از تحلیل و بهینهسازی دقیق، چیزی است که ما در هر انجام پروژه فلوئنت به مشتریان خود ارائه میدهیم.
برای مثال، در یکی از پروژهها، با همین رویکرد توانستیم فرآیند تست آیرودینامیکی یک قطعه را خودکار کنیم و با بررسی بیش از ۵۰ طرح مختلف در کمتر از یک هفته، به طرحی برسیم که منجر به کاهش ۱۰ درصدی نیروی درگ یک خودروی مسابقه شد؛ کاری که انجام آن به روش سنتی ماهها زمان و هزینه نیاز داشت.
۱۳. آیا راهی برای ترکیب اسکریپت فلوئنت با نرمافزارهای دیگر مانند متلب برای بهینهسازی پیشرفته وجود دارد؟
بله، و اینجاست که مهندسی واقعی وارد میدان میشود. شما میتوانید از یک نرمافزار خارجی مثل متلب یا پایتون به عنوان “مغز متفکر” فرآیند بهینهسازی استفاده کنید. این برنامه میتواند یک الگوریتم بهینهسازی (مثل الگوریتم ژنتیک) را اجرا کند، پارامترهای طراحی جدید را تولید نماید، اسکریپت فلوئنت را با این پارامترها فراخوانی کند، نتایج را از فایل خروجی بخواند و این چرخه را تا رسیدن به جواب بهینه تکرار کند. این رویکرد برای حل مسائل بسیار پیچیده مانند شبیهسازی آکوستیک و تولید نویز ناشی از جریان که نیاز به تحلیلهای فرکانسی پس از شبیهسازی دارند، بسیار قدرتمند است.
۱۴. اسکریپتنویسی TUI تا کجا کارآمد است و چه زمانی باید به سراغ ابزارهای قدرتمندتری مانند PyFluent برویم؟
TUI Journal برای اتوماسیون کارهای ترتیبی و مطالعات پارامتریک ساده، فوقالعاده است. اما محدودیتهای خودش را هم دارد. همانطور که گفتیم، فاقد منطق شرطی و حلقههای پیچیده است. برای این کارها، ابزار جدیدتر و مدرنتری به نام PyFluent (کتابخانه پایتون برای فلوئنت) معرفی شده است که به شما اجازه میدهد با تمام قدرت زبان برنامهنویسی پایتون، فلوئنت را کنترل کنید. اگر کار شما صرفاً اجرای چندباره یک کیس با ورودیهای مختلف است، TUI کافیست. اما اگر به دنبال ساخت یک اپلیکیشن کامل برای بهینهسازی هستید، اینده این مسیره.
۱۵. آیا آمادهاید فرآیندهای CFD خود را به سطح بالاتری ببرید و با مشاوره تخصصی سیمومک بهینهسازی را شروع کنید؟
یادگیری اتوماسیون، یک سرمایهگذاری روی مهمترین دارایی شما یعنی زمان است. دیگر لازم نیست ساعتها برای کارهای تکراری وقت بگذارید و میتوانید روی تحلیل فیزیک مسئله و درک نتایج تمرکز کنید. فرقی نمیکند دانشجویی باشید که برای پایاننامهاش نیاز به اجرای دهها شبیهسازی دارد یا مهندس صنعتی که به دنبال بهینهسازی یک محصول است؛ تسلط بر اتوماسیون با اسکریپتنویسی در فلوئنت، یک مهارت کلیدی و متمایز کننده برای شما خواهد بود. 🚀 برای اطمینان از کیفیت و دقت نتایج، میتوانید از خدمات انجام پروژه انسیس فلوئنت ما استفاده کنید. همچنین برای پروژههای حساس، امکان عقد قرارداد و انجام پروژه فلوئنت در تهران به صورت حضوری و یا انجام پروژه فلوئنت به صورت آنلاین برای سراسر کشور فراهم است.
سوالات متداول
1. آیا میتوانم داخل یک فایل Journal از حلقههای For یا دستورات شرطی If استفاده کنم؟
خیر، زبان دستوری TUI فلوئنت به طور ذاتی از حلقهها و شروط پشتیبانی نمیکند. برای این کار باید از یک اسکریپت خارجی (مثل پایتون یا Batch File) برای فراخوانی چندباره فایل ژورنال با پارامترهای مختلف استفاده کنید یا به سراغ PyFluent بروید.
2. تفاوت اصلی بین اسکریپت TUI Journal و UDF چیست؟
TUI Journal برای خودکارسازی دستورات داخلی فلوئنت (کارهایی که با کلیک انجام میدهید) است. اما UDF (User-Defined Function) برای تغییر رفتار فیزیکی حلگر نوشته میشود (مثلاً تعریف یک خاصیت ماده جدید یا یک شرط مرزی پیچیده که در فلوئنت وجود ندارد).
3. آیا میتوانم یک شبیهسازی گذرا (Transient) را با اسکریپت خودکار کنم؟
بله، کاملاً. شما میتوانید تعداد گامهای زمانی (Time Steps) و اندازه هر گام را با دستورات TUI مشخص کنید و حتی دستور دهید که در پایان هر گام زمانی، دادهها یا تصاویر خاصی ذخیره شوند.
4. چگونه میتوانم یک اسکریپت را در حالت Batch (بدون باز کردن محیط گرافیکی) اجرا کنم؟
میتوانید فلوئنت را از طریق خط فرمان (Command Prompt) با آپشن -i اجرا کرده و آدرس فایل ژورنال خود را به آن بدهید. این روش برای اجرا روی سرورها و سیستمهای HPC بسیار کارآمد است.
5. آیا اسکریپتهای نوشته شده در نسخههای قدیمی فلوئنت در نسخههای جدید هم کار میکنند؟
در اکثر موارد بله، اما گاهی اوقات انسیس ساختار برخی دستورات را تغییر میدهد. همیشه بهتر است قبل از اجرای یک پروژه بزرگ، اسکریپت خود را یک بار در نسخه جدید تست کنید.
6. بهترین راه برای یادگیری دستورات مختلف TUI چیست؟
بهترین راه، استفاده از قابلیت Start Journal است. هر کاری که میخواهید یاد بگیرید را یک بار به صورت دستی انجام دهید و سپس فایل ژورنال ضبط شده را باز کرده و دستورات معادل آن را ببینید.
7. آیا میتوانم از متغیرها در فایل Journal استفاده کنم؟
TUI به طور مستقیم از متغیرها پشتیبانی نمیکند. اما میتوانید از ابزارهای پیشرفتهتر مثل Scheme (زبان برنامهنویسی پشت پرده فلوئنت) برای این کار استفاده کنید که کمی پیچیدهتر است.
8. آیا این روش برای نرمافزارهای دیگر انسیس مثل CFX هم کاربرد دارد؟
مفهوم اتوماسیون بله، اما ابزار متفاوت است. CFX از زبان دستوری خودش به نام CCL (CFX Command Language) برای این کار استفاده میکند.
9. آیا اسکریپتنویسی میتواند به همگرایی حل کمک کند؟
به طور غیرمستقیم بله. شما میتوانید با اسکریپت، استراتژیهای مختلف حل را تست کنید. مثلاً یک اسکریپت بنویسید که ابتدا با یک Discretization Scheme مرتبه اول حل را شروع کند و پس از چند تکرار، به صورت خودکار به مرتبه دوم سوییچ کند تا پایداری حل افزایش یابد.
10. آیا سیمومک خدمات نوشتن اسکریپتهای سفارشی برای پروژههای صنعتی را ارائه میدهد؟
بله، یکی از خدمات تخصصی ما در سیمومک، توسعه اسکریپتهای سفارشی برای اتوماسیون کامل فرآیندهای شبیهسازی و بهینهسازی مطابق با نیازهای خاص صنایع مختلف است.