Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,9 @@ OrdinaryDiffEqBDF = "6ad6398a-0878-4a85-9266-38940aa047c8"
OrdinaryDiffEqDefault = "50262376-6c5a-4cf5-baba-aaf4f84d72d7"
OrdinaryDiffEqRosenbrock = "43230ef6-c299-4910-a778-202eb28ce4ce"

[sources.ModelingToolkitBase]
subdir = "lib/ModelingToolkitBase"

[sources.SciCompDSL]
subdir = "lib/SciCompDSL"
[sources]
ModelingToolkitBase = {path = "lib/ModelingToolkitBase"}
SciCompDSL = {path = "lib/SciCompDSL"}

[extensions]
MTKFMIExt = "FMIImport"
Expand Down Expand Up @@ -115,7 +113,6 @@ SimpleNonlinearSolve = "0.1.0, 1, 2"
SparseArrays = "1"
StateSelection = "1.9.1"
StaticArrays = "1.9.14"
StochasticDelayDiffEq = "1.11"
StochasticDiffEq = "6.82.0"
SymbolicIndexingInterface = "0.3.39"
SymbolicUtils = "4.13"
Expand Down Expand Up @@ -166,12 +163,11 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
StochasticDelayDiffEq = "29a0d76e-afc8-11e9-03a4-eda52ae4b960"
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TestEnv = "1e6cf692-eddd-4d53-88a5-2d735e33781b"
URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4"

