Skip to content

Commit b044252

Browse files
committed
Fix some timestep mapping -related bugs that are caught by more complex examples, and add/remove some tests
1 parent cba965c commit b044252

3 files changed

Lines changed: 243 additions & 550 deletions

File tree

src/dependencies/hard_dependencies.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,9 @@ end
192192

193193
function extract_timestep_mapped_outputs(m::MultiScaleModel, organ::String, outputs_process, timestep_mapped_outputs_process)
194194
if length(m.timestep_mapped_variables) > 0
195-
timestep_mapped_outputs_process[organ] = Dict{Symbol,Vector}()
195+
if !haskey(timestep_mapped_outputs_process, organ)
196+
timestep_mapped_outputs_process[organ] = Dict{Symbol,Vector}()
197+
end
196198
key = process(m.model)
197199
extra_outputs = timestep_mapped_outputs_(m)
198200
#ind = findfirst(x -> first(x) == key, outputs_process[organ][key])

src/dependencies/soft_dependencies.jl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,16 @@ search_inputs_in_output(:process3, in_, out_)
431431
(process4 = (:var1, :var2),)
432432
```
433433
"""
434+
435+
436+
function extract_mapped_outputs(timestep_mapped_outputs)
437+
extracted = Pair[]
438+
for pair in timestep_mapped_outputs
439+
push!(extracted, Pair(first(last(pair)).name_to, last(last(pair))))
440+
end
441+
return extracted
442+
end
443+
434444
function search_inputs_in_output(process, inputs, outputs, timestep_mapped_outputs=Dict{Symbol,NamedTuple}())
435445
# proc, ins, outs
436446
# get the inputs of the node:
@@ -442,7 +452,7 @@ function search_inputs_in_output(process, inputs, outputs, timestep_mapped_outpu
442452
vars_output = flatten_vars(pairs_vars_output)
443453
vars_all_outputs = vars_output
444454
if haskey(timestep_mapped_outputs, proc_output)
445-
vars_all_outputs = (; vars_output..., flatten_vars(timestep_mapped_outputs[proc_output])...)
455+
vars_all_outputs = (; vars_output..., extract_mapped_outputs(timestep_mapped_outputs[proc_output])...)
446456
end
447457

448458
inputs_in_outputs = vars_in_variables(vars_input, vars_all_outputs)
@@ -549,14 +559,6 @@ function search_inputs_in_multiscale_output(process, organ, inputs, soft_dep_gra
549559
return inputs_as_output_of_other_scale
550560
end
551561

552-
function extract_mapped_outputs(timestep_mapped_outputs)
553-
extracted = Pair[]
554-
for pair in timestep_mapped_outputs
555-
push!(extracted, Pair(first(last(pair)).name_to, last(last(pair))))
556-
end
557-
return extracted
558-
end
559-
560562
function add_input_as_output!(inputs_as_output_of_other_scale, soft_dep_graphs, organ_source, variable, value)
561563

562564
timestep_mapped_outputs = soft_dep_graphs[organ_source][:timestep_mapped_outputs]

0 commit comments

Comments
 (0)