220
220
```
221
221
222
222
!!! note
223
-
223
+
224
224
For more examples of usage, checkout [ ModelingToolkitStandardLibrary.jl] ( https://github.com/SciML/ModelingToolkitStandardLibrary.jl/ )
225
225
226
226
## More on ` Model.structure `
229
229
230
230
- ` :components ` : List of sub-components in the form of [[ name, sub_component_name] ,...] .
231
231
- ` :extend ` : The list of extended unknowns, name given to the base system, and name of the base system.
232
- - ` :structural_parameters ` : Dictionary of structural parameters mapped to their default values .
232
+ - ` :structural_parameters ` : Dictionary of structural parameters mapped to their metadata .
233
233
- ` :parameters ` : Dictionary of symbolic parameters mapped to their metadata. For
234
234
parameter arrays, length is added to the metadata as ` :size ` .
235
235
- ` :variables ` : Dictionary of symbolic variables mapped to their metadata. For
@@ -243,13 +243,14 @@ For example, the structure of `ModelC` is:
243
243
``` julia
244
244
julia> ModelC. structure
245
245
Dict{Symbol, Any} with 7 entries:
246
- :components => [[:model_a , :ModelA ]]
247
- :variables => Dict {Symbol, Dict{Symbol, Any}} (:v => Dict (:default => :v_var ), :v_array => Dict (:size => (2 , 3 )))
248
- :icon => URI (" https://github.com/SciML/SciMLDocs/blob/main/docs/src/assets/logo.png" )
249
- :kwargs => Dict {Symbol, Dict} (:f => Dict (:value => :sin ), :v => Dict {Symbol, Union{Nothing, Symbol}} (:value => :v_var , :type => nothing ), :v_array => Dict (:value => nothing , :type => nothing ), :p1 => Dict (:value => nothing ))
250
- :independent_variable => t
251
- :extend => Any[[:p2 , :p1 ], Symbol (" #mtkmodel__anonymous__ModelB" ), :ModelB ]
252
- :equations => [" model_a.k ~ f(v)" ]
246
+ :components => [[:model_a , :ModelA ]]
247
+ :variables => Dict {Symbol, Dict{Symbol, Any}} (:v => Dict (:default => :v_var ), :v_array => Dict (:size => (2 , 3 )))
248
+ :icon => URI (" https://github.com/SciML/SciMLDocs/blob/main/docs/src/assets/logo.png" )
249
+ :kwargs => Dict {Symbol, Dict} (:f => Dict (:value => :sin ), :v => Dict {Symbol, Union{Nothing, Symbol}} (:value => :v_var , :type => nothing ), :v_array => Dict (:value => nothing , :type => nothing ), :p1 => Dict (:value => nothing ))
250
+ :structural_parameters => Dict {Symbol, Dict} (:f => Dict (:value => :sin ))
251
+ :independent_variable => t
252
+ :extend => Any[[:p2 , :p1 ], Symbol (" #mtkmodel__anonymous__ModelB" ), :ModelB ]
253
+ :equations => [" model_a.k ~ f(v)" ]
253
254
```
254
255
255
256
### Using conditional statements
@@ -322,11 +323,12 @@ The conditional parts are reflected in the `structure`. For `BranchOutsideTheBlo
322
323
``` julia
323
324
julia> BranchOutsideTheBlock. structure
324
325
Dict{Symbol, Any} with 5 entries:
325
- :components => Any[(:if , :flag , [[:sys1 , :C ]], Any[])]
326
- :kwargs => Dict {Symbol, Dict} (:flag => Dict {Symbol, Bool} (:value => 1 ))
327
- :independent_variable => t
328
- :parameters => Dict {Symbol, Dict{Symbol, Any}} (:a1 => Dict (:condition => (:if , :flag , Dict {Symbol, Any} (:kwargs => Dict {Any, Any} (:a1 => nothing ), :parameters => Any[Dict {Symbol, Dict{Symbol, Any}} (:a1 => Dict ())]), Dict {Symbol, Any} (:kwargs => Dict {Any, Any} (:a2 => nothing ), :parameters => Any[Dict {Symbol, Dict{Symbol, Any}} (:a2 => Dict ())]))
329
- :equations => Any[(:if , :flag , [" a1 ~ 0" ], [" a2 ~ 0" ])]
326
+ :components => Any[(:if , :flag , [[:sys1 , :C ]], Any[])]
327
+ :kwargs => Dict {Symbol, Dict} (:flag => Dict {Symbol, Bool} (:value => 1 ))
328
+ :structural_parameters => Dict {Symbol, Dict} (:flag => Dict {Symbol, Bool} (:value => 1 ))
329
+ :independent_variable => t
330
+ :parameters => Dict {Symbol, Dict{Symbol, Any}} (:a1 => Dict (:condition => (:if , :flag , Dict {Symbol, Any} (:kwargs => Dict {Any, Any} (:a1 => nothing ), :parameters => Any[Dict {Symbol, Dict{Symbol, Any}} (:a1 => Dict ())]), Dict {Symbol, Any} (:kwargs => Dict {Any, Any} (:a2 => nothing ), :parameters => Any[Dict {Symbol, Dict{Symbol, Any}} (:a2 => Dict ())]))
331
+ :equations => Any[(:if , :flag , [" a1 ~ 0" ], [" a2 ~ 0" ])]
330
332
```
331
333
332
334
Conditional entries are entered in the format of `(branch, condition, [case when it is true], [case when it is false])`;
0 commit comments