# ModelingToolkit: Symbolic Calculations and Building Fast Parallel Functions

**URL:** https://discourse.julialang.org/t/modelingtoolkit-symbolic-calculations-and-building-fast-parallel-functions/42647
**Category:** Package Announcements
**Created:** [July 7, 2020, 1:43am UTC](https://discourse.julialang.org/t/modelingtoolkit-symbolic-calculations-and-building-fast-parallel-functions/42647 "2020-07-07T01:43:03Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)
#### Post date: [July 7, 2020, 1:43am UTC](https://discourse.julialang.org/t/modelingtoolkit-symbolic-calculations-and-building-fast-parallel-functions/42647/1 "2020-07-07T01:43:03Z")

</div>

[https://mtk.sciml.ai/dev/tutorials/symbolic\_functions/](https://mtk.sciml.ai/dev/tutorials/symbolic_functions/)

ModelingToolkit has been quite a bit of an enigma of a library to explain, but hopefully this new first tutorials helps people understand ModelingToolkit as a symbolic modeling language, akin to SymPy, but with a distinct Julia flavor by allowing for building fast sparse parallel functions, allowing users to directly define new primitives, and deeply integrating with the Julia SciML ecosystem and its differential equation solvers. ModelingToolkit.jl builds on SymbolicUtils to add features like differentiation, function building, and ways to represent mathematical models like ODEs and nonlinear optimization. It integrations with the rest of the SciML ecosystem as the basis for [automatic discovery of physical equations](https://datadriven.sciml.ai/dev/sparse_identification/sindy/) and [automated PDE solving via Physics-Informed Neural Networks (PINNs)](https://nextjournal.com/kirill_zubov/physics-informed-neural-networks-pinns-solvers-on-julia-gsoc-2020-first-evaluations).

So please check out the tutorial and let us know what you think. Thanks!

---

<div class="post-metadata">

### Author: ![scheidan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheidan/32/9889_2.png) [@scheidan](https://discourse.julialang.org/u/scheidan)
#### Post date: [July 7, 2020, 10:40am UTC](https://discourse.julialang.org/t/modelingtoolkit-symbolic-calculations-and-building-fast-parallel-functions/42647/2 "2020-07-07T10:40:46Z")

</div>

Thanks Chris, that certainty helpful!

Just somewhat random feedback after a quick read:

- Maybe it is easier to split the tutorial in two: i) symbolic calculations, ii) building (parallel) functions). Now the building functions part sits between a bit of on variables and expression and the remaining symbolic calculations.
- It is surprising that a function called `build_function` returns an expression and not a function (at least not by default). Maybe add an explanation when a expression shoudl be preferred over a function.
- It would be nice to alias `@variables` to `@variable` for the definition of a single variable.
- Does it make sense to always call `simplify` before `build_function`?
