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

소자 시뮬레이션 속도 향상

많은 수의 시뮬레이션을 수행할 경우 각 시뮬레이션이 완료되는 속도가 매우 중요합니다. 본 페이지에서는 OghmaNano의 전기적 솔버의 실행 속도를 높이는 방법을 설명합니다. 유용한 설정들은 솔버가 실제로 어떤 작업을 수행하는지 이해한 후에야 의미를 갖으므로, 페이지의 전반부에서는 해결되는 방정식들과 그 해법에 관한 모델의 기초를 설명하고 후반부에서는 실행 시간을 단축하기 위한 솔버 튜닝 방법을 제시합니다. 이러한 설정들은 물리적 현상 자체에는 영향을 주지 않으며, 단지 수치적 해가 도출되는 속도만을 조절할 뿐입니다.

This page has a little more maths than most. The key idea to carry through is that solving the device equations is really a root-finding problem: OghmaNano repeatedly improves a guess until an error function f(x) falls to zero. Everything in the tuning section is about reaching that point in fewer iterations.

1. 모델의 기초

시뮬레이션 속도를 높이는 방법을 살펴보기에 앞서 OghmaNano가 실제로 어떤 계산을 수행하는지 이해하는 것이 중요합니다. 소자 내 전하 이동을 모사하기 위해 OghmaNano는 기본적인 드리프트-확산 방정식과 포아송 방정식(가우스 법칙)을 함께 풉니다. 이 계산들은 소자 전체에 걸쳐 유한차분 메쉬 상에서 수행되며, 이를 통해 한 전극에서 다른 전극으로의 전하 이동이 전도대(LUMO)와 가전자대(HOMO) 양쪽에서 모두 추적됩니다.

1.1 소자 내 전하 수송

포아송 방정식은 정전기적 전위와 자유 전하량 간의 관계를 나타내며, 두 개의 전류 방정식은 전자와 정공의 구동 항들 즉 드리프트-확산 현상을 기술합니다.

\[ \nabla \cdot \varepsilon_0 \varepsilon_r \nabla \phi = q\,(n - p) \] \[ J_n = q\,\mu_e\,n\,\nabla E_c + q\,D_n\,\nabla n \] \[ J_p = q\,\mu_h\,p\,\nabla E_v - q\,D_p\,\nabla p \]

이러한 전류 밀도 값들은 전자 및 정공의 연속 방정식에 대입되는데, 이 방정식들은 전류의 흐름과 재결합 현상, 전하 포획 현상 및 자유 캐리어 농도의 시간적 변화율 간의 균형을 나타낸다.

\[ \nabla \cdot \mathbf{J}_n = q\left( R_n + T_n + \frac{\partial n_{\text{free}}}{\partial t} \right) \] \[ \nabla \cdot \mathbf{J}_p = -q\left( R_p + T_p + \frac{\partial p_{\text{free}}}{\partial t} \right) \]

여기서 \( \phi \)은 정전위이며, \( n \)와 \( p \)는 자유 전자 및 정공 밀도, \( \mu_e \)와 \( \mu_h \)는 전하 캐리어 이동도, \( D_n \)와 \( D_p \)은 확산 계수, \( E_c \)과 \( E_v \)는 밴드 엣지, \( R \)은 재결합률, 그리고 \( T \)은 트랩에 전하 캐리어가 포획되는 순속도를 나타냅니다. 전체 유도 과정 및 부호 규칙은 MacKenzie 등이 작성한 J. Phys. Chem. C 논문(doi:10.1021/jp200234m)을 따릅니다.

1.2 전하 포획 및 재결합

Density-of-states diagram plotting electron energy against log(DOS). A green parabolic band of free electrons sits at the top at the electron mobility edge mu_e^0, a magenta parabolic band of free holes at the bottom at the hole mobility edge mu_h^0. Red exponential trap states descend from the electron trap edge E_e^d and blue exponential trap states rise from the hole trap edge E_h^d. Curved arrows labelled r1 and r2 connect the free electrons to the traps (capture and emission), and arrows r3 and r4 connect the traps to the free holes.
각 메쉬 지점에서 포아송 방정식 및 SRH 모델을 통해 전하 캐리어의 포획 및 방출 과정이 계산된다. 자유 캐리어(nfree, pfree)는 이동도 경계에 위치한 포물선형 에너지 밴드 내에 존재하며 \( \mu_e^0 \) / \( \mu_h^0 \), 빨간색 및 파란색 삼각형은 전자와 정공의 트랩 상태에 대한 지수분포를 나타낸다. \( r_1 \)–\( r_4 \)는 각각 트랩으로의 포획률과 트랩으로부터의 방출률이다.

