Exemplo n.º 1
0
 def readpar(self):
     """ Get some essential parameters from par file"""
     par = Parameters()
     par.Read_Pars('parameters{}'.format(self.fext))
     self.pnt = par.asnamedtuple()
     for nsp in range(self.pnt.n_spec):
         self.specname[nsp] = str(par.pardict['name{:1d}'.format(nsp + 1)])
         self.specname[nsp] = self.specname[nsp][1:-1]
     for k in self.units:
         if k in par.pardict:
             self.units[k] = par.pardict[k]
Exemplo n.º 2
0
 def readpar(self):
     """ Get some essential parameters from par file"""
     par = Parameters()
     par.Read_Pars('parameters{}'.format(self.fext))
     self.pnt = par.asnamedtuple()
     for nsp in range(self.pnt.n_spec):
         self.specname[nsp] = str(par.pardict['name{:1d}'.format(nsp+1)])
         self.specname[nsp] = self.specname[nsp][1:-1]
     for k in self.units:
         if k in par.pardict:
             self.units[k] = par.pardict[k]
def B1_ky_f_spectrum_Z_sum_MPI(suffix,iterdb_file_name,size,time_step,time_start,time_end,min_Z0=-0.03,max_Z0=0.03,\
    Outboard_mid_plane=False,plot=False,show=False,csv_output=False,pic_path='pic',csv_path='csv'):
    #Import the parameters from parameter file using ParIO
    par = Parameters()
    par.Read_Pars('parameters' + suffix)
    pars = par.pardict

    nky0 = int(pars['nky0'])

    #*********Start of Get geometry from magn_geometry***********
    #getting B field using read_write_geometry.py
    gpars, geometry = read_geometry_local(pars['magn_geometry'][1:-1] + suffix)
    #Get geom_coeff from ParIO Wrapper
    geom_type, geom_pars, geom_coeff = init_read_geometry_file(suffix, pars)

    real_R = geometry['gl_R']  #it is major radius in meter
    real_Z = geometry[
        'gl_z']  #it is height in meter, midland is 0, down is negative ,up is positive

    #*********End of Get geometry from magn_geometry***********

    #******************************************************************
    #********Start of Determin the length of the frequency array****************

    iky = nky0 - 1  #Scan the biggest ky, which has the largest doppler shift
    inz = int(len(real_Z) / 2.)
    frequency_kHZ, amplitude_frequency, amplitude_growth=\
        LN_apar_frequency_nz_iky(suffix,inz,iky,time_step,time_start,time_end,\
        plot,pic_path,csv_path,csv_output)

    len_freq = len(frequency_kHZ)
    print("len_freq=" + str(len_freq))

    #********End of Determin the length of the frequency array****************
    #******************************************************************

    #******************************************************************
    #********Start of Determin the length of the nZ****************
    Z_list = []
    nZ_list = []
    for nZ in range(len(real_Z)):
        Z = real_Z[nZ]
        if min_Z0 < Z and Z <= max_Z0:
            Z_list.append(real_Z[nZ])
            nZ_list.append(nZ)

    if Outboard_mid_plane == True:
        nZ_list = [int(len(real_Z) / 2)]
        Z_list = [real_Z[int(len(real_Z) / 2)]]

    len_nZ = len(nZ_list)

    print('nZ_list: ' + str(nZ_list))

    #********End of Determin the length of the nZ****************
    #******************************************************************

    #***********Start of FFT*******************************
    frequency_kHZ_ky = np.zeros((len_nZ, nky0, len_freq))
    amplitude_frequency_ky = np.zeros((len_nZ, nky0, len_freq))
    amplitude_growth_ky = np.zeros((len_nZ, nky0, len_freq))

    #***distribute the core************
    task_list = []
    total_run = len_nZ * nky0
    for i_Z in range(len_nZ):
        for i_ky in range(nky0):
            temp = [i_ky, nZ_list[i_Z]]
            task_list.append(temp)

    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()
    size = comm.Get_size()
    task_dis_list = task_dis(size, task_list)

    for i in range(size):
        if rank == i:
            sub_task_list = task_dis_list[rank]

            for element in sub_task_list:
                [i_ky, inZ] = element
                print("looking at " + str([i_ky, inZ]))
                amplitude_frequency, amplitude_frequency, amplitude_growth=\
                    LN_apar_frequency_nz_iky(suffix,inZ,i_ky,time_step,time_start,time_end,\
                    plot,pic_path,csv_path,csv_output)

                omegaDoppler_kHZ = Doppler_calc(suffix, i_ky, iterdb_file_name)

                new_frequency_kHZ_ky, new_amplitude_frequency, \
                    new_amplitude_growth=frequency_Doppler(frequency_kHZ,\
                    amplitude_frequency,amplitude_growth,omegaDoppler_kHZ)

                frequency_kHZ_ky[i_Z, i_ky, :] = new_frequency_kHZ_ky
                amplitude_frequency_ky[i_Z, i_ky, :] = new_amplitude_frequency
                amplitude_growth_ky[i_Z, i_ky, :] = new_amplitude_growth

