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
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.
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.
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.