خانه نمونه‌ها اسکرین‌شات‌ها راهنمای کاربر لوگوی Bluesky YouTube
OghmaNano شبیه‌سازی سلول‌های خورشیدی آلی/پروسکایتی، OFETها و OLEDها دانلود

بخش D: پایداری حل‌گر/مش‌بندی

این بخش بر پایداری حل‌گر و انتخاب مش تمرکز دارد. شبیه‌سازی‌های یک‌بعدی (1D) معمولاً بسیار پایدار هستند و سریع اجرا می‌شوند. با افزایش بُعد—از 1D به 2D و 3D—تعداد معادلات و تعداد جمله‌های کوپله‌کننده بین آن‌ها افزایش می‌یابد و این موضوع ناپایداری عددی را محتمل‌تر می‌کند. اگر تنظیمات برای یک شبیه‌سازی 2D یا 3D با دقت انتخاب نشوند، ممکن است شبیه‌سازی به همگرایی نرسد.

در اینجا چند آرایش ساده را عمداً به سمت عدم همگرایی سوق می‌دهیم، سپس بررسی می‌کنیم چرا این اتفاق می‌افتد و چگونه می‌توان آن را اصلاح کرد. با بازتولید این حالت‌های رایج شکست به‌صورت شخصی، یاد می‌گیرید نشانه‌ها را تشخیص دهید و راه‌حل مناسب (برای مثال، تنظیم مش، کاهش اندازه گام بایاس، یا تعدیل پارامترهای شدید مواد) را برای بازیابی یک حل پایدار به‌کار ببرید.

1. مقادیر غیرواقع‌بینانه پایین

در بسیاری از موارد، مشکلات همگرایی از مقادیر ورودی غیرفیزیکی ناشی می‌شوند. برای نشان دادن این موضوع، تحرک حامل را عمداً روی 0 قرار می‌دهیم و خطاهای حاصل را بررسی می‌کنیم. البته تحرک در یک ماده واقعی هرگز واقعاً صفر نیست—همیشه مقدار متناهی دارد—اما این مثال نشان می‌دهد وقتی به حل‌گر یک پارامتر غیرواقع‌بینانه داده شود چه اتفاقی می‌افتد.

ویرایشگر پارامترهای الکتریکی را باز کنید (پنجره اصلی ← زبانه Device) و تحرک را مطابق ?? روی 0 تنظیم کنید. اکنون شبیه‌سازی را اجرا کنید. باید صفحه خطایی مشابه ?? ببینید، با دو کادر قرمز: یک کادر عمودی پیرامون خلاصه باقیمانده و یک کادر افقی نزدیک پیام کرش.

اگر به کادر قرمز عمودی نگاه کنید می‌توانید f()=2.54e2 و سپس خطوط دیگری را ببینید که در آن‌ها f() بسیار بزرگ است (برای مثال 1e15، 1e5، 1e8، 1e7). در اینجا f() همان خطای باقیمانده حل‌گر است: معیاری از این‌که معادلات کوپله‌شده در وضعیت کنونی تا چه اندازه برآورده شده‌اند. در حالت ایده‌آل، باقیمانده حل‌گر دقیقاً صفر خواهد بود، هرچند در عمل هرگز نمی‌توان به این حالت رسید. باقیمانده در بازه 1e−10 تا 1e−8 نشان‌دهنده همگرایی بسیار خوب است، در حالی که مقادیر حدود 1e−1 هنوز قابل قبول هستند. در مقابل، باقیمانده‌هایی در حد صدها (برای مثال 2.54e2) - به‌ویژه هنگامی که با مقادیر مؤلفه‌ای به بزرگی 1e15 همراه باشند - نشانه‌ای روشن هستند از این‌که حل‌گر در تقلا است و سیستم ناپایدار شده است.

ویرایشگر پارامترهای الکتریکی با تحرک تنظیم‌شده روی 0، یک مقدار غیرفیزیکی که از انتقال حامل جلوگیری می‌کند و باعث خطاهای حل‌گر می‌شود.
تحرک صفر (μ = 0). یک تنظیم غیرفیزیکی که انتقال را به‌طور کامل مسدود می‌کند و معمولاً در drift–diffusion موجب عدم همگرایی می‌شود.
ردیابی کرش حل‌گر که شکست پس از تنظیم تحرک روی صفر را نشان می‌دهد.
خطا ناشی از تحرک صفر. با μ = 0 معادلات انتقال ناسازگار می‌شوند و باعث می‌شوند شبیه‌سازی خطا داده و در نهایت کرش کند.

