예제 스크린샷 사용자 매뉴얼 Bluesky 로고 YouTube
OghmaNano 유기/페로브스카이트 태양전지, OFET 및 OLED 시뮬레이션 다운로드

드리프트–확산 솔버 설정

드리프트–확산 솔버는 전기 리본에서 설정을 선택하여 구성할 수 있습니다. 이렇게 하면 반복 횟수 제한, 오차 허용오차, 수렴 전략과 같은 수치적 특성을 조정할 수 있는 솔버 설정 창이 열립니다. 이러한 옵션을 통해 사용자는 다양한 장치 시뮬레이션에 대해 솔버 성능과 안정성을 제어할 수 있습니다.

전기 솔버 설정

OghmaNano의 전기 엔진은 강하게 결합된 비선형 방정식 집합(Poisson + 드리프트–확산, 그리고 활성화된 모든 동역학)을 풉니다. 이러한 방정식은 지수 함수와 강한 결합을 포함하므로 단일 전역 Jacobian에 대한 Newton–Raphson 방법을 사용하여 반복적으로 풉니다. 일반적으로 기본값을 변경할 필요는 없지만, 설정 패널을 사용하면 어려운 경우를 안정화하고, 쉬운 경우는 더 빠르게 하거나, 수치 해석이 어떻게 동작하는지 확인할 수 있습니다.

설정을 열려면 전기 탭으로 가서 드리프트–확산을 선택한 다음 설정을 선택하십시오 — DD Solver Open을 참조하십시오. 그러면 DD Solver Window에 표시된 창이 열리며, 여기서 솔버의 반복과 수렴 방식을 조정할 수 있습니다.

각 섹션이 제어하는 내용

이 패널은 실행의 서로 다른 단계를 제어하는 네 개의 주요 블록으로 나뉩니다: 첫 번째 반복, 후속 반복, 전압 램프, 그리고 종료 전략입니다. 모든 단계에서 핵심 개념은 동일합니다: 추정값에서 시작하고, Newton 스텝으로 미지수를 갱신하며, 전역 오차가 충분히 작아지면 종료합니다. 클램프는 스텝당 최대 갱신량을 제한하여 솔버가 비물리적인 영역으로 뛰어드는 것을 막습니다. 작은 클램프 → 느리지만 매우 안정적, 큰 클램프 → 빠르지만 잠재적으로 불안정합니다.

첫 번째 반복

후속 반복

전압 램프

초기 바이어스(예: 0 V)에서 목표 동작점(아마도 높은 전압)으로 램프할 때, 중간 해는 종종 단지 경유 지점일 뿐입니다. 이 블록을 사용하면 더 느슨한 허용오차나 다른 클램프를 사용하여 최종 동작점 해는 엄격하게 유지하면서도 램프를 더 빠르게 통과할 수 있습니다.

종료 전략

솔버 유형 및 도구

실용적인 지침

사례가 민감한 경우(고농도 도핑, 극한 전계, 강한 주입), 클램프를 낮추고 첫 번째 스텝의 허용오차를 더 엄격하게 하십시오. 쉽고 잘 거동하는 경우에는 속도를 얻기 위해 클램프를 높이십시오. 램프 블록을 사용하여 동작점까지 빠르게 이동한 다음, 그 지점에서 더 엄격한 허용오차를 적용하십시오.

참고: 설정 진입점은 DD Solver Open에, 전체 대화상자는 DD Solver Window에 나와 있습니다.

솔버 안정성

OghmaNano는 전하, 전위 및 재결합에 대한 강하게 결합된 미분 방정식 집합을 푸는 수치 시뮬레이터입니다. 다른 모든 수치 솔버와 마찬가지로, 성공적으로 수렴하려면 물리적으로 현실적인 입력 매개변수가 필요합니다. 정확히 0이거나, 무한히 크거나, 너무 많은 자릿수 범위에 걸쳐 있는 값은 기본 행렬 연산을 불안정하게 만들 수 있습니다. 이러한 문제를 피할 수 있도록, 이 절에서는 시뮬레이션을 설정할 때의 몇 가지 실용적인 고려 사항을 강조합니다.

매우 큰 수와 매우 작은 수 피하기

MATLAB(또는 Linux에서는 Octave)을 열고 다음 식을 입력하십시오: \(((1e-1+1e1)-1e1)/1e-1\). 엔터를 누르기 전에 머릿속으로 계산해 보십시오. \(1e1\)\(-1e1\)이 상쇄되어 \(\frac{1e-1}{1e-1}=1\)이 남습니다. 이제 10의 거듭제곱을 19로 바꾸고 다음을 시도하십시오: \(((1e-19+1e19)-1e19)/1e-19\). 다시 말해, 종이 위에서는 결과가 \(1\)이어야 합니다.

그러나 컴퓨터로 계산하게 하면 답은 \(1\)이 아니라 \(0\)이 됩니다. 이는 컴퓨터가 수를 제한된 정밀도로 저장하기 때문입니다 (현대 기계에서는 약 15–16자리 십진수). \(1e-19\)\(1e19\)에 더하면, 더 작은 항은 반올림 과정에서 사라지므로 컴퓨터는 \(1.0000000000000000001e19\) 대신 \(1.000000000000000e19\)로 인식합니다. 그 다음 \(1e19\)를 빼면 정확히 0이 되며, \(1e-19\)의 기여는 사라집니다.

수치 정밀도는 중요합니다

시뮬레이션에 너무 많은 자릿수 범위에 걸친 매개변수가 포함되면, 솔버의 정확도가 떨어질 수 있습니다. 안정성을 보장하려면 특히 이동도나 상태 밀도에서 극단적인 비율을 피하십시오.

이는 아무리 강력한 컴퓨터라도 모두 영향을 받습니다. 장치 시뮬레이션의 경우, 이는 매우 큰 수와 매우 작은 수가 나란히 존재하는 행렬을 만드는 매개변수 범위를 피해야 함을 의미합니다. 예를 들어 \(1e-19\)의 이동도와 \(1e5\)의 이동도가 함께 존재하면 수치적 어려움이 발생합니다. 이는 절연체를 시뮬레이션할 때 특히 중요합니다.

0 피하기

0 값은 0으로 나누기 오류를 유발합니다. 이동도, 포획 단면적, tail slope, 또는 상태 밀도를 정확히 0으로 설정하지 마십시오. 재결합 상수에 대해서는 0을 사용해도 괜찮습니다.

⚠️ 정확한 0은 피하십시오

매우 작은 값(예: \(1e-30\))으로 0을 대체하면 “거의 0”을 근사하면서도 수치적 불안정을 방지할 수 있습니다.

밴드갭에서 매우 큰 스텝

밴드갭에서 큰 에너지 스텝은 캐리어 밀도를 극도로 작거나 극도로 크게 만들며, 이는 곧바로 매우 큰 수와 매우 작은 수 피하기에서 설명한 동일한 정밀도 문제로 이어집니다. 비물리적인 점프를 피할 수 있도록 에너지 이산화는 충분히 세밀하게 유지하십시오.

🔍 메시를 확인하십시오

밴드갭 이산화가 너무 거칠면 비물리적인 캐리어 밀도가 생성될 수 있습니다. 값을 수치적으로 안정한 범위 안에 유지하려면 메시를 더 세분화하십시오.