@@ -9,25 +9,74 @@ and Hessians, along with automatically sparsifying and parallelizing the
9
9
computations. Automatic transformations, such as index reduction, can be applied
10
10
to the model to make it easier for numerical solvers to handle.
11
11
12
- ## Package Overview
13
-
14
- ModelingToolkit has 3 layers:
15
-
16
- 1 . The model definition level. This is a high level of syntactic sugar for
17
- easily generating ModelingToolkit models. It can be used directly like a DSL
18
- for advanced users who want a lot of flexibility in a modeling language.
19
- Additionally, automatic tracing functionality allows for easily generating
20
- ModelingToolkit models directly from Julia code.
21
- 2 . The ` AbstractSystem ` level. This is the level where content-dependent functionality
22
- is added, where models such an ordinary differential equation are represented.
23
- At the system level, there are * transformations* which take one system to
24
- another, and * targets* which output code for numerical solvers.
25
- 3 . The IR level, also referred to as the direct level. At this level, one
26
- directly acts on arrays of ` Equation ` s, and symbolic expressions to
27
- generate functions.
28
-
29
- Each level above is built on the level below, giving more context to allow for
30
- more automation. For example, the system level allows for automatically generating
31
- fast multithreaded sparse Jacobian functions of an ` ODESystem ` , which is just
32
- calling the sparsity functions and the multithreading capabilities of
33
- ` build_function ` at the IR level.
12
+ ## Installation
13
+
14
+ To install ModelingToolkit.jl, use the Julia package manager:
15
+
16
+ ``` julia
17
+ using Pkg
18
+ Pkg. add (" ModelingToolkit" )
19
+ ```
20
+
21
+ ## Feature Summary
22
+
23
+ ModelingToolkit.jl is a symbolic-numeric modeling package. Thus it combines some
24
+ of the features from symbolic computing packages like SymPy or Mathematica with
25
+ the ideas of equation-based modeling systems like the causal Simulink and the
26
+ acausal Modelica. It bridges the gap between many different kinds of equations,
27
+ allowing one to quickly and easily transform systems of DAEs into optimization
28
+ problems, or vice-versa, and then simplify and parallelize the resulting expressions
29
+ before generating code.
30
+
31
+ ### Feature List
32
+
33
+ - Causal and acausal modeling (Simulink/Modelica)
34
+ - Automated model transformation, simplification, and composition
35
+ - Pervasive parallelism in symbolic computations and generated functions
36
+ - Core features like alias elimination and tearing of nonlinear systems for
37
+ efficiently numerically handling large-scale systems of equations
38
+ - The ability to use the entire Symbolics.jl Computer Algebra System (CAS) as
39
+ part of the modeling process.
40
+ - Extendability: the whole system is written in pure Julia, so adding new
41
+ functions, simplification rules, and model transformations has no barrier.
42
+
43
+ For information on how to use the Symbolics.jl CAS system that ModelingToolkit.jl
44
+ is built on, consult the [ Symbolics.jl documentation] ( https://github.com/JuliaSymbolics/Symbolics.jl )
45
+
46
+ ### Equation Types
47
+
48
+ - Ordinary differential equations
49
+ - Stochastic differential equations
50
+ - Partial differential equations
51
+ - Nonlinear systems
52
+ - Optimization problems
53
+ - Optimal Control
54
+
55
+ ## Extension Libraries
56
+
57
+ Because ModelingToolkit.jl is the core foundation of a equation-based modeling
58
+ ecosystem, there is a large set of libraries adding features to this system.
59
+ Below is an incomplete list of extension libraries one may want to be aware of:
60
+
61
+ - [ Catalyst.jl] ( https://github.com/SciML/Catalyst.jl ) : Symbolic representations of chemical reactions
62
+ - Symbolically build and represent large systems of chemical reactions
63
+ - Generate code for ODEs, SDEs, continuous-time Markov Chains, and more
64
+ - Simulate the models using the SciML ecosystem with O(1) Gillespie methods
65
+ - [ DataDrivenDiffEq.jl] ( https://github.com/SciML/DataDrivenDiffEq.jl ) : Automatic identification of equations from data
66
+ - Automated construction of ODEs and DAEs from data
67
+ - Representations of Koopman operators and Dynamic Mode Decomposition (DMD)
68
+ - [ MomentClosure.jl] ( https://github.com/augustinas1/MomentClosure.jl ) : Automatic transformation of ReactionSystems into deterministic systems
69
+ - Generates ODESystems for the moment closures
70
+ - Allows for geometrically-distributed random reaction rates
71
+ - [ CellMLToolkit.jl] ( https://github.com/SciML/CellMLToolkit.jl )
72
+ - [ SbmlInterface.jl] ( https://github.com/paulflang/SbmlInterface.jl )
73
+ - [ ReactionMechanismSimulator.jl] ( )
74
+ - [ ReactionNetworkImporters.jl] ( )
75
+ - [ NeuralPDE.jl] ( )
76
+ - [ StructuralTransformations.jl] ( )
77
+
78
+ ## Compatible Numerical Solvers
79
+
80
+
81
+
82
+ - [ GalacticOptim.jl] ( https://github.com/SciML/GalacticOptim.jl )
0 commit comments