def oneSlice(do3d, key, n): plt.figure(0) t0 = time.time() reader3d.slicePlot(do3d, key, n=n, figNum=0) tools.saveAndClear(pathSave + 'midplaneSlice_' + key + '_' + str(n) + '.png', figNum=0) t = np.round(time.time() - t0, 2) print('this plot took ' + str(t) + 's') sys.stdout.flush()
def bootstrap(mp, funcName, nParams, nb=100, sampleFactor=1.0, pathSave=None): print("Computing " + str(funcName.__name__) + " fit for " + str(nb) + " subsamples...") paramsAll = np.zeros([nb, nParams]) maxLikeAll = np.zeros(nb) t0 = time.time() for n in range(nb): if n%20==0 and n>0: str1 = "n = " + str(n) + " of " + str(nb) str2 = "average time per sample = " + str(np.round((time.time()-t0)/n,3)) print(str1 + ", " + str2) sample = np.random.choice(mp,size=int(sampleFactor*mp.shape[0]),replace=True) params, maxLike = funcName(sample) paramsAll[n] = params means = np.median(paramsAll, axis=0) params, maxLike = funcName(mp) errsPlus = np.percentile(paramsAll, 84, axis=0) - params errsMinus = params - np.percentile(paramsAll, 14, axis=0) #print(params) #print(np.percentile(paramsAll, 86, axis=0)) #print(np.percentile(paramsAll, 14, axis=0)) #print(errsPlus) #print(errsMinus) if pathSave is not None: for i in range(paramsAll.shape[1]): plt.figure(0) nBins = int(max(10.0, nb/50.0)) plt.hist(paramsAll[:,i], color='gray', bins=nBins) plt.xlim(np.amin(paramsAll[:,i])-0.1, np.amax(paramsAll[:,i])+0.1) try: plt.axvline(params[i], color='k', linestyle='--') plt.axvline(params[i]+errsPlus[i], color='r', linestyle='--') plt.axvline(params[i]-errsMinus[i], color='b', linestyle='--') plt.title(str(np.round(params[i],4)) + " + " + str(np.round(errsPlus[i],4)) + " - " + str(np.round(errsMinus[i],4))) except: plt.axvline(params, color='k', linestyle='--') plt.axvline(params+errsPlus, color='r', linestyle='--') plt.axvline(params-errsMinus, color='b', linestyle='--') plt.title(str(np.round(params,4)) + " + " + str(np.round(errsPlus[i],4)) + " - " + str(np.round(errsMinus[i],4))) tools.saveAndClear(pathSave + "z_bs_" + str(funcName.__name__) + "_" + str(i) +".png", figNum=0) return params, errsPlus, errsMinus, maxLike
ks[0][0]) + "_" + str(ks[0][1]) + ".npy" inData = np.load(pathIn + fileName) freqs = inData[0, :] pskMid = inData[1, :] pskMid *= np.power(freqs, -eExpo) divByThis = np.mean(pskMid) pskMid /= divByThis # off mid-plane slices fileName = "pspecData_" + str(nStart) + "_" + str(nEnd) + "_" + str( ks[1][0]) + "_" + str(ks[1][1]) + ".npy" inData = np.load(pathIn + fileName) pskLow = inData[1, :] fileName = "pspecData_" + str(nStart) + "_" + str(nEnd) + "_" + str( ks[2][0]) + "_" + str(ks[2][1]) + ".npy" inData = np.load(pathIn + fileName) pskHigh = inData[1, :] pskOff = (pskLow + pskHigh) / 2.0 pskOff *= np.power(freqs, -eExpo) pskOff /= divByThis plt.loglog(freqs, pskMid, label='mid-plane', color='k', lineStyle='-') plt.loglog(freqs, pskOff, label='off-mid-plane', color='k', lineStyle=':') plt.xlabel(r'$|\mathbf{k}|$') plt.ylabel('Power') plt.ylim(1.e-2, 1.e2) plt.xlim(freqs[1], freqs[-1]) plt.legend() tools.saveAndClear(pathSave + 'adjustedPspec_2D_comparison.png', figNum=0)
def pertProfile(do3d, key, pathSave): reader3d.profile(do3d, key, figNum=0) tools.saveAndClear(pathSave + 'profilePert_' + key + '.png', figNum=0)
def absAvgProfile(do3d, key, pathSave): reader3d.profile(do3d, key, figNum=0) tools.saveAndClear(pathSave + 'profileAbsAvg_' + key + '.png', figNum=0)
def realAvgProfile(do3d, key, pathSave): reader3d.profile(do3d, key, figNum=0, absAvg=0, absPlot=0) tools.saveAndClear(pathSave + 'profileRealAvg_' + key + '.png', figNum=0)
color=(0, 0, 0, 0.2), marker=".", linewidth=5, markersize=2) plt.loglog(fakeMp1, 1.01 * nm * fac * ngtm_bpl, color=(1, 0, 0, 1), label='BPL', linestyle='--', linewidth=1) arg = np.argmin(np.absolute(minMass * np.exp(means_bpl[2]) - fakeMp1)) plt.loglog(fakeMp1[arg], nm * fac * ngtm_bpl[arg], color=(1, 0, 0, 1), marker="s", linewidth=0, markersize=5) # plot labels etc. plt.xlabel(r'$M_p [M_G]$') plt.ylabel(r'$N(>M_p)$') plt.ylim(3.e-1, 1.e3) plt.xlim(1e-3, 1.e0) #plt.legend(prop={'size':10}) tools.saveAndClear(pathSave + "hist_cumulative_ct_jake.png", figNum=0) np.savetxt("./mp_weak.csv", mp1) np.savetxt("./ngtm_weak.csv", ngtm) #
plt.figure(0) ################################################################################ key = 'dpar' for n in [5,15,25,35]: print(n) reader3d.profile(do3d, key, color='r', figNum=0, nStart=n, nEnd=n+5, legendLabel=do3d.header[key]) plt.ylim(1.e-3, 1.e1) mean = 0 for i in range(5): print(n+i) data = do3d.get3d(key, n+i) if i==0: data1d = np.mean(data, axis=(0,1)) else: data1d += np.mean(data, axis=(0,1)) data1d /= 5 plt.title(np.amax(data)) tools.saveAndClear(pathSave + 'profile_dpar_'+str(n)+'_'+str(n+5)+'.png', figNum=0) # dv profiles, all components on same plot key = 'dv' reader3d.profile(do3d, key, color='k', figNum=0, nStart=nStart, nEnd=nEnd, legendLabel=do3d.header[key]) tools.saveAndClear(pathSave + 'profilePert_newdv.png', figNum=0) key = 'dvx' reader3d.profile(do3d, key, color='r', figNum=0, nStart=nStart, nEnd=nEnd, legendLabel=do3d.header[key]) key = 'dvy' reader3d.profile(do3d, key, color='g', figNum=0, nStart=nStart, nEnd=nEnd, legendLabel=do3d.header[key]) key = 'dvz' reader3d.profile(do3d, key, color='b', figNum=0, nStart=nStart, nEnd=nEnd, legendLabel=do3d.header[key]) plt.ylim(dvBase*0.1, dvBase*3.2) plt.axhline(dvBase, color='gray', linestyle='--') #plt.axhline(dvBase/np.sqrt(3.), color='gray', linestyle=':')
bestPreFac = preFac #print("new min found") #print(min) #print(bestPreFac) plt.figure(0) plt.loglog(mp, dndmp, color+'o', ms=2) mp2 = np.logspace(-10.0, 10, num=500) model = bestPreFac * np.power(mp2, -p_mle) plt.loglog(mp2, model, linestyle='--', linewidth=1, color=color) # plot labels etc. plt.xlabel(r'$M_p$') plt.ylabel(r'$dN/dM_p$') plt.ylim(1.e-1, 1.e5) plt.xlim(1e-3, 1.e1) tools.saveAndClear(pathSave + "hist_differential_oneFrameExample_" + str(n) + ".png", figNum=0) ################################################################################ ''' # cumulative hist plot # SPL ngtm_spl = readerPlan.P_spl(mp1, means_spl) plt.loglog(mp1, ngtm, color=(0,0,0,0.2), marker=".", linewidth=5, markersize=2) plt.loglog(mp1, ngtm, color=(0,0,0,1.0), marker=".", linewidth=0, markersize=2) plt.loglog(mp1, nm*ngtm_spl, color=(0,0,0,1.0), label='SPL', linestyle='--', linewidth=1) # plot labels etc. plt.xlabel(r'$M_p$') plt.ylabel(r'$N(>M_p)$') plt.ylim(1.e-1, 1.e3) plt.xlim(1e-3, 1.e1)
nStart = 2 nEnd = 7 if not os.path.exists(pathSave): os.makedirs(pathSave) do3dList = [] for n in range(len(runNameList)): path3d = pathBase + runNameList[n] + '/3d/' do3dList.append(reader3d.Data3d(path3d)) ################################################################################ key = 'dv' for n in range(len(runNameList)): dvMean = reader3d.profile(do3dList[n], key, figNum=0, absAvg=1, absPlot=1, legendLabel=labelList[n], color=colorList[n], linestyle='-', nStart=nStart, nEnd=nEnd) plt.axhline(y=np.sqrt(alphaDesiredList[n]), lineStyle='--', color=colorList[n]) alphaObs = np.square(dvMean) print(r'$\alpha_{obs}=$' + str(alphaObs)) plt.legend() plt.ylim(3.e-3, 6.e-2) tools.saveAndClear(pathSave + 'profile_' + key + '.png', figNum=0) #
import athenaTools as tools from matplotlib.backends.backend_pdf import PdfPages ################################################################################ pathBase = str(sys.argv[1]) #keyList = ['drho', 'dvx', 'dvy', 'dvz'] keyList = ['drho'] ################################################################################ path3d = pathBase + '3d/' pathSave = pathBase + 'plots/acf/' if not os.path.exists(pathSave): os.makedirs(pathSave) do3d = reader3d.Data3d(path3d) ################################################################################ for key in keyList: acfMean = reader3d.acfMean(do3d, key) reader3d.plotAcf(acfMean, figNum=0) tools.saveAndClear(pathSave + key + '_stAvg_unsheared_viridis.png', figNum=0) reader3d.plotAcfDiverging(acfMean, figNum=0) tools.saveAndClear(pathSave + key + '_stAvg_unsheared_coolwarm.png', figNum=0) acfMean = reader3d.acfMean(do3d, key, unsheared=False) reader3d.plotAcf(acfMean, figNum=0) tools.saveAndClear(pathSave + key + '_stAvg_viridis.png', figNum=0) reader3d.plotAcfDiverging(acfMean, figNum=0) tools.saveAndClear(pathSave + key + '_stAvg_coolwarm.png', figNum=0) ################################################################################
if index < freqs.shape[0]: psk[index] += ps[i,j,k] count[index] += 1 #psk /= count #return psk, freqs ################################################################################ # ps along 1 axis plt.loglog(freqs, np.sum(ps, axis=(1,2)), color='r') plt.loglog(freqs, np.sum(ps, axis=(0,2)), color='g') plt.loglog(freqs, np.sum(ps, axis=(0,1)), color='b') plt.ylim(1.e4,1.e10) addFiveThirdsToFig() plt.xlabel(r'$|\mathbf{k}|$') plt.ylabel('Power') plt.title(np.sum(ps)) tools.saveAndClear(pathSave + name + '_pspec.png', figNum=0) ################################################################################ # spherical shells not normalized plt.loglog(freqs, psk) plt.ylim(1.e4,1.e10) addFiveThirdsToFig() plt.xlabel(r'$|\mathbf{k}|$') plt.ylabel('Power') plt.title(np.sum(psk)) tools.saveAndClear(pathSave + name + '_pspecShells.png', figNum=0) ################################################################################ # spherical shells plt.loglog(freqs, psk/count) plt.ylim(1.e4,1.e10) addFiveThirdsToFig() plt.xlabel(r'$|\mathbf{k}|$')
plt.loglog(fakeMp1, nm * fac * ngtm_bpl, color=(0, 1, 1, 1), label='BPL', linestyle='--') arg = np.argmin(np.absolute(minMass * np.exp(means_bpl[2]) - fakeMp1)) plt.loglog(fakeMp1[arg], nm * fac * ngtm_bpl[arg], color=(0, 1, 1, 1), marker="s", linewidth=0, markersize=7) # plot labels etc. plt.xlabel(r'$M_p [M_G]$') plt.ylabel(r'$N(>M_p)$') plt.ylim(6.e-1, 1.e8) plt.xlim(1e-3, 1.e1) plt.legend(prop={'size': 10}, loc='best') tools.saveAndClear(pathSave + "hist_cumulative_" + str(n) + ".png", figNum=0) #np.savetxt("./mp_control_253.csv", mp1) #np.savetxt("./ngtm_control_253.csv", ngtm) #np.savetxt("./mp_weak_291.csv", mp1) #np.savetxt("./ngtm_weak_291.csv", ngtm) #np.savetxt("./mp_moderate_367.csv", mp1) #np.savetxt("./ngtm_moderate_367.csv", ngtm) #
################################################################################ def addFiveThirdsToFig(): for i in range(-2, 3): plt.loglog(freqs, 10**i * np.power(freqs, -5.0 / 3.0), color='tab:gray', linestyle='--', linewidth=0.5) ################################################################################ for n in range(nStart, nEnd, 2): psk_vx, freqs = reader3d.psProfile(do3d, 'rootRhoVx', n) psk_vy, freqs = reader3d.psProfile(do3d, 'rootRhoVy', n) psk_vz, freqs = reader3d.psProfile(do3d, 'rootRhoVz', n) psk = psk_vx + psk_vy + psk_vz plt.loglog(freqs, psk / psk[1], color=tools.getColor(n, 0, nEnd), label='n=' + str(n)) ################################################################################ plt.xlabel(r'$|\mathbf{k}|$') plt.ylabel('Power') addFiveThirdsToFig() #plt.legend(loc=(1.01,0.0)) plt.ylim(1.e-6, 1.e1) tools.saveAndClear(pathSave + 'keSpec_timeEvo.png', figNum=0) #
p = np.median(pArr2); err1 = np.std(pArr2); err2 = np.median(errList2) # plot p_mle value over time plt.plot(tList, pArr, 'k') plt.fill_between(tList, pArr-errArr, pArr+errArr, color='gray', alpha=0.5) plt.ylim(1.0, 2.5) plt.ylabel(r'$p$') plt.xlabel(r'$t \Omega$') plt.plot((tp1, tp2), (p, p ), color='r', linestyle='--') plt.plot((tp1, tp2), (p+err2, p+err2), color='b', linestyle='--') plt.plot((tp1, tp2), (p-err2, p-err2), color='b', linestyle='--') plt.axhline(1.7, color=(0,0,0,0.2), linestyle='--') plt.axhline(1.4, color=(0,0,0,0.2), linestyle='--') plt.title(r'$p=$' + str(np.round(p, 2)) + r'$\pm$' + str(np.round(err2,2))) tools.saveAndClear(pathSave + "p_vs_t.png", figNum=0) ################################################################################ # Fit the histogram ################################################################################ # calculate p by fitting the diff hist pFitList=[]; cFitList=[]; for n in range(0, nTot): try: mp, dndmp = readerPlan.getDiffMassHist(doPlan, n) if len(mp)>4: mp = np.asarray(mp); dndmp = np.asarray(dndmp); x = np.log10(mp) ; y = np.log10(dndmp) coefs = poly.polyfit(x, y, 1)
do1dList[n].addCol(reader1d.alphaz, 'alphaz', r'$\alpha$') # plot dv over time vs expected value based on alpha_in key = 'dv' for n in range(len(do1dList)): do = do1dList[n] alphaIn = alphaInList[n] color = colorList[n] reader1d.timeEvo(do, key, legendLabel=r'$\alpha_{in}=$' + str(alphaIn), logForce=1, color=color) plt.axhline(y=np.sqrt(alphaIn), linestyle='--', color=color) plt.legend() tools.saveAndClear(pathSave + "gas_timeEvo_" + key + ".png") # plot dv at midplane over time vs expected value based on alpha_in key = 'dv' for n in range(len(do1dList)): do = do1dList[n] alphaIn = alphaInList[n] color = colorList[n] reader1d.timeEvo(do, key, z1=-do.zmax / 4.0, z2=do.zmax / 4.0, legendLabel=r'$\alpha_{in}=$' + str(alphaIn), logForce=1, color=color) plt.axhline(y=np.sqrt(alphaIn), linestyle='--', color=color)
''' index = 2 for prefactor in np.arange(-10,10,0.5): plt.plot(freqs, np.power(10,prefactor)*np.power(freqs, index), color=(1,0,0,0.2)) index = 1 for prefactor in np.arange(-10,10,0.5): plt.plot(freqs, np.power(10,prefactor)*np.power(freqs, index), color=(0,1,0,0.2)) index = -1 for prefactor in np.arange(-10,10,0.5): plt.plot(freqs, np.power(10,prefactor)*np.power(freqs, index), color=(0,0,1,0.2)) index = -2 for prefactor in np.arange(-10,10,0.5): plt.plot(freqs, np.power(10,prefactor)*np.power(freqs, index), color=(0,0,0,0.2)) ''' tools.saveAndClear(pathSave + 'adjustedPspecSpheresSumPerts.png', figNum=0)
pskMid /= divByThis # off mid-plane slices fileName = "pspecData_" + str(nStart) + "_" + str(nEnd) + "_" + str( ks[1][0]) + "_" + str(ks[1][1]) + ".npy" inData = np.load(pathIn + fileName) pskLow = inData[1, :] fileName = "pspecData_" + str(nStart) + "_" + str(nEnd) + "_" + str( ks[2][0]) + "_" + str(ks[2][1]) + ".npy" inData = np.load(pathIn + fileName) pskHigh = inData[1, :] pskOff = (pskLow + pskHigh) / 2.0 pskOff *= np.power(freqs, -eExpo) pskOff /= divByThis plt.loglog(freqs, pskMid, label='Driven (' + r"$\alpha=1 \times 10^{-3}$" + '), mid-plane', color='r', lineStyle='-') #plt.loglog(freqs, pskOff, label='Driven ('+r"$\alpha=1 \times 10^{-3}$"+'), off-mid-plane', color='r', lineStyle=':') plt.xlabel(r'$|\mathbf{k}|$') plt.ylabel('Power') plt.ylim(5.e-3, 1.e2) plt.xlim(freqs[1], freqs[-1]) #plt.legend(loc=(1.01,0.0)) plt.legend() tools.saveAndClear(pathSave + 'adjustedPspec_2D_multi.png', figNum=0) #
bestPreFac = preFac #print("new min found") #print(min) #print(bestPreFac) plt.figure(0) plt.loglog(mp, dndmp, 'ko', ms=2) mp2 = np.logspace(-10.0, 10, num=500) model = bestPreFac * np.power(mp2, -p_mle) plt.loglog(mp2, model, linestyle='--', linewidth=1, color='k') # plot labels etc. plt.xlabel(r'$M_p$') plt.ylabel(r'$dN/dM_p$') plt.ylim(3.e0, 1.e5) plt.xlim(1e-3, 1.e0) tools.saveAndClear(pathSave + "hist_differential_oneFrameExample_" + ".png", figNum=0) ################################################################################ pathSave1 = pathSave # Single PL MLE p_mle, err_mle = readerPlan.get_p_mle2(mp1) # Fit with spl means_spl, errsPlus_spl, errsMinus_spl, maxLike_spl = readerPlan.bootstrap( mp1, readerPlan.fit_spl, 1, nb=nb, pathSave=pathSave1) # Fit with stpl means_stpl, errsPlus_stpl, errsMinus_stpl, maxLike_stpl = readerPlan.bootstrap( mp1, readerPlan.fit_stpl, 2, nb=nb, pathSave=pathSave1) # Fit with vtpl means_vtpl, errsPlus_vtpl, errsMinus_vtpl, maxLike_vtpl = readerPlan.bootstrap( mp1, readerPlan.fit_vtpl, 3, nb=nb, pathSave=pathSave1)
sizes = [np.power(1.e4*mass, 1./2.) for mass in masses] plt.scatter(xs, ys, s=sizes) # other plot stuff plt.text(0.102, 0.05, "looked for: " + str(nMatched+nFailed)) plt.text(0.102, 0.04, "matched: " + str(nMatched)) plt.text(0.102, 0.03, "failed: " + str(nFailed)) plt.text(0.102, 0.02, "new: " + str(nNew)) plt.text(0.102, 0.01, "deprecated: " + str(nDep)) plt.text(0.102, 0.00, "total ever: " + str(nEver)) plt.xlabel(r'$r/h$') plt.ylabel(r'y/h') plt.ylim(-0.1, 0.1) plt.xlim(-0.1, 0.1) print("saving plot for n=" + str(n)) tools.saveAndClear(pathSave + "clumpTracking_"+ str(n) +".png", figNum=0) # assemble final stats initMassList = [] n = 260 for clump in clumpObjList: nEff = n - clump.nStart if not clump.deprecatedList[nEff] and clump.existsList[nEff]: initMassList.append(clump.massList[0]) tools.saveAndClear(pathSave + "clumpTracking_"+ str(n) +".png", figNum=0)
alpha = float(sys.argv[4]) dvBase = np.sqrt(alpha) ################################################################################ path3d = pathBase + '3d/' pathSave = pathBase + 'plots/plots3d/' if not os.path.exists(pathSave): os.makedirs(pathSave) do3d = reader3d.Data3d(path3d) ################################################################################ # max dpar plt.figure(0) print("making max dpar plot...") sys.stdout.flush() key = 'dpar' plotDataList = [] for n in range(do3d.nt): print("reading in time step " + str(n) + "...") sys.stdout.flush() data = do3d.get3d(key, n) plotDataList.append(np.amax(data)) plotData = np.asarray(plotDataList) print(plotData) plt.xlabel(r'$t \Omega$') plt.ylabel('MAX(' + do3d.header[key] + ')') plt.semilogy(do3d.t, plotData, color='k') plt.axvline(20, color='gray', lineStyle=':') plt.axhline(plotData[20], color='gray', lineStyle=':') plt.xlim(0.0, np.amax(do3d.t)) tools.saveAndClear(pathSave + 'timeEvo_maxDPar.png', figNum=0) #
from matplotlib.backends.backend_pdf import PdfPages ######################################################### doGas1d = 1 doParAvg = 1 # paths pathBase = str(sys.argv[1]) path1d = pathBase + '1d/' pathSave = pathBase + 'plots/quickLook/' if not os.path.exists(pathSave): os.makedirs(pathSave) ######################################################### # 1d GAS if doGas1d == 1: do1d = reader1d.Data1d(path1d) do1d.addCol(reader1d.dv, 'dv', r'$\delta v$') do1d.addCol(reader1d.dvz, 'dvz', r'$\delta v_z$') for key in do1d.data.keys(): reader1d.stPlot(do1d, key) tools.saveAndClear(pathSave + "gas_ST_" + key + ".png") reader1d.profile(do1d, key) tools.saveAndClear(pathSave + "gas_profile_" + key + ".png") reader1d.timeEvo(do1d, key) tools.saveAndClear(pathSave + "gas_timeEvo_" + key + ".png") # PARTICLE AVERAGES if doParAvg == 1: doPhst = readerPhst.DataPhst(pathBase) for key in ['zvar', 'vzvar']: readerPhst.timeEvo(doPhst, key) tools.saveAndClear(pathSave + "par_timeEvo_" + key + ".png") #
job = mp.Process(target=absAvgProfile, args=(do3d, key, pathSave)) jobList.append(job) job = mp.Process(target=absAvgTimeEvo, args=(do3d, key, pathSave)) jobList.append(job) for key in ['drho', 'dvx', 'dvy', 'dvz']: job = mp.Process(target=pertProfile, args=(do3d, key, pathSave)) jobList.append(job) job = mp.Process(target=pertTimeEvo, args=(do3d, key, pathSave)) jobList.append(job) for job in jobList: job.start() reader3d.profile(do3d, 'dvz', figNum=0, absAvg=1, absPlot=1) tools.saveAndClear(pathSave + 'testing1.png', figNum=0) plotData = np.zeros(do3d.nt) for n in range(len(plotData)): data = do3d.get3d('dvz', n) plotData[n] = np.mean(np.absolute(data)) plt.plot(do3d.t, plotData) tools.saveAndClear(pathSave + 'testing2.png', figNum=0) ################################################################################ # normalized perts #for key in ['drhoNorm', 'dvxNorm', 'dvyNorm', 'dvzNorm', 'dvNorm']: #reader3d.profile(do3d, key, figNum=0) #tools.saveAndClear(pathSave + 'profilePertNorm_' + key + '.png', figNum=0) #reader3d.timeEvo(do3d, key, figNum=0) #tools.saveAndClear(pathSave + 'timeEvoPertNorm_' + key + '.png', figNum=0) ################################################################################
#dv = np.asarray([0.00185, 0.00549, 0.0154, 0.0399]) dedtLog = np.log10(dedt) dvLog = np.log10(dv) plt.loglog(dedt, dv, 'ko', markersize=5) plt.loglog(dedt, dv, color=(0, 0, 0, 0.4)) dvDesiredLog = np.log10(dvDesired) dedtDesiredLog = np.interp(dvDesiredLog, dvLog, dedtLog) dedtDesired = np.power(10.0, dedtDesiredLog) plt.loglog(dedtDesired, dvDesired, 'ro', markersize=5) plt.axvline(x=dedtDesired, linestyle=':', color='r') plt.axhline(y=dvDesired, linestyle=':', color='r') #plt.title('drive at dedt=' + str(dedtDesired) + #' to achieve dv=' + str(dvDesired)) plt.xlabel(r"$dE/dt}$", fontsize=13) plt.ylabel(r"$\delta v_{tot}$", fontsize=13) tools.saveAndClear(pathSave + 'alphaPred.png', figNum=0) ################################################################################ for alphaDesired in [1.e-5, 3.2e-5, 1.e-4, 3.2e-4, 1.e-3, 3.2e-3]: dvDesired = np.sqrt(alphaDesired) dvDesiredLog = np.log10(dvDesired) dedtDesiredLog = np.interp(dvDesiredLog, dvLog, dedtLog) dedtDesired = np.power(10.0, dedtDesiredLog) print('alpha=' + str(alphaDesired) + ' --> ' + 'v=' + str(np.round(dvDesired, 5)) + ' --> ' + 'dedt=' + str(dedtDesired)) #
def realAvgTimeEvo(do3d, key, pathSave): reader3d.timeEvo(do3d, key, figNum=0, absAvg=0, absPlot=0) tools.saveAndClear(pathSave + 'timeEvoRealAvg_' + key + '.png', figNum=0)
count = 0 for n in range(0, nSamples): for i in range(0, 64): for j in range(0, 64): for k in range(32 - nZones // 2, 32 + nZones // 2): ac = autoCorr(vzMaster[n:n + nEachCorr, i, j, k]) if n == 0 and i == 0 and j == 0 and k == 32 - nZones // 2: acMaster = ac count += 1 else: acMaster += ac count += 1 acMaster /= float(count) time = dt * np.arange(nStart, nEachCorr) dtUp = dt / 100.0 timeUp = dtUp * np.arange(nStart, nEachCorr * (dt / dtUp)) acUp = np.interp(timeUp, time, acMaster) integral = np.sum(acUp) * dtUp ################################################################################ # plot plt.figure(0) plt.plot(timeUp, acUp, 'k') plt.title(r'$D=$' + str(np.round(integral, 6)) + '\n' + r'$vz^2=$' + str(np.round(vzMean2, 6))) tools.saveAndClear(pathSave + 'acf.png', figNum=0) ################################################################################ #
def absAvgTimeEvo(do3d, key, pathSave): reader3d.timeEvo(do3d, key, figNum=0) tools.saveAndClear(pathSave + 'timeEvoAbsAvg_' + key + '.png', figNum=0)
data1[i,j,k]=float(split[4+ind]) count+=1 if count == nx*ny*nz: break return data1 ################################################################################ def addFiveThirdsToFig(): thisSlope = 2*(vPertSlope-1.) print(-thisSlope) for i in np.arange(-20, 20, 0.5): plt.loglog(freqs, 10**i*np.power(freqs, -thisSlope), color='tab:gray', linestyle='--', linewidth=0.5) ################################################################################ if setupPlots == True: data = getData(pathBase, fileName, 'q1q2q3_rand', nGz, 0) plt.hist(data.flatten(), bins=100) tools.saveAndClear(pathSave + 'q1_rand.png', figNum=0) data = getData(pathBase, fileName, 'q1q2q3_rand', nGz, 1) plt.hist(data.flatten(), bins=100) tools.saveAndClear(pathSave + 'q2_rand.png', figNum=0) data = getData(pathBase, fileName, 'q1q2q3_rand', nGz, 2) plt.hist(data.flatten(), bins=100) tools.saveAndClear(pathSave + 'q3_rand.png', figNum=0) data = getData(pathBase, fileName, 'q3', nGz, 0) plt.hist(data.flatten(), bins=100) plt.ylim(0,200) tools.saveAndClear(pathSave + 'q3.png', figNum=0) data = getData(pathBase, fileName, 'q3', nGz, 1) data = getData(pathBase, fileName, 'ampl_before', 0, 0) plt.hist(data.flatten(), bins=100) tools.saveAndClear(pathSave + 'ampl0_before.png', figNum=0) data = getData(pathBase, fileName, 'ampl_before', 0, 1)
def pertTimeEvo(do3d, key, pathSave): reader3d.timeEvo(do3d, key, figNum=0) tools.saveAndClear(pathSave + 'timeEvoPert_' + key + '.png', figNum=0)
eExpo = 2.0 * (vExpo) + 2.0 print("velocity spectrum PL exponent is " + str(vExpo)) print("KE power spectrum PL exponent is " + str(eExpo)) ################################################################################ #calcPs_2D(do3d, 'rootRhoDvx', 10, 32) #psProfile_2D(do3d, 'rootRhoDvx', 10, 32) #psProfileMean_2D(do3d, 'rootRhoDvx', 9, 11, 30, 34) psk_vx, freqs = reader3d.psProfile_ztAvg(do3d, 'rootRhoDvx', nStart, nEnd, kStart, kEnd) psk_vy, freqs = reader3d.psProfile_ztAvg(do3d, 'rootRhoDvy', nStart, nEnd, kStart, kEnd) psk_vz, freqs = reader3d.psProfile_ztAvg(do3d, 'rootRhoDvz', nStart, nEnd, kStart, kEnd) psk = psk_vx + psk_vy + psk_vz psk *= np.power(freqs, -eExpo) psk /= np.mean(psk) print(freqs) print(psk) plt.loglog(freqs, psk) plt.xlabel(r'$|\mathbf{k}|$') plt.ylabel('Power') plt.ylim(1.e-2, 1.e2) plt.xlim(freqs[1], freqs[-1]) tools.saveAndClear(pathSave + 'adjustedPspec_2D_' + str(kStart) + '_' + str(kEnd) + '.png', figNum=0) #