import numpy as np
import yt
ds = yt.load("GasSloshingLowRes/sloshing_low_res_hdf5_plt_cnt_0350")
grad_fields = ds.add_gradient_fields(("gas", "gravitational_potential"))
def _hse(field, data):
gx = -data["gas", "density"] * data["gas", "gravitational_potential_gradient_x"]
gy = -data["gas", "density"] * data["gas", "gravitational_potential_gradient_y"]
gz = -data["gas", "density"] * data["gas", "gravitational_potential_gradient_z"]
hx = data["gas", "pressure_gradient_x"] - gx
hy = data["gas", "pressure_gradient_y"] - gy
hz = data["gas", "pressure_gradient_z"] - gz
h = np.sqrt((hx * hx + hy * hy + hz * hz) / (gx * gx + gy * gy + gz * gz))
return h
ds.add_field(
("gas", "HSE"),
function=_hse,
units="",
take_log=False,
display_name="Hydrostatic Equilibrium",
sampling_type="cell",
)
ds.force_periodicity()
slc = yt.SlicePlot(ds, 2, [("gas", "density"), ("gas", "HSE")], width=(1, "Mpc"))
slc.save("hse")