We’re updating our badges platform. Badge issuance is temporarily paused, but all completions are being recorded and will be fulfilled once the platform is live. Thank you for your patience.
Photonics

Photonics

Topics related to Lumerical and more.

Topology optimization of an O-band/C-band wavelength de-multiplexer with 100nm

    • raano1
      Subscriber

      Dear Ansys Support Team,

      I reviewed the example “Topology optimization of an O-band/C-band wavelength de-multiplexer with 100nm feature size constraint” on your Knowledge Base (https://optics.ansys.com/hc/en-us/articles/4403241716371), but could not find the following:

      Full 3D Python script (topology.py)

      Required .lsf simulation files

      GDSII export instructions or script

      Steps to extract and plot the transmission spectrum

      Could you please provide these or direct me to where I can access them?

    • Kirill
      Forum Moderator

      This topic has been moved to the Photonics  forum. Thank you! 

    • raano1
      Subscriber

      Thank you for the update. I’ll follow up in the Photonics forum. Please let me know if the requested files or instructions will be shared there.

    • Kirill
      Forum Moderator

      Dear Subscriber,

      Thank you for reporting this. We’ll look into why the mentioned content is missing.

      In the meantime, I suggest reviewing these two related examples:
      - Topology Optimization of a 4-channel wavelength demultiplexer 2D-TE
      - Inverse Design of a Splitter Using Topology Optimization

      Best regards,
      Kirill

    • raano1
      Subscriber

      Dear Kirill,
      Thank you for the quick response and for sharing the related examples. I’ll review them in the meantime.

      I would appreciate it if you could provide the missing content from the original example as early as possible, as I specifically need that example code for my work.

      Looking forward to your update.

    • raano1
      Subscriber

       

      Dear Kirill,

      Thanks for your response.

       

       

    • anna.wirth-singh
      Ansys Employee

      Hello,

      I can answer that question about how to implement the minimum feature size constraint. Please see this reference, towards the bottom of the article, for details on the topology settings: Optimizable Geometry - Python API – Ansys Optics

      The parameter you will need to adjust is 'filter_R'. It is set to 200nm by default. 

      Best,

      Anna

    • raano1
      Subscriber

       

      Dear Anna,

      Thank you for your previous guidance on minimum feature size in topology optimization.

       

       

    • raano1
      Subscriber

      See the next reply

    • anna.wirth-singh
      Ansys Employee

      Hi, thanks for the additional questions, I’ll answer as many as I can.

      1.If you do not see a final .fsp file dropped into the main folder, please look into the subfolder with the highest number (opts_1) and find the ‘forward_n.fsp’ also with the highest number. Each time you initiate the optimization process, it will create a new folder and then inside that folder there will be forward and adjoint simulation files corresponding to that part of the optimization. The most recently produced forward.fsp file will contain the optimized result.
      2. Please see this page for reference on the GDS export process: GDS pattern extraction for inverse designed devices using contours method – Ansys Optics
      3. To visualize the transmission spectrum, you should add a Mode expansion monitor – Simulation object – Ansys Optics over the output waveguide. You should look for the T_forward or T_backward result (depending on which direction your monitor is facing), as described here: Using and understanding Mode Expansion Monitors – Ansys Optics

    • raano1
      Subscriber

       

       

      Dear Ansys Support Team,

      Thank you for your previous guidance on minimum feature size in topology optimization.

       

    • anna.wirth-singh
      Ansys Employee

      Hi,

      I looked into your question about the settings a bit more deeply. Both filter_R and min_feature_size are meant to implement a minimum feature size in designs to ensure manufacturability, but they are implemented at different stages of the optimization process. Even with spatial filtering (filter_R) , the process may create some features that break the rules. To add additional constraints, min_feature_size is additionally used to penalize designs that do not follow the minimum feature size rules. Topology optimization is unique to the setup that you have, so there is not a one-size-fits-all approach, but I think it would be safe to set min_feature_size = 100nm and then the filter_R a bit smaller (perhaps 75nm) if you are using the DFM phase. 

      And yes, it is possible to use the Python API (Python API overview – Ansys Optics) to display a plot in Matplotlib. This page has an example code snippet that may be useful: Script Commands as Methods - Python API – Ansys Optics

       

      Best,

      Anna

    • raano1
      Subscriber

      Thanks

    • Kirill
      Forum Moderator

      Dear Subscriber,

      This issue is difficult to resolve without access to the details of your simulation. Unfortunately, the format of this forum isn’t well suited for handling such cases.

      However, you may be eligible for support through the Ansys Customer Support Space (ACSS), where we can assist you more effectively.
      For details, please refer to How to register on Ansys Customer Support Space. Please try submitting your request there.

      Best regards,
      Kirill

    • raano1
      Subscriber

      Thanks

    • Taylor Robertson
      Ansys Employee

      Hello,

      I don't believe that the optimization has run to completion, but it looks like the Transmission targets are pretty close to the target. I don't believe that DFM is being allowed to complete. Maybe reduce the max_iterations ~200.

      Because you have two channels and wavelength targets there are multiple simulations being run. The results you are looking at are for the second target 600-800nm. You can look at "opts_0\forward_0.fsp” to see the other wavelength target.

      Alternatively, I would adjust the bandwidth in the final simulation and plot the results for 500-800nm.  

      fdtd.load(fsp_path)
      fdtd.switchtolayout()
      fdtd.setglobalsource('wavelength start',500e-9)
      fdtd.setglobalsource('wavelength stop',800e-9)
      fdtd.setglobalmonitor('frequency points',100)
      fdtd.run()

      Some other things to consider, you are using a single index value of 2.417 for the whole bandwidth, while there is likely dispersion. The filter_R parameter is the radius of the convolution filter used in the grescale and binarization. This isn't guaranteed to to achieve a minimum feature size, but is intended to close out small features in the topology object - box blur. There is no definitive answer here, you can play around to see how this effects performance and minimum feature size. The DFM step, actually penalizes the FOM when minimum features are present, and then optimizes; however, I don't think you have run the DFM step for this device.

      Best Regards,

    • raano1
      Subscriber

      Please see the next reply...

    • raano1
      Subscriber

      Please see the next reply.

    • raano1
      Subscriber

       

       

      Dear Ansys Support Team,
      When I run the Python code, I get the following error:

      numpy._core._exceptions._ArrayMemoryError: Unable to allocate 2.00 GiB for an array with shape (301, 401, 101, 11) and data type complex128



    • Taylor Robertson
      Ansys Employee

      Hello,

      The lumopt pakage will add a mode expansion monitor MEM based on the FOM - frequency monitor you define, and the modes(number, direction) and wavelengths specified in other objects ModeMatch and Wavelengths. It is not necessary to define the MEM explicitly, just like the adjoint source is set-up automatically in the backward sims. 

      I have never seen this issue with numpy memory, but it is a Numpy problem and not something we can support.

      numpy._core._exceptions._ArrayMemoryError: Unable to allocate 2.00 GiB for an array with shape (30140110111and data type complex128

      It seems like the only workaround I can tell is exploring ways of reducing the data in the opt_fields monitor. You can do this by making it smaller, making the mesh larger or reudcing the number of wavelengths. For example you probably don't need 20nm mesh in the z direction.

      I will need to look into this a bit further, but for some reason your array is 128bit complex. We could almost certainly reduce that to 32bit float to help avoid this issue in the future.

    • raano1
      Subscriber

       

      Thanks

    • raano1
      Subscriber

       

      Dear Ansys Support Team,

      I am working on a topology optimization problem for a 3D wavelength demultiplexer (WDM).
      I saw the results at iteration 101 and iteration 175. However, I observed an issue: at iteration 175, the transmission in Channel 2 drops significantly in the 600–650 nm range.

      I am seeking guidance on how to refine the design to better satisfy the stricter spectral requirements.

       

       

       

    • George Patsamanis
      Ansys Employee

      Hello and thank you for the question.

      Judging from the broadband transmission at the ports, you have setup the parameters correctly and the optimization process returned logical results.
      Indeed, fom1 provides high transmission at 520nm-540nm with 20nm bandwidth, while fom2 provides high transmission overall over the significantly larger bandwidth of 200nm at 600-800nm.

      It is possible that this unwanted spike you observe around 600-625nm (for both foms) occurs due to an optimization tradeoff, in order to maintain the transmission of the rest of fom2’s bandwidth at a high level. Even though the spike looks larger at iteration 175 compared to 101, the entire broadband performance of fom2 has been computed higher for 175. This is evident from the Figure of Merit plot (top left).

      It makes sense to perform one more optimization cycle with a few more suggestions, such as refining the mesh and increasing the wavelength points to observe the difference. In addition, the total size of the optimizable region plays a significant role to the maximum performance that can be achieved. Increasing the length (and width) as well of the fields region can help the optimization, and a new geometry may suppress or vanish this spike. A smaller feature size might be worth testing as an alternative approach, but this will result in a higher fabrication complexity.

      I hope the above are helpful for your studies.

      Kind regards,
      George

       

       

       

Viewing 22 reply threads
  • You must be logged in to reply to this topic.