@@ -107,22 +107,29 @@ lsys = ModelingToolkit.reorder_states(lsys, states(ssys), reverse(desired_order)
107
107
# # Test operating points
108
108
109
109
# The saturation has no dynamics
110
- function saturation (; y_max, y_min= y_max > 0 ? - y_max : - Inf , name)
110
+ function saturation (; y_max, y_min = y_max > 0 ? - y_max : - Inf , name)
111
111
@variables u (t)= 0 y (t)= 0
112
112
@parameters y_max= y_max y_min= y_min
113
113
ie = ModelingToolkit. IfElse. ifelse
114
114
eqs = [
115
115
# The equation below is equivalent to y ~ clamp(u, y_min, y_max)
116
- y ~ ie (u > y_max, y_max, ie ( (y_min < u) & (u < y_max), u, y_min))
116
+ y ~ ie (u > y_max, y_max, ie ((y_min < u) & (u < y_max), u, y_min)),
117
117
]
118
- ODESystem (eqs, t, name= name)
118
+ ODESystem (eqs, t, name = name)
119
119
end
120
120
121
- @named sat = saturation (; y_max= 1 )
121
+ @named sat = saturation (; y_max = 1 )
122
122
# inside the linear region, the function is identity
123
- @unpack u,y = sat
123
+ @unpack u, y = sat
124
124
lsys, ssys = linearize (sat, [u], [y])
125
125
@test isempty (lsys. A) # there are no differential variables in this system
126
126
@test isempty (lsys. B)
127
127
@test isempty (lsys. C)
128
128
@test lsys. D[] == 1
129
+
130
+ # outside the linear region the derivative is 0
131
+ lsys, ssys = linearize (sat, [u], [y]; op = Dict (u => 2 ))
132
+ @test isempty (lsys. A) # there are no differential variables in this system
133
+ @test isempty (lsys. B)
134
+ @test isempty (lsys. C)
135
+ @test lsys. D[] == 0
0 commit comments