전하 포획 및 재결합 현상은 유기 소자와 여러 다른 물질계에서 중요한 역할을 하므로 반드시 명시적으로 모델링되어야 한다. 일반적으로 오제 재결합(SRH) 현상은 해석이 용이하도록 단일 정상상태 식으로 단순화되곤 한다. 그러나 OghmaNano는 시간영역에서 방정식을 해석하는 것을 목표로 하므로, 유한차분 시간영역법(FDTD) 격자상의 각 메시 지점에서 SRH 포획 및 방출 속도에 관한 전체 방정식들을 모두 해석한다.

각 메시 포인트에서 ??에 나타난 상황이 계산된다. 위아래에 위치한 포물선들은 전자 및 정공의 이동도 경계에서의 자유 캐리어 에너지 대역을 나타낸다. 전자 트랩 경계에서 아래로 내려오는 \( E_e^d \)은 전자 트랩의 지수 분포(적색)이며, 정공 트랩 경계에서 위로 올라가는 \( E_h^d \)는 정공 트랩의 지수 분포(청색)이다. 이러한 분포 내에 존재하는 개별 에너지 준위 각각이 하나의 독립적인 트랩이며, 각각에 대해 오제 재결합에 관한 전체 포획 및 탈출률 방정식이 계산된다. 특정 준위에 포획된 전자 수의 변화량은 네 가지 반응률의 균형에 의해 결정된다.

\[ \frac{\partial n_t}{\partial t} = r_1 - r_2 - r_3 + r_4 \]

여기서 \( r_1 \)은 전자 포획 과정, \( r_2 \)는 전자 방출 과정, \( r_3 \)은 정공 포획 과정, \( r_4 \)는 정공 방출 과정을 나타내며, 각각은 트랩 상태밀도, 전하 캐리어 밀도, 포획 단면적 및 열속도에 의해 결정되는 일반적인 포획/방출 방정식을 따릅니다(위의 참고문헌 참조). 모든 에너지 준위에서 세부적인 평형 상태가 유지됩니다. 트랩 분포 전반에 걸쳐 순 포획률을 합산하면 자유 전하 캐리어의 재결합률을 얻게 됩니다.

\[ R_n = \sum_{0}^{n_{\text{band}}} \left( r_1^{\,e} - r_2^{\,e} \right) \]

이러한 과정이 시뮬레이션 속도에 미치는 영향은 다음과 같다. 위치 공간상의 각 지점에서 에너지 공간상의 트랩 분포를 계산함으로써 에너지와 위치 양쪽에 따른 전하 밀도 분포를 완벽하게 파악할 수 있다. 바로 이 점이 OghmaNano가 일반적인 정상상태 근사법 없이도 과도 상태 계산을 수행할 수 있게 해주는 요인이다. 반면 이로 인해 동시에 해결해야 할 연립 방정식의 수가 많아지게 되며, 그 결과 수치 해법의 선택 및 설정값이 실행 시간에 실질적인 영향을 미치게 된다.

2. 방정식의 해법: 뉴턴법

위에 제시된 모든 연립 방정식들은 아이작 뉴턴이 1671년에 저술한 『Method of Fluxions』에 기술된 뉴턴법을 이용해 해결됩니다. 이 방법은 이러한 유형의 연립 방정식을 풀기 위해 현재까지 알려진 가장 효율적이고 안정적인 기법 중 하나입니다. 수작업으로는 해결이 불가능한 방정식이라도 뉴턴법을 사용하면 거의 항상 정확한 해를 구할 수 있습니다.

2.1 근과 오차 함수

간단한 예제부터 시작해보겠습니다. 다음 방정식이 0이 되게 하는 x의 값은 무엇인가요?

\[ 0 = (x - 3)(x - 40) \]

검토 결과 정답은 \( x = 3 \)와 \( x = 40 \)입니다. 이 값들이 바로 해당 방정식의 근입니다. 동일한 문제를 함수 형태로 표현할 수도 있습니다.

\[ f(x) = (x - 3)(x - 40), \]

