Skip to content

수렴 연구 (Convergence Study)

수렴 연구: RCWA 파라미터 민감도

RCWA 주요 파라미터 증가에 따른 시뮬레이션 정확도 수렴을 분석합니다. 수렴된 결과에 필요한 최소 파라미터 값을 확인합니다.

0.960.970.980.991.000100200300400500600하모닉스 수흡수 grcwa (nG) torcwa ([N,N]) 수렴 ±0.001
grcwa 수렴 지점:nG = 49 (A = 0.970, 0.95s)
torcwa 수렴 지점:[5,5] = 121 (A = 0.986)
수렴 값:A = 0.97
수치 데이터 보기
솔버파라미터하모닉스흡수실행 시간
grcwanG = 990.99050.02s
grcwanG = 25250.98680.17s
grcwanG = 49490.96990.95s
grcwanG = 1211210.97125.42s
grcwanG = 6256250.9749356.24s
torcwa[3,3]490.98202.77s
torcwa[5,5]1210.985623.12s
torcwa[7,7]2250.9858100.13s
torcwa[9,9]3610.9830349.79s
torcwa[11,11]5290.9858846.12s

개요

수렴 연구는 정확하고 안정적인 결과를 산출하는 최소 시뮬레이션 파라미터 값을 결정합니다. RCWA 시뮬레이션에서 핵심 수치 파라미터는 다음과 같습니다:

  • 푸리에 차수 (평면파 하모닉스의 수)
  • 마이크로렌즈 슬라이스 (곡면의 계단식 근사)
  • 그리드 해상도 (유전율 분포의 공간 샘플링)

이 파라미터들을 증가시키면 정확도가 향상되지만 계산 시간이 증가합니다. 목표는 결과가 더 이상 크게 변하지 않는 "무릎(knee)" 지점, 즉 수렴 영역을 찾는 것입니다.

생성된 수렴 리포트

현재 RCWA/FDTD 정합성, periodic trench, full-pixel 시각적 수렴 결과는 RCWA/FDTD 수렴 분석 리포트에 정리되어 있습니다. 로컬 benchmark를 다시 실행한 뒤 다음 명령으로 리포트를 갱신합니다:

bash
uv run python scripts/generate_convergence_report.py

수렴이 중요한 이유

너무 적은 하모닉스로 실행하면 잘못된 결과(과소평가된 흡수)를 얻습니다. 너무 많이 사용하면 계산 시간이 낭비됩니다. 수렴 연구는 최적의 지점을 찾습니다.

푸리에 차수

푸리에 차수는 전자기장을 전개하는 데 사용되는 평면파 하모닉스의 수를 제어합니다. 더 많은 하모닉스는 유전율 분포의 더 미세한 공간적 특징을 포착합니다.

grcwa vs torcwa 파라미터화

두 RCWA 솔버는 푸리에 차수를 다르게 파라미터화합니다:

  • grcwa: nG (총 하모닉스 수)를 사용합니다. 솔버가 내부적으로 포함할 G-벡터를 선택합니다.
  • torcwa: [N, N]을 사용하며 총 하모닉스 = (2N+1)^2입니다. 예를 들어 [5, 5]11^2 = 121개의 하모닉스를 제공합니다.

수렴 결과

grcwa (안정적인 포인트만 — 아래 불안정성 경고 참조):

nG하모닉스흡수실행 시간ΔA
990.99050.02s+0.0206
25250.98680.17s-0.0037
49490.96990.95s-0.0169
1211210.97125.42s+0.0013
6256250.9749356.24s+0.0037

torcwa (모든 차수에서 수치적으로 안정):

[N,N]하모닉스흡수실행 시간ΔA
[3,3]490.98202.77s
[5,5]1210.985623.12s+0.0036
[7,7]2250.9858100.13s+0.0002
[9,9]3610.9831349.79s-0.0027
[11,11]5290.9858846.12s+0.0028

참고: [9,9]에서의 비단조적 감소는 [11,11]에서 회복되어 A ≈ 0.986에서의 실제 수렴을 확인합니다.

솔버 간 흡수 차이

grcwa와 torcwa는 G-벡터 선택 및 푸리에 인수분해의 차이로 인해 약간 다른 흡수값(~0.97 vs ~0.98)을 산출합니다. 두 솔버 모두 안정적인 값으로 수렴하지만, 절대적 차이는 각 솔버의 구현 수준 선택을 반영합니다.

높은 차수가 필요한 경우

