Example #1
0
    def get_warmwater_consumption_power_with_parameters(self, residents=0,
                                                        time_in_seconds=10, temperature=20, heat_storage_base=15):
        ''' the result depends on the number of residents,
        the current time aka self.env.now
        the temperature of warm water and 
        the base_temperatur of the heat_storage'''
        self.consumer.config['residents'] = residents
        env = BaseEnvironment(initial_time=time_in_seconds, forecast=True)
        self.consumer.env = env
        self.consumer.temperature_warmwater = temperature

        heat_storage = SimulatedHeatStorage(0, env)
        heat_storage.base_temperature = heat_storage_base
        self.consumer.heat_storage = heat_storage

        return self.consumer.get_warmwater_consumption_power()
Example #2
0
    def get_warmwater_consumption_power_with_parameters(
            self,
            residents=0,
            time_in_seconds=10,
            temperature=20,
            heat_storage_base=15):
        ''' the result depends on the number of residents,
        the current time aka self.env.now
        the temperature of warm water and 
        the base_temperatur of the heat_storage'''
        self.consumer.config['residents'] = residents
        env = BaseEnvironment(initial_time=time_in_seconds, forecast=True)
        self.consumer.env = env
        self.consumer.temperature_warmwater = temperature

        heat_storage = SimulatedHeatStorage(0, env)
        heat_storage.base_temperature = heat_storage_base
        self.consumer.heat_storage = heat_storage

        return self.consumer.get_warmwater_consumption_power()