#*********************MPI section scaning nZ and ky******************************

#***********Start of Sum of Z--Length-Weighted*************************

    frequency_kHZ_ky_sum_Z = np.zeros((nky0, len_freq))
    amplitude_frequency_ky_sum_Z = np.zeros((nky0, len_freq))
    amplitude_growth_ky_sum_Z = np.zeros((nky0, len_freq))

    for i_ky in range(nky0):
        sum_length_TEMP = 0.
        for i_Z in range(len(nZ_list)):
            nZ = nZ_list[i_Z]
            length=np.sqrt( (real_R[nZ]-real_R[nZ-1])**2. \
                   +(real_Z[nZ]-real_Z[nZ-1])**2. )
            sum_length_TEMP = sum_length_TEMP + length
            frequency_kHZ_ky_sum_Z[i_ky, :] = frequency_kHZ_ky_sum_Z[
                i_ky, :] + frequency_kHZ_ky[i_Z, i_ky, :] * length
            amplitude_frequency_ky_sum_Z[
                i_ky, :] = amplitude_frequency_ky_sum_Z[
                    i_ky, :] + amplitude_frequency_ky[i_Z, i_ky, :] * length
            amplitude_growth_ky_sum_Z[i_ky, :] = amplitude_growth_ky_sum_Z[
                i_ky, :] + amplitude_growth_ky[i_Z, i_ky, :] * length

        frequency_kHZ_ky_sum_Z[
            i_ky, :] = frequency_kHZ_ky_sum_Z[i_ky, :] / sum_length_TEMP
        amplitude_frequency_ky_sum_Z[
            i_ky, :] = amplitude_frequency_ky_sum_Z[i_ky, :] / sum_length_TEMP
        amplitude_growth_ky_sum_Z[
            i_ky, :] = amplitude_growth_ky_sum_Z[i_ky, :] / sum_length_TEMP

    #***********End of Sum of Z--Length-Weighted*************************

    #*************End of Interperlation******************
    df_min = min(
        abs(frequency_kHZ_ky_sum_Z[0, :-1] - frequency_kHZ_ky_sum_Z[0, 1:]))
    print("df_min: " + str(df_min))
    print("min(frequency_kHZ_ky_sum_Z): " +
          str(np.amin(frequency_kHZ_ky_sum_Z)))
    uni_freq = np.linspace(np.amin(frequency_kHZ_ky_sum_Z),\
                           np.amax(frequency_kHZ_ky_sum_Z),\
                           num=int(abs((np.amax(frequency_kHZ_ky_sum_Z)-np.amin(frequency_kHZ_ky_sum_Z))/df_min)*10.))
    len_uni_freq = len(uni_freq)

    print("len_uni_freq: " + str(len_uni_freq))
    print("frequency_kHZ_ky_sum_Z[i_ky,:]: " +
          str(len(frequency_kHZ_ky_sum_Z[i_ky, :])))
    print("amplitude_frequency_ky_sum_Z[i_ky,:]: " +
          str(len(amplitude_frequency_ky_sum_Z[i_ky, :])))

    frequency_kHZ_uni = np.zeros((nky0, len_uni_freq))
    amplitude_frequency_uni = np.zeros((nky0, len_uni_freq))
    new_frequency_kHZ_uni = np.zeros((nky0, len_uni_freq))

    for i_ky in range(nky0):
        frequency_kHZ_uni[i_ky, :] = uni_freq
        amplitude_frequency_uni[i_ky, :] = np.interp(
            uni_freq, frequency_kHZ_ky_sum_Z[i_ky, :],
            amplitude_frequency_ky_sum_Z[i_ky, :])
        new_frequency_kHZ_uni[i_ky, :] = np.interp(
            uni_freq, frequency_kHZ_ky_sum_Z[i_ky, :],
            frequency_kHZ_ky_sum_Z[i_ky, :])

    #*************end of Interperlation******************

    n_list, ky_list = ky_list_calc(suffix)

    #****************start of Output***********************
    for i_ky in range(len(n_list)):
        d = {
            'f(kHz)': frequency_kHZ_ky_sum_Z[i_ky, :],
            'B_R(Gauss)': amplitude_frequency_ky_sum_Z[i_ky, :]
        }
        df = pd.DataFrame(d, columns=['f(kHz)', 'B_R(Gauss)'])
        df.to_csv(csv_path + '/B_r_freq_n_' + str(n_list[i_ky]) + '.csv',
                  index=False)

        plt.clf()
        plt.plot(frequency_kHZ_ky_sum_Z[i_ky, :],
                 amplitude_frequency_ky_sum_Z[i_ky, :],
                 label='Original')
        plt.xlabel('frequency (kHz)')
        plt.ylabel('B_r(Gauss)')
        plt.title(r'$\bar{B}_r$(Gauss) spectrogram of n=' + str(n_list[i_ky]),
                  fontsize=18)
        plt.savefig(pic_path + '/B_r_freq_n_' + str(n_list[i_ky]) + '.png')

        plt.clf()
        plt.plot(frequency_kHZ_ky_sum_Z[i_ky, :],
                 amplitude_frequency_ky_sum_Z[i_ky, :],
                 label='Original')
        plt.plot(frequency_kHZ_uni[i_ky, :],
                 amplitude_frequency_uni[i_ky, :],
                 label='Intper',
                 alpha=0.5)
        plt.legend()
        plt.xlabel('frequency (kHz)')
        plt.ylabel('B_r(Gauss)')
        plt.title(r'$\bar{B}_r$(Gauss) spectrogram of n=' + str(n_list[i_ky]),
                  fontsize=18)
        plt.savefig(pic_path + '/Interp_B_r_freq_n_' + str(n_list[i_ky]) +
                    '.png')

    B1_plot = amplitude_frequency_ky_sum_Z
    f_plot = frequency_kHZ_ky_sum_Z
    ky_plot = np.zeros(np.shape(frequency_kHZ_ky_sum_Z))

    for i_ky in range(nky0):
        ky_plot[i_ky, :] = [ky_list[i_ky]] * len(
            frequency_kHZ_ky_sum_Z[i_ky, :])

    B1_plot = np.transpose(B1_plot)
    f_plot = np.transpose(f_plot)
    ky_plot = np.transpose(ky_plot)

    #print('shape'+str(np.shape(np.transpose(frequency_kHZ_ky_sum_Z))))

    if plot == True:
        plt.clf()
        plt.ylabel(r'$k_y \rho_i$', fontsize=10)
        plt.xlabel(r'$f(kHz)$', fontsize=10)
        plt.contourf(f_plot, ky_plot,
                     np.log(B1_plot))  #,level=[50,50,50])#,cmap='RdGy')
        for ky in ky_list:
            plt.axhline(
                ky, color='red', alpha=0.5
            )  #alpha control the transparency, alpha=0 transparency, alpha=1 solid
        plt.axhline(
            ky_list[0],
            color='red',
            alpha=0.5,
            label='n starts from' + str(n_list[0])
        )  #alpha control the transparency, alpha=0 transparency, alpha=1 solid
        plt.legend()
        plt.colorbar()
        plt.title(r'log($B_r$) contour plot', fontsize=10)
        plt.savefig('0B_r_contour.png')
        #plt.show()

    #****************end of Output***********************

    #**********start of Sum over ky*********************

    amplitude_frequency_uni_ky_sum = np.sum(amplitude_frequency_uni, axis=0)
    #amplitude_growth_uni_ky_sum=np.sum(amplitude_growth_uni,axis=0)

    #**********end of Sum over ky*********************
    if csv_output == True:
        d = {'f(kHz)': uni_freq, 'B_R(Gauss)': amplitude_frequency_uni_ky_sum}
        df = pd.DataFrame(d, columns=['f(kHz)', 'B_R(Gauss)'])
        df.to_csv('0B_r_from_' + str(max_Z0) + '_to_' + str(min_Z0) + '.csv',
                  index=False)

    if plot == True:
        plt.clf()
        plt.xlabel(r'$Frequency(kHz)$', fontsize=15)
        plt.ylabel(r'$\bar{B}_r(Gauss)$', fontsize=15)
        plt.plot(uni_freq, amplitude_frequency_uni_ky_sum, label='Inpter')
        #plt.legend()
        plt.title(r'$\bar{B}_r$(Gauss) spectrogram', fontsize=18)
        plt.savefig('0RIP_freq_spectrogram.png')

    if plot == True:
        plt.clf()
        plt.plot(uni_freq, amplitude_frequency_uni_ky_sum)
        plt.xlabel('frequency (kHz)')
        plt.ylabel('B_r(Gauss)')
        plt.title(r'$\bar{B}_r$(Gauss) spectrogram', fontsize=18)
        plt.savefig('0RIP_freq_spectrogram.png')
        if show == True:
            plt.show()

    return uni_freq, amplitude_frequency_uni_ky_sum, amplitude_frequency_uni
