Fixing slow nonlinear convergence for URIS valve#508
Fixing slow nonlinear convergence for URIS valve#508aabrown100-git merged 5 commits intoSimVascular:mainfrom
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #508 +/- ##
==========================================
+ Coverage 67.70% 67.77% +0.06%
==========================================
Files 168 168
Lines 32752 32779 +27
Branches 5750 5761 +11
==========================================
+ Hits 22176 22215 +39
+ Misses 10439 10427 -12
Partials 137 137 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
ktbolt
left a comment
There was a problem hiding this comment.
@hanzhao2020 Looks ok to me.
There was a problem hiding this comment.
@hanzhao2020 Looks good thanks for this! Just a couple comments.
BTW, I have already tested these changes (using Han's latest branch which also includes some other changes) with my recent cardiac FSI simulations and I can confirm greatly improved nonlinear convergence.
There was a problem hiding this comment.
Pull request overview
This pull request addresses slow nonlinear convergence issues when using the URIS (unfitted resistive immersed surfaces) valve model in fluid simulations. The fix involves two main changes: (1) removing the up term from the RIS residual formulation in the fluid equation solver for CFD simulations, and (2) implementing explicit geometric coupling for FSI simulations where the fluid-structure equation converges with fixed mesh displacement before solving the mesh equation.
Changes:
- Removed the
up(subscale velocity) term from the URIS/RIS resistance contribution in the fluid residual, keeping onlyu(velocity), which fixes stagnated convergence in CFD - Added explicit geometric coupling functionality for FSI equations to improve convergence by decoupling the FSI and mesh equation solves within each time step
- Updated test cases to separate CFD and FSI URIS valve scenarios with appropriate field validations
Reviewed changes
Copilot reviewed 62 out of 81 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| Code/Source/solver/fluid.cpp | Removed up term from RIS valve residual contribution (lines 2242, 2244, 2246) |
| Code/Source/solver/pic.cpp | Implemented explicit geometric coupling logic to conditionally update FSI displacement fields and control equation sequencing |
| Code/Source/solver/Parameters.h | Added explicit_geometric_coupling boolean parameter to equation configuration |
| Code/Source/solver/Parameters.cpp | Registered the new parameter with default value false |
| Code/Source/solver/ComMod.h | Added expl_geom_cpl flag to equation type structure |
| Code/Source/solver/read_files.cpp | Read explicit geometric coupling parameter and propagate it from FSI to mesh equation |
| Code/Source/solver/distribute.cpp | Added broadcasting of explicit geometric coupling flag for parallel execution |
| tests/test_uris.py | Split into separate CFD and FSI tests with appropriate field lists |
| tests/cases/uris/pipe_uris_cfd/* | New CFD test case with fluid equation only |
| tests/cases/uris/pipe_uris_fsi/* | New FSI test case with explicit geometric coupling enabled |
| tests/cases/uris/pipe_uris_3d/* | Removed old FSI test with prescribed wall motion |
Comments suppressed due to low confidence (1)
Code/Source/solver/fluid.cpp:2239
- The comment "Birkman term" appears to be a typo. This should be "Brinkman term" which refers to the Navier-Stokes-Brinkman equation for porous media flow, as mentioned in the linked issue. However, this comment appears to be pre-existing and not part of the changes in this PR.
// Local residue
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
aabrown100-git
left a comment
There was a problem hiding this comment.
@hanzhao2020 Looks good to me, thanks!
Current situation
Resolves #448
Release Notes
upterm in the RIS formulation influid.cpp.pic.cpp. In each time step of the FSI simulation, the fluid–structure equation is solved to nonlinear convergence with fixed mesh displacement from the previous time step, then the mesh equation is solved.Code of Conduct & Contributing Guidelines