کادر قرمز افقی معمولاً گزارش می‌کند چرا اجرا در نهایت متوقف می‌شود: Holes asking for 3e5 but only defined in range [min, max]. این یعنی سطح شبه‌فرمی محاسبه‌شده خارج از بازه جدول‌بندی‌شده رفته است. پیش از شروع، مدل رابطه‌هایی مانند سطح شبه‌فرمی در برابر چگالی حامل را روی یک دامنه بزرگ انرژی از پیش جدول‌بندی می‌کند - در واقع بسیار بزرگ‌تر از آنچه معمولاً انتظار می‌رود در یک دستگاه دیده شود. وقتی حل‌گر ناپایدار می‌شود، مدل می‌تواند مقادیر غیرواقع‌بینانه‌ای بسیار فراتر از آن بازه درخواست کند؛ در آن نقطه حل‌گر دیگر نمی‌تواند کمیت‌های لازم را ارزیابی کند و متوقف می‌شود.

به‌طور خلاصه، با قرار دادن تحرک روی یک مقدار غیرفیزیکی (μ = 0) معادلات را به ناحیه‌ای بردیم که از نظر فیزیکی هیچ معنایی ندارد، بنابراین روش عددی شکست می‌خورد: باقیمانده‌های بزرگ، سپس درخواست برای مقادیر خارج از جدول‌های از پیش محاسبه‌شده، و بعد کرش. مهم است توجه داشته باشید که این نتیجه نشانه ضعف مدل یا یک باگ نرم‌افزاری نیست. با وارد کردن پارامترهای غیرفیزیکی، حل‌گر به ناحیه‌ای رانده می‌شود که در آن هیچ حل معتبر ریاضی یا فیزیکی وجود ندارد، و بنابراین نمی‌تواند نتیجه‌ای معنادار ارائه دهد.

2. مقادیر غیرواقع‌بینانه بالا

در این مثال تحرک حامل را روی μ = 1×106 m²·V⁻¹·s⁻¹ قرار می‌دهیم. این یک مقدار عمداً غیرفیزیکی برای یک مدل drift–diffusion نیمه‌رسانا است: چنین بزرگی‌ای ممکن است با رژیم‌های رسانش فلزی مرتبط باشد، نه با جهش/انتقال نواری در نیمه‌رساناهای آلی یا متعارف. در عمل، از چنین مقدار بزرگی برای شبیه‌سازی‌های OFET استفاده نخواهید کرد.

اگر شبیه‌سازی را با این تنظیم اجرا کنید، می‌توانید تقلا کردن حل‌گر برای همگرایی را مشاهده کنید. در قرائت باقیمانده (کادری که f() را گزارش می‌کند) خطاهای بسیار بزرگی خواهید دید—برای مثال 1e24، 1e19، 1e21—که کاهش پیدا نمی‌کنند. طبیعی است که در چند تکرار نخست، زمانی که حل‌گر در حال یافتن یک وضعیت سازگار است، باقیمانده‌ها بالا باشند، اما باید خیلی سریع به سمت مقادیر کوچک میل کنند. باقیمانده‌های بسیار بزرگ و پایدار نشانه‌ای روشن هستند از این‌که سیستم به دلیل پارامترهای انتخاب‌شده از نظر عددی سفت یا غیرفیزیکی شده است.

نتیجه‌گیری: از تحرک‌های غیرواقع‌بینانه بالا اجتناب کنید. ضرایب انتقال بیش از حد زیاد، سامانه PDE را بسیار سفت می‌کنند و باعث بدشرطی و عدم همگرایی می‌شوند. از مقادیر μ فیزیکی معقول برای سامانه ماده خود استفاده کنید و برای بازگرداندن رفتار پایدار، دوباره با گام‌های بایاس ملایم اجرا کنید.

ویرایشگر پارامترهای الکتریکی با یک تحرک غیرواقع‌بینانه بالا به مقدار 1×10^6 m²·V⁻¹·s⁻¹، که حل‌گر را ناپایدار می‌کند.
تحرک غیرواقع‌بینانه (μ = 1×106 m²·V⁻¹·s⁻¹). ضرایب انتقال بسیار بزرگ سامانه‌های بسیار سفت ایجاد می‌کنند و معمولاً به شکست حل‌گر منجر می‌شوند.
پیام خطای حل‌گر ناشی از تنظیمات تحرک غیرواقع‌بینانه بالا که حل عددی را ناپایدار می‌کند.
خطا ناشی از تحرک غیرواقع‌بینانه بالا. مقادیر بسیار بزرگ μ سامانه PDE را بیش از حد سفت می‌کنند و به ناپایداری و شکست حل‌گر منجر می‌شوند.

3. ساختارهای نامناسب دستگاه

در این مثال ویرایشگر کنتاکت را باز می‌کنیم و عرض کنتاکت Source را روی مقدار بسیار کوچکی تنظیم می‌کنیم (نگاه کنید به ??) ، یعنی یک میکرون. در نگاه اول شاید این موضوع مشکل‌ساز به نظر نرسد، اما یک مسئله ظریف ایجاد می‌کند: شبیه‌سازی بر پایه یک مش تفاضل محدود انجام می‌شود که در آن کمیت‌هایی مانند میدان الکتریکی و چگالی حامل فقط در نقاط تعریف‌شده مش محاسبه می‌شوند.