필요한 푸리에 차수는 시뮬레이션 도메인 대비 픽셀 구조의 가장 작은 특징에 따라 달라집니다:

  • 메탈 그리드: 2 um 도메인에서 0.05 um 특징은 축당 최소 ~40개의 하모닉스에 대한 나이퀴스트 샘플링이 필요
  • 컬러 필터만: 매끄러운 층은 낮은 차수에서 빠르게 수렴
  • 마이크로렌즈 + 메탈 그리드: 메탈 그리드가 수렴 요구 사항을 결정

WARNING

해상도가 부족한 메탈 그리드 특징은 인위적인 산란과 잘못된 흡수를 유발합니다. 메탈 그리드가 있을 때는 항상 수렴을 확인하세요.

grcwa 수치적 불안정성

grcwa는 많은 nG 값에서 심각한 수치적 불안정성을 보입니다. 불안정성은 다음과 같이 나타납니다:

  • R → 매우 큰 값 (최대 10^11)으로 발산, T는 0 근처 유지
  • TM 편광에서만 발생 — TE 편광은 항상 안정적
  • 파장 의존적 — nG=121은 550nm에서는 안정적이지만 400nm, 500nm에서 "Singular matrix" 오류 발생
  • 짝수 grid_multiplier 값 (2, 4)이 불안정성 유발; 홀수 (3, 5)는 안정적

불안정한 nG 값: 81, 169, 225, 289, 361, 441, 529

안정성 검증된 nG 값: 9, 25, 49, 121 (550nm에서), 625

이것은 grcwa 라이브러리의 S-matrix 구현의 근본적 한계로, TM 편광에 대한 Li의 역 인수분해 규칙과 관련된 것으로 보입니다. 전체 가시광 스펙트럼에서 안정성이 필요한 프로덕션 시뮬레이션에서는 torcwa를 사용하거나, grcwa를 사용할 경우 각 파장을 개별적으로 검증하세요.

마이크로렌즈 슬라이스

마이크로렌즈는 평평한 층의 계단(n_lens_slices)으로 근사됩니다. 더 많은 슬라이스가 곡면 마이크로렌즈 프로파일을 더 잘 근사하지만, 각 슬라이스는 RCWA 계산에 층을 추가합니다.

수렴 데이터는 다음을 보여줍니다:

  • 5 슬라이스: 눈에 띄게 낮은 흡수 (0.9662)
  • 15 슬라이스: 수렴 값의 0.001 이내 (0.9696)
  • 30+ 슬라이스: 완전히 수렴 (0.9699-0.9700), 더 이상의 개선 없음

대부분의 시뮬레이션에서 20-30 슬라이스는 최소한의 오버헤드로 우수한 정확도를 제공합니다.

그리드 해상도

grid_multiplier 파라미터는 푸리에 계수를 계산하는 데 사용되는 유전율 그리드의 공간 해상도를 제어합니다. 높은 값은 급격한 유전율 경계(예: 메탈 그리드 가장자리)를 더 잘 분해합니다.

수렴은 빠릅니다:

  • multiplier = 3: 일반적인 픽셀 구조에 대해 수렴 (A = 0.9699)
  • multiplier = 5-6: 유의미한 변화 없음 (A = 0.9698-0.9699)

grcwa 짝수 grid_multiplier 불안정성

grcwa는 특정 푸리에 차수에서 짝수 grid_multiplier 값(2, 4)에 대해 수치적 불안정성을 보입니다. grcwa에서는 홀수 multiplier(3, 5)를 사용하세요. torcwa에는 영향 없습니다.

대부분의 시뮬레이션에서 grid_multiplier 3이면 충분합니다.

전체 스펙트럼 검증

전체 가시광 스펙트럼(400-700nm, 31포인트)이 수렴 파라미터(grcwa nG=49, n_lens_slices=30, grid_multiplier=3)로 검증되었습니다. 모든 파장에서 R + T + A = 1.000을 정확히 만족하여 수치적 안정성을 확인했습니다.

주요 스펙트럼 특성:

  • 400-500nm (청색): 높은 흡수 (A = 0.967-0.976), 거의 0인 투과 — 실리콘이 강하게 흡수
  • 500-560nm (녹색): 510-520nm에서 흡수 감소 (A ≈ 0.955) 후 회복
  • 560-700nm (적색): 투과의 점진적 증가 (T 최대 0.011), 흡수는 높은 수준 유지 (A > 0.955)

총 계산 시간: nG=49에서 31개 파장에 대해 34초.

