Exemplo n.º 1
0
def test_cartesian_components():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    start_time = time.time()
    t = np.linspace(0, 100, num=NUM/4)
    sx = []
    sy = []
    sz = []
    try:
        with open(str(pathlib.Path('../pickles/bessel_comp.pickle').absolute()), 'rb') as f:

            print('Loading results: ')
            sx, sy, sz = pickle.load(f)
            plt.plot(t, sx, 'tomato', label='Ex')
            plt.plot(t, sy, 'navy', label='Ey', linestyle='--')
            plt.plot(t, sz, 'firebrick', label='Ez')
    except FileNotFoundError:
        print('There are no saved results. Calculating...')
        start_time = time.time()
        for j in t:
            if j == 0:
                j = 1E-16
            sx.append(pow(abs(cartesian_electric_i.functions['x'](x=0, y=0, z=j * 1E-6, wave_number_k=WAVE_NUMBER)),2))
            print("j = ", j, " -> ", get_max_it(abs(j) * 1E-6), ": ", sx[-1])
        plt.plot(t, sx, 'tomato', label='Ex')
        print("::: X :::")
        print("--- %s seconds ---" % (time.time() - start_time))

        start_time = time.time()
        for j in t:
            if j == 0:
                j = 1E-16
            sy.append(pow(abs(cartesian_electric_i.functions['y'](x=0, y=0, z=j * 1E-6, wave_number_k=WAVE_NUMBER)),2))
            print("j = ", j, " -> ", get_max_it(abs(j) * 1E-6), ": ", sy[-1])
        plt.plot(t, sy, 'navy', label='Ey')
        print("::: Y :::")
        print("--- %s seconds ---" % (time.time() - start_time))
        start_time = time.time()
        for j in t:
            if j == 0:
                j = 1E-16
            sz.append(pow(abs(cartesian_electric_i.functions['z'](x=0, y=0, z=j * 1E-6, wave_number_k=WAVE_NUMBER)),2))
            print("j = ", j, " -> ", get_max_it(abs(j) * 1E-6), ": ", sz[-1])
        plt.plot(t, sz, 'firebrick', label='Ez')
        print("::: Z :::")
        print("--- %s seconds ---" % (time.time() - start_time))
        with open(str(pathlib.Path('../pickles/frozen_compZZZ.pickle').absolute()), 'wb') as f:
            pickle.dump((sx, sy, sz), f)

    plt.ylabel('|E|² [V²/m²]')
    plt.xlabel('x [micrômetros]')
    plt.legend(loc=1)
    plt.show()
Exemplo n.º 2
0
def declare_spherical_electric_field():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    return electric_i_te + electric_i_tm
Exemplo n.º 3
0
def declare_cartesian_magnetic_field():
    magnetic_i_tm = SphericalField(radial=zero,
                                   theta=glmt.theta_magnetic_i_tm,
                                   phi=glmt.phi_magnetic_i_tm)
    magnetic_i_te = SphericalField(radial=glmt.radial_magnetic_i_te,
                                   theta=glmt.theta_magnetic_i_te,
                                   phi=glmt.phi_magnetic_i_te)
    magnetic_i = magnetic_i_te + magnetic_i_tm

    return CartesianField(spherical=magnetic_i)
