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

실험 데이터 피팅

1. 개요

어두운 JV 곡선에 다이오드 방정식을 피팅하여 ideality factor를 추출할 수 있는 것처럼, OghmaNano는 전체 장치 모델을 실험 데이터에 직접 피팅할 수 있게 해줍니다. 시뮬레이션을 측정값에 보정함으로써, 이동도, 트랩 상태 밀도, 접촉 저항, 재결합 계수와 같은 물리적으로 의미 있는 파라미터를 자기 일관적인 프레임워크 안에서 복원할 수 있습니다. 단순한 해석식과 비교하면, 물리 기반 피팅은 광학–전기적 결합을 유지하고 성능을 지배하는 메커니즘에 대해 더 풍부하고 신뢰할 수 있는 통찰을 제공합니다. 이 튜토리얼은 OghmaNano의 피팅 워크플로우를 소개하고 변수 선택, minimizer 선택, 그리고 효율적이고 재현 가능한 피팅 실행 방법을 보여줍니다.

2. 첫 번째 피팅

OghmaNano에는 모델을 실험 데이터에 피팅하는 방법을 보여주는 여러 데모 시뮬레이션이 포함되어 있습니다. 그중 하나는 간단한 드리프트–확산 모델을 예제로 사용합니다. 여기에 접근하려면 File 리본에서 New simulation 아이콘을 클릭하여 New simulation 창을 여십시오(그림 ??). 여기서 Scripting and fitting 카테고리를 더블 클릭하여 그림 ??에 표시된 폴더를 여십시오. 데모 프로젝트를 불러오려면 Fitting and parameter extraction 예제를 선택하십시오. 열리면 간단한 태양전지 시뮬레이션이 실행됩니다(그림 ??). 이 데모는 태양전지에 초점을 맞추지만, 피팅 엔진은 어떤 시뮬레이션과 실험 데이터 세트에도 적용할 수 있습니다.

OghmaNano의 다양한 장치 카테고리를 보여주는 'New simulation' 창. 'Scripting and fitting' 카테고리가 강조되어 있다.
New simulation 창. 피팅 예제에 접근하려면 Scripting and fitting 카테고리를 선택하십시오.
'Scripting and fitting' 폴더가 열려 있으며, 'Fitting and parameter extraction example'이 강조되어 있다.
Scripting and fitting 폴더 내부. 데모 프로젝트를 불러오려면 Fitting and parameter extraction example을 더블 클릭하십시오.

새 시뮬레이션을 저장하면 주 시뮬레이션 창이 나타납니다(??). 여기서 Automation 리본(빨간색으로 강조됨)으로 이동한 다음 Fit to experiment 아이콘을 선택하여 피팅 창에 접근하십시오 ??.

'Fit to experiment' 아이콘이 강조된 OghmaNano Automation 리본과, 주 창에 표시된 3D 태양전지 장치 구조.
OghmaNano의 Automation 리본으로, Fit to experiment 아이콘을 보여줍니다. 이 옵션을 선택하면 메인 피팅 창이 열립니다.
실험 JV 곡선이 작업 공간에 불러와진 상태의 OghmaNano 피팅 창.
피팅 준비가 된 광 JV 실험 데이터 세트가 불러와진 상태로 처음 열리는 피팅 창.

피팅 창은 최적화가 수행되는 방식을 제어합니다. 어떤 실험 데이터 세트를 사용할지, 그리고 어떤 시뮬레이션 변수를 조정할지를 지정합니다. 여기와 같이 단일 데이터 세트에 피팅할 수도 있고, 더 제약된 파라미터 추출을 위해 여러 데이터 세트에 동시에 피팅할 수도 있습니다. 그림 ??에서, 파란 선은 피팅에 사용될 실험 JV 곡선을 나타냅니다.

💡 실습: 피팅 창 사용하기

  1. 작업 1 – 한 번 반복: One iteration 버튼을 클릭하여 피팅 보기를 갱신하십시오 (??a). Delta = Experiment − Simulation 탭에서는 시뮬레이션된 JV(파란색)가 실험 JV(빨간색) 위에 겹쳐 표시되고, 점별로 정의된 녹색 delta 곡선도 보게 됩니다 \( \Delta(V) = J_{\mathrm{exp}}(V) - J_{\mathrm{sim}}(V) \). 좋은 시작점은 녹색 곡선이 전압 범위 전체에서 0에 가깝게 있는 경우입니다.
  2. 작업 2 – 피팅 실행: 자동 minimizer를 실행하려면 Run fit을 누르십시오(다시 누르면 실행이 중지됩니다). 처음 몇 단계 동안은 오차가 잠시 증가할 수 있지만, 시뮬레이션 곡선과 실험 곡선이 수렴하면서 이후에는 감소해야 합니다. Fit progress 탭으로 전환하여 반복에 따른 오차를 플로팅하십시오 (??b); 이 그래프는 또한 외부 플로팅을 위해 시뮬레이션 디렉터리의 fitlog.csv에 저장됩니다. 일반적인 설정에서는 이 단계에 약 30 초가 걸립니다.