\( f(x) \)을 \( x \)에 대해 그래프로 그려보면, 그 근들은 곡선이 축과 교차하는 지점 즉 \( f(x) = 0 \)이 되는 지점들입니다. 방정식을 0이 되도록 수렴하는 오차 함수로 간주하는 것이 핵심 개념입니다. 반도체 소자 모델에서는 \( x \)가 전위 \( \phi \)와 전자 및 정공의 준페르미 준위인 \( E_{Fn} \) 및 \( E_{Fp} \)과 같은 물리적 미지수들로 대체되며, 이 변수들의 값은 \( f(x) = 0 \)이 되도록 조정됩니다.

근은 단순한 방정식의 경우에만 육안으로 쉽게 식별할 수 있다. 그보다는 다음을 고려해보자

\[ f(x) = \frac{(x^2 + 10x - 3)\,\cos^2(4x)}{\tan(x)}. \]

이 함수의 근을 구하기 위해 그래프를 그리는 것은 매우 번거로운 작업이며, 반도체 소자 방정식의 경우 훨씬 더 복잡합니다. 바로 이 지점에서 뉴턴법이 유용하게 활용됩니다.

2.2 방법의 단계별 절차

구체적인 예시로 \( f(x) = x^2 + 10x - 3 \)을 들어보겠습니다. 뉴턴법의 수행 과정은 다음과 같습니다:

  1. 해당 방정식을 해를 구하려는 변수에 대해 미분하면 \( f'(x) = 2x + 10 \)이 됩니다.
  2. 근사를 통해 근을 추정해보자. 어떤 값을 사용해도 무방하니 \( x = 10 \)을 선택하겠습니다. 이 값은 부적절한 추정치입니다(\( f(10) = 197 \)이며 0과는 거리가 멀음). 하지만 이는 문제가 되지 않습니다.
  3. 추정값에서 함수와 그 도함수의 값을 계산합니다: \( f(10) = 197 \) 및 \( f'(10) = 30 \).
  4. 뉴턴 업데이트식을 이용하여 더 정확한 근사값을 계산합니다:
\[ x_{+1} = x - \frac{f(x)}{f'(x)} \]

값들을 대입하면 더 정확한 추정값이 얻어지며, 이는 \( x_{+1} = 10 - 197/30 = 3.433 \)에 해당한다. 이후에는 이 과정을 단순히 반복하면 된다. 즉, 개선된 추정값을 다시 입력하여 재평가하고(\( f(3.433) = 43.115 \), \( f'(3.433) = 16.866 \)), 그 결과로 \( 0.877 \)에 대한 더욱 정확한 추정값을 얻게 된다. 이러한 반복 과정을 거치면서 오차 함수의 값은 0에 가까워지고 추정값은 실제 근에 점점 수렴하게 된다.

2.3 실제 예제

이 방법은 단 몇 줄의 코드로 구현됩니다. 아래 루프는 \( f(x) = x^2 + 10x - 3 \)에 대해 이 방법을 적용하여 각 반복 단계마다 현재 근사값과 오차 \( f(x) \)를 출력합니다.

x = 10;                       % our guess for the answer
for i = 1:10                  % loop ten times
    y  = x*x + 10*x - 3;      % f(x)
    dy = 2*x + 10;            % f'(x)
    new_x = x - (y/dy);       % calculate a better x
    x = new_x;                % update x
    sprintf("%f %f", x, y)    % print the estimate and the error
end                           % repeat
A code editor on the left showing the Newton iteration loop for f(x) = x*x + 10x - 3, and a terminal on the right showing the printed output. The two printed columns are the running estimate of the root and the error f(x): 3.433333 and 197.0, then 0.876746 and 43.12, then 0.320644 and 6.54, then 0.291582 and 0.309, then 0.291503 and 0.000845, then 0.291503 and 0.000000 for the remaining iterations.
반복 계산의 진행 과정을 나타낸다. 왼쪽 열은 근의 현재 추정값이며 오른쪽 열은 오차 값이다 \( f(x) \). 추정값은 \( 0.291503 \)로 수렴하며 소수 차례의 반복만으로 오차가 0으로 줄어든다.

출력 결과는 매우 유용합니다. 근의 추정값이 \( 10 \rightarrow 3.433 \rightarrow 0.877 \rightarrow 0.321 \rightarrow 0.292 \rightarrow 0.291503 \)로 변경되며 오차 값도 \( 197 \rightarrow 43 \rightarrow 6.5 \rightarrow 0.31 \rightarrow 0.00085 \rightarrow 0 \)만큼 감소합니다. 각 반복 단계마다 정확한 소수 자릿수의 개수가 대략 두 배씩 증가하는 점에 주목하시기 바랍니다. 이 현상을 초선형 수렴이라고 하며, 바로 이 특성 덕분에 뉴턴법이 방정식의 근을 구하는 데 매우 효율적인 방법이 되는 것입니다.

2.4 행렬 형태로 표현된 동일한 개념

해당 소자는 단일 방정식이 아니라 수많은 연립 방정식으로 구성되어 있으며, 각 메쉬 지점에서의 전위, 전자 및 정공의 준페르미 준위, 그리고 트랩 점유도가 이에 해당합니다. 행렬 형태로 표현하면 뉴턴법은 다음과 같이 나타낼 수 있습니다:

\[ [J]\,[\Delta x] = -[f(x)] \]

\( [J] \)은 모든 소자 방정식(포아송 방정식, 드리프트-확산 방정식, SRH 재결합 방정식)의 모든 미지수에 대한 도함수들로 구성된 야코비 행렬입니다. \( [f(x)] \)는 현재 추정값에 대한 방정식들의 오차를 나타내며, \( [\Delta x] \)은 그 결과로 얻어지는 업데이트 값으로서 전체 소자 내 전기장, 준페르미 준위 및 트랩 점유도의 개선분을 의미합니다. 이 업데이트 값은 현재 해에 더해집니다.

\[ [x] = [x] + [\Delta x], \]

이 과정이 반복되다가 \( f(x) \approx 0 \)에 도달하면 장치 방정식들이 해결된다. 여기서 두 가지 사항이 이후의 솔버 튜닝에 직접적으로 적용된다. \( f(x) \)는 우리가 0으로 만들고자 하는 값이므로 수렴도를 측정하는 자연스러운 척도가 된다. 또한 초기 추정값이 더 정확할수록 솔버는 해에 더 가까운 지점에서 시작하게 되어 필요한 반복 횟수도 줄어든다.

3. 실제 시뮬레이션 속도 향상 방법

기본적인 원리가 확립된 후에는 실제 설정 방법도 자연스럽게 이해할 수 있다. 여기서 사용된 예시는 2차원 전계효과 트랜지스터(모든 전하 포획 중심을 포함한 2차원 소자)이지만 동일한 개념은 모든 시뮬레이션에 적용된다.

3.1 디스크 기록 기능 끄기

가장 간단하게 적용할 수 있는 방법은 디스크에 데이터를 과도하게 기록하는 행위를 중단하는 것입니다. 파일 기록 작업은 속도가 느리며, 대량의 출력 데이터가 생성되는 시뮬레이션에서는 실행 시간의 대부분을 차지할 수 있습니다. OghmaNano는 단 한 번의 클릭만으로 디스크에 기록되는 데이터량을 최소화하는 제어 기능을 제공합니다. 또한 출력 설정에서 각 개별 출력 파일 옵션(예: 시간영역 시뮬레이션 데이터의 기록)을 개별적으로 활성화하거나 비활성화할 수 있어 실제로 필요한 파일만 저장할 수 있습니다. 최대한 빠른 실행 속도를 원한다면 디스크에 기록되는 데이터량을 가능한 한 줄이는 것이 바람직합니다.

먼저 이 방법을 시도해 보십시오. 아래에 제시된 수치 설정들을 변경하기 전에 불필요한 출력 기능을 비활성화한 뒤 시뮬레이션을 다시 실행하십시오. 디스크 사용량이 많은 시뮬레이션의 경우 이 조치만으로도 가장 큰 속도 향상을 얻을 수 있으며, 물리적 모델이나 결과의 정확도에는 아무런 영향이 없습니다.

3.2 솔버의 수렴 과정 관찰하기

A plot of solver error on a logarithmic vertical axis against iteration number on the horizontal axis. From 0 to about 1000 iterations the error wanders down from around 1e15 to a noisy floor near 1e-7: this is the initial equilibrium solve. After that the trace shows a series of sharp spikes that rise and then decay, each spike corresponding to a voltage step where the error jumps and is then driven back down.
반복 횟수에 따른 솔버 오차 \( f(x) \) 그래프입니다. 왼쪽의 긴 하강 곡선은 초기 평형 상태를 찾는 과정을 나타내며, 오른쪽의 각 피크는 전압 단계 변화에 해당합니다. 전압이 변함에 따라 연립 방정식의 균형이 깨지게 되고 솔버가 오차를 다시 낮추는 과정이 이어집니다.

솔버를 조정하려면 먼저 솔버가 정상적으로 작동하는지 확인해야 합니다. OghmaNano는 각 반복 단계에서의 뉴턴 오차값을 출력할 수 있으며, 단락전압 단계별로 한 줄씩 출력하는 대신 수렴 이력 정보를 파일에 기록할 수도 있습니다. 뉴턴 오차 출력 기능과 수렴 로그 기록 기능을 활성화한 뒤 시뮬레이션을 다시 실행하십시오.

첫 번째 시뮬레이션 단계는 특별한 경우입니다. 모델이 시작될 때는 소자 상태에 대한 적절한 추정값이 존재하지 않으며, 전위나 준페르미 준위도 알 수 없으므로 해답과는 상당히 거리가 먼 상태에서 시작하게 됩니다. ??에서 오차 값은 매우 크게 나타나며(\( 10^{15} \) 수준), 여러 번의 반복 계산을 거쳐 \( 10^{-7} \)에서 \( 10^{-9} \) 사이의 수준까지 점차 감소하여 결국 연립 방정식들이 해결됩니다. 이러한 첫 번째 해법 과정이 해답과 크게 동떨어져 있기 때문에 두 가지 조치가 의도적으로 취해집니다. 첫째, 뉴턴 단계에 클램프가 적용되어 솔버가 갑작스럽게 붕괴될 가능성이 있는 위치로 이동하지 않고 천천히 안전하게 수렴하도록 합니다. 둘째, 수천 회에 달하는 반복 계산이 허용되어 솔버가 안정적으로 수렴할 충분한 기회를 얻게 됩니다.

평형 상태 해석이 완료된 후 모델은 지정된 전압값들을 순차적으로 적용합니다. 각 전압 단계마다 소자는 이전 해석 결과에서 약간 벗어나게 되므로 오차가 일시적으로 증가했다가 곧바로 다시 감소하게 되는데, 이 현상이 그래프 오른쪽에 나타나는 오차 스파이크 형태로 표현됩니다. 각 단계에서의 초기값이 이전 해석 결과와 가까우므로 이러한 해석 과정들은 매우 빠르게 수렴하게 됩니다.

3.3 솔버 튜닝

수렴성 그래프는 2절에서 설명된 오차 함수 \( f(x) \)와 정확히 일치하며, 튜닝의 목적은 이 그래프의 길이를 단축시켜 더 적은 반복 횟수로 수렴을 달성하는 것입니다. 솔버 설정에서 주요 제어 변수들은 다음과 같습니다:

작업 흐름에 관해 설명하자면, 각 설정 변경 후에는 수렴성 결과 파일을 다시 그려보고 그래프가 어떻게 축소되는지 관찰해야 합니다. 첫 번째 해석 단계에서 나타나는 평탄한 꼬리 부분을 줄이고 첫 단계에서 지정한 오차 목표값을 완화한 뒤 클램프 값을 높여 수렴 곡선의 기울기를 증가시키면 됩니다. 예시 장치의 경우 이러한 조정들을 종합적으로 적용했을 때 계산 시간이 약 15초에서 8초 수준으로 단축되었으며 최종 결과값에는 변화가 없었습니다. 모델과 함께 제공되는 입력 파일들은 보수적인 값들을 사용하고 있으므로 사용자 고유의 구조물에 대해서도 이 값들을 더 높여 조정할 여지가 충분합니다.

절약된 시간을 계산 정확도 향상에 활용하십시오. 솔버가 적절히 튜닝된 후에는 그로 인해 확보된 시간을 보다 복잡한 문제 해결에 재투자할 수 있습니다. 예를 들어 메시 점의 수를 늘리는 것이 가능해집니다. 잘 튜닝된 뉴턴 방식 설정이야말로 보다 크고 세밀하며 연립 방정식 간 결합이 강한 반도체 소자들을 합리적인 시간 내에 해석할 수 있게 해주는 핵심 요소입니다.

흔히 발생하는 문제점들

요약 및 다음 단계

다음으로는 이 방정식들에 사용되는 물질 파라미터들이 어떻게 정의되는지 알아보려면 재료 데이터베이스를 참조하십시오.