수렴 연구 실행

bash
# 푸리에 차수 스윕 (grcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_order_grcwa

# 푸리에 차수 스윕 (torcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_order_torcwa

# 마이크로렌즈 슬라이스 스윕
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep n_lens_slices

# 그리드 해상도 스윕
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep grid_resolution

# 전체 스펙트럼 검증
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep full_spectrum --fourier-order 49

권장 파라미터

파라미터빠른 실행기본값수렴
grcwa nG254949
torcwa fourier_order[3, 3][5, 5][7, 7]
n_lens_slices153050
grid_multiplier333

프로덕션용 grcwa vs torcwa

grcwa는 빠르지만 많은 푸리에 차수와 파장에서 수치적 불안정성이 있습니다. 전체 스펙트럼 안정성이 필요한 프로덕션 시뮬레이션에서는 **torcwa [5,5] 또는 [7,7]**을 권장합니다. grcwa nG=49는 빠른 단일 파장 확인에 적합합니다.

절단(truncation) 설정 형식 참고

두 솔버는 절단 방식이 다릅니다: torcwa의 params.fourier_order: [N, N]은 축별 차수로 총 (2N+1)²개의 평면파를 의미하고, grcwa의 params.nG 평면파 수입니다. 두 숫자는 호환되지 않으며, nG: 49는 torcwa [49, 49]보다 훨씬 거친 설정입니다.

설정 프리셋

bash
# 빠른 반복
python scripts/run_simulation.py solver=grcwa_fast

# 높은 정확도 (수렴)
python scripts/run_simulation.py solver=grcwa_converged

색상별 QE 수렴 (Per-Color QE Convergence)

색상별 QE 수렴 (단일 CF)

단일 컬러 필터 시뮬레이션을 사용한 색상별 QE 분석. 각 색상은 해당 CF 재료를 모든 픽셀에 적용하여 별도로 측정하며, 실제 채널별 분광 감도를 제공합니다.

0.880.900.920.940.960.981.00050100150200250300350하모닉스 수 (torcwa)QE (단일 CF)적색 (620nm)녹색 (530nm)청색 (450nm)
적색 (620nm):N=5에서 수렴 (QE≈0.962)
녹색 (530nm):N=7에서 수렴 (QE≈0.974)
청색 (450nm):비단조적: QE≈0.949로 안정화
수치 데이터 보기
N하모닉스QE_R@620QE_G@530QE_B@450
[3,3]490.92890.94710.9196
[5,5]1210.96220.97700.9697
[7,7]2250.96150.97370.9475
[9,9]3610.96170.97370.9486

Bayer 패턴 픽셀에서 각 서브 픽셀은 서로 다른 컬러 필터(CF)를 가집니다. 총 흡수만으로는 채널별 동작을 알 수 없습니다 — 수렴 속도, 솔버 간 일치도, 각도 민감도가 색상별로 다를 수 있습니다. 색상별 연구는 균일 컬러 필터 시뮬레이션을 사용합니다: 모든 픽셀에 동일한 CF 재료(예: 모두 cf_red)를 적용하고, CF 피크 파장에서의 총 흡수를 색상별 QE로 사용합니다.

방법론

표준 CIS 방식: 균일 CF로 세 가지 별도 시뮬레이션을 수행합니다 (모두 적색 620nm, 모두 녹색 530nm, 모두 청색 450nm). 이를 통해 인접 픽셀 필터의 크로스톡 없이 각 색상 채널의 QE를 분리합니다.

RCWA에서 픽셀별 QE를 사용하지 않는 이유

RCWA 솔버는 각 포토다이오드 영역에서 eps_imag 가중치를 사용하여 총 흡수를 분배하는 방식으로 픽셀별 QE를 계산합니다. 모든 PD가 동일한 eps_imag을 가진 실리콘이므로, 컬러 필터와 관계없이 모든 픽셀이 동일한 QE = total_A / n_pixels을 받습니다. 균일 CF 시뮬레이션이 실제 색상별 QE를 얻는 표준 접근법입니다.

색상별 푸리에 수렴 (torcwa)

[N,N]하모닉스QE_R@620QE_G@530QE_B@450
[3,3]490.92890.94710.9196
[5,5]1210.96220.97700.9697
[7,7]2250.96150.97370.9475
[9,9]3610.96170.97370.9486
  • 적색: N=5에서 수렴 (N=7 이후 ΔQE < 0.001)
  • 녹색: N=7에서 수렴 (N=7과 N=9 사이 ΔQE = 0.00002)
  • 청색: 비단조적 — N=5에서 최대 (0.970) 후 N=7-9에서 0.948-0.949로 안정화. 짧은 파장 회절 효과로 인해 청색 채널이 초기 N=5 추정보다 낮은 QE로 수렴