Example #3
0
    def test_target_temperature_simulate_consumption(self):
        '''the target temperature of the consumer should be set
        according to the daily demand'''
        daily_demand = [x for x in range(24)]

        env = BaseEnvironment(initial_time=1388530800,
                              forecast=True)  # 2014-01-01 00:00:00
        heat_storage = SimulatedHeatStorage(0, env)
        consumer = SimulatedThermalConsumer(1, env)
        consumer.heat_storage = heat_storage
        consumer.daily_demand = daily_demand

        for index, temperature in enumerate(daily_demand):
            consumer.config['target_temperature'] = 0
            consumer.simulate_consumption()

            self.assertEqual(
                consumer.config['target_temperature'], temperature,
                "current hour: {0} expected: {1} got: {2}".format(
                    index, consumer.config['target_temperature'], temperature))

            env.now += 60 * 60
        '''def test_heat_room(self):
Example #4
0
 def setUp(self):
     env = BaseEnvironment(forecast=True)
     self.consumer = SimulatedThermalConsumer(0, env)
     self.consumer.heat_storage = SimulatedHeatStorage(1, env)
Example #5
0
class SimulatedHeatStorageTests(unittest.TestCase):
    def setUp(self):
        self.env = BaseEnvironment()
        self.hs = SimulatedHeatStorage(0, env=self.env)

    def test_heat_storage_creation(self):
        self.assertGreater(self.hs.config["capacity"], 0)
        self.assertGreater(self.hs.base_temperature, 0)
        self.assertGreater(self.hs.config["min_temperature"], 0)

        self.assertGreater(self.hs.config["target_temperature"], self.hs.config["min_temperature"])
        self.assertGreater(self.hs.config["critical_temperature"], self.hs.config["target_temperature"])

        self.assertGreater(self.hs.specific_heat_capacity, 0)

        self.assertEqual(self.hs.input_energy, 0)
        self.assertEqual(self.hs.output_energy, 0)
        self.assertEqual(self.hs.empty_count, 0)

        self.assertGreater(self.hs.temperature_loss, 0)

    def test_energy_stored(self):
        self.hs.input_energy = 2
        self.hs.output_energy = 1
        self.assertEqual(self.hs.energy_stored(), 2 - 1)

    def test_get_required_energy(self):
        # target_energy should return the energy needed to fill the storage to
        # its target-temperature
        self.hs.input_energy = 9
        self.hs.output_energy = 1
        stored_energy = 9 - 1

        # get energy needed to get the energy needed to reach the
        # target_temperature from zero
        self.hs.base_temperature = 0
        self.hs.config["target_temperature"] = 70
        self.hs.specific_heat_capacity = 0.002
        self.hs.config["capacity"] = 2500
        target_energy = 0.002 * 70 * 2500

        # get energy needed to fill storage from the stored energy to its target
        # temperature
        required_energy = target_energy - stored_energy

        self.assertAlmostEqual(required_energy, self.hs.get_required_energy())

    def test_add_energy(self):
        self.hs.input_energy = 0
        for i in range(20):
            self.hs.add_energy(0.5)

        self.assertEqual(self.hs.input_energy, 20 * 0.5)

    def test_consume_energy(self):
        self.hs.input_energy = 2
        self.hs.output_energy = 0
        self.hs.consume_energy(2)

        self.assertEqual(self.hs.output_energy, 2)

    def test_consume_too_much_energy(self):
        self.hs.empty_count = 0
        self.hs.input_energy = 1
        self.hs.consume_energy(2)

        self.assertEqual(self.hs.empty_count, 1)
        self.assertEqual(self.hs.output_energy, 1)

    def test_get_temperatur(self):
        base_temperature = 1
        self.hs.base_temperature = base_temperature
        self.hs.input_energy = 1
        self.hs.ouput_energy = 0
        energy_stored = 1
        self.hs.config["capacity"] = 2500
        self.hs.specific_heat_capacity = 0.002

        # temperature = energy/capacity
        added_temperature = energy_stored / (2500 * 0.002)
        temperature = 1 + added_temperature

        self.assertEqual(temperature, self.hs.get_temperature())

    def test_get_energy_capacity(self):
        # max energy the storage can hold:
        # energy = capacity*TemperatureDiff
        max_temperature_diff = self.hs.config["critical_temperature"] - self.hs.base_temperature
        max_energy = self.hs.specific_heat_capacity * self.hs.config["capacity"] * max_temperature_diff

        self.assertEqual(max_energy, self.hs.get_energy_capacity())

    def test_undersupplied(self):
        self.hs.base_temperature = 0
        self.hs.input_energy = 0
        self.hs.config["min_temperature"] = 20

        self.assertTrue(self.hs.undersupplied())

        self.hs.base_temperature = 20

        self.assertFalse(self.hs.undersupplied())

    def test_step(self):
        self.hs.temperature_loss = 3.0 / 24.0  # per dey
        self.hs.config["capacity"] = 2500
        self.hs.specific_heat_capacity = 0.002
        self.env.step_size = 120  # 20 measurements per hour
        self.hs.output_energy = 0

        # capacity * temperature_loss
        energy_loss_per_hour = (2500 * 0.002) * (3.0 / 24.0)
        energy_loss_per_step = energy_loss_per_hour * (self.env.step_size / 3600.0)  # divide steps

        self.hs.step()

        self.assertEqual(self.hs.output_energy, energy_loss_per_step)
Example #6
0
 def setUp(self):
     self.env = BaseEnvironment()
     self.hs = SimulatedHeatStorage(0, env=self.env)
Example #7
0
class SimulatedHeatStorageTests(unittest.TestCase):
    def setUp(self):
        self.env = BaseEnvironment()
        self.hs = SimulatedHeatStorage(0, env=self.env)

    def test_heat_storage_creation(self):
        self.assertGreater(self.hs.config['capacity'], 0)
        self.assertGreater(self.hs.base_temperature, 0)
        self.assertGreater(self.hs.config['min_temperature'], 0)

        self.assertGreater(self.hs.config['target_temperature'],
                           self.hs.config['min_temperature'])
        self.assertGreater(self.hs.config['critical_temperature'],
                           self.hs.config['target_temperature'])

        self.assertGreater(self.hs.specific_heat_capacity, 0)

        self.assertEqual(self.hs.input_energy, 0)
        self.assertEqual(self.hs.output_energy, 0)
        self.assertEqual(self.hs.empty_count, 0)

        self.assertGreater(self.hs.temperature_loss, 0)

    def test_energy_stored(self):
        self.hs.input_energy = 2
        self.hs.output_energy = 1
        self.assertEqual(self.hs.energy_stored(), 2 - 1)

    def test_get_required_energy(self):
        # target_energy should return the energy needed to fill the storage to
        # its target-temperature
        self.hs.input_energy = 9
        self.hs.output_energy = 1
        stored_energy = 9 - 1

        # get energy needed to get the energy needed to reach the
        # target_temperature from zero
        self.hs.base_temperature = 0
        self.hs.config['target_temperature'] = 70
        self.hs.specific_heat_capacity = 0.002
        self.hs.config['capacity'] = 2500
        target_energy = 0.002 * 70 * 2500

        # get energy needed to fill storage from the stored energy to its target
        # temperature
        required_energy = target_energy - stored_energy

        self.assertAlmostEqual(required_energy, self.hs.get_required_energy())

    def test_add_energy(self):
        self.hs.input_energy = 0
        for i in range(20):
            self.hs.add_energy(0.5)

        self.assertEqual(self.hs.input_energy, 20 * 0.5)

    def test_consume_energy(self):
        self.hs.input_energy = 2
        self.hs.output_energy = 0
        self.hs.consume_energy(2)

        self.assertEqual(self.hs.output_energy, 2)

    def test_consume_too_much_energy(self):
        self.hs.empty_count = 0
        self.hs.input_energy = 1
        self.hs.consume_energy(2)

        self.assertEqual(self.hs.empty_count, 1)
        self.assertEqual(self.hs.output_energy, 1)

    def test_get_temperatur(self):
        base_temperature = 1
        self.hs.base_temperature = base_temperature
        self.hs.input_energy = 1
        self.hs.ouput_energy = 0
        energy_stored = 1
        self.hs.config['capacity'] = 2500
        self.hs.specific_heat_capacity = 0.002

        # temperature = energy/capacity
        added_temperature = energy_stored / (2500 * 0.002)
        temperature = 1 + added_temperature

        self.assertEqual(temperature, self.hs.get_temperature())

    def test_get_energy_capacity(self):
        # max energy the storage can hold:
        # energy = capacity*TemperatureDiff
        max_temperature_diff = self.hs.config['critical_temperature'] - \
            self.hs.base_temperature
        max_energy = self.hs.specific_heat_capacity * \
            self.hs.config['capacity'] * max_temperature_diff

        self.assertEqual(max_energy, self.hs.get_energy_capacity())

    def test_undersupplied(self):
        self.hs.base_temperature = 0
        self.hs.input_energy = 0
        self.hs.config['min_temperature'] = 20

        self.assertTrue(self.hs.undersupplied())

        self.hs.base_temperature = 20

        self.assertFalse(self.hs.undersupplied())

    def test_step(self):
        self.hs.temperature_loss = 3.0 / 24.0  # per dey
        self.hs.config['capacity'] = 2500
        self.hs.specific_heat_capacity = 0.002
        self.env.step_size = 120  # 20 measurements per hour
        self.hs.output_energy = 0

        # capacity * temperature_loss
        energy_loss_per_hour = (2500 * 0.002) * (3.0 / 24.0)
        energy_loss_per_step = energy_loss_per_hour * \
            (self.env.step_size / 3600.0)  # divide steps

        self.hs.step()

        self.assertEqual(self.hs.output_energy, energy_loss_per_step)
Example #8
0
 def setUp(self):
     self.env = BaseEnvironment()
     self.hs = SimulatedHeatStorage(0, env=self.env)