📄 mmi_3d.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 + -