انواع UDF در فلوئنت: کدام یک برای شبیهسازی دقیق پروژه شما ضروری است؟
وقتی برای اولین بار با انسیس فلوئنت شروع به کار میکنید، دنیایی از امکانات پیش روی شماست. اما خیلی زود به نقطهای میرسید که متوجه میشوید جعبهابزار استاندارد نرمافزار، برای حل چالشهای واقعی و پیچیده صنعتی، همیشه کافی نیست. اینجاست که درک عمیقتر ابزارهای پیشرفته، مرز بین یک تحلیل معمولی و یک شبیهسازی دقیق و قابل استناد را مشخص میکند. تیم سیمومک در تمام مراحل انجام پروژه فلوئنت کنار شماست؛ چه برای انجام پروژه دانشجویی فلوئنت و مشاوره تخصصی انجام پایان نامه فلوئنت نیاز به راهنمایی داشته باشید ما راهکار دقیق را به شما ارائه میدهیم. اگر میخواهید از سطح مقدماتی فراتر بروید، مطالعه راهنمای جامع انسیس فلوئنت از مقدماتی تا پیشرفته میتواند نقشه راه شما باشد.
جدول ماتریس انتخاب سریعUDF
| هدف شما از نوشتن UDF | ماکروی پیشنهادی | محل اعمال | مثال کلیدی |
| تعریف پروفایل ورودی غیریکنواخت | DEFINE_PROFILE | مرزها (Boundary) | پروفایل سرعت سهموی در ورودی لوله |
| اعمال منبع انرژی یا مومنتوم حجمی | DEFINE_SOURCE | سلولها (Cell Zone) | مدلسازی حرارت تولیدی در باتری |
| تعریف خواص سیال وابسته به متغیرها | DEFINE_PROPERTY | دامنه سیال (Fluid Domain) | ویسکوزیته غیرنیوتنی وابسته به نرخ برش |
| تعریف حرکت یک جسم صلب | DEFINE_CG_MOTION | ناحیه متحرک (Moving Zone) | حرکت رفت و برگشتی پیستون |
| تعریف نیروی آیرودینامیکی سفارشی | DEFINE_EXECUTE_AT_END | در انتهای هر تکرار | محاسبه ضریب درگ بر اساس فرمول خاص |

چرا قابلیتهای پیشفرض فلوئنت برای شبیهسازی دقیق چالشهای صنعتی کافی نیست؟
واقعیت اینه که دنیای مهندسی پر از “اگر” و “اما” است. پروفایل سرعت در ورودی یک لوله همیشه یکنواخت نیست. خواص یک سیال پلیمری با تغییر نرخ برش (Shear Rate) عوض میشود. یا شاید یک منبع حرارتی دارید که توانش تابعی از دمای یک نقطه دیگر در سیستم است. فلوئنت به تنهایی نمیتواند این شرایط خاص و سفارشی را حدس بزند.
یادم میآید حدود ۴-۵ سال پیش روی پروژه خنککاری یک برد الکترونیکی کار میکردیم. پروفایل هوای خروجی از فن، اصلا شبیه گزینههای استاندارد فلوئنت نبود؛ یک حالت M شکل داشت که در مرکز سرعت کمتر و در لبهها بیشتر بود. هرچقدر با پروفایلهای پیشفرض ورودی را تنظیم میکردیم، نتایج دمای قطعات حساس، تا ۱۵٪ با دادههای آزمایشگاهی اختلاف داشت. این یک خطای غیرقابل چشمپوشی بود. اینجور مواقع است که باید آستینها را بالا بزنید و خودتان دست به کار شوید.
UDF در فلوئنت دقیقا چیست و چگونه قدرت شبیهسازی شما را متحول میکند؟
UDF یا User-Defined Function یک قطعه کد به زبان برنامهنویسی C است که به شما اجازه میدهد فیزیک مسئله خودتان را مستقیماً به حلگر فلوئنت تزریق کنید. ⚙️ فکر کنید فلوئنت یک آشپز حرفهای با مجموعهای از دستورپختهای استاندارد است. UDF به شما این امکان را میدهد که دستور پخت سری و منحصربهفرد خودتان را به او بدهید تا غذایی دقیقا مطابق با سلیقه شما آماده کند.
با استفاده از انواع UDF در فلوئنت، شما دیگر محدود به منوهای گرافیکی نرمفزار نیستید. میتوانید شرایط مرزی پیچیده، خواص مواد وابسته به متغیرهای میدان جریان، منابع انرژی سفارشی و حتی حرکتهای پیچیده دیوارها را مدل کنید. این ابزار، پل ارتباطی بین خلاقیت مهندسی شما و قدرت محاسباتی حلگر است.

