- Scaling: Nondimensionalizing involves scaling the equations so that they are without units, making the range of values more uniform.
- Improved Stability: It can reduce numerical disparities, improving the stability of the solver.
- Better Convergence: The solver might converge more quickly with reduced condition numbers.
- Error Control: It helps the solver's error control work more effectively, as it assumes variables are of similar scale.
- Potential Solution: Nondimensionalizing the equations could help mitigate the issues you're facing with ode15s by making the problem more numerically tractable.
ODE15s nondimensional Jacobian matrix can help convergence?
3 views (last 30 days)
Show older comments
Hi
I'm trying to solve a transient multiphysics problem with MATLAB ode15s function.
The problem consists of three physical systems, so the range of there mass and residual matrix is very large and I'm using Jacobian matrix for speed up the ode function.
But the convergence speed is still too slow and ode function failes with the error "Unable to meet integration tolerances without reducing the step size"
So I checked the condition number of the mass and Jacobian matrix and these were in the range between 10^15~10^21.
In this situation, nondimensionalizing the equation colud help?
0 Comments
Accepted Answer
SOUMNATH PAUL
on 30 Nov 2023
Hi,
To my understanding, you are working on a transient Multiphysics problem in MATLAB that involves three different physical systems, and you're using the ode15s function to solve it because it's good for stiff problems. But you are running into issues because the function is taking too long to solve the problem, and sometimes it can't find a solution within the allowed error limits without reducing step size.
You have also observed that the matrices involved in your calculations have condition numbers that are extremely high (between 10^15 and 10^21), which is a sign that the problem is very sensitive to small changes in the numbers you're working with. This can make it hard for the “ode15s” function to work correctly.
Here is how non-dimentionalizing can help in this scenario:
One suggestion is to use “ode23tb”. It might take more computational time per step but will be able to take much larger time steps and overall might be much more performant.
Hope it helps!
Regards,
Soumnath
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!