Photonics – Chinese

Photonics – Chinese

Topics related to Lumerical and more, in Chinese language.

关于1×4功分器件逆向设计的问题

    • ceshi xiazai
      Subscriber

      老师您好,我最近看了官网案例(1x2_MMI和1x4_CWDM_2D),于是我就想尝试一下1x4功分器件,但是在优化迭代的过程中遇到了无法解释的问题。
      优化脚本代码为:

      def runSim(params, eps_bg, eps_wg, x_pos, y_pos, z_pos, filter_R, min_feature_size, working_dir, beta = 1):

      geometry = TopologyOptimization3DLayered(params=params, eps_min=eps_bg, eps_max=eps_wg, x=x_pos, y=y_pos, z=z_pos, filter_R=filter_R, min_feature_size=min_feature_size, beta=beta)

      ######## DEFINE FIGURE OF MERIT FOR EACH OUTPUT WAVEGUIDE ########

      fom1 = ModeMatch(monitor_name = 'fom_1', mode_number = 'Fundamental TE mode', direction = 'Forward', norm_p = 2, target_fom=0.25)

      fom2 = ModeMatch(monitor_name = 'fom_2', mode_number = 'Fundamental TE mode', direction = 'Forward', norm_p = 2, target_fom=0.25)

      fom3 = ModeMatch(monitor_name = 'fom_3', mode_number = 'Fundamental TE mode', direction = 'Forward', norm_p = 2, target_fom=0.25)

      fom4 = ModeMatch(monitor_name = 'fom_4', mode_number = 'Fundamental TE mode', direction = 'Forward', norm_p = 2, target_fom=0.25)

      ######## DEFINE OPTIMIZATION ALGORITHM ########

      optimizer = ScipyOptimizers(max_iter=80, method='L-BFGS-B', scaling_factor=1, pgtol=1e-6, ftol=1e-5, scale_initial_gradient_to=0.25)

      ######## DEFINE SETUP SCRIPT AND INDIVIDUAL OPTIMIZERS ########

      script = os.path.join(os.path.dirname(__file__), '1x4_test_material.fsp')

      size_x = max(x_pos)-min(x_pos)

      script = script.replace('opt_size_x=10e-6','opt_size_x={:1.6g}'.format(size_x))

      size_y = max(y_pos)-min(y_pos)

      script = script.replace('opt_size_y=16e-6','opt_size_y={:1.6g}'.format(size_y))

      wavelengths = Wavelengths(start = 1550e-9, stop = 1550e-9, points = 1)

      opt1 = Optimization(base_script=script, wavelengths = wavelengths, fom=fom1, geometry=geometry, optimizer=optimizer, use_deps=False, hide_fdtd_cad=False, plot_history=False, store_all_simulations=False)

      opt2 = Optimization(base_script=script, wavelengths = wavelengths, fom=fom2, geometry=geometry, optimizer=optimizer, use_deps=False, hide_fdtd_cad=False, plot_history=False, store_all_simulations=False)

      opt3 = Optimization(base_script=script, wavelengths = wavelengths, fom=fom3, geometry=geometry, optimizer=optimizer, use_deps=False, hide_fdtd_cad=False, plot_history=False, store_all_simulations=False)

      opt4 = Optimization(base_script=script, wavelengths = wavelengths, fom=fom4, geometry=geometry, optimizer=optimizer, use_deps=False, hide_fdtd_cad=False, plot_history=False, store_all_simulations=False)

      ######## PUT EVERYTHING TOGETHER AND RUN ########

      opt = opt1+opt2+opt3+opt4

      opt.continuation_max_iter = 20

      opt.run(working_dir = working_dir)

      在迭代过程中的FOM如下图所示:

      想问一下老师中间这两个端口功率这么大是正常的吗?
      往下继续进行了几次迭代,发现4个端口的功率变化不大,得到的结果没有向P=0.25方向走。

      希望老师帮忙解答一下疑惑,非常感谢。

       

    • Guilin Sun
      Ansys Employee

      其中两个(2,3)Transmission是负的,估计是与光源相反的方向吧?

      变化不大后你仿真最后的文件,看看结果就知道是否正确了。

       

    • ceshi xiazai
      Subscriber

       

      非常感谢孙老师的回答,但是我觉得FOM的结果与光源方向应该没有关系,中间两个端口的FOM<0的原因是,我想得到的FOM是0.25,但是实际得到的FOM是0.48,而在lumopt中FOM=目标FOM-实际FOM。逆向设计最终得到的四个端口的FOM应该是都接近于0的(lumopt中算法求解FOM是求最小值),而图中迭代过程显示的结果不同,迭代100次+80次二值化之后得到的结果是中间两端口的功率还是很大(接近0.5),边缘两端口的功率接近于0,有种1x2MMI的感觉。。。

      我验证了得到的结果,和迭代过程中得到的功率分配是一致的(中间两个端口功率高,边缘两端口功率低)。

      目前可以想到的原因是因为给的折射率比较小(比如随便给的2.5),所以材料对光的调控作用不够强,这个解释不知道合不合理。。。

       

      另外想问一下做逆向设计的老师或者同学们,对于我这种情况有什么建议

       

       

    • Guilin Sun
      Ansys Employee

      因为现在是标量优化,也就是总共只有一个FOM,它无法保证单个FOM的优化,只能保证总和FOM的优化。例子中没有讲,但优化的是不同波长,这个可能是其成功的原因,因为不是对同一个波长入射功率优化的。说不定你修改一下FOM, 将两个Port的透射率做比例,有可能好一些。

      欢迎其他用户展开讨论。

    • ceshi xiazai
      Subscriber

      OK,谢谢孙老师,我去尝试一下。

Viewing 4 reply threads
  • The topic ‘关于1×4功分器件逆向设计的问题’ is closed to new replies.