한 번의 피팅 반복 후 시뮬레이션된(파란색), 실험(빨간색), delta(녹색) JV 곡선을 보여주는 OghmaNano 피팅 창.
a) 한 번의 피팅 반복 후: 시뮬레이션된(파란색), 실험(빨간색), delta(녹색) JV 곡선.
수렴을 나타내며 연속 반복에 따라 오차 함수가 감소하는 모습을 보여주는 OghmaNano fit progress 창.
b) Fit progress: 반복 횟수에 따라 오차 함수가 감소하며 수렴을 보여줍니다.

3. 데이터 추가 및 제거

메인 피팅 창은 실험 데이터를 추가, 관리, 피팅하는 방식을 제어하는 도구 모음을 제공합니다. 이러한 버튼을 통해 데이터 세트를 가져오거나 제거하고, 어떤 파라미터를 변화시킬지 구성하며, 피팅 과정을 시작하거나 중지할 수 있습니다. 가장 중요한 옵션은 다음과 같습니다:

4. Minimizer 리본

Minimizer 리본은 피팅 중 사용되는 최적화 알고리즘을 제어합니다. 이 탭에서 적용할 minimizer(예: 기본값인 Nelder–Mead downhill simplex)를 선택하고 그 설정을 구성할 수 있습니다. 리본에는 피팅 변수 관리, 파라미터 복제, 그리고 피팅을 제한하는 수학적 규칙 적용을 위한 도구도 포함되어 있습니다. 이러한 옵션을 조정하면 알고리즘이 파라미터 공간을 탐색하는 방식을 제어하고, 속도와 정확도의 균형을 맞추며, 피팅 과정에서 물리적으로 의미 있는 제약 조건이 강제되도록 할 수 있습니다.

피팅 변수, 중복 변수, 피팅 규칙, minimizer 선택(Nelder–Mead가 강조 표시됨)을 보여주는 OghmaNano 피팅 창의 Minimizer 탭.
피팅 창의 Minimizer 탭으로, 여기서 최적화 알고리즘 (예: Nelder–Mead)을 선택하고 규칙, 변수 복제 및 minimizer 설정을 구성할 수 있습니다.

5. 피팅할 변수 설정

전하 밀도, 이동도, 트랩 밀도, 저항 등의 활성화/비활성화된 파라미터 목록과 최소값, 최대값, 오차 함수, 로그 스케일 제어를 보여주는 OghmaNano Fit variables 창.
Fit variables 창. 이 인터페이스를 통해 피팅 중 어떤 파라미터를 변화시킬지 선택하고, 허용 범위, 오차 패널티 및 스케일링을 지정할 수 있습니다. 여기서 변수를 활성화하거나 비활성화하면 minimizer가 파라미터 공간을 탐색하는 방식이 직접 제어됩니다.

Fit variables 창을 열려면 피팅 창의 Minimizer 리본으로 이동하여 (그림 ??) Fitting variables를 클릭하십시오. 이 패널(그림 ??)을 통해 피팅 중 어떤 파라미터를 변화시킬지 선택하고 경계를 설정할 수 있습니다. 속도와 견고성을 위해, 처음에는 대칭적인 소수의 파라미터로 시작하십시오. 합리적인 초기 피팅을 얻은 뒤에 더 많은 변수(또는 비대칭성)를 추가하십시오.

Fit variables 표에는 일곱 개의 열이 있습니다: Enabled, Variable, Min, Max, Error function, Log scale, 그리고 Variable (JSON).

6. 변수 복제

전자 이동도 또는 트랩 밀도와 같은 소스 변수를 대상 변수에 매핑하여 피팅 중 대칭성을 강제하는 표를 보여주는 OghmaNano Duplicate variables 창.
Duplicate variables 창. 이 도구는 source 변수의 값을 destination 변수로 복사하여, 피팅 중 파라미터가 대칭을 유지하도록 합니다 (예: 전자 이동도와 정공 이동도를 일치시킴).

Minimizer 리본에서 Duplicate variables 창을 여십시오 (??). 이 도구는 모든 반복에서 source 파라미터를 destination 파라미터에 반영합니다. 대칭 장치 예제에서는 전자 측 파라미터만 피팅하고 Duplicate variables를 사용하여 그 값을 대응하는 정공 파라미터에 복사함으로써 피팅 내내 둘이 같게 유지합니다 ( ?? 참조).

Function y = f(x) 열은 소스 값 x가 목적지 y에 기록되기 전에 어떻게 변환되는지를 정의합니다. 기본값 x는 직접 복사를 수행하며, 2*x(값을 두 배로 함) 또는 x + 0.05(오프셋 적용)와 같은 예도 가능합니다.

7. 피팅 규칙

