FDTD Boundary condition 관련 및 기타 질문입니다


#1

안녕하세요 FDTD solution을 이용한 시뮬레이션 중 막히는부분이 생겨 질문드립니다.


논문(metal - insulator - metal 구조에서의 perfect absorbtion 관련)에서 Fig.1의 시뮬레이션을 그대로 재현해보고있습니다. sample.fsp (365.6 KB) 해당 디자인입니다.

문제되는 부분은 구조의 천장높이 (FDTD 박스의 z max)의 변화에 따라 monitor에서 측정하는 transmittance가 바뀌는데요, 이 값이 구조의 천장높이에 영향을 받지않기를 원합니다. Boundary condition을 어떻게 설정해주면 될까요?

그리고 현재 시뮬레이션에 소요되는 시간이 너무 긴것같습니다. 기본 2~30시간정도 걸리는데, 원래 이정도시간이 걸리는지, 개선이 가능하다면 어떻게하면 되는지 조언을 듣고싶습니다. 감사합니다.


#2

안녕하세요, @kodrick.

시뮬레이션 파일을 살펴본 결과 다음의 고려사항을 발견할 수 있었습니다.

1. PML proximity
PML 와 구조물 사이의 간격은 SC-PML 의 경우, source 의 최대파장의 1/4 이상이 되어야 구조물 근방의 evanescent field 가 PML 과 간섭현상을 일으키는 것을 방지 할 수 있습니다. 논문의 Perfect absorber 의 구조는 transmission 이 거의 ‘0’ 이라서 이만큼의 간격이 꼭 필요하지 않을 수도 있으나, 미세한 투과성분이 있을 경우 시뮬레이션 결과에 영향을 줄 수도 있으므로 적절한 간격을 유지하는 것이 좋습니다. 그리고, 논문의 결과와 같이 제대로 된 transmission 값을 얻으려면 이 간격을 확보하는 것이 바람직합니다.

2. Si substrate
논문의 결과와 비교를 원한다면 논문의 구조를 그대로 시뮬레이션에 반영하는 것이 바람직합니다. 따라서, Si substrate 도 시뮬레이션에 포함시키는 것이 좋을 것 같습니다.

3. Mesh size
Mesh accuracy 값은 처음 시뮬레이션에서는 기본값인 ‘2’ 로 설정하고, 조금씩 높여가며 시뮬레이션이 수렴정도를 확인하는 것이 바람직합니다. Mesh accuracy ‘8’ 은 필요이상으로 큰 값입니다. 대체로 ‘4’ 또는 ‘5’ 정도면 수렴된 결과값을 줍니다

4. Large refractive index of Al
Mesh accuracy 를 ‘2’ 로 낮추더라도 전체적으로 mesh 가 아주 촘촘하게 되는데 그 이유는 다루는 최소파장인 2 um 에서 Al 의 refractive index (특히, imaginary index)가 아주 크기 때문입니다. 즉, 동일한 mesh accuracy 에 대해서, index 값이 n 인영역에서는 free space 의 경우에 비해 n 배로 촘촘하게 mesh 가 형성되기 때문입니다. 이로 인해 시뮬레이션에 과도하게 촘촘한 mesh 가 형성되어 메모리를 많이 차지하게 되고, 전반적으로 시뮬레이션에 소요되는 시간이 길어지게 됩니다.
이를 해결하려면 수정한 파일에서와 같이 mesh override 를 disk/Al2O3/Al 층에 걸치도록 배치하고, z 방향으로는 얇은 두께를 가진 층을 잘 표현하도록 mesh 의 크기를 작게 해주되, x/y 방향으로는 다소 엉성한 mesh 를 적용함으로써 시뮬레이션의 크기를 줄일 수 있습니다.

5. Symmetry
Symmetry 와 anti-symmetry 를 활용하여 시뮬레이션 시간을 1/4 로 줄일 수 있습니다. 이와관련한 추가정보는 다음의 페이지를 참고하시기 바랍니다.
https://kb.lumerical.com/en/index.html?ref_sim_obj_symmetric_anti-symmetric.html

위의 내용을 바탕으로 수정한 파일 (sample_2.fsp) (369.3 KB) 을 첨부합니다. 시뮬레이션을 실행한 후 다음의 스크립트를 실행하면 언급한 논문의 결과와 유사한 결과를 얻을 수 있습니다.

f = getdata(“T”,“f”);
T = -transmission(“T”);
R = transmission(“R”);
A = 1 - T - R;
plot(c/f*1e6,R,T,A,“Wavelength(um)”,“Relative intensity (%)”);
legend(“Reflection”,“transmission”,“Absorption”);

여기서, mesh size 와 아울러 다양한 convergence test 를 하면 수렴된 결과를 얻을 수 있을 것입니다.
https://kb.lumerical.com/en/index.html?layout_analysis_test_convergence_fdtd.html