Hi, I have a mystery: Creating a ray via: ray = pf.h.ray( com[c], com[nearestcore]) and I want to get the effective potential along it, for which I have a subrountine for. However, yr gets stuck here: if data.pf["HydroMethod"] == 2: xvel[0:-1,0:-1,0:-1] = 0.5*(data["x-velocity"][slice(None,-1,None),0:-1,0:-1]+data["x-velocity"][slice(1,None,None),0:-1,0:-1]) I thought the problem was because a ray is a 1D data set and I was trying to treat it like a 3D array, but what confuses me is that: ray["DivV"] works just fine but as the same sort of line within its definition. http://yt.enzotools.org/doc/reference/field_list.html#divv To make matters more confusing, if I copy out the definition of DivV directly from universal_fields.py and implement it imaginatively as DivV2, the code doesn't work, giving me: /1/home/taskere/yt/scripts/iyt in _DivV2(field, data) 211 div_fac = 2.0 212 ds = div_fac * data['dx'].flat[0] --> 213 f = data["x-velocity"][sl_right,1:-1,1:-1]/ds 214 f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds 215 if data.pf.dimensionality > 1: IndexError: too many indices What magic line does yt have to allow DivV to work for a ray? Thanks, Elizabeth
Hi Elizabeth,
You have to use the ValidateSpatial validator to ensure that the data handed
to te subroutine is 3D.
-Matt
On Aug 9, 2011 11:50 AM, "Elizabeth Tasker"
Hi,
I have a mystery:
Creating a ray via:
ray = pf.h.ray( com[c], com[nearestcore])
and I want to get the effective potential along it, for which I have a subrountine for. However, yr gets stuck here:
if data.pf["HydroMethod"] == 2: xvel[0:-1,0:-1,0:-1] =
0.5*(data["x-velocity"][slice(None,-1,None),0:-1,0:-1]+data["x-velocity"][slice(1,None,None),0:-1,0:-1])
I thought the problem was because a ray is a 1D data set and I was trying to treat it like a 3D array, but what confuses me is that:
ray["DivV"]
works just fine but as the same sort of line within its definition.
http://yt.enzotools.org/doc/reference/field_list.html#divv
To make matters more confusing, if I copy out the definition of DivV directly from universal_fields.py and implement it imaginatively as DivV2, the code doesn't work, giving me:
/1/home/taskere/yt/scripts/iyt in _DivV2(field, data) 211 div_fac = 2.0 212 ds = div_fac * data['dx'].flat[0] --> 213 f = data["x-velocity"][sl_right,1:-1,1:-1]/ds 214 f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds 215 if data.pf.dimensionality > 1:
IndexError: too many indices
What magic line does yt have to allow DivV to work for a ray?
Thanks,
Elizabeth
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
Hi Matt, Ah, great -- thank you. However, when I try to use it, the code chocks on my 3d data. I have: add_field("Omega", function=_Omega, validators=[ValidateParameter("height_vector"), ValidateParameter("center"), ValidateSpatial(1, ["x-velocity", "y-velocity", "z-velocity", "x", "y", "z"])]) and I get /1/home/taskere/yt/yt/data_objects/field_info_container.py in __call__(self, data) 411 if self.ghost_zones <= data._num_ghost_zones: 412 return True --> 413 raise NeedsGridType(self.ghost_zones,self.fields) 414 415 class ValidateGridType(FieldValidator): NeedsGridType: (1, ['x-velocity', 'y-velocity', 'z-velocity', 'x', 'y', 'z']) Did I get the syntax wrong? Elizabeth Matthew Turk wrote:
Hi Elizabeth,
You have to use the ValidateSpatial validator to ensure that the data handed to te subroutine is 3D.
-Matt
On Aug 9, 2011 11:50 AM, "Elizabeth Tasker"
mailto:taskere@mcmaster.ca> wrote: Hi,
I have a mystery:
Creating a ray via:
ray = pf.h.ray( com[c], com[nearestcore])
and I want to get the effective potential along it, for which I have a subrountine for. However, yr gets stuck here:
if data.pf http://data.pf["HydroMethod"] == 2: xvel[0:-1,0:-1,0:-1] =
0.5*(data["x-velocity"][slice(None,-1,None),0:-1,0:-1]+data["x-velocity"][slice(1,None,None),0:-1,0:-1])
I thought the problem was because a ray is a 1D data set and I was trying to treat it like a 3D array, but what confuses me is that:
ray["DivV"]
works just fine but as the same sort of line within its definition.
http://yt.enzotools.org/doc/reference/field_list.html#divv
To make matters more confusing, if I copy out the definition of DivV directly from universal_fields.py and implement it imaginatively as DivV2, the code doesn't work, giving me:
/1/home/taskere/yt/scripts/iyt in _DivV2(field, data) 211 div_fac = 2.0 212 ds = div_fac * data['dx'].flat[0] --> 213 f = data["x-velocity"][sl_right,1:-1,1:-1]/ds 214 f -= data["x-velocity"][sl_left ,1:-1,1:-1]/ds 215 if data.pf.dimensionality > 1:
IndexError: too many indices
What magic line does yt have to allow DivV to work for a ray?
Thanks,
Elizabeth
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org mailto:yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
------------------------------------------------------------------------
_______________________________________________ yt-users mailing list yt-users@lists.spacepope.org http://lists.spacepope.org/listinfo.cgi/yt-users-spacepope.org
participants (2)
-
Elizabeth Tasker
-
Matthew Turk