유한차분 전달행렬법(TMM)을 이용한 분산 피드백 격자 및 브래그 격자 시뮬레이션
본 튜토리얼에서는 OghmaNano의 유한차분 전달행렬법(TMM) 솔버를 활용하여 분산 피드백(DFB) 미러 또는 브래그 격자의 반사, 투과 및 광흡수 특성을 시뮬레이션합니다. 이러한 구조물들은 굴절률의 주기적 변조를 통해 간섭성 분산 산란 현상을 일으켜 파장 선택성이 뛰어난 강한 반사 현상을 유도합니다. 이전의 광학 필터 튜토리얼에서는 소자의 에피택셜 구조를 기반으로 광학 구조를 정의했으나, 본 튜토리얼에서는 Lua 스크립팅을 이용해 직접 격자를 생성함으로써 임의의 광학적 층 구조 및 기하학적 형태를 설정할 수 있습니다. 스크립팅 시스템에 대한 보다 상세한 설명은 스텝 편집기 및 스크립팅 문서에 기재되어 있습니다. 이후 두 주기로 구성된 DFB 격자가 반사, 투과 및 흡수 스펙트럼에 미치는 영향을 분석합니다.
1. 배경
금속 미러는 단일 표면에서만 빛을 반사하는 반면, 분산 피드백 격자 미러는 주기적인 구조에서 빛이 반복적으로 산란됨으로써 빛을 반사한다(?? 참조). 격자 주기가 브래그 조건을 만족할 경우 반사된 파동들이 위상 일치하여 강한 반사대, 즉 차단대가 형성된다. 이 차단대의 위치와 폭은 주로 격자 주기, 굴절률 대비도 및 주기의 수에 의해 결정된다.
분산 피드백 격자 미러의 반사대는 브래그 파장 \(\lambda_B\)을 중심으로 형성되며, 이 파장은 격자 주기 \(\Lambda\)와 구조 내에서 전파되는 광모드의 유효 굴절률 \(n_{\text{eff}}\)에 의해 결정된다.
\[ m\lambda_B = 2 n_{\text{eff}} \Lambda \]여기서 \(m\)은 회절 차수를 나타냅니다. 격자의 강도는 결합 계수 \(\kappa\)로 표현되는데, 이는 굴절률 변조 \(\Delta n\)에 의해 전방 및 후방으로 전파되는 파동들이 얼마나 강하게 결합되는지를 측정하는 값입니다. 굴절률 프로파일이 대략 사각형 형태를 띠는 격자의 경우
\[ \kappa \approx \frac{2\,\Delta n}{\lambda_B} \]길이가 \(L\)인 균일한 격자의 최대 반사율은 결합모드 이론에 따라 다음과 같이 구해진다.
\[ R = \tanh^{2}(\kappa L) \]따라서 굴절률 대비도 또는 격자 길이를 증가시키면 반사율이 1에 가까워진다. 차단대의 폭은 결합 계수에 비례하여 변화한다.
\[ \Delta\lambda \approx \frac{\lambda_B^{2}\,\kappa}{\pi\, n_{\text{eff}}} \]대비도가 높은 브래그 격자는 넓고 강한 반사대를 형성하는 반면, 대비도가 낮은 격자는 좁은 반사대만을 만들어낸다. 이러한 단순한 관계만으로도 차단대의 위치와 강도를 대략적으로 예측할 수 있으나, 정밀한 스펙트럼 형태와 리플 현상, 대역 외 특성을 파악하려면 전자기적 해석이 병행되어야 한다.
전통적인 전달행렬법(TMM)은 평면적이며 무한히 주기적인 층들의 적층 구조를 가정한다. 그러나 실제 격자 구조는 완벽하게 주기적이지 않은 경우가 많다. 본 튜토리얼에서 시뮬레이션된 2주기 격자와 같이 임의의 비주기적 혹은 의도적으로 변형된 구조를 다루기 위해 OghmaNano는 전달행렬법을 유한차분 시간영역법(FDTD) 격자 위에 투영한다. 광학 구조는 공간상에서 이산화되며, 메시 전반에 걸쳐 전계의 전파 현상이 슬라이스 단위로 해석된다. 이러한 유한차분 전달행렬법 접근법은 전통적인 전달행렬법의 수치적 효율성과 안정성을 그대로 유지하면서도 하나 이상의 주기를 갖는 격자, 색분산 현상이 발생하는 격자, 테이퍼링 처리된 격자 혹은 불규칙성이 내재된 격자 등 어떠한 공간적 굴절률 분포도 시뮬레이션할 수 있게 해준다.
2. 시작하기
첫 번째 DFB 거울 시뮬레이션을 시작하려면 메인 메뉴의 파일 리본에서 새 시뮬레이션 창을 열어야 합니다(?? 참조). 전달행렬법(TMM) 그룹으로 이동한 뒤 브래그 격자(1차원) 예제를 더블클릭하십시오(?? 참조). 이후 시뮬레이션 파일을 디스크 상의 폴더에 저장하면 됩니다. 그러면 두 주기로 구성된 브래그 격자가 표시된 메인 창이 나타납니다(??, ?? 참조). 이 예제에서는 두 주기로 된 브래그 격자가 로드됩니다. 좁은 간격의 격자들 간 거리는 140 nm이며, 다소 넓은 간격의 격자들 간 거리는 218 nm입니다. 해당 격자는 SiO2로 구성되어 있고, 주변 매질은 공기입니다. 시뮬레이션이 실행된 뒤 메인 창에서 구조를 확인할 수 있습니다(?? 참조).
3. DFB 시뮬레이션 실행하기
??은 약간 다른 각도에서 본 동일한 소자를 보여준다. ‘시뮬레이션 실행(재생)’ 버튼을 클릭하면 스펙트럼이 계산되며(??), 계산이 완료되면 결과가 ‘출력’ 탭에 표시된다(??). ‘시뮬레이션 실행’을 클릭하면 솔버가 광스펙트럼을 순차적으로 처리하며 각 파장에 대한 계산을 수행한다(??). 터미널 창(Solve optical slice at … nm)에 나타나는 각 색상의 선은 각각 다른 파장에 대응한다. 앞서 설명한 바와 같이 본 시뮬레이션에 사용된 방법은 유한차분 격자 위에 전달행렬법을 적용한 것으로, 이를 통해 임의 형태의 2주기 브래그 격자도 시뮬레이션이 가능하다.
3. 출력 결과 확인
시뮬레이션이 완료되면 출력 탭(?? 참조)을 열어 계산 결과로 생성된 파일들을 확인하십시오. 본 튜토리얼에서 주로 사용되는 출력물은 device.csv, optical_output 폴더 및 optical_snapshots 폴더입니다. 먼저 device.csv를 열어보십시오(?? 참조). 이 파일에는 솔버가 인식한 소자의 3차원 메쉬가 표시되며, 이를 통해 광학적 결과를 검토하기 전에 격자 구조가 올바르게 생성되고 메쉬 처리되었는지 확인할 수 있습니다.
이어서 optical_output을 더블클릭하여 광학 시뮬레이션 편집기를 열어줍니다. 생성률 탭(?? 참조)에서는 구조 내에서 광자가 흡수되는 위치가 표시됩니다. 흡수가 거의 또는 전혀 일어나지 않는 영역은 대개 주변 공기 영역이며, 보다 강한 흡수는 격자 내부에서 발생합니다.
반사광 탭(?? 참조)에는 격자에 의해 반사되는 파장들이 표시되며, 낮은 반사율 영역들로 분리된 뚜렷한 반사대들이 나타납니다. 투과광 탭(?? 참조)에는 이에 대응하는 투과 스펙트럼이 나타나는데, 반사가 적게 일어나는 영역에서는 투과율이 높게 나타납니다.
4. 광학 재료 편집하기
격자에 사용되는 광학 재료들은 메인 창의 디바이스 구조 탭에서 열 수 있는 흡수 편집기를 통해 확인 및 변경이 가능합니다. 이를 통해 흡수 편집기가 표시되는데(??, ?? 참조), 여기에는 격자를 구성하는 SiO2와 그 주변 공기의 굴절률(\(n\)) 및 흡수율(\(\alpha\)) 데이터가 나타납니다. 오브젝트 탭(?? 참조)에서는 격자 자체의 재료(Oxides/SiO2)가 표시되며, 월드 탭(?? 참조)에서는 주변 매질(Generic/air)이 나타납니다. 여기서 광학 재료 필드의 … 버튼을 클릭하여 원하는 재료로 변경할 수 있습니다.
5. 격자 구조 편집하기
DFB 구조 자체를 마우스 오른쪽 버튼으로 클릭하면 메시 편집기와 크리스탈 편집기를 비롯한 여러 옵션이 나타납니다(?? 참조). 메시 편집기(?? 참조)를 클릭하면 해당 박스의 치수가 표시됩니다. 전달행렬법(TMM)은 1차원 해석법이므로 구조물의 다른 치수는 사실상 중요하지 않습니다. 오직 파동 전파축을 따른 폭만이 중요하며 박스의 기타 치수는 무관합니다. 만약 2차원 유한차분 시간영역법(FDTD)을 사용하는 경우라면 다른 치수도 중요해집니다.
같은 메뉴에서 크리스탈 편집기를 선택하여(?? 참조) 격자 구조 생성에 사용되는 Lua 스크립트를 확인할 수 있습니다. 개별 격자 요소들을 일일이 정의하는 대신 전체 구조가 프로그램에 의해 자동으로 생성됩니다. ‘새로고침’ 버튼을 클릭하면 스크립트가 재실행되어 기하학적 구조가 다시 생성됩니다. 본 예시에서는 math.random을 통해 위치에 약간의 변동이 주어지므로 격자가 재생성될 때마다 미세하게 달라집니다. 이러한 현상은 ??에서 확인 가능한데, 격자 기하학적 구조가 2초마다 업데이트되어 주기 내에 발생하는 무작위 변동을 보여줍니다.
clear_points()
N = 200
radius = 1.5e-6
pitch = 3e-6
turns = 6
for i = 1, N do
t = (i / N) * turns * 2 * math.pi
-- first helix strand
x1 = radius * math.cos(t)
y1 = radius * math.sin(t)
z1 = (i / N) * turns * pitch
add_point(x1, y1, z1)
-- second helix strand offset by pi (opposite side)
x2 = radius * math.cos(t + math.pi)
y2 = radius * math.sin(t + math.pi)
add_point(x2, y2, z1)
end
스크립트는 먼저 이전에 생성된 점들을 모두 삭제한 뒤 기하학적 구조를 제어하는 매개변수들을 정의한다. 주요 for 루프에서는 구조의 각 위치를 순차적으로 처리한다. 각 반복 단계에서 i의 현재 값을 이용해 기하학적 요소의 좌표를 계산한 후 add_point()를 사용해 해당 좌표를 구조에 추가한다. 동일한 루프 내에서 또 다른 좌표 세트가 계산되어 반대편에 대응하는 점이 생성된다. 분산 피드백 격자 예제에서도 동일한 원리가 적용되어 각 격자 요소가 순차적으로 배치된다. 매개변수를 변경하거나 math.random()와 같은 항을 추가함으로써 스크립트는 다양한 주기, 크기 및 제어된 변동을 갖는 격자를 생성할 수 있다.
6. 조사 방향 선택하기
OghmaNano의 유용한 기능 중 하나는 전달행렬법(TMM) 계산이 단일 전파 방향에만 국한되지 않는다는 점입니다. 대부분의 경우 이러한 계산은 소자의 에피택셜 층 구조를 따라서만 수행됩니다. 그러나 OghmaNano에서는 조사 방향을 명시적으로 지정할 수 있어 동일한 구조에 대해 임의의 주축 방향으로도 시뮬레이션이 가능합니다.
조사 방향을 선택하려면 Optical 리본 메뉴(?? 참조)를 열고 Light Sources를 선택하여 광원 편집기(?? 참조)를 실행합니다. Configure 탭에서 Illuminate from 필드를 이용해 x0, x1, y0, y1, z0 또는 z1 중 하나를 지정하면 됩니다.
z0이며 광원은 격자의 한쪽 끝에 위치한다.
z1 방향에서의 조명 조건이며, 광원은 격자의 반대쪽 끝으로 이동한 상태이다.
이 예제에서는 조명 방향을 변경하는 경우를 살펴봅니다. z0
참조하시기 바랍니다 ??)
로 z1
참조하시기 바랍니다 ??이 기능은 단순히 광원을 격자의 반대편으로 이동시킨다. 이와 같은 가역적 구조에서는 어느 방향에서든 광학적 반응이 동일하지만, 비대칭 구조를 연구하거나 양쪽 방향에서의 파동 전파 특성을 비교할 때 유용하다.
7. 결론
이 튜토리얼에서는 유한차분 전달행렬법(TMM)을 활용하여 분산 피드백(DFB) 미러와 브래그 격자를 시뮬레이션하는 방법을 OghmaNano를 통해 살펴보았습니다. Lua 스크립팅을 이용해 2주기 브래그 격자를 생성하고 제작 공차를 모사하기 위해 제어된 무작위 변동을 도입하는 방법, 광학 계산을 수행하는 방법, 그리고 그 결과로 얻어진 반사, 투과, 흡수 스펙트럼을 해석하는 방법을 배웠습니다. 또한 조명 방향을 고정된 에피택셜 방향에 국한하지 않고 임의의 주축 방향으로 선택할 수 있다는 점도 확인하였습니다. 이러한 기법들은 DFB 및 DBR 레이저 미러, 광섬유 브래그 격자, 광학 필터, 유전체 미러 및 기타 파장 선택형 광자 구조뿐만 아니라 여러 주기나 무질서성, 맞춤형 기하학적 구조를 갖는 복잡한 격자들을 연구하는 데에도 활용될 수 있습니다.