From 97c5324ca03c25a2abd11df69170895a07e400dd Mon Sep 17 00:00:00 2001 From: vyudu Date: Fri, 28 Feb 2025 09:30:26 -0500 Subject: [PATCH 1/5] feat: add --- src/ModelingToolkit.jl | 2 +- src/systems/abstractsystem.jl | 16 ++++++++++++++++ test/variable_utils.jl | 13 +++++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/ModelingToolkit.jl b/src/ModelingToolkit.jl index 9fb5ff1299..099ce97324 100644 --- a/src/ModelingToolkit.jl +++ b/src/ModelingToolkit.jl @@ -286,7 +286,7 @@ export toexpr, get_variables export simplify, substitute export build_function export modelingtoolkitize -export generate_initializesystem, Initial +export generate_initializesystem, Initial, isInitial export alg_equations, diff_equations, has_alg_equations, has_diff_equations export get_alg_eqs, get_diff_eqs, has_alg_eqs, has_diff_eqs diff --git a/src/systems/abstractsystem.jl b/src/systems/abstractsystem.jl index 8fdd36e291..a1c6056492 100644 --- a/src/systems/abstractsystem.jl +++ b/src/systems/abstractsystem.jl @@ -717,6 +717,22 @@ function add_initialization_parameters(sys::AbstractSystem) return sys end +""" +Returns true if the variable or parameter `var` is of the form `Initial(x)`. +""" +function isInitial(var) + var = unwrap(var) + if iscall(var) + operation(var) isa Initial && return true + if operation(var) === getindex + operation(arguments(var)[1]) isa Initial && return true + end + else + return false + end + return false +end + """ $(TYPEDSIGNATURES) diff --git a/test/variable_utils.jl b/test/variable_utils.jl index ecc2421955..53515bd991 100644 --- a/test/variable_utils.jl +++ b/test/variable_utils.jl @@ -145,3 +145,16 @@ end @test isequal(parse_variable(sys, str), var) end end + +@testset "isInitial" begin + t = ModelingToolkit.to_nounits + @variables x(t) z(t)[1:5] + @parameters a b c[1:4] + @test isInitial(Initial(z)) + @test isInitial(Initial(x)) + @test isInitial(Initial(a)) + @test isInitial(Initial(z[1])) + @test isInitial(Initial(c[4])) + @test !isInitial(c) + @test !isInitial(x) +end From 5a56aa98afd54079438ed44bc3ab56fdf791b2ac Mon Sep 17 00:00:00 2001 From: vyudu Date: Fri, 28 Feb 2025 09:31:32 -0500 Subject: [PATCH 2/5] fix docstring --- src/systems/abstractsystem.jl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/systems/abstractsystem.jl b/src/systems/abstractsystem.jl index a1c6056492..f5b067ff0c 100644 --- a/src/systems/abstractsystem.jl +++ b/src/systems/abstractsystem.jl @@ -718,14 +718,14 @@ function add_initialization_parameters(sys::AbstractSystem) end """ -Returns true if the variable or parameter `var` is of the form `Initial(x)`. -""" -function isInitial(var) - var = unwrap(var) - if iscall(var) - operation(var) isa Initial && return true - if operation(var) === getindex - operation(arguments(var)[1]) isa Initial && return true +Returns true if the parameter `p` is of the form `Initial(x)`. +""" +function isInitial(p) + p = unwrap(p) + if iscall(p) + operation(p) isa Initial && return true + if operation(p) === getindex + operation(arguments(p)[1]) isa Initial && return true end else return false From 3036eaa3d55af4167c1f0fab383586e5803d22c2 Mon Sep 17 00:00:00 2001 From: vyudu Date: Fri, 28 Feb 2025 09:32:06 -0500 Subject: [PATCH 3/5] fix typo --- test/variable_utils.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/variable_utils.jl b/test/variable_utils.jl index 53515bd991..c21dd1765c 100644 --- a/test/variable_utils.jl +++ b/test/variable_utils.jl @@ -147,7 +147,7 @@ end end @testset "isInitial" begin - t = ModelingToolkit.to_nounits + t = ModelingToolkit.t_nounits @variables x(t) z(t)[1:5] @parameters a b c[1:4] @test isInitial(Initial(z)) From 09db7327f8840aecdc99ae0203a4a5a422335bfd Mon Sep 17 00:00:00 2001 From: vyudu Date: Sat, 1 Mar 2025 18:02:31 -0500 Subject: [PATCH 4/5] change name, add docs --- docs/src/tutorials/initialization.md | 10 ++++++++++ src/ModelingToolkit.jl | 2 +- src/systems/abstractsystem.jl | 2 +- test/variable_utils.jl | 16 ++++++++-------- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/docs/src/tutorials/initialization.md b/docs/src/tutorials/initialization.md index 27eb2ae28d..33694c1b7d 100644 --- a/docs/src/tutorials/initialization.md +++ b/docs/src/tutorials/initialization.md @@ -536,3 +536,13 @@ sol[α * x - β * x * y] ```@example init plot(sol) ``` + +## Summary of Initialization API +```@docs; canonical=false +Initial +isinitial +generate_initializesystem +initialization_equations +guesses +defaults +``` diff --git a/src/ModelingToolkit.jl b/src/ModelingToolkit.jl index 099ce97324..e6b8130af3 100644 --- a/src/ModelingToolkit.jl +++ b/src/ModelingToolkit.jl @@ -286,7 +286,7 @@ export toexpr, get_variables export simplify, substitute export build_function export modelingtoolkitize -export generate_initializesystem, Initial, isInitial +export generate_initializesystem, Initial, isinitial export alg_equations, diff_equations, has_alg_equations, has_diff_equations export get_alg_eqs, get_diff_eqs, has_alg_eqs, has_diff_eqs diff --git a/src/systems/abstractsystem.jl b/src/systems/abstractsystem.jl index f5b067ff0c..ddc70bb10a 100644 --- a/src/systems/abstractsystem.jl +++ b/src/systems/abstractsystem.jl @@ -720,7 +720,7 @@ end """ Returns true if the parameter `p` is of the form `Initial(x)`. """ -function isInitial(p) +function isinitial(p) p = unwrap(p) if iscall(p) operation(p) isa Initial && return true diff --git a/test/variable_utils.jl b/test/variable_utils.jl index c21dd1765c..3204d28836 100644 --- a/test/variable_utils.jl +++ b/test/variable_utils.jl @@ -146,15 +146,15 @@ end end end -@testset "isInitial" begin +@testset "isinitial" begin t = ModelingToolkit.t_nounits @variables x(t) z(t)[1:5] @parameters a b c[1:4] - @test isInitial(Initial(z)) - @test isInitial(Initial(x)) - @test isInitial(Initial(a)) - @test isInitial(Initial(z[1])) - @test isInitial(Initial(c[4])) - @test !isInitial(c) - @test !isInitial(x) + @test isinitial(Initial(z)) + @test isinitial(Initial(x)) + @test isinitial(Initial(a)) + @test isinitial(Initial(z[1])) + @test isinitial(Initial(c[4])) + @test !isinitial(c) + @test !isinitial(x) end From f883b8eb486fd998282e67025f1123605864e9d6 Mon Sep 17 00:00:00 2001 From: vyudu Date: Mon, 3 Mar 2025 09:17:11 -0500 Subject: [PATCH 5/5] Format --- docs/src/tutorials/initialization.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/src/tutorials/initialization.md b/docs/src/tutorials/initialization.md index 33694c1b7d..ba733e0bfb 100644 --- a/docs/src/tutorials/initialization.md +++ b/docs/src/tutorials/initialization.md @@ -538,6 +538,7 @@ plot(sol) ``` ## Summary of Initialization API + ```@docs; canonical=false Initial isinitial