<div dir="ltr">Hi,<div><br></div><div>I've hit a problem with the latest version of yt and covering grid that is linked with the number of ghostzones. My code looked like:</div><div><br></div><div><div>for dim in range(3):</div>
<div><br></div><div>      left.append(cloud_position[c][dim] - 0.5*width[dim])</div><div>      right.append(cloud_position[c][dim] + 0.5*width[dim])</div><div>      dims.append(int(round((right[dim]-left[dim])/cellsize)))</div>
<div><br></div><div>    cgrid = pf.h.covering_grid(level,</div><div>                               left_edge = left,</div><div>                               dims=dims,</div><div>                               num_ghost_zones=2)</div>
</div><div><br></div><div><br></div><div style>but gives me:</div><div style><br></div><div style><div>TypeError                                 Traceback (most recent call last)</div><div>/home/tasker/yt-new2/src/yt-hg/scripts/iyt in <module>()</div>
<div>----> 1 execfile("export_hdf5_cube.py")</div><div><br></div><div>/home/tasker/yt-new2/src/yt-hg/scripts/iyt in <module>()</div><div>     51                                left_edge = left,</div><div>
     52                                dims=dims,</div><div>---> 53                                num_ghost_zones=2)</div><div>     54 </div><div>     55 </div><div><br></div><div>/home/tasker/yt-new2/src/yt-hg/yt/data_objects/data_containers.pyc in __init__(self, level, left_edge, dims, fields, pf, num_ghost_zones, use_pbar, **kwargs)</div>
<div>   3689         self.level = level</div><div>   3690         rdx = self.pf.domain_dimensions*self.pf.refine_by**level</div><div>-> 3691         rdx[np.where(dims - 2 * num_ghost_zones <= 1)] = 1   # issue 602</div>
<div>   3692         self.dds = self.pf.domain_width / rdx.astype("float64")</div><div>   3693         self.ActiveDimensions = np.array(dims, dtype='int32')</div><div><br></div><div>TypeError: unsupported operand type(s) for -: 'list' and 'int'</div>
<div><br></div></div><div style><div><br></div><div><br></div><div><br></div><div style>This happens regardless of whether I use num_ghost_zones or not. If I don't have ghost_zones set, the error occurs at line 52, but still points to line 3691. Dims and left look fine:</div>
<div style><br></div><div style><div>In [9]: dims</div><div>Out[9]: [64, 64, 64]</div><div><br></div><div>In [10]: left</div><div>Out[10]: [20.424700000000001, 11.512700000000001, 15.7158]</div><div><br></div><div><div>In [11]: level</div>
<div>Out[11]: 5</div></div><div><br></div><div><div>In [14]: rdx = pf.domain_dimensions*pf.refine_by**level</div><div>In [15]: rdx</div><div>Out[15]: array([4096, 4096, 4096])</div></div><div><br></div><div><br></div><div style>
If I set num_ghost_zones = na.array([0,0,0]) then it runs. However, if I then try </div><div style><br></div><div style> cgrid["x"]</div><div><br></div><div style>I hit more problems circulating around the same area:</div>
<div style><br></div><div style><div>ValueError                                Traceback (most recent call last)</div><div>/home/tasker/yt-new2/src/yt-hg/scripts/iyt in <module>()</div><div>----> 1 cgrid["y"]</div>
<div><br></div><div>/home/tasker/yt-new2/src/yt-hg/yt/data_objects/data_containers.pyc in __getitem__(self, key)</div><div>    316             if key not in self.fields:</div><div>    317                 self.fields.append(key)</div>
<div>--> 318             self.get_data(key)</div><div>    319         return self.field_data[key]</div><div>    320 </div><div><br></div><div>/home/tasker/yt-new2/src/yt-hg/yt/data_objects/data_containers.pyc in get_data(self, fields)</div>
<div>   3733                 try:</div><div>   3734                     #print "Generating", field</div><div>-> 3735                     self._generate_field(field)</div><div>   3736                     continue</div>
<div>   3737                 except NeedsOriginalGrid, ngt_exception:</div><div><br></div><div>/home/tasker/yt-new2/src/yt-hg/yt/data_objects/data_containers.pyc in _generate_field(self, field)</div><div>   3764         if self.pf.field_info.has_key(field):</div>
<div>   3765             # First we check the validator; this might even raise!</div><div>-> 3766             self.pf.field_info[field].check_available(self)</div><div>   3767             self[field] = self.pf.field_info[field](self)</div>
<div>   3768         else: # Can't find the field, try as it might</div><div><br></div><div>/home/tasker/yt-new2/src/yt-hg/yt/data_objects/field_info_container.pyc in check_available(self, data)</div><div>    354         """</div>
<div>    355         for validator in self.validators:</div><div>--> 356             validator(data)</div><div>    357         # If we don't get an exception, we're good to go</div><div>    358         return True</div>
<div><br></div><div>/home/tasker/yt-new2/src/yt-hg/yt/data_objects/field_info_container.pyc in __call__(self, data)</div><div>    482         if not data._spatial:</div><div>    483             raise NeedsGridType(self.ghost_zones,self.fields)</div>
<div>--> 484         if self.ghost_zones <= data._num_ghost_zones:</div><div>    485             return True</div><div>    486         raise NeedsGridType(self.ghost_zones,self.fields)</div><div><br></div><div>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()</div>
<div><br></div><div><br></div><div style>cgrid["Density"] and the velocities are fine.</div><div style><br></div><div style>I'm suspecting this is because the position calculation in the code is not expecting an array for the ghost zone number?</div>
<div style><br></div><div style>Oddly, I see from the mailing list is this reminiscent of a problem nyx was having.</div><div style><br></div><div style>Elizabeth</div></div></div></div></div>