예제 스크린샷 사용자 매뉴얼 Bluesky 로고 YouTube
OghmaNano 유기/페로브스카이트 태양전지, OFET 및 OLED 시뮬레이션 다운로드

FDTD 튜토리얼: 자유 공간에서의 녹색 빛 전파

1. 개요: 시뮬레이션할 내용

이 튜토리얼은 OghmaNano의 Finite-Difference Time-Domain(FDTD) 엔진을 가장 단순한 물리 시스템을 사용하여 소개합니다: 자유 공간에서의 전자기파 전파입니다. 파장 530 nm의 녹색 단색 광원이 비어 있는 계산 영역으로 방출됩니다. 도파관도 없고 공진기도 없으며 진공 이외의 물질도 없습니다. 목적은 소자를 시연하는 것이 아니라 수치 계산 과정 자체를 가시적으로 만드는 것입니다.

FDTD 모듈은 Maxwell의 curl 방정식을 이산 공간 격자에서 시간 영역으로 직접 풉니다. 각 시간 단계마다 전기장과 자기장이 전체 메쉬에서 업데이트됩니다. 알고리즘은 매우 병렬화되어 있으므로 OghmaNano는 OpenCL을 사용하여 이를 실행하며, 가능한 경우 자동으로 GPU를 사용합니다. 이 튜토리얼은 따라서 물리적 시연이면서 동시에 GPU 가속 FDTD 백엔드에 대한 첫 소개 역할도 합니다.

이 페이지를 마치면 시뮬레이션을 생성하고, 월드 크기와 공간 메쉬를 확인하고, 해석기를 실행하며, 녹색 빛이 3차원 공간에서 어떻게 전파되는지 시각화하게 됩니다.

2. Free space 시뮬레이션 생성

New simulation 창을 열고 FDTD examples 범주를 선택한 다음 Free space라는 예제를 선택합니다. 두 선택 창이 아래에 표시되어 있습니다.

FDTD examples 범주를 보여주는 New simulation 창.
New simulation 창에서 FDTD examples를 엽니다.
Free space 시뮬레이션을 보여주는 FDTD 예제 목록.
Free space 예제를 선택합니다.

로드한 후에는 간단한 3차원 장면이 포함된 OghmaNano 메인 창이 나타납니다. 계산 월드는 처음에는 광원과 검출기 영역을 제외하고 비어 있습니다. 3D 보기 내부에서 마우스 오른쪽 버튼을 클릭하고 Show world box를 활성화합니다. 그러면 FDTD 영역의 경계를 정의하는 빨간색 경계 상자가 나타납니다.

Free space 시뮬레이션을 보여주는 OghmaNano 메인 창. show world 옵션을 확인하는 모습.
Free space 시뮬레이션을 보여주는 OghmaNano 메인 창. show world 옵션을 확인하는 모습.
Free space 시뮬레이션을 보여주는 OghmaNano 메인 창. 시뮬레이션 영역 범위를 나타내는 world box 표시.
Free space 시뮬레이션을 보여주는 OghmaNano 메인 창. 시뮬레이션 영역 범위를 나타내는 world box 표시
FDTD 시뮬레이션 영역의 크기를 보여주는 world size 편집기.
Substrate xz-size 버튼을 통해 접근하는 world size 편집기.

월드 크기는 왼쪽 툴바의 Substrate xz-size 버튼을 클릭하여 확인할 수 있습니다. 그러면 시뮬레이션 영역의 물리적 크기가 마이크로미터 단위로 정의된 world size 편집기가 열립니다. 이 튜토리얼에서는 아무것도 변경할 필요가 없습니다. 영역은 이미 녹색 빛의 여러 파장을 충분히 포함하도록 설정되어 있습니다.

3. 광학 설정과 메쉬 확인

다음으로 창 상단의 Optical 리본을 엽니다.

Optical mesh 버튼을 보여주는 OghmaNano의 Optical 리본.
Optical 리본. 공간 이산화를 확인하려면 Optical mesh를 클릭합니다.

Optical mesh를 클릭하여 메쉬 편집기를 엽니다.

531 nm에서 532 nm 사이의 파장 범위와 메쉬 포인트를 보여주는 Optical mesh 편집기.
공간 해상도와 파장 범위(531–532 nm)를 포함한 Optical mesh 설정.

