chriskeraly / lumopt

Python based continuous adjoint optimization wrapper for Lumerical
Other
157 stars 77 forks source link

What is the adjoint scaling factor? #4

Open audupa2 opened 5 years ago

audupa2 commented 5 years ago

Could you please explain the reason this equation below is used? From Owen Miller's thesis, I saw that for the adjoint case, you had to drive with a source of strength df/dE.

def get_adjoint_field_scaling(self, sim):
        omega = 2.0 * np.pi * sp.constants.speed_of_light / self.wavelengths
        adjoint_source_power = ModeMatch.get_source_power(sim, self.wavelengths)
        scaling_factor = np.conj(self.phase_prefactors) * omega * 1j / np.sqrt(adjoint_source_power)
return scaling_factor

Thanks, Aditi

gholdman1 commented 5 years ago

I'm also interested to know the answer to this. The self.phase_prefactors factor is basically Eqn. 9 of this paper. It's the same modulo a factor of 2 and a factor epsilon_0 x dV, which simply converts an E-field into a dipole magnitude. As for the factor omega * 1j / np.sqrt(adjoint_source_power), I'm unsure. Could it have to do with the frequency dependent scaling of injected fields for Mode sources?

YilinShi commented 4 years ago

I'm also interested. Could you please explain more about the scaling factor? This is a question that has been asked by a number of people throughout the network.We cannot give our own fom without understanding the scaling factor.Please help us

zhouqingyi616 commented 4 years ago

I'm also quite curious about this scaling factor. Where does it come from?

marioEngel commented 3 years ago

Has someone found an explanation for it?

happpyosu commented 1 year ago

I am also curious about the scaling factor. Is there anyone who can help explain it?

YouCanIgnoreMe commented 2 months ago

me too