Simple room temperature (ex. 54)

Overview

The relevant section of the top-level YAML looks like this:

components:
  # ... other stuff ...

  # NOTE: Constructing a simple "degree celsius" storage, ranging from 20 to 23 degrees.
  house:
    type: Node
    carrier: heat_degree_celsius
    has_state: true
    state_lb: 20
    state_ub: 23

  heatpump:
    type: Unit
    inputs: {electricity: grid}
    outputs: {heat_degree_celsius: house}
    conversion: 1 electricity -> cop@data * <degc_per_kWh> heat_degree_celsius
    capacity: 5 in:electricity
  
  # NOTE: Modeling this using `node_from` means it models the passive cooling of the house; negative values in
  #       `demand@data` therefore relate to passive heating (e.g., during summer times).
  passive_change:
    type: Profile
    carrier: heat_degree_celsius
    node_from: house
    value: demand@data

This is a simple model of a house with a heat pump that can heat the house. The heat pump has a coefficient of performance (COP) that is pre-calculated based on outside temperature. The house has a temperature that is bounded between 20 and 23 degrees Celsius. The house assively changes temperature based on the passive_change profile. Using the degc_per_kWh parameter we translate heat energy output from the heat pump to temperature change in the house.

Running the example

First, import iesopt.

import iesopt

Then, create a local copy of the IESopt example.

config = iesopt.make_example("54_simple_roomtemperature", "opt")
INFO:iesopt:Data folder for examples already exists; NOT copying ANY contents
INFO:iesopt:Creating example ('54_simple_roomtemperature') at: 'opt/54_simple_roomtemperature.iesopt.yaml'
INFO:iesopt:Set write permissions for example ('opt/54_simple_roomtemperature.iesopt.yaml'), and data folder ('opt/files')

Finally, run the model and observe some results.

model = iesopt.run(config, config={"general.verbosity.core": "error"})

model.results.to_pandas().query(
    "component == 'house' and field == 'state' and mode == 'primal'"
)
snapshot component fieldtype field value mode
169 t1 house var state 20.996 primal
170 t2 house var state 20.396 primal
171 t3 house var state 21.392 primal
172 t4 house var state 21.800 primal
173 t5 house var state 21.200 primal
174 t6 house var state 20.600 primal
175 t7 house var state 20.000 primal
176 t8 house var state 20.000 primal
177 t9 house var state 20.000 primal
178 t10 house var state 20.100 primal
179 t11 house var state 20.000 primal
180 t12 house var state 21.404 primal
181 t13 house var state 21.504 primal
182 t14 house var state 21.504 primal
183 t15 house var state 23.000 primal
184 t16 house var state 23.000 primal
185 t17 house var state 22.700 primal
186 t18 house var state 22.400 primal
187 t19 house var state 23.000 primal
188 t20 house var state 22.400 primal
189 t21 house var state 21.800 primal
190 t22 house var state 21.200 primal
191 t23 house var state 20.600 primal
192 t24 house var state 20.000 primal