Beispiel #1
0
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=':')
Beispiel #9
0
		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)
Beispiel #10
0
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)

#
Beispiel #11
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)

#
Beispiel #14
0
################################################################################
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)

#
Beispiel #15
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)
Beispiel #17
0
'''
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)

#
Beispiel #19
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)
Beispiel #26
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)
Beispiel #28
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)

#