1- using  OrdinaryDiffEq, ModelingToolkit, Test, LinearAlgebra
1+ using  OrdinaryDiffEq, ModelingToolkit, Test, LinearAlgebra, StaticArrays 
22using  ModelingToolkit:  t_nounits as t, D_nounits as D, MTKParameters
33
44@variables  y (t)[1 : 3 ]
@@ -12,13 +12,18 @@ eqs = [D(y[1]) ~ -k[1] * y[1] + k[3] * y[2] * y[3],
1212sys =  complete (sys)
1313@test_throws  ArgumentError ODESystem (eqs, y[1 ])
1414M =  calculate_massmatrix (sys)
15+ @test  M isa  Diagonal
1516@test  M ==  [1  0  0 
1617            0  1  0 
1718            0  0  0 ]
1819
1920prob_mm =  ODEProblem (sys, [y =>  [1.0 , 0.0 , 0.0 ]], (0.0 , 1e5 ),
2021    [k =>  [0.04 , 3e7 , 1e4 ]])
22+ @test  prob_mm. f. mass_matrix isa  Diagonal{Float64, Vector{Float64}}
2123sol =  solve (prob_mm, Rodas5 (), reltol =  1e-8 , abstol =  1e-8 )
24+ prob_mm =  ODEProblem (sys, SA[y =>  [1.0 , 0.0 , 0.0 ]], (0.0 , 1e5 ),
25+     [k =>  [0.04 , 3e7 , 1e4 ]])
26+ @test  prob_mm. f. mass_matrix isa  Diagonal{Float64, SVector{3 , Float64}}
2227
2328function  rober (du, u, p, t)
2429    y₁, y₂, y₃ =  u
@@ -43,3 +48,17 @@ eqs = [D(y[1]) ~ y[1], D(y[2]) ~ y[2], D(y[3]) ~ y[3]]
4348@named  sys =  ODESystem (eqs, t, collect (y), [k])
4449
4550@test  calculate_massmatrix (sys) ===  I
51+ 
52+ @testset  " Mass matrix `isa Diagonal` for `SDEProblem`" begin 
53+     eqs =  [D (y[1 ]) ~  - k[1 ] *  y[1 ] +  k[3 ] *  y[2 ] *  y[3 ],
54+         D (y[2 ]) ~  k[1 ] *  y[1 ] -  k[3 ] *  y[2 ] *  y[3 ] -  k[2 ] *  y[2 ]^ 2 ,
55+         0  ~  y[1 ] +  y[2 ] +  y[3 ] -  1 ]
56+ 
57+     @named  sys =  ODESystem (eqs, t, collect (y), [k])
58+     @named  sys =  SDESystem (sys, [1 , 1 , 0 ])
59+     sys =  complete (sys)
60+     prob =  SDEProblem (sys, [y =>  [1.0 , 0.0 , 0.0 ]], (0.0 , 1e5 ), [k =>  [0.04 , 3e7 , 1e4 ]])
61+     @test  prob. f. mass_matrix isa  Diagonal{Float64, Vector{Float64}}
62+     prob =  SDEProblem (sys, SA[y =>  [1.0 , 0.0 , 0.0 ]], (0.0 , 1e5 ), [k =>  [0.04 , 3e7 , 1e4 ]])
63+     @test  prob. f. mass_matrix isa  Diagonal{Float64, SVector{3 , Float64}}
64+ end 
0 commit comments