Головна Приклади Знімки екрана Інструкція користувача Логотип Bluesky. YouTube ☰
OghmaNano Мультифізична платформа для моделювання оптоелектронних пристроїв і фотонних систем. ЗАВАНТАЖИТИ Короткий посібник зі швидкого старту

Стабільність розв’язувача 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 – є чіткою ознакою того, що розв’язувач працює нестабільно, і система втратила стабільність.

Electrical parameters editor with mobility set to 0, a non-physical value that prevents carrier transport and causes solver errors.
Нульова рухливість (μ = 0). Нефізичне середовище, яке повністю блокує транспорт і зазвичай спричиняє відсутність збіжності в моделі дрейфу-дифузії.
Solver crash trace showing failure after setting mobility to zero.
Виникла помилка через нульову рухливість. Якщо μ = 0, то транспортні рівняння стають несумісними, що призводить до помилки в моделюванні та, зрештою, до збою програми.

Горизонтальне червоне поле зазвичай показує причину, через яку обчислення остаточно припиняються: Holes asking for 3e5 but only defined in range [min, max]. Це означає, що обчислений рівень квазі-Фермі вийшов за межі заданого діапазону. Перед початком обчислень модель попередньо обчислює залежності, такі як залежність рівня квазі-Фермі від концентрації носіїв заряду, у широкому діапазоні енергій – насправді, значно ширшому, ніж зазвичай можна очікувати в пристрої. Коли розв’язувач стає нестабільним, модель може запросити нереалістичні значення, що значно перевищують цей діапазон; у цьому випадку розв’язувач не може обчислити необхідні величини та припиняє роботу.

Коротко кажучи, встановивши нереалістичне значення для параметра рухливості (μ = 0), ми змусили рівняння перейти в такий режим, який не має фізичного сенсу, тому чисельний метод дає збій: великі похибки, потім запит значень, яких немає в попередньо обчислених таблицях, і, зрештою, програма аварійно завершує роботу. Важливо зазначити, що цей результат не є недоліком моделі або помилкою в програмному забезпеченні. Вводячи нефізичні параметри, ми змушуємо розв’язувач працювати в режимі, де не існує жодного математично або фізично обґрунтованого рішення, і тому він не може надати змістовний результат.

2. Нестабільність роботи алгоритму, спричинена надмірно високою рухливістю.

У цьому прикладі ми задаємо рухливість носіїв заряду рівною μ = 1×106 m²·V⁻¹·s⁻¹. Це навмисно нереалістичне значення для моделі дрейфу та дифузії напівпровідника: таке значення, швидше за все, пов’язане з металевими режимами провідності, а не з стрибкоподібним/смуговим транспортом в органічних або звичайних напівпровідниках. На практиці ви не використовуватимете таке велике значення для моделювання OFET.

Якщо ви запустите моделювання з цими налаштуваннями, ви зможете спостерігати, як алгоритм розв’язання намагається досягти збіжності, але йому це важко. У вікні відображення залишків (поле, яке показує значення f()), ви побачите надзвичайно великі похибки, наприклад, 1e24, 1e19, 1e21, які не зменшуються. Нормально, що на перших кількох ітераціях значення залишків збільшуються, оскільки алгоритм шукає стабільний стан, але згодом вони повинні швидко зменшитися до малих значень. Постійно великі значення залишків є чіткою ознакою того, що система стала числово нестабільною або не відповідає фізичній реальності через обрані параметри.

Основний висновок: уникайте нереально високих значень рухливості. Надмірні транспортні коефіцієнти роблять систему часткових диференціальних рівнянь надзвичайно жорсткою, що призводить до поганої обчислювальної стійкості та відсутності збіжності. Використовуйте фізично обґрунтовані значення μ для вашої матеріальної системи та повторіть обчислення з помірними кроками зміщення, щоб відновити стабільну поведінку.

Electrical parameters editor with an unrealistically high mobility set to 1×10^6 m²·V⁻¹·s⁻¹, which destabilises the solver.
Нереалістична рухливість (μ = 1 × 10⁶ м²·В⁻¹·с⁻¹). Надзвичайно великі коефіцієнти переносу створюють дуже жорсткі системи і часто призводять до збою в роботі обчислювальної програми.
Solver error message caused by unrealistically high mobility settings that destabilise the numerical solution.
Помилка, спричинена надмірно високою рухливістю. Дуже великі значення μ роблять систему диференціальних рівнянь у частинних похідних надмірно жорсткою, що призводить до нестабільності та збою в роботі розв’язувача.