اگر ویرایشگر مش الکتریکی را بررسی کنید (که در زبانه Electrical قرار دارد)، متوجه خواهید شد که این کنتاکت فوق‌العاده نازک یک‌میکرونی بین نقاط مش قرار می‌گیرد (نگاه کنید به ??). در نتیجه، این کنتاکت عملاً توسط شبکه تفاضل محدود «نادیده گرفته می‌شود» و هرگز به‌درستی بر ساختار دستگاه اعمال نمی‌شود. این موضوع ناهماهنگی بین هندسه تعریف‌شده و مش عددی ایجاد می‌کند و مانع همگرایی شبیه‌سازی می‌شود.

برای اصلاح این مورد، یا می‌توانید ضخامت کنتاکت را افزایش دهید تا دست‌کم با یک نقطه مش هم‌پوشانی داشته باشد، یا چگالی مش را افزایش دهید (یعنی نقاط بیشتری اضافه کنید) تا کنتاکت در شبکه تفاضل محدود به‌درستی ثبت شود.

ویرایشگر لایه که کنتاکت سورس را با عرضی بسیار نازک—بسیار کوچک‌تر از فاصله مش—نشان می‌دهد که به عدم همگرایی منجر می‌شود.
کنتاکت Source با عرضی به‌طور بیمارگونه نازک تنظیم شده است (نازک‌تر از فاصله مش). چنین ویژگی‌های کوچک‌تر از مش باعث شرایط مرزی بد‌تعریف می‌شوند و معمولاً از همگرایی جلوگیری می‌کنند.
پنل تنظیمات مش که یک مش دوبعدی OFET معمولی با حدود 10 تقسیم در راستای X را نشان می‌دهد—یک پیکربندی پایه پایدار.
مش‌بندی معمول و پایدار برای OFETهای دوبعدی: حدود 10 نقطه در راستای X. یک مش متعادل، سامانه را خوش‌شرط نگه می‌دارد و معمولاً همگرا است.

4. تعداد بیش از حد نقاط مش

یک پیش‌فرض رایج هنگام شروع کار با مدل‌های تفاضل محدود این است که نقاط مش بیشتر به‌طور خودکار نتایج دقیق‌تری تولید می‌کنند. استدلال معمول این است: «پنج نقطه مش حتماً ضعیف است، اما هزار نقطه باید عالی باشد.» در عمل، چنین نیست.

OghmaNano از روشی برای گسسته‌سازی به نام طرح Scharfetter–Gummel استفاده می‌کند که کمیت‌هایی مانند چگالی حامل و پتانسیل را بین نقاط مش با دقت درون‌یابی می‌کند. حل‌گر صرفاً رفتار خط مستقیم بین گره‌ها را فرض نمی‌کند؛ بلکه از یک تقریب نمایی استفاده می‌کند که فیزیک انتقال را حتی روی مش‌های نسبتاً درشت با دقت بالا ثبت می‌کند. این یعنی می‌توانید با تعداد نسبتاً کمی نقطه به دقت خوبی برسید.

افزایش چگالی مش فقط زمان اجرا را زیاد نمی‌کند—بلکه واقعاً می‌تواند پایداری و دقت را کاهش دهد. مش ریزتر یک سامانه بزرگ‌تر از معادلات تولید می‌کند و مسئله عددی را برای حل دشوارتر می‌سازد. در نتیجه، ماتریس سفت‌تر می‌شود، باقیمانده‌ها ممکن است افزایش پیدا کنند، و حل‌گر ممکن است برای همگرایی دچار مشکل شود.

همیشه یک مصالحه بین ثبت فیزیک، معقول نگه داشتن زمان شبیه‌سازی، و اجتناب از خطای عددی غیرضروری وجود دارد. شکل‌های زیر این موضوع را نشان می‌دهند: با 100 نقطه مش در سراسر دستگاه، حل‌گر در ابتدا باقیمانده‌های بسیار بزرگی گزارش می‌کند (برای مثال 1e6، 1e5). تنها پس از تکرارهای زیاد است که به مقادیر معقول f() می‌رسد. این ناپایداری از آن‌جا ناشی می‌شود که مش بیش از حد ریز است و رسیدگی به سامانه را برای حل‌گر دشوار می‌کند.

پنل تنظیمات مش با تنظیم مش X روی 100 تقسیم، بسیار بیشتر از مقدار مورد نیاز معمول برای یک OFET دوبعدی.
مش‌بندی بیش از حد: مش X = 100 نقطه. شبکه‌های بیش از حد ریز اندازه سامانه و سفتی را افزایش می‌دهند و حل‌گر دوبعدی را کند و مستعد عدم همگرایی می‌کنند.
پنجره خطای حل‌گر که پس از استفاده از تعداد بیش از حد زیاد نقاط مش با رنگ قرمز برجسته شده است.
خطا ناشی از یک مش بیش از حد ریز. چگالی بیش از حد مش، سفتی و بار حافظه را افزایش می‌دهد و به خطاهای حل‌گر منجر می‌شود (کادر قرمز).