⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmi_3d.prj

📁 A Numerical Photonics library written in C++. The library includes beam propagation method, coupled
💻 PRJ
字号:
begin <fimmwave_prj(1.0)> "MMI_3D"
  begin <FPdeviceNode(1.0)> "MMI"
    1.103 //lambda
    begin <FPcomponent(1.0)>
      //list of subelement references follow:
      BEGINLIST
      1
      2
      3
      4
      5
      ENDLIST
      //list of subelements follow:
      begin <FPWGsection(1.0)>
        "mmiin_rwg" 150  // "wgfilename" length
        // LHS rtRegList follows
        begin <RTregionList(1.0)>
          //rCoeff_re rCoeff_im tCoeff_re tCoeff_im xoff yoff xalign yalign shape pars
        
        end
        // RHS rtRegList follows
        begin <RTregionList(1.0)>
          //rCoeff_re rCoeff_im tCoeff_re tCoeff_im xoff yoff xalign yalign shape pars
        
        end
      end
      begin <FPsimpleJoint(1.1)>
        0 0 0 0 0 0 0 0 0 0 1 // xoff yoff xalign yalign h_tilt1 v_tilt1 rotation1 h_tilt2 v_tilt2 rotation2 method
      end
      begin <FPWGsection(1.0)>
        "mmibox_rwg" 700  // "wgfilename" length
        // LHS rtRegList follows
        begin <RTregionList(1.0)>
          //rCoeff_re rCoeff_im tCoeff_re tCoeff_im xoff yoff xalign yalign shape pars
        
        end
        // RHS rtRegList follows
        begin <RTregionList(1.0)>
          //rCoeff_re rCoeff_im tCoeff_re tCoeff_im xoff yoff xalign yalign shape pars
        
        end
      end
      begin <FPsimpleJoint(1.1)>
        0 0 0 0 0 0 0 0 0 0 1 // xoff yoff xalign yalign h_tilt1 v_tilt1 rotation1 h_tilt2 v_tilt2 rotation2 method
      end
      begin <FPWGsection(1.0)>
        "mmiout_rwg" 150  // "wgfilename" length
        // LHS rtRegList follows
        begin <RTregionList(1.0)>
          //rCoeff_re rCoeff_im tCoeff_re tCoeff_im xoff yoff xalign yalign shape pars
        
        end
        // RHS rtRegList follows
        begin <RTregionList(1.0)>
          //rCoeff_re rCoeff_im tCoeff_re tCoeff_im xoff yoff xalign yalign shape pars
        
        end
      end
    end
    //lhs input field
    begin <FPInputDefinition(2.1)>
      1 //input type
      1 //single mode input
    end
    //rhs input field
    begin <FPInputDefinition(2.1)>
      1 //input type
      0 //single mode input
    end
    begin <notesTB(1.0)> "user notes"
      >Modelling an MMI coupler.
      >=====================================
      >    As you can see,  there are three sections in this Compound
      >    Device, simulating a single input waveguide on the left, a broad
      >    multimode section, and two parallel output waveguides on the
      >    right. 
      >
      >==> select /View/Optical Field /XZ profile to view a field plot 
      >    (press OK on dialog box).
      >
      >The program will now locate a user specified number of modes, and
      >then all information needed to plot the field. This operation will take
      >a couple of minutes.
      >
      >==> When the field plot appears, you can clearly see that not much 
      >    power is transmitted into the RHS waveguides. This is verified by 
      >    inspecting the transmission matrix from the LHS:
      >
      >==> as above, select /view/S matrix to view the coupling coefficients 
      >    into the output modes.
      >
      >==> You can see that only 0.297 of the power goes into the first
      >    mode, and none in the second. You can view these modes by
      >    inspecting the mode profile from the waveguide solver (to do
      >    this, right click on the RHS Section and select /Mode list/Edit).
      >
      >==> A key characteristic of FIMMWAVE is that it performs its
      >    calculations using analytical modal analysis and only recalculates
      >    the minimum required for the modified structure. Since the modes
      >    have already been found, and we are only going to change the lengths,
      >    recalculating the modified field will be virtually instantaneous.
      >    Compared to BPM methods, this makes it extremely easy to model
      >    an efficient MMI coupler simply by varying the length by trial
      >    and error!
      >
      >==> In this case note that the field is particularly intense in
      >    the line of the two RHS output waveguides. We therefore expect
      >    to get improved transmission by setting the output interface at
      >    this position. Inspecting the graph, you can clearly see that
      >    this corresponds to setting the length of the intermediate
      >    Section to 430祄, so
      >
      >==> right click on the intermediate section and select / edit
      >    properties... and set the length to 430. Press OK when finished.
      >
      >==> again, on the component window, select /view/S matrix to view the
      >    output modes. The calculation should now be instantaneous!
      >
      >==> Notice that now most of the power is in the first mode, so
      >    this Compound Device is now a very efficient MMI coupler.
      >
      >==> On the component window, select /view/Optical Field/XZ profile
      >    to view the field plot again (press OK on dialog box). 
      >
      >==> You should see the power being injected into the output
      >    waveguides with negligible loss.
      >
      >==> Close the Component window when you have finished.
    end
    begin <slabwgNode(1.0)> "fmmdemo2_swg"
      begin <slabwg(2.1)>
        MAGWALL 0.000000 
        0 AlGaAs(0.4)                      0 0     0
        0.66 AlGaAs(0.2)                   0 0     0
        0.44 GaAs(0)                       0 0     0
        1.5 AlGaAs(0.2)                    0 0     0
        MAGWALL 0.000000
      end
    end
    begin <rwguideNode(1.0)> "fmmdemo2_rwg"
      begin <rwg_wguide(1.0)>
        "demobase.mat"      -1000 // material database 
        METALWALL 0.000000 // lhs boundary
                   5         0.68 "../fmmdemo2_swg"
                   2          0.5 "../fmmdemo2_swg"
                   2          0.2 "../fmmdemo2_swg"
                   5         0.68 "../fmmdemo2_swg"
        METALWALL 0.000000 // rhs boundary
        // end of slice list
      end
      begin <molab_parms(1.1)>
        1 0 100 100 // autoRun <unused> minTEfrac maxTEfrac
        N(1e+050) N(-1e+050)  // evstart evend
        2 0 60 60  // maxNmodes molabOpt nx ny
        1.103 0 RTE 0 0 V2 20 3 1 300 300 15 25 0 5 5  // lambda hCurv solverID Hsymmetries Vsymmetries solverParms
      end
    end
    begin <rwguideNode(1.0)> "mmiin_rwg"
      begin <rwg_wguide(1.0)>
        "demobase.mat"      -1000 
        METALWALL 0.000000 // lhs boundary
                   9         0.68 "../fmmdemo2_swg"
                   3          0.2 "../fmmdemo2_swg"
                   9         0.68 "../fmmdemo2_swg"
        METALWALL 0.000000 // rhs boundary
        // end of slice list
      end
      begin <molab_parms(1.1)>
        1 0 100 100 // autoRun <unused> minTEfrac maxTEfrac
        N(1e+050) N(0)  // evstart evend
        1 0 60 60  // maxNmodes molabOpt nx ny
        1.103 0 RTE 0 0 V2 20 3 1 300 300 15 25 0 5 5  // lambda hCurv solverID Hsymmetries Vsymmetries solverParms
      end
    end
    begin <rwguideNode(1.0)> "mmibox_rwg"
      begin <rwg_wguide(1.0)>
        "demobase.mat"      -1000 
        METALWALL 0.000000 // lhs boundary
                   3         0.68 "../fmmdemo2_swg"
                  15          0.2 "../fmmdemo2_swg"
                   3         0.68 "../fmmdemo2_swg"
        METALWALL 0.000000 // rhs boundary
        // end of slice list
      end
      begin <molab_parms(1.1)>
        1 0 100 100 // autoRun <unused> minTEfrac maxTEfrac
        N(1e+050) N(-1e+050)  // evstart evend
        10 0 60 60  // maxNmodes molabOpt nx ny
        1.103 0 RTE 0 0 V2 20 3 1 300 300 15 25 0 5 5  // lambda hCurv solverID Hsymmetries Vsymmetries solverParms
      end
    end
    begin <rwguideNode(1.0)> "mmiout_rwg"
      begin <rwg_wguide(1.0)>
        "demobase.mat"      -1000 // material database 
        METALWALL 0.000000 // lhs boundary
                   5         0.68 "../fmmdemo2_swg"
                   3          0.2 "../fmmdemo2_swg"
                   5         0.68 "../fmmdemo2_swg"
                   3          0.2 "../fmmdemo2_swg"
                   5         0.68 "../fmmdemo2_swg"
        METALWALL 0.000000 // rhs boundary
        // end of slice list
      end
      begin <molab_parms(1.1)>
        1 0 100 100 // autoRun <unused> minTEfrac maxTEfrac
        N(1e+050) N(-1e+050)  // evstart evend
        10 0 60 60  // maxNmodes molabOpt nx ny
        1.103 0 RTE 0 0 V2 20 4 1 300 300 15 25 0 5 5  // lambda hCurv solverID Hsymmetries Vsymmetries solverParms
      end
    end
  end
  begin <FPOptimiser(1.0)> "MMI_3D_Optimiser"
    PRJITEMNAME : "MMI"
    PRECISION : 0.0001
    MAXFUNCEVALS : 0
    MAXIMISE : 1
    OPTMETHOD : 1
    OBJFUNCTYPE : modepower(1)
    INDEPENDENTVAR : L 300 700 400
    INDEPENDENTVAR : W 8 18 16
    INDEPENDENTVAR : D 2 10 3
    DEPENDENTVAR : "cdev.eltlist[3].length" = L
    DEPENDENTVAR : "cdev.eltlist[3].wg.slices[2].width" = W
    DEPENDENTVAR : "cdev.eltlist[3].wg.slices[1].width" = 10.5-W/2
    DEPENDENTVAR : "cdev.eltlist[3].wg.slices[3].width" = 10.5-W/2
    DEPENDENTVAR : "cdev.eltlist[5].wg.slices[3].width" = D
    DEPENDENTVAR : "cdev.eltlist[5].wg.slices[1].width" = 7.5-D/2
    DEPENDENTVAR : "cdev.eltlist[5].wg.slices[5].width" = 7.5-D/2
    ANALYTICMETHOD : 1
    BOXSIZE : 0.000000
    begin <FPOptimiserObjFuncData(1.0)> "Fwd Coeefts"
      CALC_COMMAND : ".fwdcoeffs[1]" 
      CALC_COMMAND : "fwdcoeffs[1]" a
      CALC_COMMAND : "fwdcoeffs[2]" b
      OBJECTIVE : abs(a)**2+abs(b)**2
    end
  end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -