## 1. in the same capacity as `rb`, in which there are a set of `cb` ## constraints defining heat output. Here `allow_cb` would be disabled ## on `False` and a string when used (i.e. `heat` in this case). chp: name: 'Combined heat and power' color: '#FDC97D' stack_weight: 200 parent: supply carrier: power constraints: r: inf e_eff: 0.4 e_cap.max: 40000 # kW cb_allow: heat cb_eff: 0.6 # translates to a heat to power ratio of 0.6/0.4 = 1.5 cb_dump: True # possible constraint to allow secondary carrier to be dumped if unwanted costs: monetary: e_cap: 750 # USD per kW om_fuel: 0.02 # USD per kWh ## 2. `carrier_2` is defined in the line following `carrier`. ## In this case only one other constraint would be defined: the ## percentage of `carrier_2` produced when `carrier` is produced (i.e. heat to power ratio). chp: name: 'Combined heat and power' color: '#FDC97D' stack_weight: 200 parent: supply carrier: power carrier_2: heat constraints: r: inf e_eff: 0.4 e_cap.max: 40000 # kW c_ratio: 1.5 # carrier ratio = heat to power ratio. # forces 1.5kW heat to be produced for each 1kW power costs: monetary: e_cap: 750 # USD per kW om_fuel: 0.02 # USD per kWh ## 3. list arrays for certain YAML values, such that `carrier = power` ## becomes `carrier = [power, heat]` and subsequent constraints are ## dealt with in the same fashion or there is simply a heat to power ## ratio which is required when defining more than one carrier. ## This could allow an infinite number of carriers to be defined, ## which *may* be useful. As a result, the heat to power ratio constraint ## (`htp`) could then also be a list, following the number of carriers defined. cchp: name: 'Combined heat and power' color: '#FDC97D' stack_weight: 200 parent: supply carrier: [power, heat, cooling] constraints: r: inf e_eff: 0.4 e_cap.max: 40000 # kW c_ratio: [1, 1, .5] # carrier ratio is now [power:power, heat:power, cooling:power], # obviously the first is 1, but its existence ensures the same # list position for carrier and c_ratio elements. c_dump: [False, True, False] # possible constraint to allow secondary carriers to be dumped if unwanted costs: monetary: e_cap: 750 # USD per kW om_fuel: 0.02 #file=fuel.csv # USD per kWh ## 4. Define a dummy technology which consumes no resources and ## has an additional constraint to force it to follow the output ## of the primary carrier. This requires the least change in the ## current code, but puts the onus on the user to understand how ## to use the fix, and could be misused easier. gt: name: 'Gas turbine' color: '#FDC97D' stack_weight: 200 parent: supply carrier: power constraints: r: inf e_eff: 0.4 e_cap.max: 40000 # kW costs: monetary: e_cap: 750 # USD per kW om_fuel: 0.02 # USD per kWh gt_heat: name: 'Gas turbine heat' color: '#FDC97D' stack_weight: 200 parent: supply carrier: heat constraints: r: 0 r_link: gt # links resource to the gas turbine c_ratio: 1.5 # carrier ratio = heat to power ratio. # note: there are no associated costs