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

Suoqing Ji issues-reply at bitbucket.org
Sat Dec 19 02:01:58 PST 2015


New issue 1149: RuntimeError when defining a derived gradient field (2D cartesian data)
https://bitbucket.org/yt_analysis/yt/issues/1149/runtimeerror-when-defining-a-derived

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.





More information about the yt-dev mailing list