@@ -563,7 +563,7 @@ struct CacheWriter{F}
563563end
564564
565565function (cw:: CacheWriter )(p, sols)
566- cw. fn (p. caches, sols, p... )
566+ cw. fn (p. caches, sols, p)
567567end
568568
569569function CacheWriter (sys:: AbstractSystem , buffer_types:: Vector{TypeT} ,
@@ -572,22 +572,11 @@ function CacheWriter(sys::AbstractSystem, buffer_types::Vector{TypeT},
572572 ps = parameters (sys)
573573 rps = reorder_parameters (sys, ps)
574574 obs_assigns = [eq. lhs ← eq. rhs for eq in obseqs]
575- cmap, cs = get_cmap (sys)
576- cmap_assigns = [eq. lhs ← eq. rhs for eq in cmap]
577-
578- outsyms = [Symbol (:out , i) for i in eachindex (buffer_types)]
579575 body = map (eachindex (buffer_types), buffer_types) do i, T
580576 Symbol (:tmp , i) ← SetArray (true , :(out[$ i]), get (exprs, T, []))
581577 end
582- fn = Func (
583- [:out , DestructuredArgs (DestructuredArgs .(solsyms)),
584- DestructuredArgs .(rps)... ],
585- [],
586- Let (body, :())
587- ) |> wrap_assignments (false , obs_assigns)[2 ] |>
588- wrap_parameter_dependencies (sys, false )[2 ] |>
589- wrap_array_vars (sys, []; dvs = nothing , inputs = [])[2 ] |>
590- wrap_assignments (false , cmap_assigns)[2 ] |> toexpr
578+
579+ fn = build_function_wrapper (sys, nothing , :out , DestructuredArgs (DestructuredArgs .(solsyms)), DestructuredArgs .(rps)... ; p_start = 3 , p_end = length (rps) + 2 , expression = Val{true }, add_observed = false , extra_assignments = [obs_assigns; body])
591580 return CacheWriter (eval_or_rgf (fn; eval_expression, eval_module))
592581end
593582
@@ -601,21 +590,13 @@ function SCCNonlinearFunction{iip}(
601590
602591 obs_assignments = [eq. lhs ← eq. rhs for eq in _obs]
603592
604- cmap, cs = get_cmap (sys)
605- cmap_assignments = [eq. lhs ← eq. rhs for eq in cmap]
606593 rhss = [eq. rhs - eq. lhs for eq in _eqs]
607- wrap_code = wrap_assignments (false , cmap_assignments) .∘
608- (wrap_array_vars (sys, rhss; dvs = _dvs, cachesyms)) .∘
609- wrap_parameter_dependencies (sys, false ) .∘
610- wrap_assignments (false , obs_assignments)
611- f_gen = build_function (
612- rhss, _dvs, rps... , cachesyms... ; wrap_code, expression = Val{true })
594+ f_gen = build_function_wrapper (sys,
595+ rhss, _dvs, rps... , cachesyms... ; p_start = 2 , p_end = length (rps) + length (cachesyms) + 1 , add_observed = false , extra_assignments = obs_assignments, expression = Val{true })
613596 f_oop, f_iip = eval_or_rgf .(f_gen; eval_expression, eval_module)
614597
615598 f (u, p) = f_oop (u, p)
616- f (u, p:: MTKParameters ) = f_oop (u, p... )
617599 f (resid, u, p) = f_iip (resid, u, p)
618- f (resid, u, p:: MTKParameters ) = f_iip (resid, u, p... )
619600
620601 subsys = NonlinearSystem (_eqs, _dvs, ps; observed = _obs,
621602 parameter_dependencies = parameter_dependencies (sys), name = nameof (sys))
0 commit comments