[targets]
test = ["AmplNLWriter", "BenchmarkTools", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqAscher", "ControlSystemsBase", "DataInterpolations", "DelayDiffEq", "NonlinearSolve", "ForwardDiff", "Ipopt", "Ipopt_jll", "ModelingToolkitStandardLibrary", "Optimization", "OptimizationOptimJL", "OptimizationMOI", "OrdinaryDiffEq", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "REPL", "Random", "ReferenceTests", "SafeTestsets", "StableRNGs", "Statistics", "SteadyStateDiffEq", "Test", "StochasticDiffEq", "Sundials", "StochasticDelayDiffEq", "Pkg", "JET", "OrdinaryDiffEqNonlinearSolve", "Logging", "OptimizationBase", "LinearSolve", "Latexify", "Distributed", "DiffEqNoiseProcess", "DynamicQuantities", "DiffEqCallbacks", "URIs", "JumpProcesses", "RecursiveArrayTools", "SciMLStructures", "SpecialFunctions", "SciCompDSL"]
test = ["AmplNLWriter", "BenchmarkTools", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqAscher", "ControlSystemsBase", "DataInterpolations", "DelayDiffEq", "NonlinearSolve", "ForwardDiff", "Ipopt", "Ipopt_jll", "ModelingToolkitStandardLibrary", "Optimization", "OptimizationOptimJL", "OptimizationMOI", "OrdinaryDiffEq", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "REPL", "Random", "ReferenceTests", "SafeTestsets", "StableRNGs", "Statistics", "SteadyStateDiffEq", "Test", "StochasticDiffEq", "Sundials", "Pkg", "JET", "OrdinaryDiffEqNonlinearSolve", "Logging", "OptimizationBase", "LinearSolve", "Latexify", "Distributed", "DiffEqNoiseProcess", "DynamicQuantities", "DiffEqCallbacks", "URIs", "JumpProcesses", "RecursiveArrayTools", "SciMLStructures", "SpecialFunctions", "SciCompDSL"]
4 changes: 1 addition & 3 deletions lib/ModelingToolkitBase/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,6 @@ SimpleNonlinearSolve = "0.1.0, 1, 2"
SparseArrays = "1"
SpecialFunctions = "1, 2"
StaticArrays = "1.9.14"
StochasticDelayDiffEq = "1.11"
StochasticDiffEq = "6.82.0"
SymbolicIndexingInterface = "0.3.39"
SymbolicUtils = "4.23.1"
Expand Down Expand Up @@ -208,10 +207,9 @@ SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
SteadyStateDiffEq = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f"
StochasticDelayDiffEq = "29a0d76e-afc8-11e9-03a4-eda52ae4b960"
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"
Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["AmplNLWriter", "BenchmarkTools", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqAscher", "ControlSystemsBase", "DataInterpolations", "DelayDiffEq", "NonlinearSolve", "ForwardDiff", "Ipopt", "Ipopt_jll", "ModelingToolkitStandardLibrary", "Optimization", "OptimizationIpopt", "OptimizationOptimJL", "OptimizationMOI", "OrdinaryDiffEq", "OrdinaryDiffEqDefault", "REPL", "Random", "ReferenceTests", "SafeTestsets", "StableRNGs", "Statistics", "SteadyStateDiffEq", "Test", "StochasticDiffEq", "Sundials", "StochasticDelayDiffEq", "Pkg", "JET", "OrdinaryDiffEqNonlinearSolve", "Logging", "OptimizationBase", "LinearSolve", "Latexify", "Distributed", "DiffEqNoiseProcess", "DynamicQuantities"]
test = ["AmplNLWriter", "BenchmarkTools", "BoundaryValueDiffEqMIRK", "BoundaryValueDiffEqAscher", "ControlSystemsBase", "DataInterpolations", "DelayDiffEq", "NonlinearSolve", "ForwardDiff", "Ipopt", "Ipopt_jll", "ModelingToolkitStandardLibrary", "Optimization", "OptimizationIpopt", "OptimizationOptimJL", "OptimizationMOI", "OrdinaryDiffEq", "OrdinaryDiffEqDefault", "REPL", "Random", "ReferenceTests", "SafeTestsets", "StableRNGs", "Statistics", "SteadyStateDiffEq", "Test", "Sundials", "StochasticDiffEq", "Pkg", "JET", "OrdinaryDiffEqNonlinearSolve", "Logging", "OptimizationBase", "LinearSolve", "Latexify", "Distributed", "DiffEqNoiseProcess", "DynamicQuantities"]
14 changes: 13 additions & 1 deletion lib/ModelingToolkitBase/src/systems/problem_utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -293,17 +293,20 @@ numerical problem from a `System`.
- `MissingGuessValue.Constant(val::Number)`: Missing guesses are set to the given value
`val`.
- `MissingGuessValue.Random(rng::AbstractRNG)`: Missing guesses are set to `rand(rng)`.
- `MissingGuessValue.HashedRandom`: Missing guesses are set to a
deterministically determined random-like value based on the hash of the variable name
- `MissingGuessValue.Error()`: Missing guess values cause an error.
"""
Moshi.Data.@data MissingGuessValue begin
Constant(Number)
Random(AbstractRNG)
HashedRandom
Error
end

# To be overloaded downstream by MTK
default_missing_guess_value() = default_missing_guess_value(nothing)
default_missing_guess_value(_) = MissingGuessValue.Error()
default_missing_guess_value(_) = MissingGuessValue.HashedRandom()

"""
$(TYPEDSIGNATURES)
Expand Down Expand Up @@ -370,6 +373,15 @@ function varmap_to_vars(
end
end
end
MissingGuessValue.HashedRandom() => begin
for var in missing_vars
if Symbolics.isarraysymbolic(var)
varmap[var] = [hash(var,hash(i)) for i in SU.stable_eachindex(var)]./0x1p64
else
write_possibly_indexed_array!(varmap, var, Symbolics.SConst(hash(var)/0x1p64), COMMON_NOTHING)
end
end
end
MissingGuessValue.Error() => begin
if !isempty(missing_vars)
if is_initializeprob
Expand Down
3 changes: 2 additions & 1 deletion lib/ModelingToolkitBase/test/implicit_discrete_system.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ rng = StableRNG(22525)
@mtkcompile sys = System([x(k) ~ x(k) * x(k - 1) - 3], t)
if @isdefined(ModelingToolkit)
@test_throws ModelingToolkitBase.MissingGuessError prob = ImplicitDiscreteProblem(
sys, [], tspan
sys, [], tspan,
missing_guess_values = MissingGuessValue.Error()
)
end
end
Expand Down
6 changes: 4 additions & 2 deletions lib/ModelingToolkitBase/test/initial_values.jl
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,8 @@ end
pend = complete(pend)

@test_throws ModelingToolkitBase.MissingGuessError ODEProblem(
pend, [x => 1, g => 1], (0, 1); guesses = [y => λ, λ => y + 1]
pend, [x => 1, g => 1], (0, 1); guesses = [y => λ, λ => y + 1],
missing_guess_value = MissingGuessValue.Error()
)
ODEProblem(
pend, [x => 1, D(y) => 0, g => 1], (0, 1);
Expand All @@ -214,7 +215,8 @@ end
eqs = [D(a) ~ b, D(b) ~ c, D(c) ~ d, D(d) ~ e, D(e) ~ 1]
@mtkcompile sys = System(eqs, t)
@test_throws ["Cyclic guesses detected"] ODEProblem(
sys, [e => 2, a => b, b => a^2 + 1, c => d, d => c^2 + 1], (0, 1); use_scc=false
sys, [e => 2, a => b, b => a^2 + 1, c => d, d => c^2 + 1], (0, 1); use_scc=false,
missing_guess_value=MissingGuessValue.Error()
)
end

Expand Down
3 changes: 2 additions & 1 deletion lib/ModelingToolkitBase/test/initializationsystem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,8 @@ if @isdefined(ModelingToolkit)
@named sys = System([x^2 + y^2 ~ 25, D(x) ~ 1], t)
ssys = mtkcompile(sys)
@test_throws ModelingToolkitBase.MissingGuessError ODEProblem(
ssys, [x => 3], (0, 1)
ssys, [x => 3], (0, 1),
missing_guess_value = MissingGuessValue.Error()
) # y should have a guess
end
end
Expand Down
9 changes: 9 additions & 0 deletions src/problems/sccnonlinearproblem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,15 @@ function SciMLBase.SCCNonlinearProblem{iip}(
)
end
end
MissingGuessValue.HashedRandom() => begin
newval = [hash(var,hash(i)) for i in SU.stable_eachindex(symbolic_idxs)]./0x1p64
_u0[symbolic_idxs] .= newval
for (idx, j) in enumerate(symbolic_idxs)
write_possibly_indexed_array!(
op, dvs[vscc[j]], Symbolics.SConst(newval[idx]), COMMON_NOTHING
)
end
end
MissingGuessValue.Error() => throw(MissingGuessError(dvs[vscc], _u0))
end
end
Expand Down
Loading