[ism] update ism auto file
This commit is contained in:
@@ -36,16 +36,18 @@ def convert_coldens_s(n0):
|
|||||||
convert_coldens = np.vectorize(convert_coldens_s)
|
convert_coldens = np.vectorize(convert_coldens_s)
|
||||||
|
|
||||||
|
|
||||||
def get_dispersion(dset, i):
|
def get_dispersion(dset, name):
|
||||||
"""
|
"""
|
||||||
Compute dispersion from dset["name"]
|
Compute dispersion from dset[name]
|
||||||
"""
|
"""
|
||||||
vel = dset["vel"][:, i]
|
vel = dset[name]
|
||||||
mass = dset["mass"]
|
mass = dset["mass"]
|
||||||
mass_tot = np.sum(mass)
|
mass_tot = np.sum(mass)
|
||||||
mean = np.sum(mass * vel) / mass_tot
|
if mass_tot > 0:
|
||||||
return np.sqrt(np.sum(mass * (vel - mean) ** 2) / mass_tot)
|
mean = np.sum(mass * vel) / mass_tot
|
||||||
|
return np.sqrt(np.sum(mass * (vel - mean) ** 2) / mass_tot)
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
|
||||||
def get_sinks(pp):
|
def get_sinks(pp):
|
||||||
csv_name = f"{pp.path}/output_{pp.num:05}/sink_{pp.num:05}.csv"
|
csv_name = f"{pp.path}/output_{pp.num:05}/sink_{pp.num:05}.csv"
|
||||||
@@ -54,20 +56,18 @@ def get_sinks(pp):
|
|||||||
|
|
||||||
def analyze_box(pp):
|
def analyze_box(pp):
|
||||||
pp.cells["mass"] = snapshotprocessor.mass_func(pp.cells)
|
pp.cells["mass"] = snapshotprocessor.mass_func(pp.cells)
|
||||||
pp.coldens("z")
|
|
||||||
coldens = pp.get_value("/maps/coldens_z", unit=U.coldens)
|
coldens = pp.get_value("/maps/coldens_z", unit=U.coldens)
|
||||||
sinks = get_sinks(pp)
|
sinks = get_sinks(pp)
|
||||||
sinks["vel"] = np.array([sinks.vx, sinks.vy, sinks.vz])
|
|
||||||
sinks["vel"] *= pp.info["unit_velocity"].express(U.km_s)
|
|
||||||
sinks["mass"] = sinks.M
|
sinks["mass"] = sinks.M
|
||||||
res = {}
|
res = {}
|
||||||
dirs = ["x", "y", "z"]
|
dirs = ["x", "y", "z"]
|
||||||
res["time"] = pp.info["time"] * pp.info["unit_time"].express(U.Myr)
|
res["time"] = pp.info["time"] * pp.info["unit_time"].express(U.Myr)
|
||||||
for i, dir in enumerate(dirs):
|
for i, dir in enumerate(dirs):
|
||||||
res[f"sigma_{dir}"] = get_dispersion(pp.cells, i) * pp.info[
|
pp.cells[f"v{dir}"] = pp.cells["vel"][:, i]
|
||||||
|
res[f"sigma_{dir}"] = get_dispersion(pp.cells, f"v{dir}") * pp.info[
|
||||||
"unit_velocity"
|
"unit_velocity"
|
||||||
].express(U.km_s)
|
].express(U.km_s)
|
||||||
res[f"sigma_sinks_{dir}"] = get_dispersion(sinks, i) * pp.info[
|
res[f"sigma_sinks_{dir}"] = get_dispersion(sinks, f"v{dir}") * pp.info[
|
||||||
"unit_velocity"
|
"unit_velocity"
|
||||||
].express(U.km_s)
|
].express(U.km_s)
|
||||||
res["coldens_mean"] = np.mean(coldens)
|
res["coldens_mean"] = np.mean(coldens)
|
||||||
@@ -92,13 +92,8 @@ def load_wrapper(pp, fun):
|
|||||||
"""
|
"""
|
||||||
pp.load_cells(keys=["pos", "vel", "dx", "rho"])
|
pp.load_cells(keys=["pos", "vel", "dx", "rho"])
|
||||||
pp.coldens("z")
|
pp.coldens("z")
|
||||||
|
|
||||||
res = fun(pp)
|
res = fun(pp)
|
||||||
pp.unload_cells()
|
pp.unload_cells()
|
||||||
pp.unload_parts()
|
|
||||||
del pp.dm
|
|
||||||
del pp.gas
|
|
||||||
del pp.stars
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user