Minimizer 리본에서 접근하는 Fit rules 창(??)을 통해 수학적 제약 조건을 피팅 과정에 적용할 수 있습니다. 규칙은 조건이 위반될 때마다 오차 함수에 패널티를 추가합니다. 예를 들어 한 파라미터가 항상 다른 파라미터보다 커야 한다는 조건을 강제하거나, 변수가 허용 가능한 범위를 벗어날 경우 패널티를 적용할 수 있습니다. 이는 피팅이 물리적으로 의미 있게 유지되도록 돕고 minimizer가 비현실적인 파라미터 조합을 탐색하는 것을 방지합니다.


변수 사이의 x > y와 같은 제약을 정의할 수 있는 표와 각 규칙의 활성화/비활성화 옵션을 보여주는 OghmaNano Fit rules 창.
Fit rules 창. 여기에서 사용자는 x > y와 같은 제약을 정의하여 파라미터 간 관계를 강제할 수 있습니다. 규칙이 깨지면 피팅에 추가 오차가 더해져, minimizer가 유효한 파라미터 공간 영역으로 되돌아가도록 유도합니다.

💡 피팅을 위한 핵심 팁과 요령:

  1. 일반적으로 피팅은 많은 인내와 수동 미세 조정이 필요한 까다로운 과정입니다. 버튼 하나를 클릭하면 그냥 작동할 것이라고 기대하지 마십시오 — 좋은 피팅을 얻으려면 신중하게 작업해야 합니다.
  2. 피팅이 잘 되지 않는다면, 장치에 대해 세운 물리적 가정이 잘못되었을 수 있습니다. 모델은 물리적으로 타당한 데이터에만 피팅될 수 있으므로, 어떤 값이 한 자릿수 이상 어긋난다면 모델에 무엇을 시키고 있는지 다시 생각해 보십시오. 예를 들어 태양전지에서 \(J_{sc}\)를 도저히 맞출 수 없다면, 원하는 \(J_{sc}\) 값을 달성하기에 재료가 단순히 광자를 충분히 흡수하지 못하는 것은 아닌지 생각해 보십시오.
  3. 서로 다른 데이터 세트는 서로 다른 유형의 정보를 제공합니다. 예를 들어 태양전지의 어두운 JV 곡선은 병렬 저항, 직렬 저항, 일부 이동도/재결합 세부 정보에 대한 통찰을 제공합니다. 반면 광 JV 곡선은 병렬 저항에 대한 정보를 거의 제공하지 않으므로, \(R_{shunt}\)에 대한 정확한 추정치를 제공할 것이라고 기대하지 마십시오. 피팅된 파라미터를 해석하기 전에 데이터에 어떤 정보가 포함되어 있는지 항상 생각하십시오.
  4. 피팅 과정은 다음과 같이 작동합니다: 1) 시뮬레이션 실행; 2) 수치 결과와 실험 결과의 차이 계산; 3) 파라미터 조정; 4) 시뮬레이션을 다시 실행하고 오차가 줄어드는지 확인; 5) 오차가 줄어들면 파라미터 변화가 स्वीकार되고 과정이 반복됨. 이는 수백 또는 수천 번의 반복이 걸릴 수 있습니다. 따라서 개별 시뮬레이션은 빠르게 실행되어야 합니다. 예를 들어 메시가 1000 포인트라면 피팅을 위해 10으로 줄여보십시오. 시간 스텝이 1000개라면 100으로 줄이십시오. 기본 시뮬레이션의 모든 속도 향상은 피팅 과정을 가속합니다.
  5. 디스크에 파일을 쓰는 것은 모든 계산 과정에서 가장 느린 부분입니다. 최신 SSD조차도 주 메모리보다 약 30배 느립니다 (예: PC3-12800에서 456 MB/s 대 12,800 MB/s). USB 드라이브, 네트워크 저장소 또는 OneDrive/Dropbox 같은 클라우드 서비스를 사용하면 이는 더 악화됩니다. 속도를 위해서는 항상 시뮬레이션을 로컬 SSD에 저장하십시오(네트워크나 기계식 드라이브가 아님).
  6. 시뮬레이션이 생성하는 파일 수를 최소화하십시오. 스냅샷, 광학 출력 또는 동적 폴더와 같은 불필요한 출력을 끄십시오. 잘 구성된 시뮬레이션은 약 50개의 파일만 생성해야 합니다. 수백 개가 보인다면, 그 이유를 조사하십시오.
  7. GUI에서 피팅을 수행할 수도 있지만, 종종 느립니다. 좋은 방법은 GUI에서 피팅을 설정하되 명령줄에서 실행하는 것입니다(지침은 아래에 제공됩니다).
  8. 피팅은 디스크에 많은 파일을 쓰기 때문에, 안티바이러스 소프트웨어가 각 파일을 검사하면서 속도를 저하시킬 수 있습니다. 이것이 문제가 된다면 실시간 검사에서 시뮬레이션 폴더를 제외하는 것을 고려하십시오.

👉 다음 단계: 이제 Part B로 계속 진행하여 더 고급 피팅 방법을 살펴보십시오.