def test_after_sources_and_time(self): sim = self.init_simple_simulation() done = [False] def _done(sim, todo): done[0] = True sim.run(mp.after_sources_and_time(1, _done), until_after_sources=2) self.assertTrue(done[0])
sim.k_point = mp.Vector3(x=4 / 3 * 0.8) """Guided or Leaky mode field""" res = [] def slice_step(sim): ex = sim.get_array(center=mp.Vector3(), size=cell_size, component=mp.Ex) center_index = np.array(ex.shape) // 2 res.append(ex[center_index[0], center_index[1], center_index[2]]) """Configure harminv""" h = mp.simulation.Harminv(source.component, source.center, f, df) h.Q_thresh = 10 """Coupling simulation & Spectral analysis""" sim.run( # mp.at_beginning(mp.output_epsilon), mp.at_every(1 / 10, slice_step), mp.after_sources_and_time(50, h), until_after_sources=150) np.save(res_dir / ('ex_f_%0.2f_ImEPS_%0.1f' % (f, eps2_cdse)), np.asarray(res)) """Visualization""" eps_data = sim.get_array(center=mp.Vector3(), size=cell_size, component=mp.Dielectric) plot_slice(np.sqrt(eps_data)) plt.show()