示例#1
0
class AreaWideGrid(Event):
    expected_fields = set(
        [
            "sim_time_start",  # time start in seconds
            "sim_time_end",  # can be None
            "rain_definition",  # which "ontwerpbui"?
            "type",  # not used
        ]
    )

    def __init__(self, *args, **kwargs):
        super(AreaWideGrid, self).__init__(*args, **kwargs)
        self.rain_definition = kwargs["rain_definition"]
        self.memcdf_name = "area_wide_%s.nc" % random_string(8)

    def init(self, subgrid):
        self.subgrid = subgrid
        self.rain_grid = AreaWideRainGrid(subgrid, memcdf_name=self.memcdf_name)

    def update(self, sim_time):
        """Update grid and apply. Return whether the grid has changed"""
        lookup_time = int(sim_time - self.sim_time_start)
        changed = self.rain_grid.update(rain_definition=self.rain_definition, time_seconds=lookup_time)
        return changed

    def delete_memcdf(self):
        if os.path.exists(self.memcdf_name):
            os.remove(self.memcdf_name)

    def __str__(self):
        return "area wide rain grid %s (%r-%r)" % (self.rain_definition, self.sim_time_start, self.sim_time_end)
    def test_area_wide_rain_grid(self):
        subgrid = python_subgrid.wrapper.SubgridWrapper(mdu=self.mdu)
        python_subgrid.wrapper.logger.setLevel(logging.DEBUG)
        subgrid.start()

        rain_grid = AreaWideRainGrid(subgrid, memcdf_name='area_rain.nc')
        rain_grid.update('10', 600)
        self.assertEquals(memcdf_value(rain_grid.memcdf_name), 6.3 / 300 * 60)
        self.assertEquals(rain_grid.cumulative, 1.8 + 3.6)
        self.assertEquals(rain_grid.current_value, 6.3)

        changed = rain_grid.update('5', 900)
        self.assertEquals(memcdf_value(rain_grid.memcdf_name), 2.70 / 300 * 60)
        self.assertEquals(rain_grid.cumulative, 0.30 + 0.60 + 1.50)
        self.assertEquals(rain_grid.current_value, 2.7)
        self.assertEquals(changed, True)

        changed = rain_grid.update('5', 900)
        self.assertEquals(changed, False)
示例#3
0
 def init(self, subgrid):
     self.subgrid = subgrid
     self.rain_grid = AreaWideRainGrid(subgrid, memcdf_name=self.memcdf_name)