KratosMultiphysics / Kratos

Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
https://kratosmultiphysics.github.io/Kratos/
Other
1.02k stars 244 forks source link

How can we reduce solve time? #9890

Open Vahid-Galavi opened 2 years ago

Vahid-Galavi commented 2 years ago

Description Consider we have a system like Ku=f, in which K is the stiffness matrix, u is the vector of unknowns and f is a load vector. For large systems, most of the time is spent on solving the system. This is done per iteration. My question is:

RiccardoRossi commented 2 years ago

hi Vagid,

the nrnstartetrgy eas originally designed to allow it, but it was never exploited and it is not possible as of now.

to activate it we would need to change the wtrategy so that the solver initializesolutions tep is called and the only call buildrhs.

i would create a new strategy to prototype it, and then eventually merge in the NR we would need ro

we would need

On Fri, May 6, 2022, 22:37 Vahid @.***> wrote:

Description Consider we have a system like Ku=f, in which K is the stiffness matrix, u is the vector of unknowns and f is a load vector. For large systems, most of the time is spent on solving the system. This is done per iteration. My question is:

  • If K is constant during iterations, is it possible to reuse the solved system of the first iteration in the subsequent iterations? I guess this will save a lot of time.
  • If the answer to the previous question is yes, how?

— Reply to this email directly, view it on GitHub https://github.com/KratosMultiphysics/Kratos/issues/9890, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB5PWEOQFL2NXCKK25QXNLLVIV7HVANCNFSM5VJGEMZA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

Vahid-Galavi commented 2 years ago

Thanks @RiccardoRossi. Let me know if I can help.

loumalouomega commented 2 years ago
* If **K** is constant during iterations, is it possible to reuse the solved system of the first iteration in the subsequent iterations? I guess this will save a lot of time.

Usually is updated each iteration, but only the content, not the sparsity/connectivity (this can be updated each iteration if manually activated, I do that with the contact). It could be done if for example we replace that bool with an enum, and we change some lines of code.

* If the answer to the previous question is yes, how?

At the end of the previous point.