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

پیکربندی حل‌گر Drift–Diffusion

حل‌گر Drift–Diffusion را می‌توان با انتخاب Configure از نوار Electrical پیکربندی کرد. این کار پنجره پیکربندی حل‌گر را باز می‌کند، جایی که ویژگی‌های عددی مانند محدودیت‌های تکرار، تلورانس‌های خطا، و راهبردهای همگرایی قابل تنظیم هستند. این گزینه‌ها به کاربر اجازه می‌دهند عملکرد و پایداری حل‌گر را برای شبیه‌سازی‌های مختلف دستگاه کنترل کند.

پیکربندی حل‌گر الکتریکی

موتور الکتریکی OghmaNano یک مجموعه شدیداً کوپل‌شده از معادلات غیرخطی را حل می‌کند (Poisson + drift–diffusion، به‌علاوه هر گونه سینتیک فعال‌شده). این معادلات شامل توابع نمایی و کوپل‌شدگی‌های قوی هستند، بنابراین به‌صورت تکراری با استفاده از روش Newton–Raphson روی یک Jacobian سراسری واحد حل می‌شوند. معمولاً نیازی به تغییر مقادیر پیش‌فرض ندارید، اما پنل پیکربندی به شما امکان می‌دهد موارد دشوار را پایدار کنید، موارد آسان را سریع‌تر کنید، یا رفتار عددی را بررسی کنید.

پیکربندی را با رفتن به زبانه Electrical، انتخاب Drift–diffusion، و سپس انتخاب Configure باز کنید — به DD Solver Open نگاه کنید. این کار پنجره نشان‌داده‌شده در DD Solver Window را باز می‌کند، جایی که می‌توانید نحوه تکرار و همگرایی حل‌گر را تنظیم کنید.

هر بخش چه چیزی را کنترل می‌کند

این پنل به چهار بلوک اصلی تقسیم شده است که فازهای مختلف یک اجرا را کنترل می‌کنند: First iteration, Later iterations, Voltage ramp, و Exit strategy. در همه فازها ایده اصلی یکسان است: از یک حدس شروع کنید، مجهول‌ها را با گام‌های Newton به‌روزرسانی کنید، و وقتی خطای سراسری به‌اندازه کافی کوچک شد متوقف شوید. یک clamp بیشینه به‌روزرسانی در هر گام را محدود می‌کند تا حل‌گر به نواحی غیرفیزیکی نپرد. clamp کوچک → کندتر اما بسیار پایدار؛ clamp بزرگ → سریع‌تر اما بالقوه ناپایدار.

First iteration

Later iterations

Voltage ramp

وقتی از یک بایاس اولیه (مثلاً 0 V) به یک نقطه کاری هدف (احتمالاً ولتاژ بالا) پله می‌زنید، حل‌های میانی اغلب فقط نقاط میانی هستند. این بلوک به شما امکان می‌دهد از تلورانس‌های سست‌تر یا clampهای متفاوت استفاده کنید تا در ramp سریع‌تر پیش بروید، در حالی که حل‌های نهایی در نقطه کاری را سخت‌گیرانه نگه می‌دارید.

Exit strategy

نوع حل‌گر و ابزارها

راهنمای عملی

اگر یک مورد حساس است (دوپینگ بالا، میدان‌های شدید، تزریق قوی)، clamp را کاهش دهید و تلورانس گام اول را سخت‌تر کنید. برای موارد آسان و خوش‌رفتار، clamp را برای افزایش سرعت بالا ببرید. از بلوک ramp استفاده کنید تا سریع به نقطه کاری خود برسید، و سپس در آنجا تلورانس‌های سخت‌گیرانه‌تری اعمال کنید.

همچنین ببینید: نقطه ورود پیکربندی که در DD Solver Open نشان داده شده و گفت‌وگوی کامل در DD Solver Window.

پایداری حل‌گر

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

اجتناب از اعداد بسیار بزرگ و بسیار کوچک

MATLAB را باز کنید (یا در لینوکس Octave) و عبارت زیر را تایپ کنید: \(((1e-1+1e1)-1e1)/1e-1\). پیش از فشار دادن enter، آن را در ذهن خود ارزیابی کنید: \(1e1\) و \(-1e1\) همدیگر را خنثی می‌کنند و \(\frac{1e-1}{1e-1}=1\) باقی می‌ماند. اکنون توان‌های 10 را با 19 جایگزین کنید و امتحان کنید: \(((1e-19+1e19)-1e19)/1e-19\). باز هم روی کاغذ نتیجه باید \(1\) باشد.

اما وقتی اجازه می‌دهید رایانه آن را ارزیابی کند، پاسخ \(0\) خواهد بود، نه \(1\). این اتفاق به این دلیل رخ می‌دهد که رایانه‌ها اعداد را با دقت محدود ذخیره می‌کنند (در یک ماشین مدرن حدود 15–16 رقم دهدهی). وقتی \(1e-19\) را به \(1e19\) اضافه می‌کنید، جمله کوچک‌تر در گرد کردن از بین می‌رود، بنابراین رایانه \(1.000000000000000e19\) را می‌بیند نه \(1.0000000000000000001e19\). سپس کم کردن \(1e19\) دقیقاً صفر می‌دهد، و سهم \(1e-19\) ناپدید می‌شود.

دقت عددی اهمیت دارد

اگر شبیه‌سازی شما شامل پارامترهایی باشد که در مرتبه‌های بزرگی بسیار زیادی گسترده شده‌اند، حل‌گر ممکن است دقت خود را از دست بدهد. سعی کنید از نسبت‌های بسیار شدید، به‌ویژه در تحرک‌پذیری یا چگالی حالات، اجتناب کنید تا پایداری حفظ شود.

همه رایانه‌ها از این مسئله تأثیر می‌پذیرند، مهم نیست چقدر قدرتمند باشند. برای شبیه‌سازی دستگاه، این به آن معناست که باید از بازه‌های پارامتری‌ای که ماتریس‌هایی با اعداد بسیار بزرگ و بسیار کوچک در کنار هم ایجاد می‌کنند اجتناب کنید. برای مثال، تحرک‌پذیری‌های \(1e-19\) در کنار \(1e5\) باعث مشکلات عددی خواهند شد. این موضوع هنگام شبیه‌سازی عایق‌ها به‌ویژه مهم است.

از صفرها اجتناب کنید

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

⚠️ از صفرهای دقیق اجتناب کنید

صفرها را با مقادیر بسیار کوچک (مثلاً \(1e-30\)) جایگزین کنید تا از ناپایداری‌های عددی جلوگیری شود، در حالی که هنوز تقریب خوبی از «تقریباً صفر» باقی بماند.

گام‌های بسیار بزرگ در گاف نواری

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

🔍 مش خود را بررسی کنید

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