3. Неякісна конструкція пристрою та неналагоджені контакти.

У цьому прикладі ми відкриваємо редактор контактів і встановлюємо дуже малу ширину контакту для джерела (див. ??), а саме – один мікрон. На перший погляд, це може не здаватися проблематичним, але це створює певну проблему: моделювання базується на скінченно-різницевій сітці, де такі величини, як електричне поле та концентрація носіїв заряду, обчислюються лише у визначених точках сітки.

Якщо ви переглянете редактор електричної сітки (який можна знайти на вкладці «Електрика»), ви помітите, що цей надзвичайно тонкий контакт розміром в один мікрон розташовується між точками сітки (див. ??). Внаслідок цього контакт фактично «ігнорується» чисельною сіткою, і він ніколи не застосовується належним чином до структури пристрою. Це створює невідповідність між заданою геометрією та чисельною сіткою, що перешкоджає збіжності моделювання.

Щоб вирішити цю проблему, можна або збільшити товщину області контакту, щоб вона перекривала принаймні одну точку сітки, або збільшити щільність сітки (тобто додати більше точок) у дискретній сітці, щоб забезпечити правильне відображення контакту.

Layer editor showing the source contact set to an extremely thin width—much smaller than the mesh spacing—which leads to non-convergence.
Відстань між джерелами встановлено на патологічно мале значення (менше, ніж крок сітки). Такі характеристики підсітки призводять до некоректних граничних умов і, як правило, перешкоджають досягненню збіжності.
Mesh settings panel showing a typical 2D OFET mesh with about 10 divisions along X—a stable baseline configuration.
Типова, стабільна сітка для двовимірних органічних тонкоплівкових транзисторів: приблизно 10 точок уздовж осі X. Відносно щільна сітка забезпечує належну стабільність системи та, як правило, сприяє її збіжності.

4. Щільність сітки, збіжність і надмірне уточнення.

Поширена помилкова думка, з якою стикаються, коли починають використовувати методи скінченних різниць, полягає в тому, що збільшення кількості вузлів сітки автоматично призводить до отримання точніших результатів. Зазвичай міркують так: «п’ять вузлів сітки – це недостатньо, але тисяча – це вже чудово». Однак на практиці це не так.

OghmaNano використовує метод дискретизації, який називається схемою Шарфеттера–Гуммеля, що дозволяє точно інтерполювати такі величини, як концентрація носіїв заряду та потенціал, між вузлами сітки. Розв’язувач не просто припускає лінійну залежність між вузлами; натомість він використовує метод експоненціальної апроксимації, який з високою точністю відображає фізику переносу навіть на відносно грубих сітках. Це означає, що можна досягти високої точності, використовуючи напрочуд невелику кількість вузлів.

Збільшення щільності сітки не лише подовжує час обчислень, але й може фактично знизити стабільність і точність. Більш дрібна сітка створює більшу систему рівнянь, що ускладнює розв’язання чисельної задачі. Як наслідок, матриця стає менш гнучкою, залишки можуть збільшуватися, і розв’язувач може мати труднощі зі збіжністю.

Завжди існує певний компроміс між точним моделюванням фізичних процесів, забезпеченням прийнятного часу обчислень і уникненням зайвих числових похибок. Наведені нижче схеми ілюструють це: якщо в моделі використано 100 точок сітки, то на початковому етапі розв’язувач показує дуже великі значення залишків (наприклад, 1e6, 1e5). Лише після багатьох ітерацій значення стабілізуються і досягають прийнятних рівнів f(). Ця нестабільність виникає через надмірну щільність сітки, що ускладнює роботу розв’язувача.

Mesh settings panel with the X-mesh set to 100 divisions, far higher than normally required for a 2D OFET.
Надмірне подрібнення сітки: X-сітка = 100 точок. Занадто дрібна сітка збільшує розмір і жорсткість системи, що призводить до уповільнення роботи двовимірного розв’язувача та підвищує ймовірність розбіжності розв’язку.
Solver error dialog highlighted in red after using an excessively high number of mesh points.
Помилка, спричинена надмірною деталізацією сітки. Занадто висока щільність сітки збільшує жорсткість і навантаження на пам’ять, що призводить до помилок у процесі обчислень (позначено червоною рамкою).

👉 Наступні кроки: