Skip to content

Commit 9fd1af5

Browse files
committed
add intermediate function to mtkeqs
1 parent 064254f commit 9fd1af5

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ProcessBasedModelling"
22
uuid = "ca969041-2cf3-4b10-bc21-86f4417093eb"
33
authors = ["Datseris <[email protected]>"]
4-
version = "1.3.0"
4+
version = "1.3.1"
55

66
[deps]
77
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"

src/ProcessBasedModelling.jl

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ include("processes_basic.jl")
1919

2020
export t
2121
export Process, ParameterProcess, TimeDerivative, ExpRelaxation, AdditionProcess
22-
export processes_to_mtkmodel
22+
export processes_to_mtkmodel, processes_to_mtkeqs
2323
export new_derived_named_parameter
2424
export has_symbolic_var, default_value
2525
export @convert_to_parameters, LiteralParameter

src/make.jl

+21-12
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
processes_to_mtkmodel(processes::Vector [, default]; kw...)
33
44
Construct a ModelingToolkit.jl model/system using the provided `processes` and `default` processes.
5-
The model/system is _not_ structurally simplified. During construction, the following automations
6-
improve user experience:
5+
The model/system is _not_ structurally simplified. Use the function
6+
`processes_to_mtkeqs` to obtain the raw `Vector{Equation}` before it is
7+
passed to the MTK model/system like `ODESystem`.
8+
9+
During construction, the following automations improve user experience:
710
811
- Variable(s) introduced in `processes` that does not itself have a process obtain
912
a default process from `default`.
@@ -51,16 +54,24 @@ These registered processes are used when `default` is a `Module`.
5154
- `warn_default::Bool = true`: if `true`, throw a warning when a variable does not
5255
have an assigned process but it has a default value so that it becomes a parameter instead.
5356
"""
54-
processes_to_mtkmodel(procs::Vector; kw...) =
55-
processes_to_mtkmodel(procs, Dict{Num, Any}(); kw...)
56-
processes_to_mtkmodel(procs::Vector, m::Module; kw...) =
57-
processes_to_mtkmodel(procs, default_processes(m); kw...)
58-
processes_to_mtkmodel(procs::Vector, v::Vector; kw...) =
59-
processes_to_mtkmodel(procs, default_dict(v); kw...)
57+
function processes_to_mtkmodel(args...;
58+
type = ODESystem, name = nameof(type), independent = t, kw...,
59+
)
60+
eqs = processes_to_mtkeqs(args...; kw...)
61+
sys = type(eqs, independent; name)
62+
return sys
63+
end
64+
65+
processes_to_mtkeqs(procs::Vector; kw...) =
66+
processes_to_mtkeqs(procs, Dict{Num, Any}(); kw...)
67+
processes_to_mtkeqs(procs::Vector, m::Module; kw...) =
68+
processes_to_mtkeqs(procs, default_processes(m); kw...)
69+
processes_to_mtkeqs(procs::Vector, v::Vector; kw...) =
70+
processes_to_mtkeqs(procs, default_dict(v); kw...)
6071

6172
# The main implementation has the defaults to be a map from variable to process
6273
# because this simplifies a bit the code
63-
function processes_to_mtkmodel(_processes::Vector, default::Dict{Num, Any};
74+
function processes_to_mtkeqs(_processes::Vector, default::Dict{Num, Any};
6475
type = ODESystem, name = nameof(type), independent = t, warn_default::Bool = true,
6576
)
6677
processes = expand_multi_processes(_processes)
@@ -116,9 +127,7 @@ function processes_to_mtkmodel(_processes::Vector, default::Dict{Num, Any};
116127
end
117128
end
118129
end
119-
# return eqs
120-
sys = type(eqs, independent; name)
121-
return sys
130+
return eqs
122131
end
123132

124133
function expand_multi_processes(procs::Vector)

0 commit comments

Comments
 (0)