Skip to content

Commit 0f5c008

Browse files
feat: add LinearizationProblem constructor, getindex and .ps syntax for symbolic indexing
1 parent f0590ae commit 0f5c008

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/linearization.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,11 +246,31 @@ mutable struct LinearizationProblem{F <: LinearizationFunction, T}
246246
t::T
247247
end
248248

249+
function LinearizationProblem(sys::AbstractSystem, inputs, outputs; t = 0.0, kwargs...)
250+
linfun, _ = linearization_function(sys, inputs, outputs; kwargs...)
251+
return LinearizationProblem(linfun, t)
252+
end
253+
249254
SymbolicIndexingInterface.symbolic_container(p::LinearizationProblem) = p.f
250255
SymbolicIndexingInterface.state_values(p::LinearizationProblem) = state_values(p.f)
251256
SymbolicIndexingInterface.parameter_values(p::LinearizationProblem) = parameter_values(p.f)
252257
SymbolicIndexingInterface.current_time(p::LinearizationProblem) = p.t
253258

259+
function Base.getindex(prob::LinearizationProblem, idx)
260+
getu(prob, idx)(prob)
261+
end
262+
263+
function Base.setindex!(prob::LinearizationProblem, val, idx)
264+
setu(prob, idx)(prob, val)
265+
end
266+
267+
function Base.getproperty(prob::LinearizationProblem, x::Symbol)
268+
if x == :ps
269+
return ParameterIndexingProxy(prob)
270+
end
271+
return getfield(prob, x)
272+
end
273+
254274
function CommonSolve.solve(prob::LinearizationProblem; allow_input_derivatives = false)
255275
u0 = state_values(prob)
256276
p = parameter_values(prob)

0 commit comments

Comments
 (0)