示例#1
0
def get_omega_variants():
    npts = 1000
    min_f = 0.0
    max_f = 0.5
    X = np.linspace(min_f, max_f, npts, endpoint=False)

    k = np.zeros(npts)
    vg = np.zeros(npts)
    gr = np.zeros(npts)
    st = np.zeros(npts)
    Sw = np.zeros(npts)

    for ii in range(1, npts):
        wr = X[ii] * p_cyc
        k[ii] = get_k_CPDR(wr)  # If k = np.nan or np.inf : Stop band

        if np.isnan(k[ii]) == False:
            Dr_dk = get_dr_dk(wr, k[ii])
            Dr_dw = get_dr_dw(wr, k[ii])
            Di = get_D_imag(wr, k[ii])

            vg[ii] = -Dr_dk / Dr_dw
            gr[ii] = -Di / Dr_dw
        else:
            vg[ii] = 1e-50
            gr[ii] = 0
            st[ii] = 1

    Sw[1:] = -gr[1:] / abs(
        vg[1:]) * 1e7  # Multiplicative factor either 1e9 (/m) or 1e7 (/cm)
    Sw[Sw < 0] = 0  # Stop bands

    xk, grk, stk = calculate_growth_rate(field * 1e9,
                                         ndensc * 1e-6,
                                         ndensw * 1e-6,
                                         A,
                                         temperp=t_perp / q,
                                         norm_freq=1,
                                         maxfreq=max_f)

    plt.figure()
    plt.plot(X, Sw, label='mine')
    plt.plot(xk, grk, label='koz')
    plt.title('CGR')
    plt.legend()
    plt.show()

    plt.figure()
    ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2)
    ax2 = plt.subplot2grid((2, 2), (1, 0), colspan=2)

    ax1.plot(X, gr, label='mu')
    ax2.plot(X, vg, label='vg')

    for ax in [ax1, ax2]:
        ax.legend()
        ax.set_xlim(min_f, max_f)
    return
示例#2
0
def get_cgr_from_sim(norm_flag=0):
    from convective_growth_rate import calculate_growth_rate
    from analysis_config import species_lbl, density, temp_type, Tper, Tpar, Nj, B0

    cold_density = np.zeros(3)
    warm_density = np.zeros(3)
    cgr_ani = np.zeros(3)
    tempperp = np.zeros(3)
    anisotropies = Tper / Tpar - 1

    for ii in range(Nj):
        if temp_type[ii] == 0:
            if 'H^+' in species_lbl[ii]:
                cold_density[0] = density[ii] / 1e6
            elif 'He^+' in species_lbl[ii]:
                cold_density[1] = density[ii] / 1e6
            elif 'O^+' in species_lbl[ii]:
                cold_density[2] = density[ii] / 1e6
            else:
                print('WARNING: UNKNOWN ION IN DENSITY MIX')

        if temp_type[ii] == 1:
            if 'H^+' in species_lbl[ii]:
                warm_density[0] = density[ii] / 1e6
                cgr_ani[0] = anisotropies[ii]
                tempperp[0] = Tper[ii] / 11603.
            elif 'He^+' in species_lbl[ii]:
                warm_density[1] = density[ii] / 1e6
                cgr_ani[1] = anisotropies[ii]
                tempperp[1] = Tper[ii] / 11603.
            elif 'O^+' in species_lbl[ii]:
                warm_density[2] = density[ii] / 1e6
                cgr_ani[2] = anisotropies[ii]
                tempperp[2] = Tper[ii] / 11603.
            else:
                print('WARNING: UNKNOWN ION IN DENSITY MIX')

    freqs, cgr, stop = calculate_growth_rate(B0 * 1e9,
                                             cold_density,
                                             warm_density,
                                             cgr_ani,
                                             temperp=tempperp,
                                             norm_freq=norm_flag)
    return freqs, cgr, stop
示例#3
0
def get_cgr_from_sim():
    cold_density = np.zeros(3)
    warm_density = np.zeros(3)
    cgr_ani = np.zeros(3)
    tempperp = np.zeros(3)
    anisotropies = Tper / Tpar - 1

    for ii in range(Nj):
        if temp_type[ii] == 0:
            if 'H^+' in species_lbl[ii].decode('ascii'):
                cold_density[0] = density[ii] / 1e6
            elif 'He^+' in species_lbl[ii].decode('ascii'):
                cold_density[1] = density[ii] / 1e6
            elif 'O^+' in species_lbl[ii].decode('ascii'):
                cold_density[2] = density[ii] / 1e6
            else:
                print('WARNING: UNKNOWN ION IN DENSITY MIX')

        if temp_type[ii] == 1:
            if 'H^+' in species_lbl[ii].decode('ascii'):
                warm_density[0] = density[ii] / 1e6
                cgr_ani[0] = anisotropies[ii]
                tempperp[0] = Tper[ii] / 11603.
            elif 'He^+' in species_lbl[ii].decode('ascii'):
                warm_density[1] = density[ii] / 1e6
                cgr_ani[1] = anisotropies[ii]
                tempperp[1] = Tper[ii] / 11603.
            elif 'O^+' in species_lbl[ii].decode('ascii'):
                warm_density[2] = density[ii] / 1e6
                cgr_ani[2] = anisotropies[ii]
                tempperp[2] = Tper[ii] / 11603.
            else:
                print('WARNING: UNKNOWN ION IN DENSITY MIX')

    freqs, cgr, stop = calculate_growth_rate(B0 * 1e9,
                                             cold_density,
                                             warm_density,
                                             cgr_ani,
                                             temperp=tempperp)
    return freqs, cgr, stop
示例#4
0
            betapar = np.zeros(N)
            betapar[0] = 10.
            betapar[1] = 10.
            betapar[2] = 0.

            # Temperature anisotropy
            A = np.zeros(N)
            A[0] = 2.
            A[1] = 2.
            A[2] = 0.

            if beta_flag == 1:
                FREQ, GR_RATE, STFLAG = conv.calculate_growth_rate(
                    field,
                    ndensc,
                    ndensw,
                    A,
                    beta=betapar,
                    norm_freq=0,
                    maxfreq=1.0)
                temperp = None
            else:
                FREQ, GR_RATE, STFLAG = conv.calculate_growth_rate(
                    field,
                    ndensc,
                    ndensw,
                    A,
                    temperp=temperp,
                    norm_freq=0,
                    maxfreq=1.0)
                betapar = None
示例#5
0
    ndensw[1] = 5.00
    ndensw[2] = 5.0

    temperp[0] = 50000.  # Perpendicular temperature (ev)
    temperp[1] = 10000.
    temperp[2] = 10000.

    betapar[0] = 0.34223326
    betapar[1] = 0.00111841
    betapar[2] = 0.00290786

    A[0] = 1.  # Temperature anisotropy
    A[1] = 1.
    A[2] = 1.

    FREQ, GR_RATE, STFLAG = conv.calculate_growth_rate(field,
                                                       ndensc,
                                                       ndensw,
                                                       A,
                                                       temperp=temperp,
                                                       norm_freq=1)
    plot_growth_rate(FREQ, GR_RATE, STFLAG, ax)

    plt.xlabel('Frequency (Hz)', fontsize=14)
    plt.ylabel('Growth Rate ($\omega / V_g 10^{-7} cm^{-1}$)',
               rotation=90,
               fontsize=14)
    set_figure_text(ax)
    ax.set_xlim(0, 0.5)
    plt.show()