def getIntData(h5fname, dataName, irtype=0): mdata = fdata(h5fname) h5in = tables.open_file(h5fname, 'r') npts = h5in.root._f_get_child(dataName).shape[0] meshName = h5in.root._f_get_child(dataName)._v_attrs.vsMesh mmin = h5in.root._f_get_child(meshName)._v_attrs.vsLowerBounds mmax = h5in.root._f_get_child(meshName)._v_attrs.vsUpperBounds lenz2 = mmax - mmin dz2 = lenz2 / (npts - 1) z2axis = (np.arange(0, npts)) * dz2 dataT = h5in.root._f_get_child(dataName).read() if (irtype == iav): if (npts > 1): dataR = np.trapz(dataT, x=z2axis) / lenz2 # average else: dataR = dataT elif (irtype == ipeak): dataR = np.max(dataT) # peak else: dataR = dataT # temporal h5in.close() return dataR
def getPow(h5fname, cfr=None, dfr=None, irtype = 0, qScale = None): mdata = fdata(h5fname) if (qScale==None): qScale = mdata.vars.qscale lenz2 = (mdata.vars.nz2-1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar xf, yf = readField(h5fname) if ((cfr != None) and (dfr != None)): xf = filterField(xf, cfr, dfr, mdata.vars) yf = filterField(yf, cfr, dfr, mdata.vars) if (((irtype == ipeak) or (irtype == icycav)) and (mdata.vars.q1d==1)): xf, phx = getMagPhase.getMagPhase(xf, mdata.vars.nz2, mdata.vars.rho, lenz2) yf, phy = getMagPhase.getMagPhase(yf, mdata.vars.nz2, mdata.vars.rho, lenz2) intens = np.square(xf) + np.square(yf) # intens = np.square(yf) #tintens = getFiltPow(ij, dfr, cfr) #ens[fcount] = np.trapz(tintens, x=z2axis) # trar = 2. * np.pi * np.square(35.e-6) / mdata.vars.lg / mdata.vars.lc transArea = mdata.vars.transArea if (mdata.vars.q1d==1): if (irtype == iav): power = np.trapz(intens, x=z2axis) / lenz2 * transArea # average elif (irtype == ipeak): power = np.max(intens * transArea) # peak else: power = intens * transArea # temporal else: tintensx = np.trapz(intens, x=xaxis, axis=0) tintensxy = np.trapz(tintensx, x=yaxis, axis=0) if (irtype == iav): power = np.trapz(tintensxy, x=z2axis) / lenz2 elif (irtype == ipeak): power = np.max(intens * transArea) # * transverse area??? else: power = tintensxy if (qScale == 0): power = power * mdata.vars.powScale # * mdata.vars.lc / mdata.vars.c0 return power
def plotPowVsZ(basename, cfr=None, dfr=None): filelist = getFileSlices(basename) print filelist mdata = fdata(filelist[0]) sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar fcount = 0 pows = np.zeros(len(filelist)) zData = np.zeros(len(filelist)) if (mdata.vars.iMesh == iPeriodic): gAv = 1 # for average... else: gAv = 2 # for peak... for ij in filelist: pows[fcount] = getPow(ij, cfr, dfr, irtype=gAv, qScale=0) zData[fcount] = getZData(ij) fcount += 1 # plotLab = 'SI Power' # axLab = 'Power (W)' if (mdata.vars.iMesh == iPeriodic): plotLab = 'Power' axLab = 'Power (W)' else: plotLab = 'Peak Power' axLab = 'Power (W)' ax1 = plt.subplot(111) plt.semilogy(zData, pows, label=plotLab) #ax1.set_title(axLab) plt.xlabel('z (m)') plt.ylabel(axLab) #plt.legend() if ((cfr == None) or (dfr == None)): opname = basename + "-unfiltered-power.png" else: opname = basename + "-filt-" + str(cfr) + "-" + str(dfr) + "-power.png" plt.savefig(opname)
def plotPowVsZ(basename): filelist = getIntFileSlices(basename) print filelist mdata = fdata(filelist[0]) sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar fcount = 0 pows = np.zeros(len(filelist)) zData = np.zeros(len(filelist)) if (mdata.vars.iMesh == iPeriodic): gAv = iav # for average... plotLab = 'Power' axLab = 'Power (W)' else: gAv = ipeak # for peak... plotLab = 'Peak Power' axLab = 'Power (W)' for ij in filelist: pows[fcount] = getPowFromInt(ij, irtype=gAv, qScale=0) zData[fcount] = getZData(ij) fcount += 1 ax1 = plt.subplot(111) plt.semilogy(zData, pows, label=plotLab) #ax1.set_title(axLab) plt.xlabel('z (m)') plt.ylabel(axLab) #plt.legend() opname = basename + "-unfiltered-power.png" plt.savefig(opname) # plt.show() outfilename = 'powers.h5' h5o = tables.open_file(outfilename, 'w') h5o.create_array('/', 'power_SI', pows) h5o.create_array('/', 'z_SI', zData) h5o.close()
def plotMagPhase(h5fname): mdata = fdata(h5fname) lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 saxis = z2axis * mdata.vars.lc xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xf, yf = readField(h5fname, f1D=1) intens = np.square(xf) + np.square(yf) mgx, phx = getMagPhase(xf, mdata.vars.nz2, mdata.vars.rho, lenz2) mgy, phy = getMagPhase(yf, mdata.vars.nz2, mdata.vars.rho, lenz2) ax1 = plt.subplot(311) plt.plot(z2axis, xf, label='x-field') plt.plot(z2axis, yf, label='y-field') plt.xlabel('z2') plt.ylabel('Fields') plt.legend() # example for adding subplot plt.subplot(312, sharex=ax1) plt.plot(z2axis, mgx, label='x-field') plt.plot(z2axis, mgy, label='y-field') plt.xlabel('z2') plt.ylabel('Mag') axes = plt.subplot(313, sharex=ax1) plt.plot(z2axis, phx, label='x-field') plt.plot(z2axis, phy, label='y-field') plt.xlabel('z2') plt.ylabel('Phase') axes.set_ylim([0, 2. * pi]) nameparts = h5fname.split('_') basename = nameparts[0] z = mdata.vars.z plt.savefig(basename + "_magPhase_z_" + str(z) + ".png")
def plotBeamRVsZ(basename): filelist = getFileSlices(basename) #print filelist mdata = fdata(filelist[0]) sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar fcount = 0 radx = np.zeros(len(filelist)) rady = np.zeros(len(filelist)) zData = np.zeros(len(filelist)) gAv = 1 for ij in filelist: radx[fcount] = getIntData(ij, 'sigmaXSI', irtype=gAv) rady[fcount] = getIntData(ij, 'sigmaYSI', irtype=gAv) zData[fcount] = getZData(ij) fcount += 1 # plotLab = 'SI Power' # axLab = 'Power (W)' plotLab = r'$\sigma_x$' axLab = r'$\sigma_x, \sigma_y (m)$' ax1 = plt.subplot(111) plt.plot(zData, radx, label=r'$\sigma_x$') plt.plot(zData, rady, label=r'$\sigma_y$') #ax1.set_title(axLab) plt.xlabel('z (m)') plt.ylabel(axLab) plt.legend() plt.tight_layout() opname = basename + "-beamRadiusVsZ.png" plt.savefig(opname)
def plotPowVsZ2(fname): mdata = fdata(fname) sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2-1) * mdata.vars.dz2 z2axis = (np.arange(0,mdata.vars.nz2)) * mdata.vars.dz2 saxis = z2axis * mdata.vars.lc * 1e6 xaxis = (np.arange(0,mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0,mdata.vars.ny)) * mdata.vars.dybar z = mdata.vars.z gAv = iav # for average... plotLab = 'Power' axLab = 'Power (W)' pows = getPowFromInt(fname, irtype = itemp, qScale = 0) ax1 = plt.subplot(111) plt.plot(saxis, pows) plt.xlabel(r'$ct-z (\mu m)$') plt.ylabel(axLab) ax1.set_title('z = ' + str(z) + 'm') #plt.legend() nameparts = fname.split('_') basename = nameparts[0] #plt.show() plt.savefig(basename + "-powvsz2-step-" + str(mdata.vars.step) + "-z-" + \ str(z) + "m" + ".png")
def getPowFromInt(h5fname, cfr=None, dfr=None, irtype=0, qScale=None): mdata = fdata(h5fname) if (qScale == None): qScale = mdata.vars.qscale lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar power = getIntData(h5fname, 'powerSI', irtype=irtype) return power
def readField(h5fname, f1D=0, xn=None, yn=None): mdata = fdata(h5fname) h5f = tables.open_file(h5fname, mode='r') # To select temporal slice of field.... #z2s = 50 #z2e = 80 #z2si = int(np.floor(z2s / dz2)) #z2ei = int(np.floor(z2e / dz2)) #z2axis = (np.arange(z2si,z2ei) - z2si) * dz2 # ...otherwise take full field if (xn == None): xn = int(np.rint(mdata.vars.nx / 2)) if (yn == None): yn = int(np.rint(mdata.vars.ny / 2)) if (mdata.vars.q1d == 1): xf = h5f.root.aperp[:, 0] else: if (f1D == 0): xf = h5f.root.aperp[:, :, :, 0] else: print(xn, yn) print(shape(h5f.root.aperp)) xf = h5f.root.aperp[xn, yn, :, 0] # xfs = xf[z2si:z2ei] # for selecting slice... if (mdata.vars.q1d == 1): yf = h5f.root.aperp[:, 1] else: if (f1D == 0): yf = h5f.root.aperp[:, :, :, 1] else: yf = h5f.root.aperp[xn, yn, :, 1] h5f.close() return xf, yf
def plotEn(basename): filelist = getIntFileSlices(basename) print filelist mdata = fdata(filelist[0]) sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 saxis = z2axis * mdata.vars.lc * 1e6 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar z = mdata.vars.z gAv = iav # for average... plotLab = 'Energy' axLab = 'Energy (J)' ens = np.zeros(len(filelist)) zData = np.zeros(len(filelist)) fcount = 0 for ij in filelist: ens[fcount] = getEnFromInt(ij, qScale=0) zData[fcount] = getZData(ij) fcount += 1 ax1 = plt.subplot(111) plt.semilogy(zData, ens) plt.xlabel(r'$z (m)$') plt.ylabel(axLab) ax1.set_title('Energy') #plt.legend() opname = basename + "-Energy.png" plt.savefig(opname)
def getEnFromInt(h5fname, qScale=None): mdata = fdata(h5fname) if (qScale == None): qScale = mdata.vars.qscale lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 saxis = z2axis * mdata.vars.lc taxis = saxis / mdata.vars.c0 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar power = getIntData(h5fname, 'powerSI', irtype=itemp) energy = np.trapz(power, x=taxis) return energy
def getFilteredFields(h5fname, cfr=None, dfr=None, qAv = 0, qScale = None): mdata = fdata(h5fname) if (qScale==None): qScale = mdata.vars.qscale lenz2 = (mdata.vars.nz2-1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar xf, yf = readField(h5fname) if ((cfr != None) and (dfr != None)): xf = filterField(xf, cfr, dfr, mdata.vars) yf = filterField(yf, cfr, dfr, mdata.vars) return xf, yf
def plotPowVsZ(basename): filelist = getIntFileSlices(basename) print(filelist) mdata = fdata(filelist[0]) fcount = 0 pows = np.zeros(len(filelist)) zData = np.zeros(len(filelist)) if (mdata.vars.iMesh == iPeriodic): gAv = iav # for average... plotLab = 'Power' axLab = 'Power (W)' else: gAv = ipeak # for peak... plotLab = 'Peak Power' axLab = 'Power (W)' for ij in filelist: pows[fcount] = getPowFromInt(ij, irtype = gAv, qScale = 0) zData[fcount] = getZData(ij) fcount += 1 plt.semilogy(zData, pows, label=plotLab) plt.xlabel('z (m)') plt.ylabel(axLab) opname = basename + "-unfiltered-power.png" plt.savefig(opname) outfilename = 'powers.h5' h5o = tables.open_file(outfilename,'w') h5o.create_array('/','power_SI',pows) h5o.create_array('/','z_SI',zData) h5o.close()
def plot_intensity(file_name_in): # iTemporal = 0 # iPeriodic = 1 ################################################################## # ## filename = file_name_in filename_base = (file_name_in.split('.')[0]).strip() mdata = fdata(filename) # H5PY option below #hf=h5py.File(filename, 'r') #n1=hf.get('aperp') #n1=np.array(n1) hf = tables.open_file(file_name_in, 'r') n1 = hf.root.aperp.read() xpol = n1[0, :, :, :] ypol = n1[1, :, :, :] z2axis = np.multiply((np.arange(0, mdata.vars.nz2)), mdata.vars.dz2) intensity2 = np.divide( np.trapz(np.add(np.square(xpol), np.square(ypol)), x=z2axis, axis=0), (np.multiply(mdata.vars.nz2, mdata.vars.dz2))) intensity = np.transpose(intensity2) dx = mdata.vars.dx dy = mdata.vars.dy nx = mdata.vars.nx ny = mdata.vars.ny #x=(np.arange(-nx/2,nx/2)*dx*1e3) #y=(np.arange(-ny/2,ny/2)*dy *1e3) #X,Y=np.meshgrid(x,y) # font = matplotlib.font_manager.FontProperties(family='serif') plt.clf() plt.figure(1) ax2 = plt.subplot(111) ax2.set_ylabel(r'y [$mm$]', fontsize=12) ax2.yaxis.set_major_formatter(mtick.ScalarFormatter(useMathText=True)) ax2.ticklabel_format(style='sci', axis='y', scilimits=(0, 0)) ax2.set_xlabel(r'x [$mm$]', fontsize=12) ax2.xaxis.set_major_formatter(mtick.ScalarFormatter(useMathText=True)) ax2.ticklabel_format(style='sci', axis='x', scilimits=(0, 0)) plt.imshow(np.multiply(intensity, mdata.vars.intensScale), cmap='jet', interpolation='bilinear', extent=[ -nx * dx * 1e3 / 2., nx * dx * 1e3 / 2., -ny * dy * 1e3 / 2., ny * dy * 1e3 / 2. ]) #plt.xlabel('x ($mm$)', fontproperties=font) #plt.ylabel('y ($mm$)', fontproperties=font) #============================================================================== # ax= plt.axes() # for label in ax.get_xticklabels(): # label.set_fontproperties(font) # for label in ax.get_yticklabels(): # label.set_fontproperties(font) #============================================================================== #cbar=plt.colorbar() def fmt(x, pos): a, b = '{:.1e}'.format(x).split('e') b = int(b) #return r'${} {}$'.format(a, b) return r'${} \times 10^{{{}}}$'.format(a, b) cbar = plt.colorbar(format=ticker.FuncFormatter(fmt), label=r'Intensity [$W/m^2$]') #cbar=plt.colorbar(format=ticker.ScalarFormatter(useMathText=True),label='Intensity $W/m^2$') #cbar.set_label(family=font) for label in cbar.ax.yaxis.get_ticklabels(): label.set_family('serif') plt.savefig("Intensity" + filename_base + ".png") plt.show()
def plotPowZZ2(basename, cfr=None, dfr=None): filelist = getFileSlices(basename) print(filelist) mdata = fdata(filelist[0]) sampleFreq = 1.0 / mdata.vars.dz2 lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange( 0, mdata.vars.nz2)) * mdata.vars.dz2 * mdata.vars.lc * 1.e6 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar fcount = 0 pows = np.zeros(len(filelist)) zData = np.zeros(len(filelist)) # if (mdata.vars.iMesh == iPeriodic): # gAv = 1 # for average... # else: # gAv = 2 # for peak... gAv = 3 # for cycle averaged pows = np.ones([len(filelist), mdata.vars.nz2]) powsN = np.ones([len(filelist), mdata.vars.nz2]) for ij in filelist: pows[-1 - fcount, :] = getPow(ij, cfr, dfr, irtype=gAv, qScale=0) mv = np.max(pows[-1 - fcount, :]) if (mv != 0.): powsN[-1 - fcount, :] = pows[-1 - fcount, :] / np.max( pows[-1 - fcount, :]) else: powsN[-1 - fcount, :] = 0. zData[fcount] = getZData(ij) fcount += 1 # print fcount # plotLab = 'SI Power' # axLab = 'Power (W)' # if (mdata.vars.iMesh == iPeriodic): # plotLab = 'SI Power' # axLab = 'Power (W)' # else: # plotLab = 'SI Peak Power' axLab = 'Power (W)' ax1 = plt.subplot(111) im = plt.imshow(powsN, aspect='auto', interpolation='bilinear', \ extent=[z2axis[0], z2axis[-1], zData[0], zData[-1]]) ax1.set_title('Power') plt.xlabel(r'$ct-z (\mu m)$') plt.ylabel('z (m)') cb = plt.colorbar(im) plt.tight_layout() #plt.legend() if ((cfr == None) or (dfr == None)): opname = basename + "-powerALL.png" else: opname = basename + "-filt-" + str(cfr) + "-" + str( dfr) + "-powerALL.png" plt.savefig(opname)
def plotSpecPow(h5fname, ftplottype=None): mdata = fdata(h5fname) # To select temporal slice of field.... #z2s = 50 #z2e = 80 #z2si = int(np.floor(z2s / dz2)) #z2ei = int(np.floor(z2e / dz2)) #z2axis = (np.arange(z2si,z2ei) - z2si) * dz2 # ...otherwise take full field lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar xf, yf = readField(h5fname, f1D=1) #xf = np.concatenate((xf, xf)) #xf = np.concatenate((xf, xf)) #xf = np.concatenate((xf, xf)) #xf = np.concatenate((xf, xf)) #xf[mdata.vars.nz2:] = 0. #yf = np.concatenate((yf, yf)) # [yf, yf, yf, yf] #yf = np.concatenate((yf, yf)) #yf = np.concatenate((yf, yf)) #yf = np.concatenate((yf, yf)) #yf[mdata.vars.nz2:] = 0. intens = np.square(xf) + np.square(yf) #npads = np.int(np.round(mdata.vars.nz2 / 2)) npads = mdata.vars.nz2 xff = np.fft.fft(xf, n=npads) yff = np.fft.fft(yf, n=npads) NumUniquePts = np.int_(np.ceil((npads + 1) / 2)) fs = (mdata.vars.nz2) / lenz2 #sampling frequency ftfieldtemp = np.zeros(NumUniquePts + 1) ftfieldtemp = xff[0:NumUniquePts] ftxpower = np.square(np.absolute(ftfieldtemp)) if np.remainder(npads, 2) == 1: ftxpower[1:] = ftxpower[1:] * 2 else: ftxpower[1:-1] = ftxpower[1:-1] * 2 ftfieldtemp = yff[0:NumUniquePts] ftypower = np.square(np.absolute(ftfieldtemp)) if np.remainder(npads, 2) == 1: ftypower[1:] = ftypower[1:] * 2 else: ftypower[1:-1] = ftypower[1:-1] * 2 #print str(mdata.vars.lr) #ftxaxis = (np.arange(0,NumUniquePts)*(fs/(npads)))*(4.*np.pi*mdata.vars.rho) #ftxaxis[1:] = 1 / ftxaxis[1:] #ftxaxis[0] = ftxaxis[-1] + 1 if (ftplottype == 1): ftxaxis = mdata.vars.lr / ((np.arange(0, NumUniquePts) * (fs / (npads))) * (4. * np.pi * mdata.vars.rho)) sp_x_axis = r'$\lambda (m)$' else: ftxaxis = (np.arange(0, NumUniquePts) * (fs / (npads))) * (4. * np.pi * mdata.vars.rho) sp_x_axis = r'$\omega / \omega_r$' sp_title = 'Intensity Spectrum' # z2axis = [z2axis,z2axis,z2axis,z2axis] ax1 = plt.subplot(211) plt.plot(z2axis, xf, label='x field') plt.plot(z2axis, yf, label='y field') plt.xlabel(r'$\bar{z}_2$', fontsize=16) plt.ylabel('Fields', fontsize=16) plt.legend() # example for adding subplot axes = plt.subplot(212) plt.xlabel(sp_x_axis, fontsize=16) plt.ylabel('Intensity', fontsize=16) #print np.len(ftxaxis), np.len(ftxpower) if ftplottype == 1: plt.loglog(ftxaxis, ftxpower, label='x intensity') plt.plot(ftxaxis, ftypower, label='y intensity') plt.plot(ftxaxis, ftxpower + ftypower, label='combined') # axes.set_xlim([5.8e-10, 7.2e-10]) else: plt.semilogy(ftxaxis, ftxpower, label='x intensity') plt.plot(ftxaxis, ftypower, label='y intensity') plt.plot(ftxaxis, ftxpower + ftypower, label='combined') axes.set_xlim([0.8, 1.2]) plt.legend() nameparts = h5fname.split('_') basename = nameparts[0] z = mdata.vars.z plt.tight_layout() plt.savefig(basename + "-spec-intensity-z-" + str(z) + ".png")
def plotSpecInt(h5fname, ftplottype=None): mdata = fdata(h5fname) # To select temporal slice of field.... #z2s = 50 # start in units of z2 #z2e = 80 # End in units of z2 # (everything outside this domain will be set to zero) #z2si = int(np.floor(z2s / dz2)) #z2ei = int(np.floor(z2e / dz2)) #z2axis = (np.arange(z2si,z2ei) - z2si) * dz2 # ...otherwise take full field lenz2 = (mdata.vars.nz2-1) * mdata.vars.dz2 z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2 xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar npads = mdata.vars.nz2 NumUniquePts = np.int_(np.ceil((npads+1)/2)) fs = (mdata.vars.nz2)/lenz2 #sampling frequency # xpows = np.zeros(NumUniquePts) # ypows = np.zeros(NumUniquePts) ftfieldtemp = np.zeros(NumUniquePts) # for ix in np.arange(0, mdata.vars.nx): # for iy in np.arange(0, mdata.vars.ny): # print ix, iy xf, yf = readField(h5fname, f1D=1) xff = np.fft.fft(xf) yff = np.fft.fft(yf) ftfieldtemp = xff[0:NumUniquePts] ftxpower = np.square(np.absolute(ftfieldtemp)) if np.remainder(npads,2) == 1: ftxpower[1:] = ftxpower[1:]*2 else: ftxpower[1:-1] = ftxpower[1:-1]*2 # xpows = xpows + ftxpower ftfieldtemp = yff[0:NumUniquePts] ftypower = np.square(np.absolute(ftfieldtemp)) if np.remainder(npads, 2) == 1: ftypower[1:] = ftypower[1:]*2 else: ftypower[1:-1] = ftypower[1:-1]*2 # ypows = ypows + ftypower # For padding with zeros!!! #xf = np.concatenate((xf, xf)) #xf = np.concatenate((xf, xf)) #xf = np.concatenate((xf, xf)) #xf = np.concatenate((xf, xf)) #xf[mdata.vars.nz2:] = 0. #yf = np.concatenate((yf, yf)) # [yf, yf, yf, yf] #yf = np.concatenate((yf, yf)) #yf = np.concatenate((yf, yf)) #yf = np.concatenate((yf, yf)) #yf[mdata.vars.nz2:] = 0. #intens = np.square(xf) + np.square(yf) #npads = np.int(np.round(mdata.vars.nz2 / 2)) #print str(mdata.vars.lr) #ftxaxis = (np.arange(0,NumUniquePts)*(fs/(npads)))*(4.*np.pi*mdata.vars.rho) #ftxaxis[1:] = 1 / ftxaxis[1:] #ftxaxis[0] = ftxaxis[-1] + 1 if (ftplottype == 1): ftxaxis = mdata.vars.lr / ((np.arange(0,NumUniquePts)*(fs/(npads)))*(4.*np.pi*mdata.vars.rho)) sp_x_axis=r'$\lambda (nm)$' else: ftxaxis = (np.arange(0,NumUniquePts)*(fs/(npads)))*(4.*np.pi*mdata.vars.rho) sp_x_axis=r'$\omega / \omega_r$' sp_title='Intensity Spectrum' # z2axis = [z2axis,z2axis,z2axis,z2axis] # ax1 = plt.subplot(211) # plt.plot(z2axis, xf, label='x field') # plt.plot(z2axis, yf, label='y field') # plt.xlabel(r'$\bar{z}_2$', fontsize=16) # plt.ylabel('Fields', fontsize=16) # plt.legend() # Adding subplot axes = plt.subplot(111) plt.xlabel(sp_x_axis, fontsize=16) plt.ylabel('Intensity (a.u.)', fontsize=16) ##### SAVE DATA # outfilename = 'specpow.h5' # # h5=tables.open_file(outfilename,'w') # # h5.create_array('/','wavelens', ftxaxis) # h5.root.wavelens._v_attrs.vsKind='structured' # h5.root.wavelens._v_attrs.vsType='mesh' # h5.root.wavelens._v_attrs.vsStartCell=0 # #h5.root.zSeries._v_attrs.vsNumCells=numTimes-1 # -1 as zonal # h5.root.wavelens._v_attrs.vsLowerBounds=ftxaxis[0] # h5.root.wavelens._v_attrs.vsUpperBounds=ftxaxis[-1] # h5.root.wavelens._v_attrs.vsAxisLabels="lambda (m)" # fttpower = ftxpower + ftypower # # # # h5.create_array('/','specpow',fttpower) # h5.root.specpow._v_attrs.vsMesh='wavelens' # h5.root.specpow._v_attrs.vsType='variable' # h5.root.specpow._v_attrs.vsAxisLabels='Power (a.u.)' # # # h5.close() if ftplottype==1: #plt.loglog(ftxaxis, ftxpower, label='x intensity') #plt.plot(ftxaxis, ftxpower, label='x power') #plt.plot(ftxaxis, ftypower, label='y power') plt.plot(ftxaxis*1e9, fttpower / np.max(fttpower), label='Intensity') axes.set_xlim([90, 110]) else: # plt.semilogy(ftxaxis, ftxpower, label='x intensity') # plt.plot(ftxaxis, ftypower, label='y intensity') plt.plot(ftxaxis, fttpower / np.max(fttpower), label='Intensity') axes.set_xlim([0.8, 1.2]) # plt.legend() nameparts = h5fname.split('_') basename = nameparts[0] z = mdata.vars.z plt.tight_layout() plt.savefig(basename + "-spec-intensity-z-" + str(z) + ".png")
def spectroT(h5fname, z2s=None, z2e=None, qScale=None): mdata = fdata(h5fname) if (qScale == None): qScale = mdata.vars.qscale lenz2 = (mdata.vars.nz2 - 1) * mdata.vars.dz2 xf, yf = readField(h5fname, f1D=1) # dz2 = h5f.root.runInfo._v_attrs.sLengthOfElmZ2 # nz2 = h5f.root.runInfo._v_attrs.nZ2 sampleFreq = 1.0 / mdata.vars.dz2 # z2s = 0.00 # z2e = 0.06 if ((z2s == None) or (z2e == None)): z2si = 0 z2ei = mdata.vars.nz2 else: z2si = int(np.floor(z2s / mdata.vars.dz2)) z2ei = int(np.floor(z2e / mdata.vars.dz2)) xfs = xf[z2si:z2ei] yfs = yf[z2si:z2ei] xaxis = (np.arange(0, mdata.vars.nx)) * mdata.vars.dxbar yaxis = (np.arange(0, mdata.vars.ny)) * mdata.vars.dybar z2axis = (np.arange(z2si, z2ei) - z2si) * mdata.vars.dz2 if (qScale == 0): z2axis = z2axis * mdata.vars.lc freqScale = mdata.vars.lr xfs = xfs * mdata.vars.fieldScale # * mdata.vars.lc / mdata.vars.c0 sampleFreq = sampleFreq / mdata.vars.lc xaxisl = r'$ct-z (m)$' faxisl = r'x-field $(Vm^{-1})$' saxisl = r'$\omega / \omega_0$' else: freqScale = 4. * np.pi * mdata.vars.rho xaxisl = r'$\bar{z}_2$' faxisl = 'x-field (Scaled)' saxisl = r'$\bar{f}$' ax1 = plt.subplot(211) plt.plot(z2axis, xfs) plt.xlabel(xaxisl, fontsize=16) plt.ylabel(faxisl, fontsize=16) plt.xlim(200e-6, 210e-6) plt.subplot(212, sharex=ax1) # specf = signal.get_window(('tukey',2.0),128) # freqs, time, Sxx = signal.spectrogram(xfs, sampleFreq, nperseg=128, nfft=2048, \ # window=specf) Sxx = signal.cwt(xfs, signal.ricker, np.arange(1, 31)) # freqs = freqs * freqScale # plt.pcolormesh(time, freqs, Sxx) plt.pcolormesh(z2axis, np.arange(1, 31), Sxx) plt.xlim(0.0025, 0.0026) # plt.ylim(0.8, 1.2); cb = plt.colorbar() # specP, freqs, time, image = specgram(xfs, \ # NFFT=50, Fs=sampleFreq, noverlap=0)#, cmap=plt.cm.gist_heat) # freqs = freqs * 3e8 # plt.pcolor(time,freqs,specP) plt.xlabel(xaxisl, fontsize=16) plt.ylabel(saxisl, fontsize=16) plt.tight_layout() # then either: #plt.imshow(specP,cmap='PRGn') # plt.show() # -or- just nameparts = h5fname.split('_') basename = nameparts[0] z = mdata.vars.z plt.savefig(basename + "-spectrogram-z-" + str(z) + ".png")
from numpy.lib.scimath import * from cmath import sin, cos from scipy import * from puffdata import fdata import h5py iTemporal = 0 iPeriodic = 1 ################################################################## # ## filename = sys.argv[1] mdata = fdata(filename) hf = h5py.File(filename, 'r') n1 = hf.get('aperp') n1 = np.array(n1) n2 = np.zeros((n1.shape[3], n1.shape[2], n1.shape[1], n1.shape[0])) for i in range(n1.shape[0]): for j in range(n1.shape[2]): n2[:, j, :, i] = n1[i, :, j, :].T xpol = n1[0, :, :, :] ypol = n1[1, :, :, :] #xpol=n2[:,:,:,0] #ypol=n2[:,:,:,1] z2axis = (np.arange(0, mdata.vars.nz2)) * mdata.vars.dz2