diff --git a/Project.toml b/Project.toml index 89dd78f93..932a2c079 100644 --- a/Project.toml +++ b/Project.toml @@ -8,8 +8,9 @@ ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" IfElse = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" +ModelingToolkitBase = "7771a370-6774-4173-bd38-47e70ca0b839" PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +SciCompDSL = "91a8cdf1-4ca6-467b-a780-87fda3fff15e" Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" [compat] @@ -23,14 +24,15 @@ DiffEqBase = "6.152" ForwardDiff = "0.10" IfElse = "0.1" LinearAlgebra = "1.10" -ModelingToolkit = "10" +ModelingToolkitBase = "1" OrdinaryDiffEq = "6.87" OrdinaryDiffEqDefault = "1.1" PreallocationTools = "0.4.23" SafeTestsets = "0.1" +SciCompDSL = "1" SciMLStructures = "1.4.2" SymbolicIndexingInterface = "0.3.28" -Symbolics = "6.14" +Symbolics = "7" Test = "1" julia = "1.10" diff --git a/src/Blocks/Blocks.jl b/src/Blocks/Blocks.jl index be434fba7..23d3005de 100644 --- a/src/Blocks/Blocks.jl +++ b/src/Blocks/Blocks.jl @@ -2,10 +2,10 @@ The module `Blocks` contains common input-output components, referred to as blocks. """ module Blocks -using ModelingToolkit, Symbolics +using ModelingToolkitBase, Symbolics, SciCompDSL import IfElse: ifelse import ..@symcheck -using ModelingToolkit: getdefault, t_nounits as t, D_nounits as D +using ModelingToolkitBase: getdefault, t_nounits as t, D_nounits as D export RealInput, RealInputArray, RealOutput, RealOutputArray, SISO include("utils.jl") diff --git a/src/Blocks/continuous.jl b/src/Blocks/continuous.jl index 9f40b7de1..e564fb67c 100644 --- a/src/Blocks/continuous.jl +++ b/src/Blocks/continuous.jl @@ -610,7 +610,7 @@ To set the initial state, it's recommended to set the initial condition for `x`, - `input` - `output` -See also [`StateSpace`](@ref) which handles MIMO systems, as well as [ControlSystemsMTK.jl](https://juliacontrol.github.io/ControlSystemsMTK.jl/stable/) for an interface between [ControlSystems.jl](https://juliacontrol.github.io/ControlSystems.jl/stable/) and ModelingToolkit.jl for advanced manipulation of transfer functions and linear statespace systems. For linearization, see [`linearize`](@ref) and [Linear Analysis](https://docs.sciml.ai/ModelingToolkitStandardLibrary/stable/API/linear_analysis/). +See also [`StateSpace`](@ref) which handles MIMO systems, as well as [ControlSystemsMTK.jl](https://juliacontrol.github.io/ControlSystemsMTK.jl/stable/) for an interface between [ControlSystems.jl](https://juliacontrol.github.io/ControlSystems.jl/stable/) and ModelingToolkitBase.jl for advanced manipulation of transfer functions and linear statespace systems. For linearization, see [`linearize`](@ref) and [Linear Analysis](https://docs.sciml.ai/ModelingToolkitStandardLibrary/stable/API/linear_analysis/). """ @component function TransferFunction(; b = [1], a = [1, 1], name) nb = length(b) diff --git a/src/Blocks/nonlinear.jl b/src/Blocks/nonlinear.jl index b51125c34..fb13dc29a 100644 --- a/src/Blocks/nonlinear.jl +++ b/src/Blocks/nonlinear.jl @@ -62,7 +62,7 @@ If the input is within `u_min` ... `u_max`, the output is zero. Outside of this u_min = -u_max, [description = "Lower limit of dead zone of DeadZone"] end begin - if !ModelingToolkit.isvariable(u_max) + if !ModelingToolkitBase.isvariable(u_max) u_max ≥ u_min || throw(ArgumentError("`u_min` must be smaller than `u_max`")) end end diff --git a/src/Blocks/sources.jl b/src/Blocks/sources.jl index 61a2e4116..5028ddc3b 100644 --- a/src/Blocks/sources.jl +++ b/src/Blocks/sources.jl @@ -822,7 +822,7 @@ Base.nameof(::CachedInterpolation) = :CachedInterpolation @register_symbolic (f::CachedInterpolation)(u::AbstractArray, x::AbstractArray, args::Tuple) """ - ParametrizedInterpolation(interp_type, u, x, args...; name, t = ModelingToolkit.t_nounits) + ParametrizedInterpolation(interp_type, u, x, args...; name, t = ModelingToolkitBase.t_nounits) Represent function interpolation symbolically as a block component, with the interpolation data represented parametrically. By default interpolation types from [`DataInterpolations.jl`](https://github.com/SciML/DataInterpolations.jl) are supported, @@ -862,7 +862,7 @@ function ParametrizedInterpolation( eqs = [output.u ~ interpolator(input.u)] - System(eqs, ModelingToolkit.t_nounits, [], + System(eqs, ModelingToolkitBase.t_nounits, [], [data, ts, interpolation_type, interpolator]; parameter_dependencies = [ interpolator ~ build_interpolation(data, ts, args) diff --git a/src/Blocks/utils.jl b/src/Blocks/utils.jl index 61cbb484e..97319b5af 100644 --- a/src/Blocks/utils.jl +++ b/src/Blocks/utils.jl @@ -15,9 +15,8 @@ input = true, description = "Inner variable in RealInput $name" ] - u = collect(u) end - System(Equation[], t, [u;], []; name = name, guesses = [(u .=> guess);]) + System(Equation[], t, [u;], []; name = name, guesses = [u => guess]) end @doc """ RealInput(;name, guess) @@ -73,9 +72,8 @@ Connector with an array of input signals of type Real. output = true, description = "Inner variable in RealOutput $name" ] - u = collect(u) end - System(Equation[], t, [u;], []; name = name, guesses = [(u .=> guess);]) + System(Equation[], t, [u;], []; name = name, guesses = [u => guess]) end @doc """ RealOutput(;name, guess) diff --git a/src/Electrical/Digital/sources.jl b/src/Electrical/Digital/sources.jl index 0e4160b0f..3a90cfe77 100644 --- a/src/Electrical/Digital/sources.jl +++ b/src/Electrical/Digital/sources.jl @@ -16,7 +16,7 @@ PulseDiff(; name, Val = 1, dt = 0.1) function PulseDiff(; name, Val = 1, dt = 0.1) @named d = DigitalPin() @variables val(t) - D = ModelingToolkit.Difference(t; dt = dt) + D = ModelingToolkitBase.Difference(t; dt = dt) eqs = [D(val) ~ Val val ~ d.val] diff --git a/src/Electrical/Electrical.jl b/src/Electrical/Electrical.jl index 712e4b172..5a8fda005 100644 --- a/src/Electrical/Electrical.jl +++ b/src/Electrical/Electrical.jl @@ -4,8 +4,8 @@ This library contains electrical components to build up analog circuits. """ module Electrical -using ModelingToolkit, Symbolics, IfElse -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, IfElse, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ..Thermal: HeatPort using ..Mechanical.Rotational: Flange, Support using ..Blocks: RealInput, RealOutput diff --git a/src/Hydraulic/Hydraulic.jl b/src/Hydraulic/Hydraulic.jl index cb3cb1deb..b64fe877c 100644 --- a/src/Hydraulic/Hydraulic.jl +++ b/src/Hydraulic/Hydraulic.jl @@ -3,7 +3,7 @@ Library of hydraulic models. """ module Hydraulic -using ModelingToolkit +using ModelingToolkitBase, SciCompDSL include("IsothermalCompressible/IsothermalCompressible.jl") diff --git a/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl b/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl index 3403ee022..3ba78f1c1 100644 --- a/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl +++ b/src/Hydraulic/IsothermalCompressible/IsothermalCompressible.jl @@ -3,8 +3,8 @@ Library to model iso-thermal compressible liquid fluid flow """ module IsothermalCompressible -using ModelingToolkit, Symbolics -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ...Blocks: RealInput, RealOutput using ...Mechanical.Translational: MechanicalPort, Mass diff --git a/src/Magnetic/FluxTubes/FluxTubes.jl b/src/Magnetic/FluxTubes/FluxTubes.jl index 08dd00120..fee07931c 100644 --- a/src/Magnetic/FluxTubes/FluxTubes.jl +++ b/src/Magnetic/FluxTubes/FluxTubes.jl @@ -1,6 +1,6 @@ module FluxTubes -using ModelingToolkit -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ...Electrical: Pin export PositiveMagneticPort, NegativeMagneticPort, TwoPort diff --git a/src/Magnetic/Magnetic.jl b/src/Magnetic/Magnetic.jl index 4eefda950..61c19722d 100644 --- a/src/Magnetic/Magnetic.jl +++ b/src/Magnetic/Magnetic.jl @@ -1,6 +1,6 @@ module Magnetic -using ModelingToolkit +using ModelingToolkitBase, SciCompDSL # FluxTubes include("FluxTubes/FluxTubes.jl") diff --git a/src/Mechanical/Mechanical.jl b/src/Mechanical/Mechanical.jl index 95c9e0204..7ded1343d 100644 --- a/src/Mechanical/Mechanical.jl +++ b/src/Mechanical/Mechanical.jl @@ -3,7 +3,7 @@ Library of mechanical models. """ module Mechanical -using ModelingToolkit +using ModelingToolkitBase, SciCompDSL include("Rotational/Rotational.jl") include("Translational/Translational.jl") diff --git a/src/Mechanical/MultiBody2D/MultiBody2D.jl b/src/Mechanical/MultiBody2D/MultiBody2D.jl index ab0e3e6c0..0eee989b2 100644 --- a/src/Mechanical/MultiBody2D/MultiBody2D.jl +++ b/src/Mechanical/MultiBody2D/MultiBody2D.jl @@ -1,7 +1,7 @@ module MultiBody2D -using ModelingToolkit, Symbolics, IfElse -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, IfElse, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ..TranslationalPosition export Link diff --git a/src/Mechanical/Rotational/Rotational.jl b/src/Mechanical/Rotational/Rotational.jl index 0483c0654..2f869597a 100644 --- a/src/Mechanical/Rotational/Rotational.jl +++ b/src/Mechanical/Rotational/Rotational.jl @@ -3,8 +3,8 @@ Library to model 1-dimensional, rotational mechanical systems """ module Rotational -using ModelingToolkit, Symbolics, IfElse -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, IfElse, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ...Blocks: RealInput, RealOutput import ...@symcheck diff --git a/src/Mechanical/Translational/Translational.jl b/src/Mechanical/Translational/Translational.jl index 4db9168ad..264e9794d 100644 --- a/src/Mechanical/Translational/Translational.jl +++ b/src/Mechanical/Translational/Translational.jl @@ -3,8 +3,8 @@ Library to model 1-dimensional, translational mechanical systems """ module Translational -using ModelingToolkit, Symbolics -using ModelingToolkit: getdefault, t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, SciCompDSL +using ModelingToolkitBase: getdefault, t_nounits as t, D_nounits as D using ModelingToolkitStandardLibrary.Blocks: RealInput, RealOutput using IfElse: ifelse diff --git a/src/Mechanical/TranslationalModelica/TranslationalModelica.jl b/src/Mechanical/TranslationalModelica/TranslationalModelica.jl index fd3ad41a1..ea845ca34 100644 --- a/src/Mechanical/TranslationalModelica/TranslationalModelica.jl +++ b/src/Mechanical/TranslationalModelica/TranslationalModelica.jl @@ -3,8 +3,8 @@ Library to model 1-dimensional, translational mechanical components. """ module TranslationalModelica -using ModelingToolkit, Symbolics, IfElse -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, IfElse, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ...Blocks: RealInput, RealOutput export Flange diff --git a/src/Mechanical/TranslationalPosition/TranslationalPosition.jl b/src/Mechanical/TranslationalPosition/TranslationalPosition.jl index c304d6cec..31c8abf67 100644 --- a/src/Mechanical/TranslationalPosition/TranslationalPosition.jl +++ b/src/Mechanical/TranslationalPosition/TranslationalPosition.jl @@ -3,8 +3,8 @@ Library to model 1-dimensional, translational mechanical components. """ module TranslationalPosition -using ModelingToolkit, Symbolics, IfElse -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, IfElse, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ...Blocks: RealInput, RealOutput export Flange diff --git a/src/Thermal/Thermal.jl b/src/Thermal/Thermal.jl index a7ad12c07..7d30dd847 100644 --- a/src/Thermal/Thermal.jl +++ b/src/Thermal/Thermal.jl @@ -2,8 +2,8 @@ Library of thermal system components to model heat transfer. """ module Thermal -using ModelingToolkit, Symbolics, IfElse -using ModelingToolkit: t_nounits as t, D_nounits as D +using ModelingToolkitBase, Symbolics, IfElse, SciCompDSL +using ModelingToolkitBase: t_nounits as t, D_nounits as D using ...Blocks: RealInput, RealOutput export HeatPort, Element1D