SimVascular / svFSIplus

This repository contains a line-by-line conversion of the Fortran svFSI solver to C++.
Other
7 stars 20 forks source link

Static "time integration" #124

Open mrp089 opened 8 months ago

mrp089 commented 8 months ago

Problem

We currently treat all problems with generalized-alpha time integration. However, there are cases where we would like to solve a (quasi)static problem (e.g. G&R).

Currently, I set density = spectral radius = 0. However, @yuecheng-yu and I are unsure if that actually solves a static problem in svFSI.

Solution

  1. Let the user choose between different time integration schemes
  2. Implement a (quasi)static "time integration":
    • Velocity and acceleration are always zero when evaluating the problem
    • Displacements are predicted based on previous solutions
    • The current solution should not depend on any previous solutions

This might be tricky since svFSI is solving for accelerations by default. @MatteoSalvador, any thoughts on this?

Additional context

No response

Code of Conduct

MatteoSalvador commented 8 months ago

I agree that this is a very important topic @mrp089. By taking sv_struct.cpp as an example, I would say that also the Damping parameter should be set to zero (in addition to Density), in order to remove first and second order time derivatives.

However, given the structure of the generalized-alpha scheme, I am not 100% confident this is perfectly equivalent to solving the quasi-static problem. The safest (and probably smoothest) way would be to create a new physics (e.g. static_struct) that solves quasi-static mechanics in the displacement variable and does not use the generalized-alpha parameters at all. I would not make a generic interface because some physics (such as CEP) do not require solving a quasi-static problem.

Happy to discuss this further!

menon-karthik commented 8 months ago

This would also be useful for the Darcy solver that @zasexton and I want to use! I am currently doing the same "hack" Martin mentioned above.

mrp089 commented 5 months ago

I tried a static "time integration" for the equilibrated G&R model (#49). I needed to touch the following files:

  1. Initializer and corrector in pic.ccp: everything depends only on displacements
  2. The physics I'm solving (structural mechanics in my case): remove all terms depending on acceleration and velocity

Upsides of this:

Downsides:

There's probably also a way of "faking" the gen-alpha parameters into a static formulation (maybe by renaming the parameters into something more universal). This would make it more applicable to other physics, but we'd also be multiplying a bunch of zeros.

It would be nice if we had a more modular way of dealing with time integration. For that, we probably would need to split up all terms in all physics by their time-dependency. Ideas welcome!