Dear yt users,
Hi, I have a question on derived field. I want to define "Dark Matter cell mass", which can be defined by (Dark matter density) * (cell_volume). To check that "Dark Matter cell mass" defined well, I also tried to define "my_cell_mass", which should give the same value as the default 'cell_mass', but it gave me an error, and I don't have any idea what the problem is. Could you help me with the problem?
I'm working on Enzo data.
Here is my python code (I'm sorry that it's lengthy):
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']) def my_cell_mass(field, data): return (data['density']*data['cell_volume'])
ds_all=yt.load("/.../redshift00??")
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_in_cell_mass"), units="g", function=DM_in_cell_mass) ds_all.add_field(("gas", "my_cell_mass"), units="g", function=my_cell_mass)
sp = ds_all.sphere([centerx, centery, centerz], ((somevalue), "kpc"))
sp['cell_volume']
YTArray([ 4.44089210e-16, 4.44089210e-16, 4.44089210e-16, ..., 6.93889390e-18, 6.93889390e-18, 6.93889390e-18]) code_length**3
sp[('gas', 'my_cell_mass')]
YTFieldNotFound: Could not find field '('gas', 'my_cell_mass')' in redshift00??.
Best,
Y.T.