[galaxy] add whole disk and r=6kpc analysis
This commit is contained in:
@@ -108,7 +108,7 @@ def sector_analysis(pp, r=4, dr=0.5, phi=0, dphi=0.125, z=0, dz=0.5):
|
||||
return result
|
||||
|
||||
|
||||
def ring_analysis(pp, r=4, dr=0.5, dphi=0.125, z=0, dz=0.5, do_mean=True):
|
||||
def ring_analysis(pp, r=4, dr=0.5, dphi=0.125, z=0, dz=0.5):
|
||||
"""
|
||||
Compute the average at a given of quantities computed in polar sectors.
|
||||
"""
|
||||
@@ -163,32 +163,62 @@ def get_last_sfr(pp, r=4, dr=0.5, z=0, dz=0.5):
|
||||
return sfr
|
||||
|
||||
|
||||
def colmean4kpc(pp):
|
||||
def colmean_ring(pp, r=4, dr=0.5):
|
||||
pp.coldens("z")
|
||||
pp.rr("z")
|
||||
col = pp.get_value("/maps/coldens_z", unit=U.coldens)
|
||||
rr = pp.get_value("/maps/rr_z", unit=U.kpc)
|
||||
colmean = np.mean(col[np.abs(rr - 4) < 0.5])
|
||||
colmean = np.mean(col[np.abs(rr - r) < dr])
|
||||
return colmean
|
||||
|
||||
|
||||
def allinone(pp):
|
||||
def analyse_ring(pp, r=4):
|
||||
res = {}
|
||||
res["run"] = pp.run
|
||||
res["num"] = pp.num
|
||||
res["coldens"] = colmean_ring(pp, r)
|
||||
res["sfr"] = get_last_sfr(pp, r)
|
||||
res["time"] = get_time_from_relax(pp)
|
||||
ring = ring_analysis(pp, r, dphi=1.0 / (2 * r))[0]
|
||||
for key in ring:
|
||||
for i, fluid in enumerate(["gas", "dm", "stars"]):
|
||||
res[f"{key}_{fluid}"] = ring[key][i]
|
||||
return res
|
||||
|
||||
|
||||
def analyse_disk(pp, rmax=6.0, zmax=1.0):
|
||||
get_gas_dm_stars(pp)
|
||||
res = {}
|
||||
res["run"] = pp.run
|
||||
res["num"] = pp.num
|
||||
res["coldens"] = colmean4kpc(pp)
|
||||
res["sfr"] = get_last_sfr(pp)
|
||||
res["time"] = get_time_from_relax(pp)
|
||||
ring = ring_analysis(pp)[0]
|
||||
for key in ring:
|
||||
for i, fluid in enumerate(["gas", "dm", "stars"]):
|
||||
res[f"{key}_{fluid}"] = ring[key][i]
|
||||
res["coldens"] = colmean_ring(pp, rmax / 2.0, rmax / 2.0)
|
||||
|
||||
res["sfr"] = get_last_sfr(pp, rmax / 2.0, rmax / 2.0, 0, zmax)
|
||||
res["time"] = get_time_from_relax(pp)
|
||||
|
||||
for dset, fluid in zip([pp.gas, pp.dm, pp.stars], ["gas", "dm", "stars"]):
|
||||
res[f"ek_{fluid}"] = np.sum(dset["ek"]) # J
|
||||
res[f"mass_{fluid}"] = np.sum(dset["mass_kg"]) # kg
|
||||
res[f"ek_spe_{fluid}"] = res[f"ek_{fluid}"] / res[f"mass_{fluid}"] # J.kg^-1
|
||||
return res
|
||||
|
||||
|
||||
def load_wrapper(pp, fun):
|
||||
"""
|
||||
Wrapper to load_unload data and map function
|
||||
"""
|
||||
get_gas_dm_stars(pp)
|
||||
res = fun(pp)
|
||||
pp.unload_cells()
|
||||
pp.unload_parts()
|
||||
del pp.dm
|
||||
del pp.gas
|
||||
del pp.stars
|
||||
return res
|
||||
|
||||
|
||||
def allinone(pp):
|
||||
def fun(pp):
|
||||
return analyse_disk(pp), analyse_ring(pp, 4), analyse_ring(pp, 6)
|
||||
|
||||
return load_wrapper(pp, fun)
|
||||
|
||||
Reference in New Issue
Block a user