Photonics

Photonics

Topics related to Lumerical and more

How to use ”initial guess” in topology optimization?

    • 2200453024
      Bbp_participant

      Hi !

      In topology optimization, it's possible to use a custom geometric structure as the initial design. I referred to the settings in the cases "y_splitter_topology" and "CWDM_splitter_1310_4ch_2D_TE_topology":

      • Placed the custom initial structure in the "initial_guess" structure group.
      • Set the params parameter of the geometry to None.

      However, when running the simulation, I encountered the following error:

      UserWarning: Project file structure 'initial_guess' reports 1 parameter where expected 5929. This can occur when the number of x, y coordinates specified to LumOpt do not match the dimensions of the FDTD grid. Try using similar or divisible delta values (size of a pixel) across all the axes.

      In my FDTD settings, mesh accuracy = 3, and no additional mesh was added to the optimization region. It seems to match the settings in the examples, but I can't figure out why the error occurs. Are there any other details that I might have overlooked?

    • Niki Papachristou
      Ansys Employee

      Hi Jiahao,

      Thank you for reaching out to us and asking this question! May I ask you whether you have come across this post: Topology inverse design mesh interpolation. One of our users have a similar question and a colleage of mine has provided a detailed response there. 

      Let me know if that covered you or you would like further assistance.

      Kind Regards,

      Niki

    • 2200453024
      Bbp_participant

      Thank you for your response, Niki.

      I have read through the post you shared, but I still don't know how to solve my problem.

      In my lsf file, the opt_fields is a square with a size of 1.52e-6, and the FDTD region has mesh accuracy set to 3. The opt_fields does not have additional grid settings.

      In the Python code, I set:

        size_x = 1520 
        x_points = int(size_x / 20) + 1
        x_pos = np.linspace(-size_x / 2 * 1e-9, size_x / 2 * 1e-9, x_points)
      (the same as y)

      I'm not sure if this setup is correct. The example seems to be configured similarly, but I don't understand why it 'reports 1 parameter.' Even when I change the shape of the geometry or grid size, it still reports only 1 parameter.

       

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