Skip to content

Commit 9bb95de

Browse files
committed
Use BaseModelica.create_odeproblem
1 parent e205bd3 commit 9bb95de

File tree

6 files changed

+17
-139
lines changed

6 files changed

+17
-139
lines changed

.github/workflows/test_julia.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
strategy:
1414
matrix:
1515
os: [ubuntu-latest]
16-
julia-version: [1.11]
16+
julia-version: [1.12]
1717
fail-fast: false
1818
runs-on: ${{ matrix.os }}
1919
timeout-minutes: 60

TestBaseModelica/src/TestBaseModelica.jl

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import DataFrames
66
import SciMLBase
77
import OrdinaryDiffEq
88

9-
include("dump.jl")
109
include("settings.jl")
1110

1211
"""
@@ -18,47 +17,22 @@ Test coupling of Base Modelica and ModelingToolkit.jl.
1817
function run_test(base_modelica_file::AbstractString; settings::TestSettings)
1918
mkpath(abspath(settings.output_directory))
2019

21-
# Parse Base Modelica
22-
parsed_model = nothing
20+
# Parse Base Modelica and create ODEProblem
21+
ode_problem = nothing
2322
time_parsing = @elapsed begin
24-
parsed_model = BaseModelica.parse_basemodelica(base_modelica_file)
23+
ode_problem = BaseModelica.create_odeproblem(base_modelica_file)
2524
end
2625
open(settings.time_measurements_file, "w") do file
27-
write(file, "BaseModelica.parse_basemodelica, $(time_parsing)\n")
28-
end
29-
30-
# Dump parsed model to file for debugging purpose
31-
open(joinpath(settings.output_directory, settings.modelname * "_dump.txt"), "w") do file
32-
dump_parsed_model(file, parsed_model)
33-
end
34-
open(joinpath(settings.output_directory, settings.modelname * ".jl"), "w") do file
35-
show(file, parsed_model)
36-
end
37-
38-
# Create ODEProblem
39-
ode_problem = nothing
40-
time_ODEProblem = @elapsed begin
41-
ode_problem = SciMLBase.ODEProblem(
42-
parsed_model,
43-
[],
44-
(settings.solver_settings.start_time, settings.solver_settings.stop_time))
45-
end
46-
open(settings.time_measurements_file, "a") do file
47-
write(file, "SciMLBase.ODEProblem, $(time_ODEProblem)\n")
26+
write(file, "BaseModelica.create_odeproblem, $(time_parsing)\n")
4827
end
4928

50-
# Simulate
29+
# Simulate ODEProblem
5130
ode_solution = nothing
5231
time_solve = @elapsed begin
5332
if isnothing(settings.solver_settings.solver)
54-
ode_solution = OrdinaryDiffEq.solve(
55-
ode_problem,
56-
saveat = settings.solver_settings.interval)
33+
ode_solution = OrdinaryDiffEq.solve(ode_problem)
5734
else
58-
ode_solution = OrdinaryDiffEq.solve(
59-
ode_problem,
60-
settings.solver_settings.solver,
61-
saveat = settings.solver_settings.interval)
35+
ode_solution = OrdinaryDiffEq.solve(ode_problem, settings.solver_settings.solver)
6236
end
6337
end
6438
open(settings.time_measurements_file, "a") do file

TestBaseModelica/src/dump.jl

Lines changed: 0 additions & 34 deletions
This file was deleted.

TestBaseModelica/test/dump.jl

Lines changed: 0 additions & 43 deletions
This file was deleted.

TestBaseModelica/test/runtests.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using Test
22
using SafeTestsets
33

4-
include("dump.jl")
54
include("test_parse.jl")

TestBaseModelica/test/test_parse.jl

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -11,43 +11,25 @@ function test_parse_and_simulate_FirstOrder()
1111
rm(output_directory, force=true, recursive=true)
1212

1313
run_test(base_modelica_file;
14-
settings=TestSettings(
15-
modelname = modelname,
16-
output_directory=output_directory,
17-
timeout_parsing = 60))
14+
settings=TestSettings(
15+
modelname = modelname,
16+
output_directory=output_directory,
17+
timeout_parsing = 60)
18+
)
1819

1920
times_file = joinpath(output_directory, modelname * "_times.csv")
2021
@test isfile(times_file)
2122
content = readlines(times_file)
2223
@info content
23-
@test occursin(r"BaseModelica\.parse_basemodelica, [0-9]+\.[0-9]+", content[1])
24-
@test occursin(r"SciMLBase\.ODEProblem, [0-9]+\.[0-9]+", content[2])
25-
@test occursin(r"OrdinaryDiffEq\.solve, [0-9]+\.[0-9]+", content[3])
26-
27-
dump_file = joinpath(output_directory, modelname * "_dump.txt")
28-
@test isfile(dump_file)
29-
@test read(dump_file, String) == """Model: sys
30-
31-
Equations:
32-
1: Differential(t)(x(t)) ~ 1.0 - a*x(t)
33-
34-
Unknowns:
35-
1: (var = x(t), variable_source = :variables, name = :x, variable_type = ModelingToolkit.VARIABLE, irreducible = false, tunable = false, type = Real, default = 0.0)
36-
37-
Parameters:
38-
1: (var = a, variable_source = :parameters, name = :a, variable_type = ModelingToolkit.PARAMETER, irreducible = false, tunable = true, type = Real, default = 1.1)
39-
"""
40-
41-
jl_dump_file = joinpath(output_directory, modelname * ".jl")
42-
@test isfile(jl_dump_file)
24+
@test occursin(r"BaseModelica\.create_odeproblem, [0-9]+\.[0-9]+", content[1])
25+
@test occursin(r"OrdinaryDiffEq\.solve, [0-9]+\.[0-9]+", content[2])
4326

4427
result_file = joinpath(output_directory, modelname * "_res.csv")
4528
@test isfile(result_file)
4629
df = CSV.read(result_file, DataFrame)
47-
filter!(row -> row.time in [0.0, 0.5, 1.0], df)
30+
filter!(row -> row.time in [0.0, 1.0], df)
4831
@test df[1,2] == 0.0
49-
@test df[2,2] 0.38459131104319083
50-
@test df[3,2] 0.6064807012910736
32+
@test df[2,2] 0.6064807012910736
5133

5234
rm(output_directory, force=true, recursive=true)
5335
end

0 commit comments

Comments
 (0)