Photonics

Photonics

Topics related to Lumerical and more.

Lumopt (adjoint method): adjoint field scaling

    • Oliver Müller
      Subscriber

      I'm trying to implement a new figure of merit in an adjoint sensitivity analysis with lumopt (Lumerical). 

      I don't understand what the phase prefactor (self.phase_prefactors in get_fom) and the adjoint field scaling factor (scaling_factor in get_adjoint_field_scaling) represent physically. The scaling of the adjoint field should include the measured intensity at the output from the forward simulation, but I don't see any of this in the code. Does anyone know what these scaling factors are? The definitions of the methods are found in modematch.py (figures_of_merit directory of lumopt)

      Thanks a lot for any help!

    • Taylor Robertson
      Ansys Employee

      Hello Oliver,

      Thanks for the question. This is an area where I admittedly don't understand all the details. In particular I am bit unclear on the constants and normalization, and haven't worked these out rigouously. That being said I can maybe help you pick up the thread for what is happening here.

      The get_fom() function returns the phase prefactor from the the compex transmission coefficient. The magnitude of this complex coefficient squared is proportional to the power in the specified mode and is used in the fom calculation. Therfore the phase prefactor is proportional to the fields amplitude at the FOM monitor. The imaginary component (phase) of the scaling factor is then multiplied by the angular frequency.

      In the optimization.py 'master script' get adjoin_field_scaling is called at line 841. The phase prefactor is then used in the gradient calculation to scale the adjoint fields, as you would expect - see gradients.py. 

      I hope this helps.

Viewing 1 reply thread
  • The topic ‘Lumopt (adjoint method): adjoint field scaling’ is closed to new replies.