메쉬 편집기는 각 공간 방향에서 사용되는 격자 포인트 수를 표시합니다. 이 값들은 FDTD 계산의 공간 해상도를 결정합니다. 파장 범위는 531 nm에서 532 nm로 설정되어 있으며 이는 녹색 빛에 해당합니다. 이 예제에서 메쉬 편집기에 표시되는 두께 파라미터는 월드 크기에 맞게 자동으로 스케일되므로 무시해도 됩니다. 중요한 점은 공간 격자가 전자기 파장을 해석하기에 충분히 세밀하다는 것입니다.

4. GPU 가속 FDTD 해석기 실행

Run simulation 버튼을 클릭하거나 F9 키를 눌러 시뮬레이션을 시작합니다. Terminal 탭에 해석기 정보가 표시됩니다.

FDTD 모듈이 초기화되고 OpenCL 장치를 검색하는 과정을 보여주는 터미널 출력.
실행 중 Terminal 출력. FDTD 모듈이 초기화되고 메쉬 간격과 파장을 보고하며 시간 스텝 루프를 시작하기 전에 사용 가능한 OpenCL 장치를 검색합니다.
검출기 데이터와 snapshots 디렉터리를 포함한 시뮬레이션 결과 파일을 보여주는 Output 탭.
완료 후 Output 탭. 생성된 파일에는 검출기 트레이스, 구성 내보내기, 그리고 시간 해상 필드 데이터를 포함한 snapshots/ 디렉터리가 포함됩니다.

Terminal 출력에서 Searching for OpenCL devices라는 녹색 텍스트에 주목하십시오. 이 단계에서 프로그램은 시스템에서 호환 가능한 GPU를 검색합니다. 지원되는 그래픽 카드가 있는 시스템에서는 해석기가 GPU를 선택하고 시간 스텝 루프를 그곳에서 실행합니다. 예제에서는 계산이 OpenCL 장치를 에뮬레이션하는 CPU 백엔드에서 실행되고 있지만, 최신 워크스테이션에서는 동일한 시뮬레이션이 자동으로 그래픽 프로세서를 사용하여 가속됩니다.

5. 출력 및 필드 스냅샷 확인

완료 후 Output 탭으로 이동합니다. 생성된 파일이 그곳에 표시됩니다.

구형 파면 전파를 보여주는 더 늦은 시간의 스냅샷.
녹색 빛 파면이 바깥쪽으로 전파되는 것을 보여주는 늦은 시간 스냅샷.
자유 공간에서 전파되는 녹색 빛을 보여주는 스냅샷 뷰어.
스냅샷 뷰어: power density를 선택하고 슬라이더를 사용하여 시간과 공간을 탐색합니다.

snapshots 디렉터리를 더블클릭하여 스냅샷 뷰어를 엽니다. 창 하단의 드롭다운 목록에서 power density를 선택합니다. 색상으로 표시된 필드는 순간 전자기 에너지 밀도를 나타냅니다. 수평 슬라이더를 사용하여 시간을 앞뒤로 이동하고, 공간 슬라이더를 사용하여 영역의 다양한 단면을 확인합니다. 일부 컴퓨터에서는, 특히 큰 메쉬를 실행할 때, 각 데이터 세트를 로드하는 동안 뷰어가 잠시 응답하는 데 시간이 걸릴 수 있습니다.

시간을 따라 이동하면서 파면이 영역 전체로 확장되는 것을 관찰할 수 있습니다. 경계나 구조가 없는 자유 공간에서는 전파가 균일하고 대칭적이며, 계산 영역의 가장자리에서의 흡수 경계 조건에 의해서만 제한됩니다.

6. 검출기 전력 확인

메인 창에 보이는 보라색 격자는 시뮬레이션 영역 내부에 배치된 검출기 평면을 나타냅니다. Output 탭에서 detector 0을 더블클릭하여 기록된 전력 트레이스를 엽니다.

보라색으로 표시된 검출기 평면을 보여주는 메인 창.
자유 공간 영역 내부의 검출기 평면(보라색 격자).
시간에 따른 검출기 전력 그래프.
시간에 따른 검출기 전력.

