SciML / ModelingToolkit.jl

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
https://mtk.sciml.ai/dev/
Other
1.43k stars 209 forks source link

Nonlinear Solving Tearing (and differential equations?) #181

Closed ChrisRackauckas closed 3 years ago

ChrisRackauckas commented 5 years ago

Tearing is a method for re-arranging a nonlinear solver system to exploit sparsity and decrease the computational cost of solving nonlinear systems f(x)=0. It would be nice to implement this as a transformation pass to NonlinearSystem as a speedup enhancement that isn't possible on the numerical side (a good showcase of how this can be useful for say NLsolve.jl). It's likely the type of non-numerical thing that Knitro is doing to get its speed.

In ODE systems, the pass could be written in such a way that tearing optimizes the structure of the Jacobian.

https://www.mat.univie.ac.at/~neum/ms/tearing_survey.pdf

@pkofod @jlperla who may be interested in this.

pkofod commented 5 years ago

I was aware of the idea, but didn't know it was called tearing. But yes, that can be very useful sometimes, though I don't know much about the algorithms.