Exemplo n.º 4
0
    partemps = partemp.split('\n')
    for i in range(len(partemps)):
        do_again = True
        while do_again:
            if partemps[i] and partemps[i][-1] == ' ':
                partemps[i] = partemps[i][0:-1]
            else:
                do_again = False
        #if not 'scan_dims' in partemps[i]:
        #    partemps[i]=partemps[i][0:-1]
    partemp = '\n'.join(partemps)
    f = open('parameters', 'w')
    f.write(partemp)
    f.close()

par = Parameters()
par.Read_Pars('parameters')
#print "namelists:", par.nmldict
print "pardict:", par.pardict
print par.pardict['scan_dims']
print type(par.pardict['scan_dims'])
par.pardict['scan_dims'] = str(par.pardict['scan_dims'])
scan_dim_split = par.pardict['scan_dims'].split()
print len(scan_dim_split)
nspec = int(float(par.pardict['n_spec']))
print "nspec", nspec

spec1 = par.pardict['name1'][1:-1]
print "spec1", spec1
if nspec >= 2:
    spec2 = par.pardict['name2'][1:-1]
Exemplo n.º 5
0
iterdb_file_name = '/global/u1/m/maxcurie/max/Cases/DIIID175823_250k/DIIID175823.iterdb'
manual_Doppler = -7.  #if it is number, then manually put in the doppler shift in kHz for n=1, Type False if one to calculate the Doppler shift from ITERDB

