Issue #1149: RuntimeError when defining a derived gradient field (2D cartesian data) (yt_analysis/yt)

New issue 1149: RuntimeError when defining a derived gradient field (2D cartesian data) https://bitbucket.org/yt_analysis/yt/issues/1149/runtimeerror-when-defining-...
Suoqing Ji:
Script:
``` #!python
import yt from yt.fields.derived_field import ValidateSpatial import numpy as np
@yt.derived_field(name='gradx_velocity_x', units='1/code_time', validators = [ValidateSpatial(1, ['velocity_x'])]) def _gradx_velocity_x(field,data): sl_left = slice(None, -2, None) sl_right = slice(2, None, None) div_fac = 2.0 ds = div_fac * data['dx'].flat[0] f = data["velocity_x"][sl_right,1:-1,1:-1]/ds f -= data["velocity_x"][sl_left ,1:-1,1:-1]/ds new_field = np.zeros(data["velocity_x"].shape, dtype='float64') new_field = data.ds.arr(new_field,'1/code_time') new_field[1:-1,1:-1,1:-1] = f return new_field
ds = yt.load('thermal_instab_hdf5_chk_0050') ds.periodicity = (True, True, True) slc = yt.SlicePlot(ds, 'z', 'gradx_velocity_x') slc.save() ```
Error:
``` #!python
Traceback (most recent call last): File "slice.py", line 22, in <module> slc = yt.SlicePlot(ds, 'z', 'gradx_velocity_x') File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/visualization/plot_window.py", line 1859, in SlicePlot return AxisAlignedSlicePlot(ds, normal, fields, *args, **kwargs) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/visualization/plot_window.py", line 1235, in __init__ slc.get_data(fields) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 1181, in get_data self._generate_fields(fields_to_generate) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 1201, in _generate_fields fd = self._generate_field(field) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 305, in _generate_field tr = self._generate_fluid_field(field) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 323, in _generate_fluid_field rv = self._generate_spatial_fluid(field, ngt_exception.ghost_zones) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 352, in _generate_spatial_fluid gz[field][ngz:-ngz, ngz:-ngz, ngz:-ngz], File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/data_containers.py", line 268, in __getitem__ self.get_data(f) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/construction_data_containers.py", line 614, in get_data if len(fill) > 0: self._fill_fields(fill) File "/Users/jisuoqing/Workspace/code/yt-x86_64/src/yt-hg/yt/data_objects/construction_data_containers.py", line 907, in _fill_fields raise RuntimeError RuntimeError ```
However, when I commented out the lines of ```raise RuntimeError```, the script works fine and produces reasonable result.
participants (1)
-
Suoqing Ji