Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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()
Example #6
0
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