چگونه با UDF DEFINE_PROFILE یک پروفایل سرعت یا دمای ورودی غیریکنواخت تعریف کنیم؟
این یکی از پرکاربردترین UDFهاست. هر زمان که مقدار یک متغیر (مثل سرعت، دما، غلظت) در یک مرز (معمولاً ورودی) یکنواخت نباشد و از یک رابطه ریاضی یا دادههای تجربی پیروی کند، DEFINE_PROFILE به کمک شما میآید.
برای مثال، در شبیهسازی جریان در یک لوله، اگر بخواهید پروفایل سرعت کاملاً توسعهیافته سهموی را در ورودی اعمال کنید، این UDF بهترین انتخاب است. یا فرض کنید دادههای دمایی خروجی از یک دودکش را به صورت یک فایل متنی دارید و میخواهید از آن به عنوان ورودی یک شبیهسازی دیگر استفاده کنید. DEFINE_PROFILE این کار را برایتان ممکن میکند. البته یادتان باشد که دقت در این نواحی به شدت به کیفیت مش بستگی دارد و باید حواستان به تنظیم دقیق مش لایه مرزی و وای پلاس باشد تا نتایجتان در نزدیکی مرزها معتبر باشد.
آیا نیاز به تعریف منبع حرارتی یا جرمی وابسته به مکان دارید؟
این سوالی است که در بسیاری از شبیهسازیهای انتقال حرارت یا واکنشهای شیمیایی پیش میآید. تصور کنید در حال مدلسازی یک واکنش شیمیایی هستید که فقط در یک ناحیه خاص از رآکتور اتفاق میافتد و گرما تولید میکند. یا میخواهید اثر گرمای تولید شده توسط یک پردازنده (CPU) را روی یک هیتسینک شبیهسازی کنید. در این موارد، شما یک منبع (Source) دارید که به صورت حجمی در بخشی از دامنه محاسباتی اعمال میشود. اینجاست که ماکروی بعدی وارد عمل میشود.
چطور با استفاده از UDF DEFINE_SOURCE یک منبع انرژی یا مومنتوم سفارشی در دامنه سیال اعمال کنید؟
DEFINE_SOURCE به شما اجازه میدهد تا مقادیر منبع را برای معادلات بقا (مومنتوم، انرژی، گونههای شیمیایی و…) تعریف کنید. این UDF مستقیماً به سلولهای دامنه اعمال میشود، نه به مرزها.
- مثال کاربردی: در شبیهسازی محیطهای متخلخل در فلوئنت مثل فیلترها یا کاتالیستها، میتوان از DEFINE_SOURCE برای تعریف افت فشار (یک منبع منفی مومنتوم) بر اساس قانون دارسی استفاده کرد. این روش بسیار کارآمدتر از مدلسازی هندسه واقعی حفرههاست.
- مثال دیگر: مدلسازی حرارت تولید شده در یک باتری حین فرآیند شارژ و دشارژ که مقدار آن به وضعیت شارژ (SOC) و دمای محلی بستگی دارد.
چگونه میتوان خواص سیال مانند ویسکوزیته یا چگالی را به دما یا فشار وابسته کرد؟
بسیاری از مایعات و تقریبا تمام گازها خواصی دارند که با تغییر دما و فشار به شدت تغییر میکند. برای مثال، ویسکوزیته روغن موتور با افزایش دما به شدت کاهش پیدا میکند. یا چگالی هوا با تغییر ارتفاع (و در نتیجه فشار و دما) عوض میشود. در حالی که فلوئنت توابع چندجملهای یا قطعهای سادهای برای این کار ارائه میدهد، گاهی اوقات شما یک رابطه پیچیدهتر یا دادههای آزمایشگاهی دارید که در این مدلهای ساده نمیگنجد.
برای مدلسازی خواص مواد غیرنیوتنی یا متخلخل از کدام UDF باید استفاده کرد؟
اینجا DEFINE_PROPERTY قهرمان داستان است. این ماکرو به شما اجازه میدهد تا هر خاصیت مادی (ویسکوزیته، هدایت حرارتی، چگالی، گرمای ویژه و…) را به عنوان تابعی از هر متغیر دیگری در شبیهسازی (دما، فشار، نرخ برش، و…) تعریف کنید.
- کاربرد کلاسیک: مدلسازی سیالات غیرنیوتنی مانند خون، سس کچاپ یا پلیمرهای مذاب که ویسکوزیته آنها به نرخ برش وابسته است (مدل Power Law یا Carreau).
- در نسخههای جدیدتر فلوئنت، ابزارهای قدرتمندی مثل Expressions اضافه شدهاند که برای برخی از این کارها دیگر نیازی به کدنویسی C ندارند. بررسی مقاله استفاده از Expression ها به جای UDF میتواند به شما بگوید چه زمانی میتوانید از این قابلیت جدید و سادهتر استفاده کنید.
مراحل گام به گام نوشتن، کامپایل و فراخوانی یک UDF در فلوئنت چگونه است؟
فرآیند کلی شاید در ابتدا کمی ترسناک به نظر برسد، ولی در واقع یک روند مشخص و منطقی دارد. به طور خلاصه:
- نوشتن کد: ابتدا باید کد خود را در یک فایل متنی با پسوند .c بنویسید. برای این کار از یک ویرایشگر متن ساده مثل Notepad++ استفاده کنید.
- فراخوانی در فلوئنت: نرمافزار فلوئنت را باز کرده و مدل خود را بارگذاری کنید.
- کامپایل یا تفسیر: از منوی User Defined Functions، گزینه Compiled یا Interpreted را انتخاب کنید. فایل .c خود را اضافه کرده و دکمه Build (برای کامپایل) یا Load (برای تفسیر) را بزنید.
- اتصال (Hooking): پس از بارگذاری موفقیتآمیز، باید به پنل مربوطه بروید (مثلاً پنل تنظیمات شرایط مرزی ورودی) و از لیست کشویی، UDF خود را انتخاب کنید تا به آن مرز یا ناحیه متصل شود.
این مراحل برای شبیهسازیهای پیچیدهتر مثل تحلیل اندرکنش سیال و سازه (FSI) که نیاز به تعریف نیروهای سفارشی روی مرزهای متحرک دارند، اهمیت حیاتی پیدا میکند.