Exemplo n.º 4
0
def test_plot_3d_frozen():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    fig = plt.figure()
    ax = fig.gca(projection='3d')
    print("I am plotting the Bessel Beam's z component in 3D...")

    # Make data.
    x = np.linspace(-200, 200, 125)
    y = np.linspace(-200, 200, 125)
    X, Y = np.meshgrid(x, y)
    try:
        print('Loading results: ')
        with open(str(pathlib.Path('../pickles/besselz3d.pickle').absolute()), 'rb') as f:
            Z = pickle.load(f)
            print(len(Z))
            x = np.linspace(-200, 200, len(Z))
            y = np.linspace(-200, 200, len(Z))
            X, Y = np.meshgrid(x, y)
    except FileNotFoundError:
        print('There are no saved results. Calculating...')
        start_time= time.time()
        Z = pow(abs(np.vectorize(cartesian_electric_i.functions['z'])(x=1E-6*X, y=1E-6*Y, z=0, wave_number_k=WAVE_NUMBER)), 2)
        print('---- %s seconds ----' % (time.time()-start_time))
        # Saving the object:

        with open(str(pathlib.Path('../pickles/frozen3dultimate.pickle').absolute()), 'wb') as f:
            pickle.dump(Z, f)
    # Plot the surface.
    surf = ax.plot_surface(X, Y, Z, cmap=cm.viridis,
                           linewidth=1, antialiased=True)

    # Customize the z axis.
    #ax.set_zlim(0, 8)
    #ax.zaxis.set_major_locator(LinearLocator(10))
    #ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

    # Add a color bar which maps values to colors.
    fig.colorbar(surf, shrink=0.5, aspect=15, label='|E|² [v²/m²]')
    ax.set_xlabel('x [um]')
    ax.set_ylabel('z [um]')

    plt.show()
Exemplo n.º 5
0
def test_frozen_slices():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    start_time = time.time()
    t = np.linspace(-10, 10, num=NUM/5)
    s40 = []
    s60 = []
    try:
        with open(str(pathlib.Path('../pickles/gcart_slice500.pickle').absolute()), 'rb') as f:
            print('Loading results: ')
            s40, s60 = pickle.load(f)
            plt.plot(t, s40, 'navy', label='z = 40 um')
            plt.plot(t, s60, 'firebrick', label='z = 60 um')
    except FileNotFoundError:
        print('There are no saved results. Calculating...')
        start_time = time.time()
        count = 0
        for j in t:
            s40.append(cartesian_electric_i.abs(x=j * 1E-6, y=0, z=40E-6, wave_number_k=WAVE_NUMBER))
            count += 1
            print("j = ", j, " -> ", get_max_it(np.sqrt((j * 1E-6) ** 2 + 40E-6 ** 2)), " : ", s40[-1])
        plt.plot(t, s40, 'navy', label='z = 40 um')

        print("::: 40 um :::")
        print("--- %s seconds ---" % (time.time() - start_time))
        start_time = time.time()
        for j in t:
            s60.append(cartesian_electric_i.abs(x=j * 1E-6, y=0, z=60E-6, wave_number_k=WAVE_NUMBER))
            print("j = ", j, " -> ", get_max_it(np.sqrt((j * 1E-6) ** 2 + 60E-6 ** 2)), " : ", s60[-1])
        plt.plot(t, s60, 'firebrick', label='z = 60 um')

        print("::: 60 um :::")
        print("--- %s seconds ---" % (time.time() - start_time))
        with open(str(pathlib.Path('../pickles/gcart_slice500.pickle').absolute()), 'wb') as f:
            pickle.dump((s40, s60), f)

    plt.ylabel('Magnitude do campo elétrico [V/m]')
    plt.xlabel('x [micrômetros]')
    plt.legend(loc=1)
    plt.show()
Exemplo n.º 6
0
def test_plot_2d(x_min=-10, x_max=10, y_min=0, y_max=100, num=125):
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    x = np.linspace(x_min, x_max, num)
    y = np.linspace(y_min, y_max, num)
    X, Y = np.meshgrid(x, y)

    start_time = time.time()
    try:
        print('Searching for results')
        with open(str(pathlib.Path('../pickles/ggfw3.pickle').absolute()), 'rb') as f:
            xzdata = pickle.load(f)
            print('Results where found!')
    except FileNotFoundError:
        print('Results not found. Calculating...')
        xzdata = abs(np.vectorize(cartesian_electric_i.abs)(x=1E-6*X, y=0, z=1E-6*Y, wave_number_k=WAVE_NUMBER))
        print("--- %s seconds ---" % (time.time() - start_time))
        with open(str(pathlib.Path('../pickles/frozenlast2.pickle').absolute()), 'wb') as f:
            pickle.dump(xzdata, f)

    fig, ax = plt.subplots(1, 1)
    levels = np.linspace(0, 8, 40)
    cs1 = ax.contourf(X, Y, xzdata, levels=levels, cmap=cm.hot)
    with open(str(pathlib.Path('../pickles/ggfw3300a.pickle').absolute()), 'wb') as f:
        pickle.dump(xzdata, f)

    fig, ax = plt.subplots(1, 1)
    #levels = np.linspace(0, 8, 40)
    cs1 = ax.contourf(X, Y, pow(xzdata, 2), cmap=cm.inferno)
    #ax.set_aspect('equal', 'box')
    fig.colorbar(cs1, format="%.2f")
    #ax.set_aspect('equal', 'box')
    ax.set_xlabel('x [micrômetros]')
    ax.set_ylabel('z [micrômetros]')

    plt.show()
    return X, Y, pow(xzdata, 2)
