442
442
$(TYPEDSIGNATURES)
443
443
444
444
Remove keys in `varmap` whose values are `nothing`.
445
+
446
+ If `missing_values` is not `nothing`, it is assumed to be a collection and all removed
447
+ keys will be added to it.
445
448
"""
446
- function filter_missing_values! (varmap:: AbstractDict )
447
- filter! (kvp -> kvp[2 ] != = nothing , varmap)
449
+ function filter_missing_values! (varmap:: AbstractDict ; missing_values = nothing )
450
+ filter! (varmap) do kvp
451
+ if kvp[2 ] != = nothing
452
+ return true
453
+ end
454
+ if missing_values != = nothing
455
+ push! (missing_values, kvp[1 ])
456
+ end
457
+ return false
458
+ end
448
459
end
449
460
450
461
struct GetUpdatedMTKParameters{G, S}
@@ -523,14 +534,17 @@ function build_operating_point(
523
534
haskey (op, k) && continue
524
535
op[k] = v
525
536
end
537
+ filter_missing_values! (op; missing_values = missing_unknowns)
538
+
526
539
merge! (op, pmap)
527
540
missing_pars = add_fallbacks! (op, ps, defs)
541
+ filter_missing_values! (op; missing_values = missing_pars)
528
542
for eq in cmap
529
543
op[eq. lhs] = eq. rhs
530
544
end
531
545
532
- empty! ( u0map)
533
- empty! ( pmap)
546
+ filter! (kvp -> kvp[ 2 ] === nothing , u0map)
547
+ filter! (kvp -> kvp[ 2 ] === nothing , pmap)
534
548
for (k, v) in op
535
549
k = unwrap (k)
536
550
if isparameter (k)
@@ -539,6 +553,7 @@ function build_operating_point(
539
553
u0map[k] = v
540
554
end
541
555
end
556
+
542
557
return op, missing_unknowns, missing_pars
543
558
end
544
559
@@ -749,9 +764,6 @@ function process_SciMLProblem(
749
764
750
765
op, missing_unknowns, missing_pars = build_operating_point (
751
766
u0map, pmap, defs, cmap, dvs, ps)
752
- filter_missing_values! (op)
753
- filter_missing_values! (u0map)
754
- filter_missing_values! (pmap)
755
767
substitute_extra_variables! (sys, u0map)
756
768
substitute_extra_variables! (sys, pmap)
757
769
0 commit comments