UDF کامپایل شده (Compiled) چه برتریهای کلیدی نسبت به نوع تفسیری (Interpreted) دارد؟
این یکی از سوالات پرتکراره. UDF تفسیری (Interpreted) برای تستهای سریع و دیباگ کردن کد عالیه، چون نیازی به کامپایلر مجزا نداره و سریع بارگذاری میشه. اما وقتی کار جدی میشه و شبیهسازی شما قراره ساعتها یا روزها اجرا بشه، داستان کاملا فرق میکنه. UDF کامپایل شده مستقیما به کد ماشین تبدیل میشه و با سرعت بسیار بالاتری نسبت به حالت تفسیری اجرا میشه.
یادم هست در یک پروژه شبیهسازی احتراق، یک UDF برای تعریف نرخ واکنش داشتم. در حالت تفسیری، هر تایم استپ حدود ۳۰ ثانیه طول میکشید. بعد از اینکه از صحت کد مطمئن شدم و اون رو کامپایل کردم، زمان هر تایم استپ به کمتر از ۵ ثانیه رسید! این یعنی یک صرفهجویی عظیم در زمان محاسباتی، خصوصا وقتی میخواهید شبیهسازی را برای حل موازی روی چندین هسته تنظیم کنید.
| ویژگی | UDF تفسیری (Interpreted) | UDF کامپایل شده (Compiled) |
| سرعت اجرا | کندتر (مناسب برای تست) | بسیار سریعتر (ضروری برای پروژههای بزرگ) |
| نیازمندیها | نیاز به ابزار خاصی ندارد | نیازمند نصب Microsoft Visual Studio و تنظیمات آن |
| محدودیتها | همه ماکروها را پشتیبانی نمیکند | از تمام قابلیتهای UDF پشتیبانی میکند |
| فرآیند | بارگذاری مستقیم (Load) | ساخت و بارگذاری (Build & Load) |
با خطاهای رایج هنگام کامپایل UDF در فلوئنت چگونه مقابله کنیم؟
آه، خطاهای کامپایل! کابوس هر مهندسی که با UDF سر و کار دارد. 😩 بعد از کلی وقت گذاشتن برای نوشتن کد، با یک پنجره پر از پیامهای قرمز و نامفهوم مواجه میشوید. نگران نباشید، بیشتر این خطاها تکراری هستند:
- خطای سینتکس (Syntax Error): معمولا به خاطر یک ; یا } جا افتاده است. کدتان را دوباره با دقت چک کنید.
- پیدا نشدن udf.h: مطمئن شوید مسیرهای کامپایلر در فلوئنت به درستی تنظیم شدهاند.
- خطاهای Linker: این خطاها کمی پیچیدهتر هستند و معمولا وقتی اتفاق میافتند که از توابع کتابخانهای استاندارد C (مثل math.h) استفاده میکنید ولی آن را به درستی include نکردهاید.
یکی از بدترین تجربیات من، خطایی بود که به خاطر ورژن ناسازگار Visual Studio با نسخه انسیس رخ داده بود. یک روز کامل درگیرش بودم. همیشه قبل از شروع، مستندات انسیس را برای پیدا کردن نسخه سازگار کامپایلر چک کنید تا در وقتتان صرفهجویی شود. گاهی یک UDF که به درستی کار نمیکند، میتواند یکی از دلایل اصلی عدم همگرایی و راه حل آنها باشد. از پروژههای کلاسی و انجام پروژه دانشجویی فلوئنت گرفته تا سطوح پیشرفته مثل انجام پایان نامه فلوئنت و انجام پروژه انسیس فلوئنت با هندسههای پیچیده، تیم ما آماده انجام پروژه فلوئنت با تضمین کیفیت و آموزش کامل است.
جدول عیبیابی سریع خطاهای رایج کامپایل
| پیام خطا (یا مفهوم آن) | علت احتمالی | راهحل سریع |
| undeclared identifier یا variable not defined | یک متغیر را بدون تعریف کردن، استفاده کردهاید. | متغیر را در ابتدای تابع تعریف کنید (مثلاً real x, y;). |
| syntax error : missing ‘;’ | یک نقطه-ویرگول در انتهای یک خط جا افتاده است. | خطی که کامپایلر به آن اشاره میکند را بررسی کنید. |
| Cannot open include file: ‘udf.h’ | مسیر کتابخانههای فلوئنت به درستی تنظیم نشده. | فلوئنت را از طریق Fluent Launcher اجرا کرده و مسیرهای کامپایلر را چک کنید. |
| error LNK2019: unresolved external symbol | معمولاً به خاطر فراخوانی یک تابع بدون تعریف آن است. | مطمئن شوید تمام توابع مورد نیاز در کد شما وجود دارند. |
فراتر از پایهها: با کدام UDFها میتوان شبیهسازیهای پیچیده مثل مش متحرک (Dynamic Mesh) را انجام داد؟
وقتی از تعریف پروفایل و خواص مواد عبور کنیم، به دنیای شگفتانگیز UDFهای پیشرفته میرسیم. اینجا جایی است که میتوانید حرکتهای پیچیده را مدل کنید.
- DEFINE_CG_MOTION: برای تعریف حرکت یک جسم صلب (مثلاً حرکت پیستون در سیلندر یا باز و بسته شدن یک شیر). شما سرعت خطی و زاویهای جسم را به حلگر میدهید.
- DEFINE_GRID_MOTION: این یکی قدرت بیشتری به شما میدهد و اجازه میدهد تا حرکت تکتک نودهای مش را در مرزهای متحرک تعریف کنید. برای مدلسازی تغییرشکلهای پیچیده مثل ارتعاش یک بال هواپیما عالیست.
تسلط بر این ماکروها نیاز به درک عمیقی از تکنیکهای پیشرفته مش دینامیک مانند Layering و Remeshing دارد تا از کاهش کیفیت مش در حین شبیهسازی جلوگیری کنید.
چطور بر اساس فیزیک مسئله، مناسبترین نوع UDF را برای پروژه خود انتخاب کنید؟
سردرگم شدن بین این همه ماکروی DEFINE_ طبیعی است. این چکلیست ذهنی میتواند به شما کمک کند:
- آیا میخواهید مقداری را روی یک مرز (مثل ورودی یا دیواره) تعریف کنید؟ ← به احتمال زیاد DEFINE_PROFILE نیاز دارید.
- آیا میخواهید یک منبع انرژی، جرم یا مومنتوم را درون حجم سیال تعریف کنید؟ ← DEFINE_SOURCE پاسخ شماست.
- آیا میخواهید خاصیت یک ماده (مثل ویسکوزیته) را تغییر دهید؟ ← DEFINE_PROPERTY کار شما را راه میاندازد.
- آیا جسم شما حرکت میکند یا تغییر شکل میدهد؟ ← سراغ DEFINE_CG_MOTION یا DEFINE_GRID_MOTION بروید.
- آیا میخواهید یک کار تکراری را اتوماتیک کنید؟ در این صورت شاید اصلا نیازی به UDF نداشته باشید و بهتر باشد اتوماسیون فرآیندها با اسکریپت نویسی TUI را یاد بگیرید.

