Discrepancy between BFAST and Bloch (single frequency sweep) results

안녕하세요, BFAST 사용 관련해서 문제가 있어서 질문드립니다.

목표: 400nm~1100nm 파장 대역에서 plane wave source의 각도를 변화시키며 반사율을 측정해서 아래의 그래프와 같은 유형의 데이터를 얻고자 합니다.

image

문제: BFAST를 사용해서 시뮬레이션한 후, 검증 차원에서 그 데이터를 Bloch/periodic으로 시뮬레이션 한 결과와 비교했는데 두 데이터가 상당히 달랐습니다.

그림2

동일 조건에서 시뮬레이션 했을 때 BFAST는 diverge하는 문제가 생겨, BFAST 시뮬레이션은 mesh를 lose하게 하고, FDTD dt stability를 0.90으로 조정했었습니다. 이것 때문에 다른 결과가 나올 수도 있다고 생각했지만, 예상보다 큰 차이가 났기 때문에 전문가분께 질문드립니다.
(Bloch 시뮬레이션은 wavelength span을 0 으로 하고 center wavelength를 sweep하는 방식으로 400nm~1100nm를 측정했습니다.)
관련 시뮬레이션 파일을 .lsf파일과 함께 첨부합니다(Example1). 시뮬레이션 시간이 길어서 데이터 파일도 함께 첨부했습니다

data.ldf , Example1.fsp , Example1.lsf (668 Bytes)

감사합니다.

사용중인 버전: 8.23.2236

\( \unicode{11157}\) 서로 다른 시뮬레이션의 결과를 비교할 때에는 항상 각각의 시뮬레이션에서 convergence test 를 해주고, converge 된 결과를 놓고서 비교하는 것이 의미가 있습니다. 위의 두 결과를 비교한 그림은 BFAST 는 상대적으로 엉성한 mesh 를 사용하여서 Bloch 의 경우와 mesh setting 자체가 많이 차이가 있습니다. 더우기 mesh accuracy ‘1’ 에서는 물리적으로 의미있는 결과를 기대하기 보다는 시뮤레이션이 별문제 없이 정상적으로 돌아가는가를 확인할 때 주로 사용하므로 시뮬레이션의 결과를 신뢰하기가 힘듭니다.

또한, Bloch 시뮬레이션의 경우 mesh override 를 많이 사용하여 복잡하게 mesh 를 설정하였는데, 이렇게 되면 convergence test 를 할 때 변경해야 하는 parameter 가 너무 많아져 비효율적입니다. 따라서, 가능하면 mesh override 의 수를 줄이고 작은 구조물 전체를 포함하도록 해주고, mesh accuracy 를 더불어 바꾸어주며 convergence test 를 해보시기 바랍니다. Mesh 이외에도 convergence test 에서 고려할 사항들이 많이 있으니 다음의 페이지를 참고하여 시도해 보시기 바랍니다.

첨부하신 3d 시뮬레이션은 실행시간이 너무 길어서 테스트를 하기에 비효율적이어서 2d 시뮬레이션 파일을 이용해서 테스트를 해 보았습니다.
Example1_2d.fsp , Example1_2d.lsf

시뮬레이션 파일을 load 하고 첨부한 스크립트를 실행하면 지정한 다음과 같은 결과를 얻게 됩니다.

위의 두 그림에서 볼 수 있듯, mesh accuracy = 1 에서는 두 결과의 차이가 크지만, mesh accuracy = 8 에서는 결과가 어느 정도 converge 가 되어 둘 사이의 차이가 많이 줄어든 것을 볼 수 있습니다. 장파장대에서는 아직 상대적으로 차이가 큰데, 이또한 mesh 를 더 줄여가는 것과 아울러 구조물과 pml 사이의 간격을 늘려주는 시도를 해보고, 그 이외의 convergence test 도 해보면 차이를 줄일 수 있으리라 생각합니다.

이와는 별개로, BFAST 의 경우 시뮬레이션이 불안정해기가 더욱 쉬운데, BFAST 페이지에 나와있는 제안을 잘 따라해보시기 바랍니다. 입사각이 60 인 경우, 위의 2d 시뮬레이션에서는 dt stability factor 를 0.9 로 했을 때는 시뮬레이션이 발산하는데, 그 값을 0.5 로 해주면 발산하는 문제점을 해결할 수 있었습니다.

요약하면, 발산하는 문제는 BFAST 페이지의 설명을 잘 따라해보시고, 어떤 시뮬레이션의 결과를 비교를 하려면 convergence test 를 먼저 실행해 보시기 바랍니다