FDTD 튜토리얼: 이중 슬릿(연속 사인파)
1. 소개
이중 슬릿 실험은 빛이 파동처럼 거동한다는 것을 보여주는 고전적인 시연입니다. 결맞는 광원이 두 개의 좁은 개구를 비추면, 투과된 장은 슬릿 뒤 영역으로 퍼져 나갑니다. 두 개구 모두 결맞는 파면을 방출하기 때문에 서로 간섭합니다. 위상이 정렬되는 영역에서는 강도 최대값이 형성되고, 반대 위상인 영역에서는 최소값이 형성됩니다. 그 결과 간섭 줄무늬에 의해 변조된 특징적인 부채꼴 회절 패턴이 나타납니다.
내장된 이중 슬릿 예제를 실행하고, OpenCL 장치가 감지되었는지 확인하여(사용 가능한 경우 GPU에서 시뮬레이션을 실행할 수 있도록), 전력 밀도 스냅샷을 확인하며 파면이 두 개의 개구를 통해 회절하고 자유 공간 영역에서 예상되는 간섭 패턴을 형성하는 모습을 살펴볼 것입니다.
2. 새 시뮬레이션 만들기
기본 OghmaNano 창에서 시작하여 새 시뮬레이션을 클릭합니다. 새 시뮬레이션 브라우저에서 FDTD 예제를 더블클릭한 다음, 이중 슬릿을 더블클릭합니다 (??, ??). 그러면 ??에 표시된 기본 시뮬레이션 창이 열립니다.
3. 기본 창에서 방향 파악하기
예제를 불러온 후에는 장치 구조 탭에 기하 구조가 표시됩니다 (??). 터미널 탭에는 실행 중 솔버 출력이 표시되며, 여기에는 격자 간격, 시간 스텝, 선택된 OpenCL 장치 정보가 포함됩니다. 출력 탭에는 시뮬레이션이 생성한 파일 목록이 표시되며, 여기에는 시간 의존 전력 밀도 데이터를 포함하는 snapshots 디렉터리도 포함됩니다.
4. 시뮬레이션 실행하기
시뮬레이션 실행(▶)을 클릭하거나 F9를 눌러 계산을 시작합니다. 솔버 출력은 터미널 탭에 표시됩니다 (??). 이 예제에서는 OghmaNano가 OpenCL 장치를 검색 중임을 나타내는 녹색 상태 줄과, OpenCL 장치가 발견되어 선택되었다는 메시지를 볼 수 있습니다.
이는 성능 측면에서 중요합니다. OpenCL을 지원하는 GPU(내장형 또는 외장형)를 사용할 수 있으면 OghmaNano는 CPU 대신 GPU에서 FDTD 업데이트 스텝을 실행할 수 있으며, 이는 일반적으로 이러한 격자 기반 계산에서 훨씬 더 빠릅니다. 대부분의 최신 컴퓨터는 최소 하나의 OpenCL 장치를 제공하므로, 많은 경우 장치가 자동으로 선택됩니다. 호환되는 장치를 찾지 못해도 시뮬레이션은 여전히 CPU에서 실행되며, 단지 시간이 더 오래 걸릴 뿐입니다.
5. 출력 확인하기
실행이 완료되면 출력 탭을 열어 시뮬레이션이 생성한 파일을 확인합니다. 출력 목록은
??에 표시되어 있습니다.
여기에서 snapshots/ 폴더를 열 수 있으며, 이 폴더에는 실행 중 저장된 시간 의존 장 유도 물리량이
포함되어 있습니다.
snapshots/를 열어 시간 영역 전력 밀도 스냅샷을 봅니다.
6. 전력 밀도 스냅샷 보기
출력 탭에서 snapshots/ 디렉터리를 더블클릭하여 스냅샷 뷰어를 엽니다. 그런 다음
플로팅할 파일로 power_density.csv를 선택합니다. 뷰어 하단의 슬라이더는 시간을 따라 이동하므로,
시뮬레이션이 진행됨에 따라 전자기 에너지 밀도가 어떻게 변화하는지 볼 수 있습니다.
??– ??에 표시된 순서는 예상되는 물리를 보여줍니다. 연속 사인파가 구조로 입사하여 두 개의 개구에 도달한 후, 슬릿 뒤 영역으로 회절합니다. 두 개의 결맞는 방출원이 있기 때문에 퍼져 나가는 파면이 서로 중첩되어, 보강 및 상쇄 간섭에 대응하는 교대 밴드를 가진 부채꼴 회절 영역을 형성합니다.
스냅샷 뷰어의 색상 구성은 Colors를 클릭하여 변경할 수 있습니다. 이는 시뮬레이션 결과를 바꾸지 않으며, 동일한 데이터가 표시 팔레트에 어떻게 매핑되는지만 바꿉니다. 출판 또는 교육용으로는 배경에 대해 간섭 줄무늬가 더 잘 보이도록 팔레트를 바꾸는 것이 유용할 수 있습니다.
7. 보이는 결과 해석하기
이중 슬릿 결과의 핵심 특징은 두 가지 효과의 결합입니다. 첫째, 각 개구는 회절을 일으키므로 단일 슬릿만 있어도 투과된 장은 퍼지는 분포로 넓어집니다. 둘째, 동일한 결맞는 광원에 의해 공급되는 두 개의 개구가 있기 때문에, 투과된 장은 위상 관계를 유지하며 그 중첩은 간섭 줄무늬를 형성합니다. 스냅샷에서는 이것이 슬릿 뒤 영역의 구조화된 패턴으로 나타나며, 높은 전력 밀도 밴드가 낮은 전력 영역과 교대로 나타납니다.
연속 사인파(CW) 실행에서는 일반적으로 영역이 주입된 장으로 채워지는 초기 과도 구간이 있고, 이후 장이 사인파적으로 진동하며 스냅샷 간격으로 보았을 때 전력 밀도 패턴이 시간에 대해 안정적으로 보이는 구간이 뒤따릅니다. 강한 가짜 반사, 경계 근처의 예상치 못한 밝은 밴드 또는 불안정하게 증가하는 장이 보인다면, 일반적인 원인은 경계 조건, 불충분한 흡수층 두께 또는 선택한 격자 해상도에 대해 지나치게 큰 시간 스텝입니다.
8. 빠른 점검 및 일반적인 실패 모드
- 예상치 못한 반사: 흡수 경계(CPML)가 활성화되어 있고 충분히 두꺼운지, 그리고 광원이 경계에 너무 가깝지 않은지 확인하십시오.
- 패턴이 “블록형”이거나 왜곡되어 보임: 날카로운 특징은 격자 분산에 가장 민감하므로, 슬릿 근처의 공간 해상도를 높이십시오.
- 느린 실행: 터미널 출력에서 OpenCL 장치 선택을 확인하십시오. CPU에서 실행되면 더 느립니다.
- 뚜렷한 간섭 부채꼴이 없음: 여기 신호가 결맞는지, 그리고 관련 없는 출력이 아니라
snapshots/의power_density.csv를 플로팅하고 있는지 확인하십시오.
9. 광학 검출기 활성화하기
이중 슬릿 예제는 선택적으로 사용자 정의 검출기 영역에 입사하는 광학 전력을 기록할 수 있습니다. 이 검출기들은 시뮬레이션 영역에 배치된 작은 모니터링 창처럼 동작합니다. 실행 중 OghmaNano는 각 검출기 면적을 통과하는 전력을 적분하고 시간 추적 데이터를 출력 디렉터리에 저장합니다.
검출기를 활성화하려면 광학 리본으로 이동하여 CCD 스타일 카메라 아이콘으로 표시된 광학 검출기 버튼을 찾으십시오 (??).
광학 검출기를 클릭하면 검출기 편집기가 열립니다. 이 예제에는 두 개의 검출기(one과 two)가 있으며, 둘 다 처음에는 비활성화되어 있습니다. 검출기가 비활성화되어 있으면 툴바에 빨간색 비활성화됨 상태가 표시됩니다. 비활성화 버튼을 클릭하여 활성화하면, 표시기가 녹색으로 바뀌어 검출기가 활성 상태임을 나타냅니다 (??, ??). 두 번째 검출기에도 이를 반복하여 둘 다 활성화하십시오.
검출기 편집기에서는 검출기의 위치(x, y, z)와 마이크로미터 단위 크기도 볼 수 있습니다. 이 튜토리얼에서는 이 값들을 바꿀 필요가 없습니다. 이 예제는 중요한 물리적 점을 보여주도록 사전 구성되어 있습니다. 하나의 검출기는 회절 강도가 높은 영역에 있고, 다른 하나는 회절된 장이 상대적으로 약한 영역에 있습니다.
10. 다시 실행하고 검출기 출력 보기
검출기를 활성화한 후 시뮬레이션을 다시 실행합니다(▶ 또는 F9). 실행이 완료되면 출력 탭을 엽니다.
이제 검출기 결과에 해당하는 두 개의 추가 출력 항목(예: detector0 및
detector1)이
??에
표시된 것처럼 보여야 합니다. 각 검출기 항목을 더블클릭하여 전력-시간 플롯을 엽니다
(??,
??).
두 추적선의 차이는 수직 스케일을 비교하면 가장 쉽게 이해할 수 있습니다. 한 검출기는 수 마이크로와트(또는 그 이하) 수준의 전력만 기록하는 반면, 다른 검출기는 회절된 장이 도달하면 훨씬 더 큰 신호를 기록합니다. 두 추적선에서 모두 나타나는 지연된 시작은 예상되는 현상입니다. 시뮬레이션은 t=0에서 광원이 켜진 상태로 시작하며, 검출기는 전자기파가 광원에서 슬릿을 거쳐 자유 공간 영역을 지나 각 위치에 도달하기 전에는 응답할 수 없습니다.
11. 물리적 해석: 검출기와 회절 로브
두 개의 검출기를 배치하는 목적은 시간 영역 데이터를 공간 회절 패턴과 연결하는 데 있습니다. 이중 슬릿 시스템에서 원거리장 구조는 균일하지 않습니다. 두 슬릿의 기여가 보강적으로 더해지는 방향(높은 강도)도 있고, 상쇄적으로 더해지는 방향(낮은 강도)도 있습니다. 즉, 회절된 장은 로브와 골을 형성하며, 측정된 검출기 전력은 검출기가 밝은 영역에 있는지 또는 영점 영역에 있는지에 크게 의존합니다.
이는 검출기가 표시된 스냅샷 보기에서 직접 확인할 수 있습니다 (??). 한 검출기는 강한 회절 로브의 경로에 있어 상당한 광학 전력을 누적합니다. 다른 검출기는 간섭이 주로 상쇄적인 영역(패턴의 골)에 있으므로, 해당 모니터 면적을 통과하는 전력이 상대적으로 적습니다. यही 이유로 두 출력 추적선은 검출기 객체가 그 외에는 동일함에도 불구하고 여러 자릿수 차이를 보입니다.
개념적으로 이는 광학 계측 및 영상에서 사용되는 것과 동일한 물리입니다. 검출기는 시뮬레이션의 추상적인 “총 전력”을 측정하는 것이 아니라, 특정 위치에 있는 유한 면적을 통과하는 장의 일부를 측정합니다. 검출기를 아주 조금만 이동해도 밝은 줄무늬에서 인접한 어두운 줄무늬로 이동할 수 있으며, 이는 측정 전력을 극적으로 바꿀 수 있습니다. 실제 시스템에서 이러한 민감성은 바로 회절 및 간섭 패턴이 유용한 이유입니다. 슬릿 간격, 개구 크기, 파장과 같은 기하학적 정보가 측정 가능한 강도 분포에 부호화되기 때문입니다.
12. 슬릿 조정하기
수치적 FDTD 실험의 한 가지 장점은 기하 구조를 대화식으로 수정할 수 있고, 그에 따른 광학 거동을 즉시 탐색할 수 있다는 점입니다. 이 절에서는 이중 슬릿 개구를 형성하는 중앙 차단 요소의 위치를 수정하고, 이것이 회절 패턴과 두 광학 검출기에서 검출되는 전력에 어떤 영향을 주는지 관찰합니다.
3D 장치 창에서 마우스를 사용하여 이중 슬릿을 형성하는 중앙 블록을 선택하고, ??에 표시된 것처럼 구조의 왼쪽 방향으로 끌어 이동합니다. 일반적으로 객체를 끌 때 서로 통과할 수 없지만, 블록이 다른 객체와 충돌하면 끄는 동안 Shift 키를 누를 수 있습니다. 그러면 블록이 다른 기하 구조를 통과할 수 있어 쉽게 재배치할 수 있습니다.
블록을 이동한 후 시뮬레이션을 다시 실행합니다(▶ 또는 F9). 그 결과 광학 장 분포는 ??에 표시되어 있습니다.
이 구성에서는 광학 빔이 더 이상 두 개의 비슷한 회절 광원으로 분리되지 않습니다. 대신 빛은 주로 하나의 개구를 통해 통과하며 보다 평행하게 전파됩니다. 모든 유한 개구는 파동 광학에 따라 퍼짐을 일으키기 때문에 여전히 일부 회절은 발생하지만, 이전에 두 개의 결맞는 슬릿에 의해 형성되던 간섭 패턴은 이제 훨씬 약해집니다. 그 결과 검출기에는 원래 기하 구조에 비해 매우 적은 광학 전력이 도달합니다.
13. 블록을 광원 쪽으로 이동하기
다음으로는 다른 방식으로 기하 구조를 수정합니다. 다시 마우스를 사용하여 중앙 블록을 ??에 표시된 것처럼 광원 쪽 뒤로 끌어 이동합니다. 앞서와 마찬가지로 필요하면 끌 때 Shift 키를 눌러 블록이 다른 객체를 통과하도록 할 수 있습니다.
블록의 위치를 바꾼 후 시뮬레이션을 다시 실행합니다. 그 결과 장 분포는 ??에 표시되어 있습니다.
차단 요소를 광원에 더 가깝게 이동하면 유효 개구 기하 구조가 바뀌고, 따라서 투과된 광학 장의 공간 분포도 바뀝니다. 회절은 입사 파면에 대한 개구의 형상과 위치에 민감하게 의존하므로, 비교적 작은 기하학적 변화도 결과 간섭 구조를 크게 수정할 수 있습니다. 이 경우 회절된 빔은 서로 다른 각도로 출사되며, 간섭 패턴도 그에 따라 변합니다.
이는 파동 광학 시뮬레이션의 핵심 특징을 보여줍니다. 회절 패턴은 전적으로 기하 구조와 파장에 의해 결정됩니다. 구조의 물리적 배치를 수정함으로써, 개구 형상, 슬릿 간격 및 장애물 배치가 결과 광학 장 분포와 시뮬레이션 영역 내에 배치된 검출기에서 측정되는 전력에 어떤 영향을 주는지 탐색할 수 있습니다.
14. 메시 편집기를 사용하여 렌즈 추가하기
이전 절에서는 개구 기하 구조를 변경하면 회절 패턴이 어떻게 바뀌는지 살펴보았습니다. 이 마지막 절에서는 한 걸음 더 나아가 메시 편집기를 사용하여 단순한 객체를 더 복잡한 메시로 변환하는 방법을 보여줍니다. 이는 OghmaNano의 강력한 작업 흐름입니다. 단순한 기본 형상에서 시작하여 직관을 얻은 다음, 렌즈, 곡면, 가져온 CAD 메시와 같은 더 현실적인 광학 부품을 점진적으로 도입할 수 있습니다.
먼저 장치 보기를 ??와 일치하도록 다시 방향 설정합니다. 그런 다음 이중 슬릿 구조의 중앙 블록을 마우스 오른쪽 버튼으로 클릭하고 메시 편집기를 엽니다. 그러면 ??에 표시된 편집기가 열립니다. 메시 편집기에서 Lens 버튼을 클릭하고 ??에 표시된 것과 정확히 같은 매개변수를 입력합니다.
이 값들을 사용하면 렌즈 형태의 객체를 생성할 수 있습니다. 렌즈를 기본 방향으로 두면 장치 보기에서 ??에 표시된 것처럼 “평평한” 렌즈로 나타납니다. 이 튜토리얼에서는 렌즈가 시뮬레이션 평면에 평평하게 놓여 있기를 원하지 않습니다. 그렇게 되면 광학 장이 렌즈와 의미 있게 상호작용하지 않기 때문입니다. 렌즈는 회전되어 수직으로 서서 전파되는 파면을 가로질러야 합니다.
15. 렌즈 회전 및 광학 재료 설정
새 렌즈 객체를 회전하려면 렌즈를 마우스 오른쪽 버튼으로 클릭하고 객체 편집기를 엽니다. 그러면 ??에 표시된 편집기가 열립니다. 그림에 표시된 것과 정확히 같이 회전 각도를 90, 90, 0(x, y, z)으로 설정합니다. 그러면 렌즈가 전파 경로에서 수직으로 서게 되어 입사 장과 강하게 상호작용할 수 있습니다.
객체 편집기에 있는 동안 그림에 표시된 광학 재료를 선택하여 렌즈를 광학적으로 투명하게 만드십시오: inorganic/Si/Green-2008. 이는 굴절과 집속 거동을 보여주기에 적합한 실리콘의 편리한 광대역 굴절률 프로파일입니다. 이 재료를 할당하면 렌즈는 단순한 기하학적 차단체가 아니라 진정한 굴절성 객체가 됩니다.
회전과 재료를 설정한 후 기하 구조는 ??처럼 보여야 하며, 렌즈는 시뮬레이션 영역에서 수직으로 서 있게 됩니다.
16. 렌즈를 포함한 FDTD 시뮬레이션 실행
렌즈가 있는 상태에서 시뮬레이션을 다시 실행합니다. 대표적인 전력 밀도 스냅샷은 ??에 표시되어 있습니다. 입사 파면이 곡률을 가진 굴절 표면과 상호작용하는 모습을 명확히 볼 수 있습니다. 장의 일부는 렌즈를 통과하여 굴절되고, 일부는 광원 쪽으로 반사됩니다.
투과된 장은 렌즈 내부와 주변에서 훨씬 더 조밀한 파면 구조를 형성하며, 출사 장은 집속의 증거를 보여줍니다. 즉, 투과된 에너지가 개구만 있는 경우처럼 자유롭게 계속 퍼지는 대신 더 작은 영역으로 집중됩니다. 동시에 렌즈에서의 반사는 광학 전력의 상당 부분을 개구 영역 쪽으로 되돌려 보내므로, 하류에 배치된 검출기에 도달하는 전력량이 줄어듭니다. 이는 물리적으로 정확히 예상되는 결과입니다. 굴절성 요소는 계면에서 임피던스 불일치를 도입하며, 렌즈가 반사 방지 코팅되어 있거나 굴절률 정합이 되어 있지 않으면 Fresnel 반사가 상당할 수 있습니다.
이 예제는 실제 시뮬레이션에서 “메시 변환” 도구가 왜 중요한지를 보여줍니다. 단순한 시스템도 곧 곡면과 설계된 광학 부품에 의해 지배되기 쉽습니다. 기본 블록을 렌즈(또는 다른 메시 객체)로 변환할 수 있으면, FDTD에 사용하는 동일한 작업 흐름 안에서 직접 광학계를 구축할 수 있습니다. 동일한 접근법을 이용해 마이크로렌즈, 집광기, 회절 광학 소자, 파면 조절 구조 또는 현실적인 장치용 CAD 기하 구조를 생성하고 연구할 수 있습니다.