Skip to content

Commit 0111aa6

Browse files
docs: add v10 release notes to NEWS.md
1 parent ac4f1c4 commit 0111aa6

File tree

1 file changed

+113
-1
lines changed

1 file changed

+113
-1
lines changed

NEWS.md

Lines changed: 113 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ModelingToolkit v10 Release Notes
22

3-
### Callbacks
3+
## Callbacks
44

55
Callback semantics have changed.
66

@@ -17,6 +17,118 @@ event = SymbolicDiscreteCallback(
1717
[t == 1] => [p ~ Pre(p) + 1], discrete_parameters = [p])
1818
```
1919

20+
## New `mtkcompile` and `@mtkcompile`
21+
22+
`structural_simplify` is now renamed to `mtkcompile`. `@mtkbuild` is renamed to
23+
`@mtkcompile`. Their functionality remains the same. However, instead of a second
24+
positional argument `structural_simplify(sys, (inputs, outputs))` the inputs and outputs
25+
should be specified via keyword arguments as `mtkcompile(sys; inputs, outputs, disturbance_inputs)`.
26+
27+
## Reduce reliance on metadata in `mtkcompile`
28+
29+
Previously, `mtkcompile` (formerly `structural_simplify`) used to rely on the metadata of
30+
symbolic variables to identify variables/parameters/brownians. This was regardless of
31+
what the system expected the variable to be. Now, it respects the information in the system.
32+
33+
## Unified `System` type
34+
35+
There is now a single common `System` type for all types of models except PDEs, for which
36+
`PDESystem` still exists. It follows the same syntax as `ODESystem` and `NonlinearSystem`
37+
did. `System(equations, t[, vars, pars])` will construct a time-dependent system.
38+
`System(equations[, vars, pars])` will construct a time-independent system. Refer to the
39+
docstring for `System` for further information.
40+
41+
Utility constructors are defined for:
42+
43+
- `NonlinearSystem(sys)` to convert a time-dependent system to a time-independent one for
44+
its steady state.
45+
- `SDESystem(sys, noise_eqs)` to add noise to a system
46+
- `JumpSystem(jumps, ...)` to define a system with jumps. Note that normal equations can
47+
also be passed to `jumps`.
48+
- `OptimizationSystem(cost, ...)` to define a system for optimization.
49+
50+
All problem constructors validate that the system matches the expected structure for
51+
that problem.
52+
53+
## No more `parameter_dependencies`
54+
55+
The `parameter_dependencies` keyword is deprecated. All equations previously passed here
56+
should now be provided as part of the standard equations of the system. If passing parameters
57+
explicitly to the `System` constructor, the dependent parameters (on the left hand side of
58+
parameter dependencies) should also be provided. These will be separated out when calling
59+
`complete` or `mtkcompile`. Calling `parameter_dependencies` or `dependent_parameters` now
60+
requires that the system is completed. The new `SDESystem` constructor still retains the
61+
`parameter_dependencies` keyword argument since the number of equations has to match the
62+
number of columns in `noise_eqs`.
63+
64+
ModelingToolkit now has discretion of what parameters are eliminated using the parameter
65+
equations during `complete` or `mtkcompile`.
66+
67+
## New problem and constructors
68+
69+
Instead of `XProblem(sys, u0map, tspan, pmap)` for time-dependent problems and
70+
`XProblem(sys, u0map, pmap)` for time-independent problems, the syntax has changed to
71+
`XProblem(sys, op, tspan)` and `XProblem(sys, op)` respectively. `op` refers to the
72+
operating point, and is a variable-value mapping containing both unknowns and parameters.
73+
74+
`XFunction` constructors also no longer accept the list of unknowns and parameters as
75+
positional arguments.
76+
77+
## Removed `DelayParentScope`
78+
79+
The outdated `DelayParentScope` has been removed.
80+
81+
## Removed `XProblemExpr` and `XFunctionExpr`
82+
83+
The old `XProblemExpr` and `XFunctionExpr` constructors used to build an `Expr` that
84+
constructs `XProblem` and `XFunction` respectively are now removed. This functionality
85+
is now available by passing `expression = Val{true}` to any problem or function constructor.
86+
87+
## Renaming of `generate_*` and `calculate_*` methods
88+
89+
Several `generate_*` methods have been renamed, along with some `calculate_*` methods.
90+
The `generate_*` methods also no longer accept a list of unknowns and/or parameters. Refer
91+
to the documentation for more information.
92+
93+
## New behavior of `getproperty` and `setproperty!`
94+
95+
Using `getproperty` to access fields of a system has been deprecated for a long time, and
96+
this functionality is now removed. `setproperty!` previously used to update the default
97+
of the accessed symbolic variable. This is not supported anymore. Defaults can be updated by
98+
mutating `ModelingToolkit.get_defaults(sys)`.
99+
100+
## New behavior of `@constants`
101+
102+
`@constants` now creates parameters with the `tunable = false` metadata by default.
103+
104+
## Removed `FunctionalAffect`
105+
106+
`FunctionalAffect` is now removed in favor of the new `ImperativeAffect`. Refer to the
107+
documentation for more information.
108+
109+
## Improved system metadata
110+
111+
Instead of an empty field that can contain arbitrary data, the `System` type stores metadata
112+
identically to `SymbolicUtils.BasicSymbolic`. Metadata is stored in an immutable dictionary
113+
keyed by a user-provided `DataType` and containing arbitrary values. `System` supports the
114+
same `SymbolicUtils.getmetadata` and `SymbolicUtils.setmetadata` API as symbolic variables.
115+
Refer to the documentation of `System` and the aforementioned functions for more information.
116+
117+
## Moved `connect` and `Connector` to ModelingToolkit
118+
119+
Previously ModelingToolkit used the `connect` function and `Connector` type defined in
120+
Symbolics.jl. These have now been moved to ModelingToolkit along with the experimental
121+
state machine API. If you imported them from Symbolics.jl, it is recommended to import from
122+
ModelingToolkit instead.
123+
124+
## Always wrap with `ParentScope` in `@named`
125+
126+
When creating a system using `@named`, any symbolic quantities passed as keyword arguments
127+
to the subsystem are wrapped in `ParentScope`. Previously, this would only happen if the
128+
variable wasn't already wrapped in a `ParentScope`. However, the old behavior had issues
129+
when passing symbolic quantities down multiple levels of the hierarchy. The `@named` macro
130+
now always performs this wrapping.
131+
20132
# ModelingToolkit v9 Release Notes
21133

22134
### Upgrade guide

0 commit comments

Comments
 (0)