Skip to content

Commit 058024c

Browse files
refactor: remove Unitful
1 parent 18caee9 commit 058024c

File tree

7 files changed

+7
-318
lines changed

7 files changed

+7
-318
lines changed

docs/Project.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
3232
SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
3333
SymbolicUtils = "d1185830-fcd6-423d-90d6-eec64667417b"
3434
Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7"
35-
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
3635

3736
[compat]
3837
Attractors = "1.24"
@@ -65,4 +64,3 @@ StochasticDiffEq = "6"
6564
SymbolicIndexingInterface = "0.3.1"
6665
SymbolicUtils = "3, 4"
6766
Symbolics = "6"
68-
Unitful = "1.12"

docs/src/API/model_building.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ ModelingToolkit.t_nounits
1313
ModelingToolkit.D_nounits
1414
ModelingToolkit.t
1515
ModelingToolkit.D
16-
ModelingToolkit.t_unitful
17-
ModelingToolkit.D_unitful
1816
```
1917

2018
Users are recommended to use the appropriate common definition in their models. The required

docs/src/basics/Validation.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ future when `ModelingToolkit` is extended to support eliminating `DynamicQuantit
155155

156156
## Other Restrictions
157157

158-
`Unitful` provides non-scalar units such as `dBm`, `°C`, etc. At this time, `ModelingToolkit` only supports scalar quantities. Additionally, angular degrees (`°`) are not supported because trigonometric functions will treat plain numerical values as radians, which would lead systems validated using degrees to behave erroneously when being solved.
158+
`DynamicQuantities` provides non-scalar units such as `°C`, etc. At this time, `ModelingToolkit` only supports scalar quantities. Additionally, angular degrees (`°`) are not supported because trigonometric functions will treat plain numerical values as radians, which would lead systems validated using degrees to behave erroneously when being solved.
159159

160160
## Troubleshooting & Gotchas
161161

@@ -169,7 +169,7 @@ Parameter and initial condition values are supplied to problem constructors as p
169169

170170
```julia
171171
function remove_units(p::Dict)
172-
Dict(k => Unitful.ustrip(ModelingToolkit.get_unit(k), v) for (k, v) in p)
172+
Dict(k => DynamicQuantities.ustrip(ModelingToolkit.get_unit(k), v) for (k, v) in p)
173173
end
174174
add_units(p::Dict) = Dict(k => v * ModelingToolkit.get_unit(k) for (k, v) in p)
175175
```

src/ModelingToolkit.jl

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ else
3838
const IntDisjointSet = IntDisjointSets
3939
end
4040
using Base.Threads
41-
using Latexify, Unitful, ArrayInterface
41+
using Latexify, ArrayInterface
4242
using Setfield, ConstructionBase
4343
import Libdl
4444
using DocStringExtensions
@@ -96,7 +96,7 @@ export independent_variables, unknowns, observables, parameters, full_parameters
9696
@reexport using UnPack
9797
RuntimeGeneratedFunctions.init(@__MODULE__)
9898

99-
import DynamicQuantities, Unitful
99+
import DynamicQuantities
100100
const DQ = DynamicQuantities
101101

102102
import DifferentiationInterface as DI
@@ -217,7 +217,6 @@ include("systems/pde/pdesystem.jl")
217217
include("systems/sparsematrixclil.jl")
218218

219219
include("systems/unit_check.jl")
220-
include("systems/validation.jl")
221220
include("systems/dependency_graphs.jl")
222221
include("clock.jl")
223222
include("discretedomain.jl")
@@ -238,15 +237,11 @@ include("deprecations.jl")
238237
const t_nounits = let
239238
only(@independent_variables t)
240239
end
241-
const t_unitful = let
242-
only(@independent_variables t [unit = Unitful.u"s"])
243-
end
244240
const t = let
245241
only(@independent_variables t [unit = DQ.u"s"])
246242
end
247243

248244
const D_nounits = Differential(t_nounits)
249-
const D_unitful = Differential(t_unitful)
250245
const D = Differential(t)
251246

252247
export ODEFunction, convert_system_indepvar,
@@ -349,7 +344,7 @@ const set_scalar_metadata = setmetadata
349344
@public similarity_transform, inputs, outputs, bound_inputs, unbound_inputs, bound_outputs
350345
@public unbound_outputs, is_bound
351346
@public AbstractSystem, CheckAll, CheckNone, CheckComponents, CheckUnits
352-
@public t, D, t_nounits, D_nounits, t_unitful, D_unitful
347+
@public t, D, t_nounits, D_nounits
353348
@public SymbolicContinuousCallback, SymbolicDiscreteCallback
354349
@public VariableType, MTKVariableTypeCtx, VariableBounds, VariableConnectType
355350
@public VariableDescription, VariableInput, VariableIrreducible, VariableMisc

src/systems/model_parsing.jl

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -573,7 +573,7 @@ function get_t(mod, t)
573573
get_var(mod, t)
574574
catch e
575575
if e isa UndefVarError
576-
@warn("Could not find a predefined `t` in `$mod`; generating a new one within this model.\nConsider defining it or importing `t` (or `t_nounits`, `t_unitful` as `t`) from ModelingToolkit.")
576+
@warn("Could not find a predefined `t` in `$mod`; generating a new one within this model.\nConsider defining it or importing `t` (or `t_nounits as t`) from ModelingToolkit.")
577577
variable(:t)
578578
else
579579
throw(e)
@@ -901,18 +901,6 @@ function convert_units(
901901
DynamicQuantities.SymbolicUnits.as_quantity(varunits), value))
902902
end
903903

904-
function convert_units(varunits::Unitful.FreeUnits, value)
905-
Unitful.ustrip(varunits, value)
906-
end
907-
908-
convert_units(::Unitful.FreeUnits, value::NoValue) = NO_VALUE
909-
910-
function convert_units(varunits::Unitful.FreeUnits, value::AbstractArray{T}) where {T}
911-
Unitful.ustrip.(varunits, value)
912-
end
913-
914-
convert_units(::Unitful.FreeUnits, value::Num) = value
915-
916904
convert_units(::DynamicQuantities.Quantity, value::Num) = value
917905

918906
function parse_variable_arg(dict, mod, arg, varclass, kwargs, where_types)
@@ -930,8 +918,7 @@ function parse_variable_arg(dict, mod, arg, varclass, kwargs, where_types)
930918
try
931919
$setdefault($vv, $convert_units($unit, $name))
932920
catch e
933-
if isa(e, $(DynamicQuantities.DimensionError)) ||
934-
isa(e, $(Unitful.DimensionError))
921+
if isa(e, $(DynamicQuantities.DimensionError))
935922
error("Unable to convert units for \'" * string(:($$vv)) * "\'")
936923
elseif isa(e, MethodError)
937924
error("No or invalid units provided for \'" * string(:($$vv)) *

src/systems/unit_check.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ function __get_scalar_unit_type(v)
2323
u = __get_literal_unit(v)
2424
if u isa DQ.AbstractQuantity
2525
return Val(:DynamicQuantities)
26-
elseif u isa Unitful.Unitlike
27-
return Val(:Unitful)
2826
end
2927
return nothing
3028
end

0 commit comments

Comments
 (0)