#*********************End of the User block***********************
#*****************************************************************

max_Z0 = Delta_Z / 2.
min_Z0 = -Delta_Z / 2.

Outboard_mid_plane = False  #change to True if one wants to only want to look at outboard mid-plane
plot = False
show = False
csv_output = False

suffix = get_suffix()
par = Parameters()
par.Read_Pars('parameters' + suffix)
pars = par.pardict
time_start, time_end = start_end_time(suffix, pars)

if run_mode == 1:
    f,n1_f=\
        BES_f_spectrum_FFT(suffix,iterdb_file_name,manual_Doppler,min_Z0,max_Z0,\
                Outboard_mid_plane,time_step,time_start,time_end,\
                plot,show,csv_output,pic_path,csv_path)
    n1_BES0, n1_error = FFT_sum(f, n1_f, frequency_min, frequency_max,
                                frequency_all)
elif run_mode == 2:
    f,n1_f=\
        BES_f_spectrum_density(suffix,iterdb_file_name,manual_Doppler,min_Z0,max_Z0,\
                Outboard_mid_plane,time_step,time_start,time_end,percent_window,window_for_FFT,\
Exemplo n.º 6
0
    partemps=partemp.split('\n')
    for i in range(len(partemps)):
        do_again = True
        while do_again:
            if partemps[i] and partemps[i][-1]==' ':
                partemps[i]=partemps[i][0:-1]
            else:
                do_again = False
        #if not 'scan_dims' in partemps[i]:
        #    partemps[i]=partemps[i][0:-1]
    partemp='\n'.join(partemps)
    f=open('parameters','w')
    f.write(partemp)
    f.close()

par=Parameters()
par.Read_Pars('parameters')
#print "namelists:", par.nmldict
print "pardict:", par.pardict
print par.pardict['scan_dims']
print type(par.pardict['scan_dims'])
par.pardict['scan_dims'] = str(par.pardict['scan_dims'])
scan_dim_split=par.pardict['scan_dims'].split()
print len(scan_dim_split)
nspec=int(float(par.pardict['n_spec']))
print "nspec",nspec
 
spec1=par.pardict['name1'][1:-1]
print "spec1",spec1
if nspec>=2:
    spec2=par.pardict['name2'][1:-1]
Exemplo n.º 7
0
from nrgWrapper import read_from_nrg_files

suffix_list = [1, 2]
average_transport = 2.3
mark_size = 5

for i in range(len(suffix_list)):
    suffix = str(suffix_list[i])
    if suffix in ['dat', '.dat']:
        suffix = '.dat'
    else:
        suffix = '_' + suffix
    suffix_list[i] = suffix

#Import the parameters from parameter file using ParIO
par = Parameters()
par.Read_Pars('parameters' + str(suffix_list[0]))
pars = par.pardict


def get_nrg(suffix, pars):  #suffix in the format of "_1" or ".dat"
    if pars['n_spec'] == 1:
        time, nrge = read_from_nrg_files(pars, suffix, False)
    elif pars['n_spec'] == 2:
        time, nrgi, nrge = read_from_nrg_files(pars, suffix, False)
    elif pars['n_spec'] == 3:
        time, nrgi, nrge, nrgz = read_from_nrg_files(pars, suffix, False)
    return time, nrge


def plot_trace(nrge_es, nrge_em):
Exemplo n.º 8
0
            #if i!=len(path_list)-1:
            #    ax[i,j].set_xticklabels([])
            if j != 0:
                ax[i, j].set_yticklabels([])
else:
    fig, ax = plt.subplots(nrows=2, ncols=len(path_list), sharex=True)
    for i in range(2):
        for j in range(len(path_list)):
            #if i!=len(path_list)-1:
            #    ax[i,j].set_xticklabels([])
            if j != 0:
                ax[i, j].set_yticklabels([])

for i in range(len(path_list)):

    par = Parameters()
    par.Read_Pars(path_list[i] + 'parameters' + suffix)
    pars = par.pardict
    try:
        gpars, geometry = read_geometry_local(path_list[i] +
                                              pars['magn_geometry'][1:-1] +
                                              suffix)
    except:
        gpars, geometry = read_geometry_global(path_list[i] +
                                               pars['magn_geometry'][1:-1] +
                                               suffix)

    #field = fieldfile('field'+suffix,pars,False)
    field = fieldfile(path_list[i] + 'field' + suffix, pars)
    #print "time0",time0
    #print "field.tfld",field.tfld
Exemplo n.º 9
0
#parser.add_option('--conv','-c',action='store_const',const=1,help = 'Output rho_tor vs rho_pol')
#parser.add_option('--binfo','-p',action='store_const',const=1,help = 'Ouptut R, psi_pol, B_pol, B_tor')
#parser.add_option('--noplot','-n',action='store_const',const=1,help = 'Suppress plots')
options,args=parser.parse_args()
if len(args)<2:
    exit("""
Arguments must be 1.Case name 2.Run number (e.g. .dat or _1)
    \n""")
case_name = args[0]
run_number = args[1]

print "run_number", run_number
tmax = options.tmax
#print "tmax",tmax

par=Parameters()
par.Read_Pars('parameters'+run_number)
n_spec = int(float(par.pardict['n_spec']))
print 'n_spec',n_spec
nrgcols = int(float(par.pardict['nrgcols']))
rhostar = float(par.pardict['rhostar'])
print 'ncols',nrgcols

time,nrgi,nrge=get_nrg0(run_number,nspec=n_spec,ncols = nrgcols)

if not tmax:
    print "Identify end time for plots."

    plt.plot(time,nrgi[:,0],'x-')
    plt.xlabel(r'$t(L_{ref}/v_{ref})$',size=18)
    plt.ylabel(r'$n^2/(n_0\rho^*)^2$',size=18)