광학 분야에서 광결정(photonic crystal)은 독특한 광학적 특성으로 큰 주목을 받고 있다. 본 글에서는 MATLAB을 활용하여 이종접합(heterojunction) 구조의 1차원 광결정 시뮬레이션을 수행하고, 백색광 반사 특성을 분석하며, 출력 스펙트럼으로부터 CIE 색좌표를 계산하는 방법을 다룬다.
이종접합 1차원 광결정 시뮬레이션 개요
1차원 광결정은 한 방향으로 주기적인 굴절률 분포를 가지는 광학 구조이다. 여기에 이종접합이 도입되면 서로 다른 재료의 계면이 형성된다. MATLAB에서는 먼저 시뮬레이션에 필요한 구조 파라미터를 정의한다.
% 격자 상수 설정
lattice_const = 500e-9;
% 두 재료의 굴절률 정의
ref_idx1 = 3.4;
ref_idx2 = 1.45;
% 광결정 층수 설정
num_layers = 20;
lattice_const는 광결정의 기본 주기 길이를 결정하고, ref_idx1 및 ref_idx2는 이종접합을 구성하는 두 재료의 굴절률이다. num_layers는 전체 층수로, 이 값에 따라 광결정의 광학 특성이 달라진다.
백색광 반사 시뮬레이션
백색광은 다양한 파장의 혼합이므로, 일정 파장 범위에 걸쳐 반사율을 계산해야 한다. 전달 행렬법(transfer matrix method)을 사용하여 각 파장에서의 반사율을 구한다.
% 파장 범위 설정 (단위: m)
wavelength_start = 400e-9;
wavelength_end = 700e-9;
wavelengths = linspace(wavelength_start, wavelength_end, 301);
% 반사율 배열 초기화
reflectance = zeros(size(wavelengths));
for idx = 1:length(wavelengths)
k0_val = 2 * pi / wavelengths(idx);
trans_mat = eye(2);
for layer = 1:num_layers
% 층 두께는 격자 상수의 절반으로 설정
thickness = lattice_const / 2;
% 홀수층과 짝수층의 굴절률 구분
if mod(layer, 2) == 1
n_val = ref_idx1;
else
n_val = ref_idx2;
end
kz_val = k0_val * n_val;
phase_val = kz_val * thickness;
% 각 층의 전달 행렬 구성
M_layer = [cos(phase_val), -1i/kz_val * sin(phase_val);
-1i * kz_val * sin(phase_val), cos(phase_val)];
trans_mat = trans_mat * M_layer;
end
% 반사 계수 및 반사율 계산
r_coeff = trans_mat(2,1) / trans_mat(1,1);
reflectance(idx) = abs(r_coeff)^2;
end
위 코드에서는 각 파장에 대해 반복문을 수행한다. 각 층은 격자 상수의 절반 두께를 가지며, 층의 순서에 따라 굴절률을 결정한다. 전달 행렬 M_layer를 계산하고 전체 구조의 전달 행렬을 누적 곱하여 최종 반사 계수 r_coeff를 얻는다. 이를 통해 반사율 reflectance를 산출한다.
스펙트럼 기반 CIE 색좌표 계산
CIE 색좌표 계산은 반사 스펙트럼을 인간의 색 지각과 연결하는 과정이다. MATLAB에서는 표준 관측자 색매칭 함수와의 적분을 통해 XYZ 삼자극치를 얻고, 이를 CIELAB 또는 xy 색도 좌표로 변환한다.
% XYZ 삼자극치 계산 함수 호출 (예시)
[cie_X, cie_Y, cie_Z] = spec_to_XYZ(wavelengths, reflectance);
% xy 색도 좌표 변환
sum_xyz = cie_X + cie_Y + cie_Z;
if sum_xyz > 0
cie_x = cie_X / sum_xyz;
cie_y = cie_Y / sum_xyz;
else
cie_x = 0;
cie_y = 0;
end
% (선택) CIELAB 색공간 변환
% ref_white = [0.9505, 1.0, 1.0890]; % D65 기준
% [cie_L, cie_a, cie_b] = XYZ_to_Lab(cie_X, cie_Y, cie_Z, ref_white);
spec_to_XYZ는 사용자 정의 함수로, 파장 배열과 반사율 배열을 입력받아 CIE 표준 관측자 함수와의 중첩 적분을 수행한다. 이후 cie_x와 cie_y는 CIE 1931 색도 좌표를 나타내며, 주석 처리된 CIELAB 변환은 필요에 따라 추가할 수 있다. 전체 과정은 광결정 구조가 백색광 반사에 미치는 영향을 정량적으로 평가하고, 시각적 색 표현을 예측하는 데 유용하다.
이 시뮬레이션 방법은 디스플레이, 조명, 광학 센서 등 다양한 응용 분야에서 이종접합 광결정의 광학 설계에 기여할 수 있다.