Exemplo n.º 7
0
def test_frozen_wave():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    start_time = time.time()
    t = np.linspace(START / 1E-6, STOP / 1E-6, num=NUM)
    s = []
    for j in t:
        s.append(pow(cartesian_electric_i.abs(x=j * 1E-6, y=1E-100, z=1E-100, wave_number_k=WAVE_NUMBER), 2))
    plt.plot(t, s)
    print("::: CARTESIAN :::")
    print("--- %s seconds ---" % (time.time() - start_time))
    plt.show()
Exemplo n.º 8
0
def test_plot_2d_bessel():
    fig, axs = plt.subplots(1, 2, sharey=True)
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    x = np.linspace(-100, 100, 100)
    X, Y = np.meshgrid(x, x)

    start_time = time.time()
    try:
        print('Searching for results...')
        with open(str(pathlib.Path('../pickles/bessel2d.pickle').absolute()), 'rb') as f:
            xzdata, xydata = pickle.load(f)
            print('Results where found!')
    except FileNotFoundError:
        print('Results not found. Calculating...')
        xzdata = np.vectorize(cartesian_electric_i.abs)(x=1E-6*X, y=0, z=1E-6*Y, wave_number_k=WAVE_NUMBER)
        xydata = np.vectorize(cartesian_electric_i.abs)(x=1E-6*X, y=1E-6*Y, z=0, wave_number_k=WAVE_NUMBER)
        print("--- %s seconds ---" % (time.time() - start_time))
        with open(str(pathlib.Path('../pickles/frozen2d.pickle').absolute()), 'wb') as f:
            pickle.dump((xydata, xzdata), f)

    levels = np.linspace(0, 1, 40)
    fig.add_subplot(111, frameon=False)
    plt.tick_params(labelcolor='none', top='off', bottom='off', left='off', right='off')
    xzdata = np.transpose(np.array(xzdata))
    axs[0].contourf(X, Y, xydata.T, levels=levels)
    cs2 = axs[1].contourf(X, Y, xzdata, levels=levels)
    fig.colorbar(cs2, ax=axs[1], format="%.2f")
    axs[0].set_aspect('equal', 'datalim')
    axs[1].set_aspect('equal','datalim')

    axs[0].set_xlabel('y [micrômetros]')
    axs[1].set_xlabel('z [micrômetros]')
    plt.ylabel('x [micrômetros]')

    plt.show()
