コード例 #1
0
ファイル: test_fields.py プロジェクト: hrstvb/yt
    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)
コード例 #2
0
    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)