예제 #1
0
    def f(mode, fname):
        wavefs_propagated = []
        labels = []

        for d in dists:
            wavefs_propagated.append(functools.partial(lambda z,x: wavefs[mode-1](x,z), d))
            labels.append('z=%.3fm' % d)

        (fig, ax) = plotting.setup_figure_standard(title=u'Intensity for n=%i mode' % mode,
            xlabel=u'Distance accross waveguide (m)',
            ylabel=u'Wavefunction intensity (arbitrary units)')
        #fig.hold(True)

        colours = ['blue', 'orange', 'green', 'purple', 'grey', 'lime', 'cyan', 'yellow', 'black', 'navy', 'teal']
        colours.reverse()
        ax.hold(True)
        d = []
        for (wf, lbl) in zip(wavefs_propagated, labels):
            d.append(plotting.plot_intensity(ax, wf, waveguide.slab_gap, colour=colours.pop(), label=lbl))
        ax.hold(False)

        if len(dists) != 1:
            ax.legend(loc='upper left', prop={'size' : 10})

        plotting.save_figure(fig, fname)
        i = 1
        for data in d:
            sio.savemat(fname + str(i) + '.mat',data)
            i += 1
예제 #2
0
    def f(mode, fname):
        kx = kxs[mode-1]
        inwave = lambda x: np.exp(1j*kx.real*x)
        splitter = splitters.ModeSplitter(inwave, wavefs)
        cm = splitter.get_coupling_constants()
        wffull = splitter.get_wavefunction(cm)
        wf = lambda x: wffull(x, 0.005)

        #(fig, reax, imax) = plotting.setup_figure_topbottom(
        #    title=ur'Wavefunction for incidence angle on n=%i mode' % mode,
        #    xlabel=u'Distance accross waveguide (m)',
        #    ylabel=u'Wavefunction (arbitrary units)')
        (fig, ax) = plotting.setup_figure_standard(
            title=ur'Wavefunction for incidence angle on n=%i mode' % mode,
            xlabel=u'Distance accross waveguide (m)',
            ylabel=u'Wavefunction (arbitrary units)')
        #plotting.plot_wavefunction(reax, imax, wf, waveguide.slab_gap)
        plotting.plot_intensity(ax, wf, waveguide.slab_gap)
        plotting.save_figure(fig, fname)

        coefftable[mode-1, :] = np.abs(cm)**2