결과 그래프는 해당 평면을 통과하는 전자기 전력을 시간의 함수로 보여줍니다. 처음에는 검출기가 0 신호를 기록합니다. 파면이 평면에 도달하면 측정된 전력이 증가하고 이후 광원의 시간 프로파일에 따라 안정화됩니다. 이 단순한 구성은 스냅샷 뷰어에서의 파 전파 시각화와 정량적 전력 측정 사이의 관계를 쉽게 이해할 수 있게 합니다.

이제 OghmaNano에서 첫 번째 FDTD 시뮬레이션을 완료했습니다. 시스템에는 재료나 소자가 포함되지 않았지만, 전체 수치 계산 파이프라인을 시연했습니다: 월드 정의, 메쉬 생성, GPU 장치 선택, 시간 스텝 계산, 필드 시각화, 검출기 데이터 추출. 이후 튜토리얼에서는 이러한 동일한 도구를 구조화된 포토닉 및 광전자 시스템에 적용할 것입니다.

7. 2D(XZ)로 전환하여 시뮬레이션 속도 높이기

많은 경우 완전한 3차원 시뮬레이션은 구조와 소자를 이해하는 데 필요하지 않습니다. 특히 물리가 한 방향에서 거의 변하지 않는 경우에는 더욱 그렇습니다. 이러한 경우 문제를 2차원으로 줄이면 상당한 속도 향상을 얻을 수 있습니다. Free space 예제에서 3D 월드에서 XZ 시뮬레이션으로 전환하면 계산 격자에서 전체 Y 차원이 제거됩니다. 그 결과 메쉬 포인트 수가 줄고 필드 데이터가 감소하며 실행 시간이 크게 단축됩니다— 일반적으로 재실행이 거의 대화형으로 느껴질 정도로 빠릅니다.

이를 위해 다시 Optical 리본으로 이동하고 Optical mesh를 열어 ??에 표시된 2D 메쉬 구성을 선택합니다. 핵심 변경 사항은 Y 축을 제거하여 시뮬레이션이 XZ 평면 계산이 되도록 하는 것입니다.

Y 차원을 제거하여 2D XZ 시뮬레이션으로 구성된 Optical mesh 편집기.
2D용 Optical mesh 설정: Y 축을 제거하여 XZ 시뮬레이션을 실행합니다.
XZ 평면에서 파가 전파되는 모습을 보여주는 2D 스냅샷 뷰어.
2D 스냅샷 뷰어: XZ 평면의 필드 진화를 빠르게 렌더링하고 쉽게 탐색할 수 있습니다.
출력 verbosity를 Write everything to disk로 설정한 FDTD 편집기.
더 부드러운 재생을 위해 output verbosity를 Write everything to disk로 설정하여 스냅샷 밀도를 증가시킵니다.

이제 메쉬가 2차원으로 줄어들었으므로 시뮬레이션을 다시 실행합니다. 해석기가 3D 경우에 비해 거의 즉시 완료되는 것을 확인할 수 있습니다. 다시 snapshots/ 디렉터리를 열고 스냅샷 뷰어에서 시간을 따라 스크롤합니다 (??). 데이터 세트가 훨씬 작아졌기 때문에 뷰어는 더 빠르게 로드될 뿐만 아니라 시간 슬라이더를 드래그하거나 공간 단면 컨트롤을 이동할 때도 더 빠르게 반응합니다.

한 가지 주의할 점은 애니메이션의 체감 부드러움이 달라질 수 있다는 것입니다. 2D 실행에서는 시뮬레이션이 매우 빠르게 진행되고 일반적으로 더 적은 프레임을 기록하기 때문에 시간을 스크롤할 때 변화가 약간 끊겨 보일 수 있습니다—단지 한 시간 인덱스와 다음 인덱스 사이에 기록된 스냅샷 수가 적기 때문입니다. 파 전파를 더 세밀한 시간 해상도로 보고 싶다면 디스크에 기록되는 출력 양을 늘리십시오.

이를 위해 다시 Optical 탭으로 이동하고 FDTD simulation 버튼을 클릭하여 FDTD 구성 창을 연 다음 Output verbosity to diskWrite everything to disk every 8th step에서 Write everything to disk로 변경합니다 (??). 이렇게 하면 모든 시간 스텝마다 스냅샷이 기록됩니다. 스냅샷 뷰어를 다시 열면 재생과 스크러빙 동안 훨씬 더 높은 시간 해상도로 파 전파를 매우 정확하게 따라갈 수 있습니다.