from diagnostic_reading import Meridional_Slice dirname = sys.argv[1] radatadir = dirname + '/Meridional_Slices/' datadir = dirname + '/data/' if (not os.path.isdir(datadir)): os.makedirs(datadir) files = os.listdir(radatadir) nfiles = len(files) files.sort() #times,dtimes,weights = np.load(datadir + 'mer_times.npy') mer0 = Meridional_Slice(radatadir + files[0], '') nr = mer0.nr nt = mer0.ntheta vavg = np.load(datadir + 'vavg.npy') vr_av = vavg[0] # make 100 bins for vr in the range [-300 m/s, 200 m/s] nbins = 100 binedges = np.linspace(-300., 200., nbins + 1) minvr = np.min(binedges) maxvr = np.max(binedges) counts = np.zeros((nt, nr, nbins)) for ii in range(nfiles):
vr_vp_dist_df = np.zeros((nt, nr, nbins_vr, nbins_vp)) for i in range(index_first, index_last): # Log the progress we are making! if (not opened_only_once): logfile = open(datadir + logname, 'a') else: opened_only_once = False logfile.write('adding %s/Meridional_Slices/%s to the distribution...\n'\ %(dirname.split('/')[-1],file_list[i])) logfile.close() # Print the message for good measure print('adding %s/Meridional_Slices/%s to the distribution...\n'\ %(dirname.split('/')[-1],file_list[i])) mer = Meridional_Slice(radatadir + file_list[i], '') niter = mer.niter nphi = mer.nphi # Loop through each phi-value the Meridional_Slice and each # time in it. for pindex in range(nphi): for tindex in range(mer.niter): # Compute the vr and vp values for this phi-value and time # convert data from (cm/s) --> (m/s) vr_mer = mer.vals[pindex,:,:,mer.lut[1],tindex]/100. vp_mer = mer.vals[pindex,:,:,mer.lut[3],tindex]/100. # Loop through the current slice in theta-r space, # binning each value of vr and s accordingly.
# self.time[0:niter-1] : The simulation time corresponding to each time step # self.version : The version code for this particular output (internal use) # self.lut : Lookup table for the different diagnostics output # """ from diagnostic_reading import Meridional_Slice import numpy as np import matplotlib.pyplot as plt timestep = '00005000' quantity_code = 64 # read in temperature remove_mean = True # remove the ell=0 mean tindex = 0 # Display the first timestep from the file pindex = 4 # Display the 5th phi-value output a = Meridional_Slice(timestep) #Set up the grid nr = a.nr ntheta = a.ntheta r = a.radius / np.max(a.radius) # We apply a shift in theta so that theta=0 corresponds to equator and the poles appear where we expect them to... theta = np.arccos(a.costheta) - np.pi / 2 radius_matrix, theta_matrix = np.meshgrid(r, theta) X = radius_matrix * np.cos(theta_matrix) Y = radius_matrix * np.sin(theta_matrix) qindex = a.lut[quantity_code] field = np.zeros((ntheta, nr), dtype='float64')