Photonics

Photonics

Topics related to Lumerical and more

EME Mode Sweep Not Converging

    • Sept
      Subscriber

      I am currently working on a vertical taper in EME. After going through all the convergence testing (mesh convergence, cell convergence) I have been stuck on the mode convergence step.

      As it seems even with 200 modes being simulated in my tapered region the solution will not converge ( to me it seems that might be overkill). Could I get some guidance on the issue. 

       

    • Amrita Pati
      Ansys Employee

      Hello,

      Would you be able to tell me how many modes are you using in the two sections having the straight waveguides? Sometimes, when we have a large number of modes in the tapered section, we also need to use a large number of modes for expansion in the straight waveguides so that the mode-matching is more accurate. 

      If you are using a lower number, can you try increasing this value, and then run this convergence test?

      Regards,
      Amrita

      • Sept
        Subscriber

        Hi Amrita,

         

        thank you for the fast reply. As of now I am simulating the same number of modes in the straight waveguide sections as I am in the taper region. I have also noticed that for this geometry in theory the longer the taper length should be the closer it should get to converging S21 and S12 equaling to 1. According to my results after a certain length my S parameters max out at about .94 and then start dropping in value the longer it is.

         

        Sincerely,

         

        -Lucio 

      • Sept
        Subscriber

        Hi Amrita,

         

        I was wondering if you had any advice regarding the issue.

    • Amrita Pati
      Ansys Employee

      Hi Lucio,

      Thanks for confirming! So when you increase the number of modes for the convergence testing, are you simultaneously increasing it for all the cell groups? 

      Regarding the transmission, I believe you are using lossless waveguides, is that correct?

      Regards,
      Amrita

      • Sept
        Subscriber

        Hi Amrita,

        that is correct, in the simulation the waveguides are lossless. If it helps at all I will attach my code along with a screenshot of my sweep (also for debuggin purposes I have seen that turning off csvs and energy conservation helped some of my paramaters conerge.

         

        Code: 

         

        selectall; deleteall; clear;
         
        selectall; deleteall; clear;
         
        if(materialexists("TFLN"))
         
        {
         
        deletematerial("TFLN");
         
        }
         
         
        ####################Defining TFLN###########################
         
        #Indices of refraction for substrate & waveguide layers
        delta_n = 0;
        n_TFLN = [2.21; 2.14; 2.21];
        temp = addmaterial("Dielectric");
        setmaterial(temp,"name","TFLN");
        setmaterial("TFLN", "Anisotropy", 1); # enable diagonal anisotropy
        setmaterial("TFLN","Refractive Index", n_TFLN);
         
         
        ########## SETTING UP VARIABLES THAT CAN BE PARAMETRIZED ##################
        wg_taper_length=20e-6;
        wg_height=0.3e-6;
        slab_height=0.3e-6;
        s_angle=pi/3;
        add_length=wg_height/tan(s_angle);
        wg_width=2.5e-6;
        l=10.25e-6;
        etch=550e-9;
         
        ##Setting Wg1
        addrect;
        set("x min",-3e-6);
        set("x max",0);
        set("y",0);
        set("y span",wg_width);
        set("z min",0);
        set("z max",wg_height+slab_height);
        set("name","Waveguide1");
        set("material","TFLN");
         
        ##Setting Up Waveguide Middle
        vtx=[0,0;0,wg_height+slab_height;wg_taper_length,wg_height+slab_height-etch;wg_taper_length,0];
        addpoly;
        set("vertices",vtx);
        set("z",0);
        set("z span",wg_width);
        set("x",0);
        set("y",0);
         set("first axis","x");
         set("rotation 1",90);
         set("name","Taper");
         set("material","TFLN");
         
        ###Setting Wg2
        #addrect;
        #set("x min",wg_taper_length);
        #set("x max",wg_taper_length+3e-6);
        #set("y",0);
        #set("y span",wg_width);
        #set("z min",0);
        #set("z max",wg_height+slab_height-etch);
        #set("name","Waveguide2");
        #set("material","TFLN");
         
         
         
        addmesh;
        set("based on a structure",1);
        set("structure","Taper");
        set("buffer",0.1e-6);
        set("dy",100e-9);
        set("dz",1e-9);
         
        #addmesh;
        #set("based on a structure",1);
        #set("structure","Waveguide2");
        #set("buffer",0.1e-6);
        #set("dy",50e-9);
        #set("dz",1e-9);
         
        addmesh;
        set("based on a structure",1);
        set("structure","Waveguide1");
        set("buffer",0.1e-6);
        set("dy",100e-9);
        set("dz",1e-9);
         
         
         
        yspan=6e-6;
        zspan=6e-6;
         
        addeme;
        set("index",1.4440);
        set("x min",-1e-6);
        set("y min",-yspan);
        set("y max",yspan);
        set("z max",zspan);
        set("z min",-zspan);
        set("y min bc","metal");
        set("y max bc","metal");
        set("z min bc","metal");
        set("z max bc","metal");
        set("number of cell groups",2);
        set("group spans",[1e-6;wg_taper_length]);
        set("cells",[1;50]);
        set("subcell method",[0; 0]);
        set("energy conservation",1);
        set("number of modes for all cell groups",60);
        #set("allow custom eigensolver settings",1);
        #set("modes",[20;60]);
        set("wavelength",1.55e-6);
        set("display cells",1);
        set("mesh cells y",60);
        set("mesh cells z",60);
        #set("min mesh step",0.5e-9);
         
         
        ### Setting up Port 1 ###
        select("EME::Ports::port_1");
        set("use full simulation span",1);
        set("mode selection","fundamental TE mode");
         
         
        #### Setting up Port 2 ###
        select("EME::Ports::port_2");
        set("use full simulation span",1);
        set("mode selection","fundamental TE mode");

         

         

        • Sept
          Subscriber

          Hi Amrita,

           

          this is the code with the waveguide added at the end:

           

          selectall; deleteall; clear;
           
          selectall; deleteall; clear;
           
          if(materialexists("TFLN"))
           
          {
           
          deletematerial("TFLN");
           
          }
           
           
          ####################Defining TFLN###########################
           
          #Indices of refraction for substrate & waveguide layers
          delta_n = 0;
          n_TFLN = [2.21; 2.14; 2.21];
          temp = addmaterial("Dielectric");
          setmaterial(temp,"name","TFLN");
          setmaterial("TFLN", "Anisotropy", 1); # enable diagonal anisotropy
          setmaterial("TFLN","Refractive Index", n_TFLN);
           
           
          ########## SETTING UP VARIABLES THAT CAN BE PARAMETRIZED ##################
          wg_taper_length=20e-6;
          wg_height=0.3e-6;
          slab_height=0.3e-6;
          s_angle=pi/3;
          add_length=wg_height/tan(s_angle);
          wg_width=2.5e-6;
          l=10.25e-6;
          etch=550e-9;
           
          ##Setting Wg1
          addrect;
          set("x min",-3e-6);
          set("x max",0);
          set("y",0);
          set("y span",wg_width);
          set("z min",0);
          set("z max",wg_height+slab_height);
          set("name","Waveguide1");
          set("material","TFLN");
           
          ##Setting Up Waveguide Middle
          vtx=[0,0;0,wg_height+slab_height;wg_taper_length,wg_height+slab_height-etch;wg_taper_length,0];
          addpoly;
          set("vertices",vtx);
          set("z",0);
          set("z span",wg_width);
          set("x",0);
          set("y",0);
           set("first axis","x");
           set("rotation 1",90);
           set("name","Taper");
           set("material","TFLN");
           
          ##Setting Wg2
          addrect;
          set("x min",wg_taper_length);
          set("x max",wg_taper_length+3e-6);
          set("y",0);
          set("y span",wg_width);
          set("z min",0);
          set("z max",wg_height+slab_height-etch);
          set("name","Waveguide2");
          set("material","TFLN");
           
           
           
          addmesh;
          set("based on a structure",1);
          set("structure","Taper");
          set("buffer",0.1e-6);
          set("dy",100e-9);
          set("dz",1e-9);
           
          addmesh;
          set("based on a structure",1);
          set("structure","Waveguide2");
          set("buffer",0.1e-6);
          set("dy",100e-9);
          set("dz",1e-9);
           
          addmesh;
          set("based on a structure",1);
          set("structure","Waveguide1");
          set("buffer",0.1e-6);
          set("dy",100e-9);
          set("dz",1e-9);
           
           
           
          yspan=6e-6;
          zspan=6e-6;
           
          addeme;
          set("index",1.4440);
          set("x min",-1e-6);
          set("y min",-yspan);
          set("y max",yspan);
          set("z max",zspan);
          set("z min",-zspan);
          set("y min bc","metal");
          set("y max bc","metal");
          set("z min bc","metal");
          set("z max bc","metal");
          set("number of cell groups",3);
          set("group spans",[1e-6;wg_taper_length;1e-6]);
          set("cells",[1;50;1]);
          set("subcell method",[0; 1; 0]);
          set("energy conservation",1);
          set("number of modes for all cell groups",60);
          #set("allow custom eigensolver settings",1);
          #set("modes",[20;60]);
          set("wavelength",1.55e-6);
          set("display cells",1);
          #set("mesh cells y",60);
          #set("mesh cells z",60);
          #set("min mesh step",0.5e-9);
           
           
          ### Setting up Port 1 ###
          select("EME::Ports::port_1");
          set("use full simulation span",1);
          set("mode selection","fundamental TE mode");
           
           
          #### Setting up Port 2 ###
          select("EME::Ports::port_2");
          set("use full simulation span",1);
          set("mode selection","fundamental TE mode");
Viewing 2 reply threads
  • You must be logged in to reply to this topic.