Exemplo n.º 9
0
def test_cartesian_z():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)
    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_te)
    electric_i = electric_i_te + electric_i_tm

    cartesian_electric_i = CartesianField(spherical=electric_i)

    start_time = time.time()
    t = np.linspace(0, 100, num=NUM/4)
    sz = []
    try:
        with open(str(pathlib.Path('../pickles/frozen_cartesian5.pickle').absolute()), 'rb') as f:
            print('Loading results: ')
            sz = pickle.load(f)
            print(sz)
            for item in sz:
                if np.isnan(item):
                    item = 0
                    print(sz)
            plt.plot(t, sz, 'firebrick', label='eixo-z')
    except FileNotFoundError:
        print('There are no saved results. Calculating...')
        print(sz)
        start_time = time.time()
        for j in t:
            if j == 0:
                j = 1E-16
            sz.append(pow(abs(cartesian_electric_i.abs(x=0, y=0, z=j * 1E-6, wave_number_k=WAVE_NUMBER)),2))
            print("j = ", j, " -> ", get_max_it(abs(j) * 1E-6), ": ", sz[-1])
        plt.plot(t, sz, 'firebrick', label='eixo-z')
        print(sz)
        print("::: Z :::")
        print("--- %s seconds ---" % (time.time() - start_time))
        with open(str(pathlib.Path('../pickles/frozen_cartesian5.pickle').absolute()), 'wb') as f:
            pickle.dump(sz, f)

    plt.ylabel('Magnitude do campo elétrico [V/m]')
    plt.xlabel('z [micrômetros]')
    plt.legend(loc=1)
    plt.show()
Exemplo n.º 10
0
def test_fields():
    electric_i_tm = SphericalField(radial=glmt.radial_electric_i_tm,
                                   theta=glmt.theta_electric_i_tm,
                                   phi=glmt.phi_electric_i_tm)

    electric_i_te = SphericalField(radial=zero, theta=glmt.theta_electric_i_te,
                                   phi=glmt.phi_electric_i_tm)

    cart_electric_i_tm = CartesianField(spherical=electric_i_tm)

    print('TEST: ', electric_i_tm.evaluate(radial=1E-6, theta=np.pi/2, phi=0,
                                 wave_number_k=WAVE_NUMBER))
    print('REF: ', glmt.radial_electric_i_tm(1E-6, np.pi/2, 0, WAVE_NUMBER),
                   glmt.theta_electric_i_tm(1E-6, np.pi/2, 0, WAVE_NUMBER),
                   glmt.phi_electric_i_tm(1E-6, np.pi/2, 0, WAVE_NUMBER))

    print('TEST: ', electric_i_te.evaluate(radial=1E-6, theta=np.pi/2, phi=0,
                                 wave_number_k=WAVE_NUMBER))
    print('REF: ', 0,
                   glmt.theta_electric_i_te(1E-6, np.pi/2, 0, WAVE_NUMBER),
                   glmt.phi_electric_i_te(1E-6, np.pi/2, 0, WAVE_NUMBER))

    print(' ')
    print((electric_i_te + electric_i_tm).evaluate(radial=1E-6, theta=np.pi/2, phi=0,
                                 wave_number_k=WAVE_NUMBER)[1])
    print(glmt.theta_electric_i_te(1E-6, np.pi/2, 0, WAVE_NUMBER) + \
          glmt.theta_electric_i_tm(1E-6, np.pi/2, 0, WAVE_NUMBER))

    print('[SPH] x = 1E-6: ', electric_i_tm.abs(radial=1E-6, theta=np.pi/2, phi=0, wave_number_k=WAVE_NUMBER))
    print('[CAR] x = 1E-6: ', cart_electric_i_tm.abs(x=1E-6, y=0, z=0, wave_number_k=WAVE_NUMBER))
    print('[SPH] y = 1E-6: ', electric_i_tm.abs(radial=1E-6, theta=np.pi/2, phi=np.pi/2, wave_number_k=WAVE_NUMBER))
    print('[CAR] y = 1E-6: ', cart_electric_i_tm.abs(x=0, y=1E-6, z=0, wave_number_k=WAVE_NUMBER))
    print('[SPH] z = 1E-6: ', electric_i_tm.abs(radial=1E-6, theta=0, phi=0, wave_number_k=WAVE_NUMBER))
    print('[CAR] z = 1E-6: ', cart_electric_i_tm.abs(x=0, y=0, z=1E-6, wave_number_k=WAVE_NUMBER))
    print('[SPH] z = -1E-6: ', electric_i_tm.abs(radial=1E-6, theta=np.pi, phi=0, wave_number_k=WAVE_NUMBER))
    print('[CAR] z = -1E-6: ', cart_electric_i_tm.abs(x=0, y=0, z=-1E-6, wave_number_k=WAVE_NUMBER))