def file_read(): tolerance = 0.5 crs = [] for i in range(0, 53): crs.append(open("The_3_fluxes_vs.angle_%d.txt" % (i), "r")) #for i in range(0,24): #next(crs[i]) angle = [] eq_fl = [] tur_fl = [] for i in range(0, 53): for columns in (raw.strip().split() for raw in crs[i]): angle.append(float(columns[0])) eq_fl.append(float(columns[1])) tur_fl.append(float(columns[2])) excl_val = [] excl_val_2 = [] for elem in np.where( np.isnan(eq_fl))[0][:]: #filter out nan values from fluxes excl_val_2.append(elem) for elem in sorted(excl_val_2, reverse=True): del angle[elem] del eq_fl[elem] del tur_fl[elem] excl_val_3 = [] for elem in np.where(np.isnan(tur_fl))[0][:]: excl_val_3.append(elem) for elem in sorted(excl_val_3, reverse=True): del angle[elem] del eq_fl[elem] del tur_fl[elem] for i in range(0, len(angle) - 1): #remove duplicates in angle for j in range(i + 1, len(angle) - 1): diff = abs(angle[i] - angle[j]) if (diff < tolerance) or (diff > 360 - tolerance): excl_val.append(j) for elem in sorted(excl_val, reverse=True): del angle[elem] del eq_fl[elem] del tur_fl[elem] excl_val = [] print(angle) nul_pos = angle.index(min(angle)) #start all values from zero angle #for i in range(0,len(angle)): #if angle[i]<0.8: #nul_pos = i angle = np.roll(angle, -nul_pos) eq_fl = np.roll(eq_fl, -nul_pos) tur_fl = np.roll(tur_fl, -nul_pos) print(angle) plt.xlabel("angle") plt.ylabel("fluxes") plt.plot(angle[:], eq_fl[:], 'b-', angle[:], tur_fl[:], 'r-') plt.show() return angle, eq_fl, tur_fl
def file_read(verbose = False): '''Reads all the files and joins the values in lists. Then, it filters duplicates and nans.''' tolerance = 0.5 crs = [] for i in range(0,77): #ti253-IFS(0,61)/ti255-separatrix (0,60) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_mag_fluxes_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_diamag_fluxes_vs.angle_%d.txt" %(i),"r")) crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti262_mag_fluxes_vs.angle_%d.txt" %(i),"r")) for i in range(0,77): next(crs[i]) angle = [] mag_fl = [] R_value = [] Z_value = [] for i in range(0,77): for columns in ( raw.strip().split() for raw in crs[i] ): angle.append(float(columns[0])) mag_fl.append(float(columns[1])) R_value.append(float(columns[2])) Z_value.append(float(columns[3])) #filter out nan values from fluxes excl_val_2 = [] for elem in np.where(np.isnan(mag_fl))[0][:]: excl_val_2.append(elem) for elem in sorted(excl_val_2,reverse=True): del angle[elem] del mag_fl[elem] del R_value[elem] del Z_value[elem] #Keeping only one entry per angle, filtering out all others. B = [] for i in range(0,len(angle)): B.append(int(angle[i])) for i in range(0,len(B)-1): excl_val = [] for j in range(i+1,len(B)): diff = abs(B[i]-B[j]) if (diff<tolerance) or (diff>360-tolerance): excl_val.append(j) if len(excl_val)>0: for elem in sorted(excl_val,reverse=True): del B[elem] del angle[elem] del mag_fl[elem] del R_value[elem] del Z_value[elem] #start all values from zero angle. nul_pos = angle.index(min(angle)) angle = np.roll(angle,-nul_pos) mag_fl = np.roll(mag_fl,-nul_pos) R_value = np.roll(R_value,-nul_pos) Z_value = np.roll(Z_value,-nul_pos) print(angle) #returning the R-distance for the integral function. Rnorm = [] for r,z in zip(R_value,Z_value): Rnorm.append(r**2 + z**2) R = R_value + core.Rmaj #Plotting option if verbose == True: plt.xlabel("angle") plt.ylabel("fluxes") plt.plot(angle[:], mag_fl[:],'b-') plt.show() #new_file = open("DiaMag_flux_20_smoothes.txt",'a') #new_file.write("angle"+"\t"+"DiaMagnetic"+"\t"+"R"+"\t"+"Z"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(mag_fl[i])+"\t"+str(R_value[i])+"\t"+str(Z_value[i])+"\n") #new_file.close() new_file = open("ti262_Mag_flux.txt",'a') new_file.write("angle"+"\t"+"Magnetic"+"\t"+"R"+"\t"+"Z"+"\n") for i in range(0,len(angle)): new_file.write(str(angle[i])+"\t"+str(mag_fl[i])+"\t"+str(R_value[i])+"\t"+str(Z_value[i])+"\n") new_file.close() return angle, mag_fl, Rnorm, R
def file_read(verbose=True): tolerance = 0.5 crs = [] for i in range( 0, 60 ): #ti253-separatrix(0,60)/ti253-IFS(0,61)/ti255-separatrix (0,60)/ti262 (0,78) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_temperatures_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_densities_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_turbulence_strength_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_magnetic_field_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_geom_magnetic_drift_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_ion_temperatures_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_magnetic_field_comp_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_magnetic_drifts_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_density_perturbation_strength_vs.angle_%d.txt" %(i),"r")) crs.append( open("/global/homes/g/giannos/xgc_python_dir/Check_%d.txt" % (i), "r")) #for i in range(0,60): #next(crs[i]) angle = [] #gradBR = [] #gradBZ = [] #curvR = [] #curvZ = [] #Br = [] #Bz = [] #T_perp = [] #E_par = [] #geom = [] #Bp = [] #Bm = [] #den=[] #te = [] #ti = [] #den_str = [] R = [] Z = [] for i in range(0, 60): for columns in (raw.strip().split() for raw in crs[i]): angle.append(float(columns[0])) R.append(float(columns[1])) Z.append(float(columns[2])) #den_str.append(float(columns[1])) #gradBR.append(float(columns[1])) #gradBZ.append(float(columns[2])) #curvR.append(float(columns[3])) #curvZ.append(float(columns[4])) #Br.append(float(columns[1])) #Bz.append(float(columns[2])) #T_perp.append(float(columns[1])) #E_par.append(float(columns[2])) #geom.append(float(columns[1])) #Bp.append(float(columns[1])) #Bm.append(float(columns[2])) #den.append(float(columns[1])) #ti.append(float(columns[1])) #te.append(float(columns[2])) excl_val_2 = [] for elem in np.where( np.isnan(R))[0][:]: #filter out nan values from fluxes excl_val_2.append(elem) for elem in sorted(excl_val_2, reverse=True): del angle[elem] del R[elem] del Z[elem] #del den_str[elem] #del gradBR[elem] #del gradBZ[elem] #del curvR[elem] #del curvZ[elem] #del Br[elem] #del Bz[elem] #del Bzeta[elem] #del T_perp[elem] #del E_par[elem] #del geom[elem] #del Bp[elem] #del Bm[elem] #del den[elem] #del ti[elem] #del te[elem] excl_val_3 = [] for elem in np.where(np.isnan(Z))[0][:]: excl_val_3.append(elem) for elem in sorted(excl_val_3, reverse=True): del angle[elem] del R[elem] del Z[elem] #del gradBR[elem] #del gradBZ[elem] #del curvR[elem] #del curvZ[elem] #del Br[elem] #del Bz[elem] #del Bzeta[elem] #del T_perp[elem] #del E_par[elem] #del Bp[elem] #del Bm[elem] #del ti[elem] #del te[elem] #excl_val_4 = [] #for elem in np.where(np.isnan())[0][:]: #excl_val_4.append(elem) #for elem in sorted(excl_val_4,reverse=True): #del angle[elem] #del Br[elem] #del Bz[elem] #del Bzeta[elem] B = [] #Keeping only one entry per angle, filtering out all others. for i in range(0, len(angle)): B.append(int(angle[i])) for i in range(0, len(B) - 1): excl_val = [] for j in range(i + 1, len(B)): diff = abs(B[i] - B[j]) if (diff < tolerance) or (diff > 360 - tolerance): excl_val.append(j) if len(excl_val) > 0: for elem in sorted(excl_val, reverse=True): del B[elem] del angle[elem] del R[elem] del Z[elem] #del den_str[elem] #del gradBR[elem] #del gradBZ[elem] #del curvR[elem] #del curvZ[elem] #del Br[elem] #del Bz[elem] #del Bzeta[elem] #del T_perp[elem] #del E_par[elem] #del geom[elem] #del Bp[elem] #del Bm[elem] #del den[elem] #del ti[elem] #del te[elem] nul_pos = angle.index(min(angle)) #start all values from zero angle angle = np.roll(angle, -nul_pos) R = np.roll(R, -nul_pos) Z = np.roll(Z, -nul_pos) #den_str = np.roll(den_str,-nul_pos) #gradBR = np.roll(gradBR,-nul_pos) #gradBZ = np.roll(gradBZ,-nul_pos) #curvR = np.roll(curvR,-nul_pos) #curvZ = np.roll(curvZ,-nul_pos) #Br = np.roll(Br,-nul_pos) #Bz = np.roll(Bz,-nul_pos) #Bzeta = np.roll(Bzeta,-nul_pos) #T_perp = np.roll(T_perp,-nul_pos) #E_par = np.roll(E_par,-nul_pos) #geom = np.roll(geom,-nul_pos) #Bp = np.roll(Bp,-nul_pos) #Bm = np.roll(Bm,-nul_pos) #den = np.roll(den,-nul_pos) #ti = np.roll(ti,-nul_pos) #te = np.roll(te,-nul_pos) print(angle) #new_file = open("Sep_temperatures.txt",'a') #new_file.write("angle"+"\t"+"t_i"+"\t"+"t_e"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(ti[i])+"\t"+str(te[i])+"\n") #new_file.close() #new_file = open("Sep_densities.txt",'a') #new_file.write("angle"+"\t"+"den"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(den[i])+"\n") #new_file.close() #new_file = open("Sep_turbulence_strength.txt",'a') #new_file.write("angle"+"\t"+"rms(dphi)/<phi>"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(den[i])+"\n") #new_file.close() #new_file = open("Sep_Mag_field.txt",'a') #new_file.write("angle"+"\t"+"B_p"+"\t"+"B"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(Bp[i])+"\t"+str(Bm[i])+"\n") #new_file.close() #new_file = open("Sep_Mag_geom.txt",'a') #new_file.write("angle"+"\t"+"geom"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(geom[i])+"\n") #new_file.close() #new_file = open("Ion_temperatures.txt",'a') #new_file.write("angle"+"\t"+"T_perp"+"\t"+"E_para"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(T_perp[i])+"\t"+str(E_par[i])+"\n") #new_file.close() #new_file = open("Mag_components.txt",'a') #new_file.write("angle"+"\t"+"Br"+"\t"+"Bz"+"\t"+"Bzeta"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(Br[i])+"\t"+str(Bz[i])+"\n") #new_file.close() #new_file = open("Mag_curv_drifts.txt",'a') #new_file.write("angle"+"\t"+"curvR"+"\t"+"curvZ"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(curvR[i])+"\t"+str(curvZ[i])+"\n") #new_file.close() #new_file = open("Den_pert_str.txt",'a') #new_file.write("angle"+"\t"+"dn"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(den_str[i])+"\n") #new_file.close() new_file = open("Check.txt", 'a') new_file.write("angle" + "\t" + "R" + "\t" + "Z" + "\n") for i in range(0, len(angle)): new_file.write( str(angle[i]) + "\t" + str(R[i]) + "\t" + str(Z[i]) + "\n") new_file.close() #plt.style.use('ggplot') #plt.xlabel(r"angle$^{\circ}$") #plt.ylabel(r"T (eV)") #plt.xlim([0.0,360.0]) #plt.plot(angle[:], ti[:],'b',marker='o',label=r'$T_i$') #plt.plot(angle[:], te[:],'r',marker='o',label=r'$T_e$') #plt.legend() #plt.show() #plt.style.use('ggplot') #plt.xlabel(r"angle$^{\circ}$") #plt.ylabel(r"n ($m^{-3}$)") #plt.xlim([0.0,360.0]) #plt.plot(angle[:], den[:],'b',marker='o') #plt.legend() #plt.show() return angle
def file_read(verbose=True): tolerance = 0.5 crs = [] for i in range( 0, 60 ): #ti253-separatrix(0,60)/ti253-IFS(0,61)/ti255-separatrix (0,60) crs.append( open( "/global/homes/g/giannos/xgc_python_dir/ti255_analysis/Reynolds/Re_tur_pol_files_%d.txt" % (i), "r")) for i in range(0, 60): next(crs[i]) angle = [] R_value = [] Z_value = [] Re = [] for i in range(0, 60): try: for columns in (raw.strip().split() for raw in crs[i]): angle.append(float(columns[0])) R_value.append(float(columns[1])) Z_value.append(float(columns[2])) Re.append(float(columns[3])) except ValueError: print("error on file", i) excl_val_2 = [] for elem in np.where( np.isnan(Re))[0][:]: #filter out nan values from shear #for elem in np.where(shear < 1e2)[0][:]: excl_val_2.append(elem) #print(np.where(shear == 0.0)) for elem in sorted(excl_val_2, reverse=True): del angle[elem] del R_value[elem] del Z_value[elem] del Re[elem] B = [] #Keeping only one entry per angle, filtering out all others. for i in range(0, len(angle)): B.append(int(angle[i])) for i in range(0, len(B) - 1): excl_val = [] for j in range(i + 1, len(B)): diff = abs(B[i] - B[j]) if (diff < tolerance) or (diff > 360 - tolerance): excl_val.append(j) if len(excl_val) > 0: for elem in sorted(excl_val, reverse=True): del B[elem] del angle[elem] del Re[elem] del R_value[elem] del Z_value[elem] nul_pos = angle.index(min(angle)) #start all values from zero angle angle = np.roll(angle, -nul_pos) Re = np.roll(Re, -nul_pos) R_value = np.roll(R_value, -nul_pos) Z_value = np.roll(Z_value, -nul_pos) #print(angle) Rnorm = [] #returning the R-distance for the integral function. for r, z in zip(R_value, Z_value): Rnorm.append(r**2 + z**2) R = R_value + core.Rmaj if verbose == True: # Plotting option #new_angle = smooth(angle) fig, ax = plt.subplots() ax.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2e')) ax.set_xlim([0, 360]) ax.set_xlabel("angle") ax.set_ylabel("Reynolds Turbulent Poloidal Force") ax.plot(angle[50:], Re[50:], 'b-') ax.plot(angle[0:50], Re[0:50], 'b-') ax.plot(np.unique(angle), np.poly1d(np.polyfit(angle, Re, 18))(np.unique(angle)), 'r') plt.show() new_file = open( "/global/homes/g/giannos/xgc_python_dir/ti255_analysis/Reynolds/Re_tur_pol_f_total.txt", 'a') new_file.write("angle" + "\t" + "Re_pol_f" + "\t" + "R" + "\t" + "Z" + "\n") for i in range(0, len(angle)): new_file.write( str(angle[i]) + "\t" + str(Re[i]) + "\t" + str(R_value[i]) + "\t" + str(Z_value[i]) + "\n") new_file.close() return angle, Re, Rnorm, R
def file_read(verbose=True): tolerance = 0.5 crs = [] for i in range( 0, 60 ): #ti253-separatrix(0,60)/ti253-IFS(0,61)/ti255-separatrix (0,60) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti253_analysis/ti253_sep_flux/flux_data_new/ti253_sep_The_fluxes_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti253_analysis/ti253_IFS_flux/ti253_IFS_The_fluxes_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_analysis/sep_flux/long_run/ti255_The_fluxes_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_analysis/sep_flux/short_run/ti255_sep_short_The_fluxes_vs.angle_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_analysis/sep_flux/shorter_run/ti255_sep_short_The_fluxes_vs.angle_%d.txt" %(i),"r")) crs.append( open( "/global/homes/g/giannos/xgc_python_dir/ti255_sep_short_All_fluxes_vs.angle_%d.txt" % (i), "r")) for i in range(0, 60): next(crs[i]) angle = [] eq_fl = [] mean_fl = [] tur_fl = [] ttf = [] total = [] check = [] R_value = [] Z_value = [] for i in range(0, 60): for columns in (raw.strip().split() for raw in crs[i]): angle.append(float(columns[0])) eq_fl.append(float(columns[1])) mean_fl.append(float(columns[2])) tur_fl.append(float(columns[3])) ttf.append(float(columns[4])) total.append(float(columns[5])) check.append(float(columns[6])) R_value.append(float(columns[7])) Z_value.append(float(columns[8])) excl_val_2 = [] for elem in np.where( np.isnan(eq_fl))[0][:]: #filter out nan values from fluxes excl_val_2.append(elem) for elem in sorted(excl_val_2, reverse=True): del angle[elem] del eq_fl[elem] del mean_fl[elem] del tur_fl[elem] del ttf[elem] del total[elem] del check[elem] del R_value[elem] del Z_value[elem] excl_val_3 = [] for elem in np.where(np.isnan(tur_fl))[0][:]: excl_val_3.append(elem) for elem in sorted(excl_val_3, reverse=True): del angle[elem] del eq_fl[elem] del mean_fl[elem] del tur_fl[elem] del ttf[elem] del total[elem] del check[elem] del R_value[elem] del Z_value[elem] B = [] #Keeping only one entry per angle, filtering out all others. for i in range(0, len(angle)): B.append(int(angle[i])) for i in range(0, len(B) - 1): excl_val = [] for j in range(i + 1, len(B)): diff = abs(B[i] - B[j]) if (diff < tolerance) or (diff > 360 - tolerance): excl_val.append(j) if len(excl_val) > 0: for elem in sorted(excl_val, reverse=True): del angle[elem] del eq_fl[elem] del mean_fl[elem] del tur_fl[elem] del ttf[elem] del total[elem] del check[elem] del R_value[elem] del Z_value[elem] del B[elem] nul_pos = angle.index(min(angle)) #start all values from zero angle angle = np.roll(angle, -nul_pos) eq_fl = np.roll(eq_fl, -nul_pos) mean_fl = np.roll(eq_fl, -nul_pos) tur_fl = np.roll(tur_fl, -nul_pos) ttf_fl = np.roll(eq_fl, -nul_pos) total_fl = np.roll(eq_fl, -nul_pos) check_fl = np.roll(eq_fl, -nul_pos) R_value = np.roll(R_value, -nul_pos) Z_value = np.roll(Z_value, -nul_pos) #print(angle) Rnorm = [ ] #returning the R-distance for the integral function. This is the r-distance from the center of the tokamak to the flux point. for r, z in zip(R_value, Z_value): Rnorm.append(r**2 + z**2) #Returning the distance from the axis of the tokamak for the R dzeta part of the integral. R = R_value + core.Rmaj check2 = eq_fl - mean_fl - ttf if verbose == True: # Plotting option fig, ax = plt.subplots() plt.xlabel("angle") plt.ylabel("fluxes") ax.plot(angle[:], eq_fl[:], 'b-', label='Equilibrium') ax.plot(angle[:], tur_fl[:], 'r-', label='Turbulent') ax.plot(angle[:], mean_fl[:], 'g-', label='Mean Field') ax.plot(angle[:], total[:], 'k-', label='Total') legend = ax.legend() #plt.plot(angle[:], check[:],'b-',angle[:], tur_fl[:],'r-') plt.show() fig, ax = plt.subplots() ax.plot(angle[:], check[:], 'b-', label='check') ax.plot(angle[:], tur_fl[:], 'r-', label='turbulent') legend = ax.legend() plt.show() fig, ax = plt.subplots() ax.plot(angle[:], eq_fl[:], 'b-', label='Equilibrium') ax.plot(angle[:], mean_fl[:], 'r-', label='Mean Field') ax.plot(angle[:], mean_fl[:] - ttf[:], 'g', label='check') legend = ax.legend() plt.show() new_file = open("All_new_fluxes_total.txt", 'a') new_file.write("angle" + "\t" + "Equilibrium" + "\t" + "Mean Field" + "\t" + "Turbulent" + "\t" + "ttf" + "\t" + "Total" + "\t" + "check" + "\t" + "R" + "\t" + "Z" + "\n") for i in range(0, len(angle)): new_file.write( str(angle[i]) + "\t" + str(eq_fl[i]) + "\t" + str(mean_fl[i]) + "\t" + str(tur_fl[i]) + "\t" + str(ttf[i]) + "\t" + str(total[i]) + "\t" + str(check[i]) + "\t" + str(R_value[i]) + "\t" + str(Z_value[i]) + "\n") new_file.close()
def file_read(verbose=False): tolerance = 0.5 crs = [] for i in range( 0, 60 ): #ti253-separatrix(0,60)/ti253-IFS(0,61)/ti255-separatrix (0,60)/ti262 (0,78) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_Scale_lengths_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_temperatures_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_densities_%d.txt" %(i),"r")) #crs.append(open("/global/homes/g/giannos/xgc_python_dir/ti255_phis_vs.angle_%d.txt" %(i),"r")) crs.append( open( "/global/homes/g/giannos/xgc_python_dir/ti255_magnetic_field_vs.angle_%d.txt" % (i), "r")) for i in range(0, 60): next(crs[i]) angle = [] Bp = [] B_mag = [] #phi = [] #dphi = [] #den = [] #lte = [] #lti = [] #ln = [] #R_value = [] #Z_value = [] for i in range(0, 60): for columns in (raw.strip().split() for raw in crs[i]): angle.append(float(columns[0])) Bp.append(float(columns[1])) B_mag.append(float(columns[2])) #phi.append(float(columns[1])) #dphi.append(float(columns[2])) #den.append(float(columns[1])) #lte.append(float(columns[1])) #lti.append(float(columns[2])) #ln.append(float(columns[3])) #R_value.append(float(columns[4])) #Z_value.append(float(columns[5])) excl_val_2 = [] for elem in np.where( np.isnan(Bp))[0][:]: #filter out nan values from fluxes excl_val_2.append(elem) for elem in sorted(excl_val_2, reverse=True): del angle[elem] del Bp[elem] del B_mag[elem] #del phi[elem] #del dphi[elem] #del den[elem] #del lte[elem] #del lti[elem] #del ln[elem] #del R_value[elem] #del Z_value[elem] excl_val_3 = [] for elem in np.where(np.isnan(B_mag))[0][:]: excl_val_3.append(elem) for elem in sorted(excl_val_3, reverse=True): del angle[elem] del Bp[elem] del B_mag[elem] #del phi[elem] #del dphi[elem] #del lte[elem] #del lti[elem] #del ln[elem] #del R_value[elem] #del Z_value[elem] #excl_val_4 = [] #for elem in np.where(np.isnan(ln))[0][:]: #excl_val_4.append(elem) #for elem in sorted(excl_val_4,reverse=True): #del angle[elem] #del lte[elem] #del lti[elem] #del ln[elem] #del R_value[elem] #del Z_value[elem] B = [] #Keeping only one entry per angle, filtering out all others. for i in range(0, len(angle)): B.append(int(angle[i])) for i in range(0, len(B) - 1): excl_val = [] for j in range(i + 1, len(B)): diff = abs(B[i] - B[j]) if (diff < tolerance) or (diff > 360 - tolerance): excl_val.append(j) if len(excl_val) > 0: for elem in sorted(excl_val, reverse=True): del B[elem] del angle[elem] del Bp[elem] del B_mag[elem] #del phi[elem] #del dphi[elem] #del den[elem] #del lte[elem] #del lti[elem] #del ln[elem] #del R_value[elem] #del Z_value[elem] nul_pos = angle.index(min(angle)) #start all values from zero angle angle = np.roll(angle, -nul_pos) Bp = np.roll(Bp, -nul_pos) B_mag = np.roll(B_mag, -nul_pos) #phi = np.roll(phi, -nul_pos) #dphi = np.roll(dphi, -nul_pos) #den = np.roll(den, -nul_pos) #lte = np.roll(lte,-nul_pos) #lti = np.roll(lti,-nul_pos) #ln = np.roll(ln,-nul_pos) #R_value = np.roll(R_value,-nul_pos) #Z_value = np.roll(Z_value,-nul_pos) print(angle) #Rnorm = []#returning the R-distance for the integral function. This is the r-distance from the center of the tokamak to the flux point. #for r,z in zip(R_value,Z_value): #Rnorm.append(r**2 + z**2) #Returning the distance from the axis of the tokamak for the R dzeta part of the integral. #R = R_value + core.Rmaj #etai = lti/ln #etae = lte/ln #new_file = open("etas.txt",'a') #new_file.write("angle"+"\t"+"eta_e"+"\t"+"eta_i"+"\t"+"R"+"\t"+"Z"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(etae[i])+"\t"+str(etai[i])+"\t"+str(R_value[i])+"\t"+str(Z_value[i])+"\n") #new_file.close() #new_file = open("density.txt",'a') #new_file.write("angle"+"\t"+"density"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(den[i])+"\n") #new_file.close() #new_file = open("phis_eq.txt",'a') #new_file.write("angle"+"\t"+"phi"+"\t"+"dphi"+"\n") #for i in range(0,len(angle)): #new_file.write(str(angle[i])+"\t"+str(phi[i])+"\t"+str(dphi[i])+"\n") #new_file.close() new_file = open("Sep_Mag_field.txt", 'a') new_file.write("angle" + "\t" + "Bp" + "\t" + "B" + "\n") for i in range(0, len(angle)): new_file.write( str(angle[i]) + "\t" + str(Bp[i]) + "\t" + str(B_mag[i]) + "\n") new_file.close() #plt.style.use('ggplot') #plt.title("Stability Parameters") #plt.xlabel("angle") #plt.ylabel(r"$\eta$") #plt.xlim([0.0,360.0]) #plt.ylim([0.0,3.0]) #plt.plot(angle[:], etai[:],'b',marker='o',label=r'$\eta_i$') #plt.plot(angle[:], etae[:],'r',marker='o',label=r'$\eta_e$') #plt.legend() #plt.show() if verbose == True: # Plotting option plt.style.use('ggplot') plt.title("Inverse Scale Lenghts") plt.xlabel("angle") plt.ylabel(r"$L^{-1}(m)^{-1}$") plt.xlim([0.0, 360.0]) plt.plot(angle[:], lti[:], 'b', marker='o', label=r'$L^{-1}_{T_i}$') plt.plot(angle[:], lte[:], 'r', marker='o', label=r'$L^{-1}_{T_e}$') plt.plot(angle[:], ln[:], 'g', marker='o', label=r'$L^{-1}_{n}$') plt.legend() plt.show() new_file = open("Scale_lengths_2.txt", 'a') new_file.write("angle" + "\t" + "LTe" + "\t" + "LTi" + "\t" + "Ln" + "\t" + "R" + "\t" + "Z" + "\n") for i in range(0, len(angle)): new_file.write( str(angle[i]) + "\t" + str(lte[i]) + "\t" + str(lti[i]) + "\t" + str(ln[i]) + "\t" + str(R_value[i]) + "\t" + str(Z_value[i]) + "\n") new_file.close() return angle #, lte, lti, ln, Rnorm, R