Стабільність розв’язувача OFET: похибки, пов’язані з сіткою, збіжністю та моделюванням.
У цьому розділі пояснюється, як діагностувати проблеми зі стабільністю та збіжністю розв’язувача під час двовимірних обчислювальних симуляцій OFET. Одновимірні симуляції зазвичай є стабільними та швидкими, але зі збільшенням розмірності від 1D до 2D і 3D кількість пов’язаних рівнянь і членів, що їх об’єднують, швидко зростає. Тому неоптимальний вибір сітки, нереалістичні значення рухливості, недостатньо точне визначення контактів або надмірно великі кроки зміщення можуть призвести до того, що розв’язувач, який використовує метод дрейфу-дифузії, не зможе досягти збіжності.
Тут ми навмисно використаємо кілька простих налаштувань, щоб спровокувати ситуацію, коли процес не сходиться, а потім проаналізуємо причини цього та способи її усунення. Відтворивши ці типові сценарії збоїв, ви навчитеся розпізнавати їхні ознаки та застосовувати відповідні методи для відновлення стабільного рішення (наприклад, коригування сітки, зменшення розміру кроку для усунення зміщення або пом’якшення екстремальних параметрів матеріалу).
1. Нестабільність роботи алгоритму, спричинена надмірно низькою рухливістю.
У багатьох випадках проблеми з конвергенцією виникають через нефізичні вхідні значенняЩоб проілюструвати це, ми навмисно встановили рухливість носіїв заряду на значення 0 і проаналізуйте отримані помилки. Звісно, рухливість у реальному матеріалі ніколи не дорівнює абсолютному нулю — вона завжди має певне значення, але цей приклад показує, що відбувається, коли розв’язувачу надають нереалістичний параметр. Рухливість налаштовується в
Редактор електричних параметрів OFET.Якщо значення задано поза межами фізично обґрунтованого діапазону, рівняння переносу-дифузії можуть стати погано обумовленими або не збігатися.
Відкрийте редактор електричних параметрів (Головне вікно → вкладка «Пристрій») і встановіть значення параметра «рухливість» на 0, як показано на ??. Тепер запустіть моделювання. Ви повинні побачити екран помилки, подібний до ??, з двома червоними прямокутниками: вертикальним прямокутником навколо зведеної інформації про залишок і горизонтальним прямокутником біля повідомлення про збій.
Якщо ви подивитеся на вертикальну червону рамку, ви побачите f()=2.54e2, за яким слідують інші лінії, де f() має дуже велике значення (наприклад, 1e15, 1e5, 1e8, 1e7). Тут f() – це залишкова похибка розв’язувача: показник того, наскільки добре зараз виконуються пов’язані рівняння. В ідеалі залишкова похибка розв’язувача мала б дорівнювати нулю, хоча на практиці цього неможливо досягти. Залишкова похибка в діапазоні від 1e−10 до 1e−8 свідчить про дуже хорошу збіжність, тоді як значення близько 1e−1 все ще є прийнятними. На відміну від цього, залишкова похибка в сотнях (наприклад, 2.54e2) – особливо якщо вона супроводжується значеннями компонентів, такими як 1e15 – є чіткою ознакою того, що розв’язувач працює нестабільно, і система втратила стабільність.
Горизонтальне червоне поле зазвичай показує причину, через яку обчислення остаточно припиняються: Holes asking for 3e5 but only defined in range [min, max]. Це означає, що обчислений рівень квазі-Фермі вийшов за межі заданого діапазону. Перед початком обчислень модель попередньо обчислює залежності, такі як залежність рівня квазі-Фермі від концентрації носіїв заряду, у широкому діапазоні енергій – насправді, значно ширшому, ніж зазвичай можна очікувати в пристрої. Коли розв’язувач стає нестабільним, модель може запросити нереалістичні значення, що значно перевищують цей діапазон; у цьому випадку розв’язувач не може обчислити необхідні величини та припиняє роботу.
Коротко кажучи, встановивши нереалістичне значення для параметра рухливості (μ = 0), ми змусили рівняння перейти в такий режим, який не має фізичного сенсу, тому чисельний метод дає збій: великі похибки, потім запит значень, яких немає в попередньо обчислених таблицях, і, зрештою, програма аварійно завершує роботу. Важливо зазначити, що цей результат не є недоліком моделі або помилкою в програмному забезпеченні. Вводячи нефізичні параметри, ми змушуємо розв’язувач працювати в режимі, де не існує жодного математично або фізично обґрунтованого рішення, і тому він не може надати змістовний результат.
2. Нестабільність роботи алгоритму, спричинена надмірно високою рухливістю.
У цьому прикладі ми задаємо рухливість носіїв заряду рівною μ = 1×106 m²·V⁻¹·s⁻¹. Це навмисно нереалістичне значення для моделі дрейфу та дифузії напівпровідника: таке значення, швидше за все, пов’язане з металевими режимами провідності, а не з стрибкоподібним/смуговим транспортом в органічних або звичайних напівпровідниках. На практиці ви не використовуватимете таке велике значення для моделювання OFET.
Якщо ви запустите моделювання з цими налаштуваннями, ви зможете спостерігати, як алгоритм розв’язання намагається досягти збіжності, але йому це важко. У вікні відображення залишків (поле, яке показує значення f()), ви побачите надзвичайно великі похибки, наприклад, 1e24, 1e19, 1e21, які не зменшуються. Нормально, що на перших кількох ітераціях значення залишків збільшуються, оскільки алгоритм шукає стабільний стан, але згодом вони повинні швидко зменшитися до малих значень. Постійно великі значення залишків є чіткою ознакою того, що система стала числово нестабільною або не відповідає фізичній реальності через обрані параметри.
Основний висновок: уникайте нереально високих значень рухливості. Надмірні транспортні коефіцієнти роблять систему часткових диференціальних рівнянь надзвичайно жорсткою, що призводить до поганої обчислювальної стійкості та відсутності збіжності. Використовуйте фізично обґрунтовані значення μ для вашої матеріальної системи та повторіть обчислення з помірними кроками зміщення, щоб відновити стабільну поведінку.
3. Неякісна конструкція пристрою та неналагоджені контакти.
У цьому прикладі ми відкриваємо редактор контактів і встановлюємо дуже малу ширину контакту для джерела (див. ??), а саме – один мікрон. На перший погляд, це може не здаватися проблематичним, але це створює певну проблему: моделювання базується на скінченно-різницевій сітці, де такі величини, як електричне поле та концентрація носіїв заряду, обчислюються лише у визначених точках сітки.
Якщо ви переглянете редактор електричної сітки (який можна знайти на вкладці «Електрика»), ви помітите, що цей надзвичайно тонкий контакт розміром в один мікрон розташовується між точками сітки (див. ??). Внаслідок цього контакт фактично «ігнорується» чисельною сіткою, і він ніколи не застосовується належним чином до структури пристрою. Це створює невідповідність між заданою геометрією та чисельною сіткою, що перешкоджає збіжності моделювання.
Щоб вирішити цю проблему, можна або збільшити товщину області контакту, щоб вона перекривала принаймні одну точку сітки, або збільшити щільність сітки (тобто додати більше точок) у дискретній сітці, щоб забезпечити правильне відображення контакту.
4. Щільність сітки, збіжність і надмірне уточнення.
Поширена помилкова думка, з якою стикаються, коли починають використовувати методи скінченних різниць, полягає в тому, що збільшення кількості вузлів сітки автоматично призводить до отримання точніших результатів. Зазвичай міркують так: «п’ять вузлів сітки – це недостатньо, але тисяча – це вже чудово». Однак на практиці це не так.
OghmaNano використовує метод дискретизації, який називається схемою Шарфеттера–Гуммеля, що дозволяє точно інтерполювати такі величини, як концентрація носіїв заряду та потенціал, між вузлами сітки. Розв’язувач не просто припускає лінійну залежність між вузлами; натомість він використовує метод експоненціальної апроксимації, який з високою точністю відображає фізику переносу навіть на відносно грубих сітках. Це означає, що можна досягти високої точності, використовуючи напрочуд невелику кількість вузлів.
Збільшення щільності сітки не лише подовжує час обчислень, але й може фактично знизити стабільність і точність. Більш дрібна сітка створює більшу систему рівнянь, що ускладнює розв’язання чисельної задачі. Як наслідок, матриця стає менш гнучкою, залишки можуть збільшуватися, і розв’язувач може мати труднощі зі збіжністю.
Завжди існує певний компроміс між точним моделюванням фізичних процесів, забезпеченням прийнятного часу обчислень і уникненням зайвих числових похибок. Наведені нижче схеми ілюструють це: якщо в моделі використано 100 точок сітки, то на початковому етапі розв’язувач показує дуже великі значення залишків (наприклад, 1e6, 1e5). Лише після багатьох ітерацій значення стабілізуються і досягають прийнятних рівнів f(). Ця нестабільність виникає через надмірну щільність сітки, що ускладнює роботу розв’язувача.
👉 Наступні кроки:
- Поверніться до розділу « вступ до органічної електроніки», щоб отримати більш загальне уявлення про цю тему.