Skip to content

Commit f07357a

Browse files
committed
add free_u and free_p functions
1 parent 85f3776 commit f07357a

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

docs/src/API.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,28 +121,35 @@ get_metadata(::NetworkDynamics.ComponentModel, ::Symbol, ::Symbol)
121121
has_metadata(::NetworkDynamics.ComponentModel, ::Symbol, ::Symbol)
122122
set_metadata!(::NetworkDynamics.ComponentModel, ::Symbol, ::Symbol, ::Any)
123123
delete_metadata!(::NetworkDynamics.ComponentModel, ::Symbol, ::Symbol)
124+
strip_metadata!
124125
has_default
125126
get_default
126127
set_default!
127128
delete_default!
129+
strip_defaults!
128130
has_guess
129131
get_guess
130132
set_guess!
131133
delete_guess!
134+
strip_guesses!
132135
has_init
133136
get_init
134137
set_init!
135138
delete_init!
139+
strip_inits!
136140
has_bounds
137141
get_bounds
138142
set_bounds!
139143
delete_bounds!
144+
strip_bounds!
140145
set_defaults!
141146
set_interface_defaults!
142147
get_defaults_dict
143148
get_guesses_dict
144149
get_bounds_dict
145150
get_inits_dict
151+
free_u
152+
free_p
146153
```
147154

148155
### Metadata and Inspection Utils

src/NetworkDynamics.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ export has_initformula, get_initformulas, set_initformula!, add_initformula!, de
101101
export has_position, get_position, set_position!
102102
export has_marker, get_marker, set_marker!
103103
export get_defaults_dict, get_guesses_dict, get_bounds_dict, get_inits_dict
104+
export free_p, free_u
104105
include("metadata.jl")
105106

106107
export isfixpoint, is_linear_stable, jacobian_eigenvals

src/metadata.jl

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,3 +1082,39 @@ end
10821082

10831083
function describe_vertices end
10841084
function describe_edges end
1085+
1086+
"""
1087+
free_p(cf::ComponentModel)
1088+
free_p(nw::Network)
1089+
1090+
Returns the "free" parameters (parameters without default values) for the given system.
1091+
1092+
# Returns
1093+
- Vector of parameter symbols that do not have default values set
1094+
1095+
See also: [`free_u`](@ref), [`has_default`](@ref), [`set_default!`](@ref)
1096+
"""
1097+
function free_p(cf::NetworkDynamics.ComponentModel)
1098+
return filter(p -> !NetworkDynamics.has_default(cf, p), NetworkDynamics.psym(cf))
1099+
end
1100+
function free_p(nw::Network)
1101+
setdiff(NetworkDynamics.SII.parameter_symbols(nw), keys(NetworkDynamics.SII.default_values(nw)))
1102+
end
1103+
1104+
"""
1105+
free_u(nw::Network)
1106+
free_u(cf::ComponentModel)
1107+
1108+
Returns the "free" variables/states (variables without default values) for the given system.
1109+
1110+
# Returns
1111+
- Vector of variable/state symbols that do not have default values set
1112+
1113+
See also: [`free_p`](@ref), [`has_default`](@ref), [`set_default!`](@ref)
1114+
"""
1115+
function free_u(nw::Network)
1116+
setdiff(NetworkDynamics.SII.variable_symbols(nw), keys(NetworkDynamics.SII.default_values(nw)))
1117+
end
1118+
function free_u(cf::NetworkDynamics.ComponentModel)
1119+
return filter(u -> !NetworkDynamics.has_default(cf, u), NetworkDynamics.sym(cf))
1120+
end

0 commit comments

Comments
 (0)