def __call__(self): field = self.ds._get_field_info(*self.field_name) skip_grids = False needs_spatial = False for v in field.validators: if getattr(v, "ghost_zones", 0) > 0: skip_grids = True if hasattr(v, "ghost_zones"): needs_spatial = True ds = self.ds # This gives unequal sized grids as well as subgrids dd1 = ds.all_data() dd2 = ds.all_data() sp = get_params(ds) dd1.field_parameters.update(sp) dd2.field_parameters.update(sp) with np.errstate(all='ignore'): v1 = dd1[self.field_name] # No more conversion checking assert_equal(v1, dd1[self.field_name]) if not needs_spatial: with field.unit_registry(dd2): res = field._function(field, dd2) res = dd2.apply_units(res, field.units) assert_array_almost_equal_nulp(v1, res, 4) if not skip_grids: for g in ds.index.grids: g.field_parameters.update(sp) v1 = g[self.field_name] g.clear_data() g.field_parameters.update(sp) r1 = field._function(field, g) if field.particle_type: assert_equal(v1.shape[0], g.NumberOfParticles) else: assert_array_equal(r1.shape, v1.shape) for ax in 'xyz': assert_array_equal(g[ax].shape, v1.shape) with field.unit_registry(g): res = field._function(field, g) assert_array_equal(v1.shape, res.shape) res = g.apply_units(res, field.units) assert_array_almost_equal_nulp(v1, res, 4)
def __call__(self): global base_ds field = base_ds._get_field_info(*self.field_name) deps = field.get_dependencies(ds=base_ds) requested = deps.requested particle_fields = \ ['particle_position_x', 'particle_position_y', 'particle_position_z', 'particle_velocity_x', 'particle_velocity_y', 'particle_velocity_z', 'particle_mass'] fields = list(_base_fields) for rf in requested: if rf[0] == 'io' or rf[0] == 'all': if rf not in particle_fields or rf[1] not in particle_fields: particle_fields.append(rf[1]) else: fields.append(rf) skip_grids = False needs_spatial = False for v in field.validators: f = getattr(v, "fields", None) if f: fields += f if getattr(v, "ghost_zones", 0) > 0: skip_grids = True if hasattr(v, "ghost_zones"): needs_spatial = True ds = realistic_ds(fields, particle_fields, self.nproc) # This gives unequal sized grids as well as subgrids dd1 = ds.all_data() dd2 = ds.all_data() sp = get_params(ds) dd1.field_parameters.update(sp) dd2.field_parameters.update(sp) v1 = dd1[self.field_name] # No more conversion checking assert_equal(v1, dd1[self.field_name]) if not needs_spatial: with field.unit_registry(dd2): res = field._function(field, dd2) res = dd2.apply_units(res, field.units) assert_array_almost_equal_nulp(v1, res, 4) if not skip_grids: for g in ds.index.grids: g.field_parameters.update(sp) v1 = g[self.field_name] g.clear_data() g.field_parameters.update(sp) r1 = field._function(field, g) if field.particle_type: assert_equal(v1.shape[0], g.NumberOfParticles) else: assert_array_equal(r1.shape, v1.shape) for ax in 'xyz': assert_array_equal(g[ax].shape, v1.shape) with field.unit_registry(g): res = field._function(field, g) assert_array_equal(v1.shape, res.shape) res = g.apply_units(res, field.units) assert_array_almost_equal_nulp(v1, res, 4)