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°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), 설정에 따라 달라집니다. 결론을 내리기 전에 자신의 환경에서 직접 레시피를 다시 실행하여 검증하세요.