SimVascular / svSolver

Separate repository for svSolver
15 stars 23 forks source link

External tissue support implementation in CMM #48

Open ingridxlan opened 5 years ago

ingridxlan commented 5 years ago

I am working on implementing external tissue support in CMM in svSolver, such that unique spring constants, damping constants, and external pressures can be specified for each wall. This should help prevent non-physiological oscillations in CMM-FSI simulations of extensive models (eg. pulmonary models with > 100 outlets).

ingridxlan commented 5 years ago

The implementation was done awhile back, but is currently just sitting in my fork. External tissue support very effectively dampens the oscillations without preventing FSI wall deformation. Will discuss merging & documentation with Dave!

ingridxlan commented 5 years ago

After discussing with Weiguang, we decided that the external tissue support should be something that users can turn on/off, not directly built into all deformable simulations. This should prevent compatibility issues with future releases. I'll be working on this.

ingridxlan commented 5 years ago

Submitted a pull request!

ingridxlan commented 5 years ago

Changes were made to svPre, svSolver, and svPost for external tissue support implementation. Non-physiological oscillations can now be very effectively dampened out.

External tissue support can be turned on / off as a flag in solver.inp. Since it is off by default, the revised source code will still be compatible with old simulation files.

The spring constant, damping constant, and external pressure can be assigned as uniform or variable wall properties (similar to wall thickness and Young's modulus). If the wall thickness (h) and Young's modulus (E) are specified as uniform properties, then all three tissue support properties must also be specified as uniform properties; if h and E are specified as variable properties, then all tissue support properties must also be specified as variable properties. This was a conscious design choice since svSolver calls distinct functions for uniform vs. variable wall simulations.

If variable, these properties can be written out to varwallprop.vtp (in svPre) and all post-processed vtp's & vtu's (in svPost) along with h and E.

I have written up a README (svSolver_ExternalTissueSupport_README.txt) documenting the necessary changes to .svpre/.cvpre and solver.inp to turn on external tissue support.