import yt
from yt.data_objects.particle_filters import add_particle_filter
def stars(pfilter, data):
filter = data[(pfilter.filtered_type, "particle_type")] == 2
return filter
def DMparticles(pfilter, data):
filter = data[(pfilter.filtered_type, "particle_type")] == 1
return filter
add_particle_filter("stars", function=stars, filtered_type='io',
requires=["particle_type"])
add_particle_filter("DMparticles", function=DMparticles, filtered_type='io',
requires=["particle_type"])
def only_DM(field, data):
return data['deposit','DMparticles_density']
def DM_in_cell_mass(field, data):
return (data['only_DM_Density']*data['cell_volume'])
ds_all=yt.load("~/IsolatedGalaxy/galaxy0030/galaxy0030")
ds_all.add_particle_filter('stars')
ds_all.add_particle_filter('DMparticles')
ds_all.add_field(("gas", "only_DM_Density"), units="g/cm**3", function=only_DM)
ds_all.add_field(("gas", "DM_cell_mass"), units="g", function=DM_in_cell_mass)
sp = ds_all.sphere([0.5, 0.5, 0.5], (10, "kpc"))
lineplot_gas_DM_density_128 = yt.ProfilePlot(sp, "density", ["only_DM_Density"], weight_field="DM_cell_mass", n_bins=128)
lineplot_gas_DM_density_gasweighted_128 = yt.ProfilePlot(sp, "density", ["only_DM_Density"], weight_field="cell_mass", n_bins=128)
lineplot_gas_DM_density_gasweighted_128.save("128_gasweighted")
lineplot_gas_DM_density_128.save("128_DMweighted")