[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