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
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
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
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
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()