Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork234
An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations
License
SciML/ModelingToolkit.jl
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
ModelingToolkit.jl is a modeling framework for high-performance symbolic-numeric computationin scientific computing and scientific machine learning.It allows for users to give a high-level description of a model forsymbolic preprocessing to analyze and enhance the model. ModelingToolkit canautomatically generate fast functions for model components like Jacobiansand Hessians, along with automatically sparsifying and parallelizing thecomputations. Automatic transformations, such as index reduction, can be appliedto the model to make it easier for numerical solvers to handle.
For information on using the package,see the stable documentation. Use thein-development documentation for the version ofthe documentation which contains the unreleased features.
For a standard library of ModelingToolkit components and blocks, check out theModelingToolkitStandardLibrary
First, let's define a second order riff on the Lorenz equations, symbolicallylower it to a first order system, symbolically generate the Jacobian functionfor the numerical integrator, and solve it.
using ModelingToolkitusing ModelingToolkit: t_nounits as t, D_nounits as D# Defines a ModelingToolkit `System` model.@parameters σ ρ β@variablesx(t)y(t)z(t)eqs= [D(D(x))~ σ* (y- x),D(y)~ x* (ρ- z)- y,D(z)~ x* y- β* z]@mtkcompile sys=System(eqs, t)# Simulate the model for a specific condition (initial condition and parameter values).using OrdinaryDiffEqDefaultsim_cond= [D(x)=>2.0, x=>1.0, y=>0.0, z=>0.0, σ=>28.0, ρ=>10.0, β=>8/3]tend=100.0prob=ODEProblem(sys, sim_cond, tend; jac=true)sol=solve(prob)# Plot the solution in phase-space.using Plotsplot(sol, idxs= (x, y))
This will have automatically generated fast Jacobian functions, makingit more optimized than directly building a function. In addition, we can thenuse ModelingToolkit to compose multiple ODE subsystems. Now, let's define twointeracting Lorenz equations and simulate the resulting Differential-AlgebraicEquation (DAE):
using ModelingToolkitusing ModelingToolkit: t_nounits as t, D_nounits as D# Defines two lorenz system models.eqs= [D(x)~ σ* (y- x),D(y)~ x* (ρ- z)- y,D(z)~ x* y- β* z]@named lorenz1=System(eqs, t)@named lorenz2=System(eqs, t)# Connect the two models, creating a single model.@variablesa(t)@parameters γconnections= [0~ lorenz1.x+ lorenz2.y+ a* γ]@mtkcompile connected_lorenz=System(connections, t; systems= [lorenz1, lorenz2])# Simulate the model for a specific condition (initial condition and parameter values).using OrdinaryDiffEqDefaultsim_cond= [ lorenz1.x=>1.0, lorenz1.y=>0.0, lorenz1.z=>0.0, lorenz2.x=>0.0, lorenz2.z=>0.0, a=>2.0, lorenz1.σ=>10.0, lorenz1.ρ=>28.0, lorenz1.β=>8/3, lorenz2.σ=>10.0, lorenz2.ρ=>28.0, lorenz2.β=>8/3, γ=>2.0]tend=100.0prob=ODEProblem(connected_lorenz, sim_cond, tend)sol=solve(prob)# Plot the solution in phase-space.using Plotsplot(sol, idxs= (a, lorenz1.x, lorenz2.z))
If you use ModelingToolkit.jl in your research, please citethis paper:
@misc{ma2021modelingtoolkit, title={ModelingToolkit: A Composable Graph Transformation System For Equation-Based Modeling}, author={Yingbo Ma and Shashi Gowda and Ranjan Anantharaman and Chris Laughman and Viral Shah and Chris Rackauckas}, year={2021}, eprint={2103.05244}, archivePrefix={arXiv}, primaryClass={cs.MS}}About
An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations
Topics
Resources
License
Code of conduct
Contributing
Security policy
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Sponsor this project
Uh oh!
There was an error while loading.Please reload this page.
Packages0
Uh oh!
There was an error while loading.Please reload this page.

