Thank you so much!
It depends. If the flow speed increases enough, that can require a time step size change to satisfy the CFL condition that is required by the fluid solver --- in that case, running at the same time step size would result in a fluid solver instability. However, for FSI models with relatively
stiff structures, the dominant stability constraint is usually related to the structural dynamics.
The reason that the time step size can shrink to zero is that if the time step size violates the structural time step size restriction, this will cause energy in the model to blow up, which generates large forces that generates large velocities and, consequently, very small time step sizes
to maintain a CFL-type condition. (The model problem I think about is y' = -lambda y. If you discretize via forward Euler and pick a time step size that is too large, then the solution blows up instead of decaying to zero, independent of the initial condition.) One way to monitor whether
this kind of blow up is happening is to track the CFL number in the log file. If you see the CFL number increasing by a consistent multiplicative factor from time step to time step (e.g. consistently going up by a factor of 2 or 5 or 10 in each time step), then that usually means that the
time step size is too large for the structural model.
In the last 100 step before 'time-to-0', the CFL is almost fixed around 0.00112487, but suddenly increased to 1421.58 in the last step as follow. Is it a 'blow up' in this time step?
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
At beginning of timestep # 48458
Simulation time is 0.121145
IBHierarchyIntegrator::advanceHierarchy(): time interval = [0.121145,0.121148], dt = 2.5e-06
IBHierarchyIntegrator::preprocessIntegrateHierarchy(): performing Lagrangian forward Euler step
IBHierarchyIntegrator::advanceHierarchy(): integrating hierarchy
IBHierarchyIntegrator::integrateHierarchy(): computing Lagrangian force
IBHierarchyIntegrator::integrateHierarchy(): spreading Lagrangian force to the Eulerian grid
IBHierarchyIntegrator::integrateHierarchy(): solving the incompressible Navier-Stokes equations
INSStaggeredHierarchyIntegrator::integrateHierarchy(): stokes solve number of iterations = 1
INSStaggeredHierarchyIntegrator::integrateHierarchy(): stokes solve residual norm = 11.9153
IBHierarchyIntegrator::integrateHierarchy(): interpolating Eulerian velocity to the Lagrangian mesh
IBHierarchyIntegrator::integrateHierarchy(): performing Lagrangian midpoint-rule step
IBHierarchyIntegrator::postprocessIntegrateHierarchy(): interpolating Eulerian velocity to the Lagrangian mesh
IBHierarchyIntegrator::postprocessIntegrateHierarchy(): CFL number = 0.00112487
IBHierarchyIntegrator::postprocessIntegrateHierarchy(): Eulerian estimate of upper bound on IB point displacement since last regrid = 0.00224975
IBHierarchyIntegrator::advanceHierarchy(): synchronizing updated data
IBHierarchyIntegrator::advanceHierarchy(): resetting time dependent data
At end of timestep # 48458
Simulation time is 0.121148
+++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++
At beginning of timestep # 48459
Simulation time is 0.121148
IBHierarchyIntegrator::advanceHierarchy(): time interval = [0.121148,0.12115], dt = 2.5e-06
IBHierarchyIntegrator::preprocessIntegrateHierarchy(): performing Lagrangian forward Euler step
IBHierarchyIntegrator::advanceHierarchy(): integrating hierarchy
IBHierarchyIntegrator::integrateHierarchy(): computing Lagrangian force
IBHierarchyIntegrator::integrateHierarchy(): spreading Lagrangian force to the Eulerian grid
IBHierarchyIntegrator::integrateHierarchy(): solving the incompressible Navier-Stokes equations
INSStaggeredHierarchyIntegrator::integrateHierarchy(): stokes solve number of iterations = 6960
INSStaggeredHierarchyIntegrator::integrateHierarchy(): stokes solve residual norm = 5.31686e+10
IBHierarchyIntegrator::integrateHierarchy(): interpolating Eulerian velocity to the Lagrangian mesh
IBHierarchyIntegrator::integrateHierarchy(): performing Lagrangian midpoint-rule step
IBHierarchyIntegrator::postprocessIntegrateHierarchy(): interpolating Eulerian velocity to the Lagrangian mesh
IBHierarchyIntegrator::postprocessIntegrateHierarchy(): CFL number = 1421.58
IBHierarchyIntegrator::postprocessIntegrateHierarchy(): Eulerian estimate of upper bound on IB point displacement since last regrid = 1421.58
IBHierarchyIntegrator::advanceHierarchy(): synchronizing updated data
IBHierarchyIntegrator::advanceHierarchy(): resetting time dependent data
At end of timestep # 48459
Simulation time is 0.12115
+++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++
At beginning of timestep # 48460
Simulation time is 0.12115
P=00000:Program abort called in file ``../../../IBAMR/ibtk/lib/../src/utilities/HierarchyIntegrator.cpp'' at line 258
P=00000:ERROR MESSAGE:
P=00000:IBHierarchyIntegrator::advanceHierarchy():
P=00000: at time = 0.12115: time step size dt = 1.75861e-10 is zero to machine precision.
P=00000:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
The structural stability conditions are not strongly related to the flow conditions --- they are determined by the stiffness of the material model, the grid spacings, and the form of the regularized delta function. Specifically, if you have a very stiff material but no flow or loading --- and
so no induced motion --- you still would expect that any small perturbations to the model (which can result from finite precision effects) will eventually cause the structure to "blow up" if the time step size is too large.
I think it should be possible to make the thin structure work. What is the material model and structural discretization?
My material is not very rigid and has loadings - a prestress and an outside pressure. Here is the material model: E = 100 dyne/cm2, Nu = 0.49. The prestress was 1000*E to simplify the vibration modes, and the outside pressure was 0.1*E to bring disturbance to the flexible wall. The IB_DELTA_FUNCTION was IB_3, and the structural discretization was QUAD4 in ELEM_TYPE.