색상별 푸리에 수렴 (grcwa)

nGQE_R@620QE_G@530QE_B@450상태
90.98110.99310.9949안정 (과대 추정)
250.98340.98830.9734안정
490.93330.94320.9316안정
810.50000.96700.9340R: TM 발산

grcwa TM 불안정성은 nG=81에서 특히 620nm의 적색 채널에 영향을 미칩니다 (R_R=14.33, 비물리적). 청색과 녹색 채널은 nG=81에서도 안정적이며, 불안정성이 파장 의존적임을 확인합니다.

솔버 간 색상별 비교

솔버QE_R@620QE_G@530QE_B@450
grcwa (nG=49)0.93330.94320.9316
torcwa ([5,5])0.96220.97700.9697
차이-2.9%-3.4%-3.8%

torcwa가 모든 색상에서 일관되게 높은 QE를 산출합니다. 가장 큰 차이는 청색 채널(3.8%)에서 발생하며, 청색 파장이 솔버 구현 차이(G-벡터 선택, 푸리에 인수분해 규칙)에 더 민감함을 시사합니다.

각도 의존적 색상별 QE

CRAQE_R@620QE_G@530QE_B@450RI_RRI_GRI_B
0.96220.97700.96971.0001.0001.000
15°0.99601.00000.99951.0351.0241.031
30°0.99800.99970.99541.0371.0231.027

상대 조도 > 1.0

QE가 CRA와 함께 증가합니다. 이는 픽셀이 각 CRA 각도에 대해 마이크로렌즈 초점을 최적으로 정렬하는 auto_cra 마이크로렌즈 시프트를 사용하기 때문입니다. 정면 입사(CRA=0°)에서 균일 CF 구성은 설계된 Bayer 패턴 형상과 완전히 일치하지 않을 수 있어 약간 낮은 결합 효율을 보입니다. RI > 1.0 값은 물리적 이득으로 해석되어서는 안 됩니다 — CRA 시프트가 광학적 결합을 개선하는 시뮬레이션 설정을 반영합니다.

색상별 실험 실행

bash
# 색상별 푸리에 스윕 (torcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_per_color_torcwa

# 색상별 푸리에 스윕 (grcwa)
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep fourier_per_color_grcwa

# 솔버 간 색상별 비교
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep cross_solver_per_color

# 각도 의존적 색상별 QE
PYTHONPATH=. python3.11 scripts/convergence_study.py --sweep angle_per_color

핵심 요점

  1. 푸리에 차수가 가장 중요한 파라미터 -- 정확도와 실행 시간에 가장 큰 영향을 미침
  2. 메탈 그리드 특징이 수렴 요구 사항을 결정 -- 매끄러운 구조는 훨씬 낮은 차수에서 수렴
  3. torcwa가 grcwa보다 수치적으로 더 안정적 -- 모든 푸리에 차수와 파장에서 안정
  4. grcwa는 더 빠르지만 (nG=49에서 0.95s) 많은 nG 값에서 TM 편광 불안정성 있음
  5. torcwa는 [5,5]에서 수렴 (121 하모닉스, 23초), ΔA < 0.001
  6. n_lens_slices = 15-20이 대부분의 마이크로렌즈 형상에 충분
  7. grid_multiplier = 3이 일반적인 픽셀 형상에 충분
  8. grcwa 사용 시 항상 R + T + A ≈ 1 검증 -- 위반은 수치적 불안정성을 나타냄
  9. 청색 채널은 적색/녹색보다 느리게 수렴 -- 짧은 파장 특성으로 인해 색상별 연구에서 확인
  10. 솔버 간 색상별 차이는 청색에서 최대 (3.8%) -- 청색 파장이 솔버 구현 차이에 더 민감
  11. grcwa TM 불안정성은 파장 의존적 -- nG=81에서 620nm 실패, 450nm 및 530nm에서는 안정

재현성 안내

위에 표시된 수치는 특정 실행에서 얻은 예시 값입니다. 솔버 버전, 재료, 하드웨어(GPU/CPU, fp32/fp64), 설정에 따라 달라집니다. 결론을 내리기 전에 자신의 환경에서 직접 레시피를 다시 실행하여 검증하세요.