def setUp(self): self.filename_prefix = os.path.join(os.path.dirname(__file__), 'test_data_miranda/plot.mir') self.reader = mir.MirandaReader(self.filename_prefix, periodic_dimensions=(False,True,True)) self.lo = (0, 0, 0) self.hi = (319, 63, 0) self.reader.sub_domain = (self.lo, self.hi) self.reader.step = 0
def setUp(self): self.filename_prefix = os.path.join(os.path.dirname(__file__), 'test_data_miranda/plot.mir') self.serial_reader = mir.MirandaReader(self.filename_prefix, periodic_dimensions=(False, True, True)) self.serial_reader.step = 0 self.comm = MPI.COMM_WORLD self.num_ghosts = (1, 1, 1) self.reader = pdr.ParallelDataReader( MPI.COMM_WORLD, mir.MirandaReader(self.filename_prefix, periodic_dimensions=(False, True, True)), num_ghosts=self.num_ghosts) self.reader.step = 0 self.lo, self.hi = self.reader.interior_chunk
def plot_set2(tsteps, tvec, path): reader = mir.MirandaReader(path, periodic_dimensions=(False, True, True), verbose=True) print("Domain Size: {} ".format(reader._domain_size)) print("Variables available: {}".format(reader.varNames)) Nx, Ny, Nz = reader._domain_size W = np.zeros(len(tsteps)) t_legend = [] for tind, step in enumerate(tsteps): ################################## #Reading in full fields to figure out where subdomain and interface are reader.setStep(step) reader.setSubDomain(((0, 0, 0), (Nx - 1, Ny - 1, Nz - 1))) print("Figuring out subdomain at step {}".format(step)) YN2 = np.squeeze(np.array(reader.readData('Ideal1_01'))) YO2 = np.squeeze(np.array(reader.readData('Ideal1_02'))) YSF6 = np.squeeze(np.array(reader.readData('Ideal1_03'))) YAc = np.squeeze(np.array(reader.readData('Ideal1_04'))) YHeavy = YSF6 + YAc M = (YN2 / M_N2 + YO2 / M_O2 + YSF6 / M_SF6 + YAc / M_Ac)**(-1) #Find inner mixing zone (IMZ) IMZ_thresh = 0.9 XHeavy = M / M_Heavy * YHeavy XHeavy_bar = np.mean(np.mean(XHeavy, axis=2), axis=1) IMZ_crit = 4 * XHeavy_bar * (1 - XHeavy_bar) - IMZ_thresh for ind in range(len(IMZ_crit)): if IMZ_crit[ind] >= 0: IMZ_lo = ind break for ind in range(len(IMZ_crit)): ind2 = Nx - ind - 1 if IMZ_crit[ind2] >= 0: IMZ_hi = ind2 break IMZ_mid = np.argmax(IMZ_crit) middle_selection = 0.20 #select middle 20% of domain in x x1 = IMZ_mid - int(middle_selection / 2 * Nx) x2 = min(IMZ_mid + int(middle_selection / 2 * Nx), Nx - 1) reader.setSubDomain(((x1, 0, 0), (x2, Ny - 1, Nz - 1))) # Get coordinates based on subdomain x, y, z = reader.readCoordinates() x = x / 100.0 #convert from cm-> m y = y / 100.0 z = z / 100.0 nx = reader.chunk[0][1] - reader.chunk[0][0] ny = reader.chunk[1][1] - reader.chunk[1][0] nz = reader.chunk[2][1] - reader.chunk[2][0] ################################## # Reading in on subdomain reader.setStep(step) print("reading in Mass Fraction at step {}.".format(step)) YN2 = np.squeeze(np.array(reader.readData('Ideal1_01'))) YO2 = np.squeeze(np.array(reader.readData('Ideal1_02'))) YSF6 = np.squeeze(np.array(reader.readData('Ideal1_03'))) YAc = np.squeeze(np.array(reader.readData('Ideal1_04'))) YHeavy = YSF6 + YAc plt.figure() plt.title("t = {} ms".format(step * 1e-1)) plt.pcolor(1000 * x[:, :, int(Nz / 2)], 1000 * y[:, :, int(Nz / 2)], YHeavy[:, :, int(Nz / 2)]) plt.xlabel('x [mm]') plt.ylabel('y [mm]') ax = plt.gca() ax.set_aspect('equal') plt.colorbar() plt.clim([0, 1]) #Format plots print("Formatting Plots") for ind in plt.get_fignums(): plt.figure(ind) plt.tight_layout() return None
def plot_set2(tsteps, tvec, path): reader = mir.MirandaReader(path, periodic_dimensions=(False, True, True), verbose=True) print("Domain Size: {} ".format(reader._domain_size)) print("Variables available: {}".format(reader.varNames)) Nx, Ny, Nz = reader._domain_size W = np.zeros(len(tsteps)) t_legend = [] for tind, step in enumerate(tsteps): ################################## #Reading in full fields to figure out where subdomain and interface are reader.setStep(step) reader.setSubDomain(((0, 0, 0), (Nx - 1, Ny - 1, Nz - 1))) print("Figuring out subdomain at step {}".format(step)) YN2 = np.squeeze(np.array(reader.readData('Ideal1_01'))) YO2 = np.squeeze(np.array(reader.readData('Ideal1_02'))) YSF6 = np.squeeze(np.array(reader.readData('Ideal1_03'))) YAc = np.squeeze(np.array(reader.readData('Ideal1_04'))) YHeavy = YSF6 + YAc M = (YN2 / M_N2 + YO2 / M_O2 + YSF6 / M_SF6 + YAc / M_Ac)**(-1) #Find inner mixing zone (IMZ) IMZ_thresh = 0.9 XHeavy = M / M_Heavy * YHeavy XHeavy_bar = np.mean(np.mean(XHeavy, axis=2), axis=1) IMZ_crit = 4 * XHeavy_bar * (1 - XHeavy_bar) - IMZ_thresh for ind in range(len(IMZ_crit)): if IMZ_crit[ind] >= 0: IMZ_lo = ind break for ind in range(len(IMZ_crit)): ind2 = Nx - ind - 1 if IMZ_crit[ind2] >= 0: IMZ_hi = ind2 break IMZ_mid = np.argmax(IMZ_crit) middle_selection = 0.40 #select middle 20% of domain in x x1 = IMZ_mid - int(middle_selection / 2 * Nx) x2 = min(IMZ_mid + int(middle_selection / 2 * Nx), Nx - 1) reader.setSubDomain(((x1, 0, 0), (x2, Ny - 1, Nz - 1))) # Get coordinates based on subdomain x, y, z = reader.readCoordinates() x = x / 100.0 #convert from cm-> m y = y / 100.0 z = z / 100.0 nx = reader.chunk[0][1] - reader.chunk[0][0] ny = reader.chunk[1][1] - reader.chunk[1][0] nz = reader.chunk[2][1] - reader.chunk[2][0] ################################## # Reading in on subdomain reader.setStep(step) print("reading in Mass Fraction at step {}.".format(step)) YN2 = np.squeeze(np.array(reader.readData('Ideal1_01'))) YO2 = np.squeeze(np.array(reader.readData('Ideal1_02'))) YSF6 = np.squeeze(np.array(reader.readData('Ideal1_03'))) YAc = np.squeeze(np.array(reader.readData('Ideal1_04'))) YHeavy = YSF6 + YAc print("reading in density at step {}.".format(step)) density = 1e3 * np.squeeze(np.array(reader.readData('density'))) print("reading in pressure at step {}.".format(step)) pressure = 1e-1 * np.squeeze(np.array(reader.readData('pressure'))) #Calculating Stats print("Computing Diffusion Properties") rho_bar = np.mean(np.mean(density, axis=2), axis=1) Cp = YN2 * Cp_N2 + YO2 * Cp_O2 + YSF6 * Cp_SF6 + YAc * Cp_Ac Cv = YN2 * Cv_N2 + YO2 * Cv_O2 + YSF6 * Cv_SF6 + YAc * Cv_Ac gamma = Cp / Cv M = (YN2 / M_N2 + YO2 / M_O2 + YSF6 / M_SF6 + YAc / M_Ac)**(-1) T = M * pressure / (density * Ru) c = (gamma * pressure / density)**0.5 del YAc, gamma #Find inner mixing zone (IMZ) IMZ_thresh = 0.9 XHeavy = M / M_Heavy * YHeavy XHeavy_bar = np.mean(np.mean(XHeavy, axis=2), axis=1) IMZ_crit = 4 * XHeavy_bar * (1 - XHeavy_bar) - IMZ_thresh for ind in range(len(IMZ_crit)): if IMZ_crit[ind] >= 0: IMZ_lo = ind break for ind in range(len(IMZ_crit)): ind2 = nx - ind - 1 if IMZ_crit[ind2] >= 0: IMZ_hi = ind2 break IMZ_mid = np.argmax(IMZ_crit) #Mole Fraction Variance XHeavy_prime = XHeavy - XHeavy_bar.reshape((nx, 1, 1)) XHeavy_variance = np.mean(np.mean(XHeavy_prime**2, axis=2), axis=1) #Compute Turbulent Mach Number print("reading in velocity at step {}.".format(step)) velocity = np.zeros((3, nx, ny, nz)) velocity[0, :, :, :] = 1e-2 * np.squeeze( np.array(reader.readData('velocity-0'))) velocity[1, :, :, :] = 1e-2 * np.squeeze( np.array(reader.readData('velocity-1'))) velocity[2, :, :, :] = 1e-2 * np.squeeze( np.array(reader.readData('velocity-2'))) u_tilde = np.mean(np.mean(velocity[0, :, :, :] * density, axis=2), axis=1) / np.mean(np.mean(density, axis=2), axis=1) u_doubleprime = velocity[0, :, :, :] - u_tilde.reshape((nx, 1, 1)) #Density Spectra t_legend.append("t = {} ms".format(step * 1e-1)) k_rad, rho_spec_rad = fh.radial_spectra( x[:, 0, 0], y[0, :, 0], z[0, 0, :], density[IMZ_lo:IMZ_hi + 1, :, :]) plt.figure(2) plt.loglog(k_rad, rho_spec_rad) plt.xlabel('Radial Wavenumber [m-1]') plt.ylabel("Density spectra") #Energy Spectra energy_for_spectra = density * u_doubleprime / (np.reshape( rho_bar, (nx, 1, 1)))**0.5 k_rad, rhoU_spec_rad = fh.radial_spectra( x[:, 0, 0], y[0, :, 0], z[0, 0, :], energy_for_spectra[IMZ_lo:IMZ_hi + 1, :, :]) plt.figure(3) plt.loglog(k_rad, rhoU_spec_rad) plt.xlabel('Radial Wavenumber [m-1]') plt.ylabel("Energy Spectra") #Format plots print("Formatting Plots") t_legend.append("-3/2 slope") for ind in plt.get_fignums(): plt.figure(ind) plt.loglog(k_rad, 1e2 * k_rad**(-1.5), 'k--') plt.legend(t_legend) plt.tight_layout() return None
import matplotlib import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable, axes_size #Local Modules import floatpy.readers.miranda_reader as mir # Set up default plotting params = {'legend.fontsize': 14, 'legend.handlelength': 2, 'font.size': 16} matplotlib.rcParams.update(params) if __name__ == '__main__': #Read in a file and plot something reader = mir.MirandaReader( "/home/jrwest/Research/FloATPy_moving_grid/data/Tritschler/RM_CTR_3D_64/plot.mir", periodic_dimensions=(False, True, True), verbose=True) print("Domain Size: {} ".format(reader._domain_size)) x, y, z = reader.readCoordinates() print("Variables available: {}".format(reader.varNames)) tsteps = (15, 20, 22, 27, 50) for step in tsteps: reader.setStep(step) YN2 = np.array(reader.readData('Ideal1_01')) YO2 = np.array(reader.readData('Ideal1_02')) YSF6 = np.array(reader.readData('Ideal1_03'))