我一直在使用麻省理工学院的 MEEP 来模拟硅光子学中的太赫兹频率光传输。我需要在 MIT 的 MEEP 中制作一组通量检测器,这样我就不必编写许多(添加通量)代码块。
Scheme 的地图似乎是一个很好的解决方案,然而,尽管许多论坛中有很多人在寻找一种方法来做到这一点,但这种代码的实现在网上很少见。因此,我想分享一种方法。
在MEEP wiki上的文档中,添加通量检测器的方式如下:
(define-param fcen 0.25) ; pulse center frequency
(define-param df 0.4) ; pulse width (in frequency)
(define-param nfreq 4001) ; number of frequencies at which to compute flux
(define refl-det ; reflection detector
(add-flux freq_c pulse_width num_freqs
(make flux-region
(center some-x some-y)
(size 1 0))))
(define trans-det ; transmission detector
(add-flux freq_c pulse_width num_freqs
(make flux-region
(center some-other-x some-other-y)
(size 1 0))))
;;...;; code for running sources
(display-fluxes refl-det trans-det) ; MEEP's function for outputting flux for frequencies
所以,如果我想要 20 个透射检测器和 20 个反射检测器,我将不得不通过硬编码来定义 40 个块……不好。