Skip to content

Commit feadfe7

Browse files
greatly extend the first page
1 parent c1af5a9 commit feadfe7

File tree

1 file changed

+71
-22
lines changed

1 file changed

+71
-22
lines changed

docs/src/index.md

Lines changed: 71 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,74 @@ and Hessians, along with automatically sparsifying and parallelizing the
99
computations. Automatic transformations, such as index reduction, can be applied
1010
to the model to make it easier for numerical solvers to handle.
1111

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

Comments
 (0)