You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a bug in add_connector_comps such that if there are needed connector components in more than one of the comp_def in compdefs(obj), we will try to add ConnectorComp1 twice and trigger an Error. We need to track how many total have been added outside of the loop over all compdefs. A toy example to show this problem (on v0.9.4) is below from https://forum.mimiframework.org/t/error-in-coupling-different-timestep-length-components/111
This all relates to the bigger issue of adding first and last keywords #573
using Mimi
# A longer CH4 cycle component that runs for 20 periods.
@defcomp ch4_cycle begin
ch4_emiss = Parameter(index=[time])
ch4_conc = Variable(index=[time])
function run_timestep(p, v, d, t)
if is_first(t)
v.ch4_conc[t] = 720.0
else
v.ch4_conc[t] = v.ch4_conc[t-1] + 0.5 * p.ch4_emiss[t]
end
end
end
# A longer CO2 cycle component that runs for 20 periods.
@defcomp co2_cycle begin
co2_emiss = Parameter(index=[time])
co2_conc = Variable(index=[time])
function run_timestep(p, v, d, t)
if is_first(t)
v.co2_conc[t] = 278.0
else
v.co2_conc[t] = v.co2_conc[t-1] + 0.1 * p.co2_emiss[t]
end
end
end
# A shorter emissions component that switches on in period 15.
@defcomp emissions begin
gdp = Parameter(index=[time])
co2_emiss = Variable(index=[time])
ch4_emiss = Variable(index=[time])
function run_timestep(p, v, d, t)
v.co2_emiss[t] = 0.25 * p.gdp[t]
v.ch4_emiss[t] = 0.1 * p.gdp[t]
end
end
# Create the model for 20 time steps.
m = Model()
set_dimension!(m, :time, 20)
# Add components (emissions turn on in period 15).
add_comp!(m, emissions; first=15)
add_comp!(m, co2_cycle)
add_comp!(m, ch4_cycle)
# Set exogenous gdp scenario for periods 15-20 in emissions component.
set_param!(m, :emissions, :gdp, ones(6) .* 100)
# Create component connections (with backup CO2 and CH4 emissions data for periods 1-15)
backup_ch4_data = ones(20) .* 15
backup_co2_data = ones(20) .* 5
connect_param!(m, :ch4_cycle => :ch4_emiss, :emissions => :ch4_emiss, backup_ch4_data)
connect_param!(m, :co2_cycle => :co2_emiss, :emissions => :co2_emiss, backup_co2_data)
run(m)
The text was updated successfully, but these errors were encountered:
There is a bug in
add_connector_comps
such that if there are needed connector components in more than one of thecomp_def in compdefs(obj)
, we will try to addConnectorComp1
twice and trigger an Error. We need to track how many total have been added outside of the loop over all compdefs. A toy example to show this problem (on v0.9.4) is below from https://forum.mimiframework.org/t/error-in-coupling-different-timestep-length-components/111This all relates to the bigger issue of adding
first
andlast
keywords #573The text was updated successfully, but these errors were encountered: