예제 #1
0
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
예제 #2
0
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
예제 #3
0
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)
예제 #4
0
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()
예제 #5
0
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")
예제 #6
0
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)
예제 #7
0
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")
예제 #8
0
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
예제 #9
0
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
예제 #10
0
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)
예제 #11
0
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
예제 #12
0
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
예제 #13
0
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()
예제 #14
0
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()
예제 #15
0
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)
예제 #16
0
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")
예제 #17
0
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")
예제 #18
0
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")
예제 #19
0
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