بررسی یک پروژه صنعتی در سیمومک: چگونه با یک UDF سفارشی، شبیهسازی خنککاری باتری را دقیقتر کردیم؟ 🔋
در یکی از پروژههای اخیر، ما مسئول بهینهسازی سیستم خنککاری یک پک باتری خودروی الکتریکی بودیم. چالش اصلی این بود که حرارت تولیدی در هر سلول باتری ثابت نیست؛ بلکه تابعی پیچیده از وضعیت شارژ (SOC)، دمای داخلی و جریان دشارژ است. مدلهای حرارتی استاندارد فلوئنت نمیتوانستند این رفتار دینامیک را به درستی مدل کنند.
راه حل ما، نوشتن یک DEFINE_SOURCE بود که دادههای تجربی رفتار الکتروشیمیایی باتری را به عنوان ورودی میگرفت. این UDF در هر تکرار حل، SOC هر سلول را آپدیت میکرد و بر اساس آن، مقاومت داخلی و در نتیجه حرارت تولیدی (مطابق با رابطه Q = I²R) را برای هر سلول به صورت مجزا محاسبه و به دامنه اعمال میکرد. نتیجه فوقالعاده بود: توزیع دمای پیشبینی شده در شبیهسازی، کمتر از ۳٪ با دادههای سنسورهای حرارتی آزمایشگاهی اختلاف داشت و به ما اجازه داد تا الگوی جریان مایع خنککننده را برای جلوگیری از ایجاد نقاط داغ (Hotspots) بهینه کنیم.
آیا توسعه UDF برای پروژه شما پیچیده است و به دنبال نتایج قابل اعتماد هستید؟
نوشتن یک UDF که فقط کامپایل شود یک چیز است، اما نوشتن کدی که از نظر فیزیکی صحیح باشد، پایدار باشد و نتایج قابل اعتمادی تولید کند، یک مهارت کاملا متفاوت است. دیباگ کردن یک UDF که باعث ناپایداری حل میشود، میتواند بسیار زمانبر و خستهکننده باشد، خصوصا اگر برای یک پروژه دانشجویی یا صنعتی با ددلاین مشخص کار میکنید.
چه زمانی باید توسعه UDF را به متخصصان مهندسی سیمومک بسپارید تا در زمان و هزینه صرفهجویی کنید؟
اگر فیزیک مسئله شما بسیار خاص است، اگر با خطاهای مداوم کامپایلر دست و پنجه نرم میکنید، یا اگر به سادگی وقت کافی برای یادگیری عمیق برنامهنویسی C و دیباگ کردن آن را ندارید، برونسپاری این بخش از کار یک تصمیم هوشمندانه است. تیم ما در سیمومک میتواند با تحلیل دقیق نیازهای پروژه شما، UDFهای بهینه و پایداری را توسعه دهد. این کار به شما اجازه میدهد تا روی تحلیل نتایج و مهندسی مسئله تمرکز کنید. برای مسائل پیچیده میتوانید روی خدمات تخصصی ما در زمینه انجام پروژه فلوئنت حساب کنید.
امیدوارم این راهنمای کامل به شما کمک کرده باشد تا درک بهتری از انواعUDF در فلوئنت پیدا کنید و بتوانید با اطمینان بیشتری ابزار مناسب را برای پروژه خود انتخاب کنید. برای اطمینان از کیفیت و دقت نتایج، میتوانید از خدمات انجام پروژه انسیس فلوئنت ما استفاده کنید. همچنین برای پروژههای حساس، امکان عقد قرارداد و انجام پروژه فلوئنت در تهران به صورت حضوری و یا انجام پروژه فلوئنت به صورت آنلاین برای سراسر کشور فراهم است.
سوالات متداول
۱. آیا برای نوشتن UDF باید یک برنامهنویس حرفهای C باشم؟
نه لزوماً. برای UDFهای ساده مثل DEFINE_PROFILE، داشتن درک پایهای از متغیرها، حلقهها و ساختارهای شرطی در C کافی است. پیچیدگی کدنویسی مستقیماً به پیچیدگی فیزیک مسئله شما بستگی دارد.
۲. تفاوت اصلی بین UDF کامپایل شده و تفسیری چیست؟
UDF تفسیری (Interpreted) برای تست و خطایابی سریع خوب است چون نیازی به کامپایلر ندارد. اما UDF کامپایل شده (Compiled) به کد ماشین تبدیل شده و با سرعت بسیار بالاتری اجرا میشود و برای پروژههای نهایی و سنگین ضروری است.
۳. برای کامپایل کردن UDF به چه نرمافزاری نیاز دارم؟
شما به یک کامپایلر C سازگار نیاز دارید. برای سیستمعامل ویندوز، معمولاً از Microsoft Visual Studio (نسخه Community آن رایگان است) استفاده میشود. مهم است که نسخه Visual Studio با نسخه Ansys شما سازگار باشد.
۴. چگونه میتوانم یک UDF را دیباگ یا خطایابی کنم؟
سادهترین راه، استفاده از دستور Message() در کد UDF است تا مقادیر متغیرهای مختلف را در کنسول فلوئنت چاپ کنید و ببینید آیا مقادیر منطقی هستند یا خیر. برای دیباگ پیشرفتهتر، نیاز به ابزارهای تخصصیتری دارید.
۵. آیا قابلیت Expressions در نسخههای جدید فلوئنت میتواند جایگزین UDF شود؟
بله، در بسیاری از موارد ساده تا متوسط (مثل تعریف پروفایلهای ریاضی یا خواص وابسته به دما)، Expressions یک جایگزین عالی، سادهتر و بدون نیاز به کدنویسی است. اما برای منطقهای بسیار پیچیده، حلقهها یا دسترسی به دادههای سلولهای همسایه، همچنان UDF قدرتمندترین ابزار است.
۶. آیا استفاده از UDF سرعت حل را کاهش میدهد؟
یک UDF کامپایل شده و بهینه، تاثیر بسیار کمی بر سرعت حل دارد. اما یک UDF تفسیری یا کدی که محاسبات سنگین و غیرضروری در آن انجام شود، میتواند به طور قابل توجهی سرعت شبیهسازی را کاهش دهد.
۷. آیا میتوانم از UDF در شبیهسازیهای چندفازی (Multiphase) استفاده کنم؟
بله، کاملاً. برای مثال، میتوانید با UDF نرخ انتقال جرم بین فازها در مدل VOF یا نیروی درگ بین ذرات و سیال در مدلهای اویلری را به صورت سفارشی تعریف کنید.
۸. از کجا میتوانم مثالهای بیشتری از کدهای UDF پیدا کنم؟
بهترین منبع، راهنمای رسمی UDF خود نرمافزار انسیس (Ansys UDF Manual) است که پر از مثالهای کاربردی برای هر ماکرو است.
۹. رایجترین اشتباه مبتدیان در نوشتن UDF چیست؟
فراموش کردن نقطه-ویرگول (;) در انتهای دستورات C و همچنین استفاده نکردن از واحدهای SI در محاسبات داخل کد. فلوئنت تمام محاسبات را بر اساس SI انجام میدهد و UDF شما نیز باید از همین استاندارد پیروی کند.
۱۰. چطور مطمئن شوم UDF من باعث ناپایداری حل نمیشود؟
همیشه با یک مقدار کوچک یا حالت ساده شروع کنید. برای مثال، اگر یک منبع حرارتی وابسته به دما تعریف میکنید، ابتدا آن را با یک مقدار ثابت تست کنید. اگر حل پایدار بود، به تدریج وابستگی دمایی را به کد اضافه کنید.