Skip to content

Commit e0cbb9b

Browse files
Merge pull request #3002 from isaacsas/unit_fix
registered function unit fix
2 parents 866c443 + 488ee5c commit e0cbb9b

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

src/systems/unit_check.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ get_unit(x::SciMLBase.NullParameters) = unitless
7676
get_unit(op::typeof(instream), args) = get_unit(args[1])
7777

7878
function get_unit(op, args) # Fallback
79-
result = op(get_unit.(args)...)
79+
result = oneunit(op(get_unit.(args)...))
8080
try
8181
get_unit(result)
8282
catch

test/dq_units.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using ModelingToolkit, OrdinaryDiffEq, JumpProcesses, DynamicQuantities
2+
using Symbolics
23
using Test
34
MT = ModelingToolkit
45
using ModelingToolkit: t, D
@@ -224,3 +225,17 @@ end
224225
DD = Differential(tt)
225226
eqs = [DD(X) ~ p - d * X + d * X]
226227
@test ModelingToolkit.validate(eqs)
228+
229+
# test units for registered functions
230+
let
231+
mm(X, v, K) = v * X / (X + K)
232+
mm2(X, v, K) = v * X / (X + K)
233+
Symbolics.@register_symbolic mm2(X, v, K)
234+
@parameters t [unit = u"s"] K [unit = u"mol/m^3"] v [unit = u"(m^6)/(s*mol^2)"]
235+
@variables X(t) [unit = u"mol/m^3"]
236+
mmunits = MT.get_unit(mm(X, v, K))
237+
mm2units = MT.get_unit(mm2(X, v, K))
238+
@test mmunits == MT.oneunit(mmunits)
239+
@test mm2units == MT.oneunit(mm2units)
240+
@test mmunits == mm2units
241+
end

test/units.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,3 @@ sys = complete(sys)
240240
@test isequal(ModelingToolkit.getdefault(sys.pt.a), sys.v * sys.τ)
241241
@test ModelingToolkit.getdefault(sys.v) 2.0
242242
@test ModelingToolkit.getdefault(sys.τ) 3.0
243-

0 commit comments

Comments
 (0)