svFSI

svFSI: A Multiphysics Package for Integrated Cardiac Modeling - Published in JOSS (2022)

https://github.com/simvascular/svfsi

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
  • Committers with academic emails
    4 of 12 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Engineering Computer Science - 32% confidence
Last synced: 6 months ago · JSON representation

Repository

A multi-physics finite element solver for patient-specific blood flow simulation including fluid-structure interaction and cardiac electrophysiology

Basic Info
  • Host: GitHub
  • Owner: SimVascular
  • License: other
  • Language: Fortran
  • Default Branch: master
  • Homepage:
  • Size: 19.1 MB
Statistics
  • Stars: 42
  • Watchers: 16
  • Forks: 55
  • Open Issues: 29
  • Releases: 1
Created over 7 years ago · Last pushed over 2 years ago
Metadata Files
Readme License

README.md

Introduction

svFSI is a multi-physics finite element solver designed for computational modeling of the cardiovascular system. It is a major component of the ongoing SimVascular SimCardio project that aims to provide the complete pipeline for cardiac modeling, from image segmentation to computational modeling.

Some of the unique capabilities of svFSI include modeling cardiac electrophysiology, biological tissue mechanics, blood flow, and large deformation fluid-structure interaction (FSI). svFSI also offers a wide choice of boundary conditions for performing patient-specific modeling of cardiovascular biomechanics. The code is parallelized using message-passing-interface (MPI) and offers multiple options to choose a linear solver and preconditioner. svFSI can be used as part of the SimVascular software or can be used as a stand-alone solver. It is distributed under a MIT-like open source license.

Binary and Container

Precompiled binaries for Ubuntu and MacOS are available for download from SimTK.

Instructions to build and run svFSI in Docker container are provided here.

Dependence

The following packages are required to build and use svFSI. - cmake - cmake-curses-gui - cmake-gui - gcc (version>=4.8.5) with gfortran - openmpi or mpich - blas & lapack - trilinos (optional)

On Ubuntu, most of the dependencies can be installed using apt install. On macOS, the dependencies may be installed using brew. Apart from GNU compilers, svFSI can also be built with Intel oneAPI Toolkits. For more details, please refer to INSTALL.md and INSTALL-DEPS.md.

Quick Build from Source

Users are recommended to build from the source code to access the most recent features and bug fixes. Instructions for a quick build are provided here for a Linux/Mac OS system.

  1. Clone or download the current repository.
  2. Create a build directory bash cd svFSI && mkdir build && cd build
  3. Initiate the CMake terminal interface to generate makefiles. bash ccmake ..
  4. This will automatically search for compilers. Follow instructions if necessary. Press “c” to configure repeatedly until CMake parameters no longer change and CMake presents the option “g” to generate. Press “g” to create makefiles and exit. Run make in the build directory: bash make A successful build will generate a solver binary called svFSI in the following directory build/svFSI-build/bin.

For more advanced users, please refer INSTALL.md for detailed platform-specific instructions to install svFSI.

Build With Trilinos

svFSI also supports compilation with Trilinos. Users can build Trilinos locally following its online documentation.

The recommended Trilinos third-party libraries (TPLs) include Boost, BLAS, HDF5, HYPRE, LAPACK, MPI, and MUMPS. The required Trilinos packages are Amesos, AztecOO, Epetra, EpetraEXT, Ifpack, ML, MueLU, ROL, Sacado, Teuchos, and Zoltan.

To enable Trilinos in svFSI, users need to turn on the option SV_USE_TRILINOS located in the file Code/CMake/SimVascularOptions.cmake as,

bash option(SV_USE_TRILINOS "Use Trilinos Library with svFSI" ON)

In most cases, users can proceed to build svFSI following the Quick Build, and CMake should be able to locate Trilinos automatically through find_package. In case the automatic way fails, users can also specify the path to Trilinos through ccmake -DCMAKE_PREFIX_PATH:PATH="<Path_to_Trilinos>/lib/cmake/Trilinos;<Path_to_any_other_package>;".

For more detailed instructions, please refer to INSTALL.md.

Run Simulation

svFSI requires a plain-text input file to specify simulation parameters. The syntax of the input file can be found here.

A master template is provided in the current repository, svFSI_master.inp. Users are also recommended to go through the input files in the examples and modify them for their needs.

An MPI-based run can be initiated through bash mpiexec -np <number of MPI processes> <Path to Build>/svFSI-build/bin/svFSI <Path to input file>

Features

svFSI provides the capability to model a variety of physics including unsteady diffusion, linear and nonlinear elastodynamics, convective heat transfer, fluid flows, fluid-structure-interaction (FSI), and cardiac electrophysiology. As the code is modular, the users are provided with a choice to couple these physics depending on their needs. We strongly recommend users to browse through the examples provided in the GitHub repository svFSI-Tests to get a detailed insight into the capability of the code. Also, most of the examples contain established simulation results, which users can use to verify the functionality of svFSI. Here is a list of the main features of svFSI.

| Physics Solved | Documentation/Tutorial | Examples | |-------------------|--------------------------|------------| | Fluid | Webpage | pipe flow with RCR BC;
dye transportation;
GenBC/cplBC;
Non-Newtonian flow | | Structure | Webpage; YouTube | struct:
block compression;
passive inflation of LV model
ustruct:
block compression;
tension of arterial strip;
active inflation of LV model | | Electrophysiology | Webpage; YouTube | Aliev-Panfilov model;
ten-Tusscher-Panfilov model;
Bueno-Orovio-Cherry-Fenton model;
Purkinje network | | FSI | Webpage; YouTube | ALE:
2D heart valve;
2D flag behind a block;
pressure pulse inside aorta
CMM:
pipe flow with RCR BC;
vein graft |

Below, we provide a list of the available choice of constitutive models for different types of equations being solved. Users are also encouraged to implement new constitutive models. Users may use global search tools such as grep to locate the implementations of the available constitutive models in the code using the abbreviated names below.

Abbreviation refers to the variable name in the source code; Full name refers to the generic name of the model; Input keyword refers to the phrase in the input file that can invoke such model.

  1. Available isochoric constitutive models for the structure equation | Abbreviation | Full name | Input keyword | | -------------- | ---------------------------------- | ------------------------------------------------------- | | stIso_stVK | Saint Venant-Kirchhoff | "stVK", "stVenantKirchhoff" | | stIso_mStVK | modified Saint Venant-Kirchhoff | "m-stVK", "modified-stVK", "modified-stVenantKirchhoff" | | stIso_nHook | Neo-Hookean model | "nHK", "nHK91", "neoHookean", "neoHookeanSimo91" | | stIso_MR | Mooney-Rivlin model | "MR", "Mooney-Rivlin" | | stIso_HGOd | Holzapfel-Gasser-Ogden (decoupled) | "HGO", "HGO-d", HGO-decoupled" | | stIso_HGOma | HGO model (modified anisotropy) | "HGO-ma", "HGO-modified" | | stIso_Gucci | Guccione model | "Guccione", "Gucci" | | stIso_HOd | Holzapfel-Ogden model (decoupled) | "HO", "Holzapfel", "HO-decoupled", "HO-d" | | stIso_HOma | HO model (modified anisotropy) | "HO-ma", "HO-modified" |

  2. Available volumetric constitutive models for the structure equation | Abbreviation | Full name | Input keyword | | -------------- | ------------------- | ---------------------------------------- | | stVol_Quad | Quadratic model | "quad", "Quad", "quadratic", "Quadratic" | | stVol_ST91 | Simo-Taylor91 model | "ST91", "Simo-Taylor91" | | stVol_M94 | Miehe94 model | "M94", "Miehe94" |

  3. Available constitutive models for the fluid equation | Abbreviation | Full name | Input keyword | | --------------- | ------------------------------------ | -------------------------------- | | viscType_Const | Constant viscosity (Newtonian model) | "Constant", "Const", "Newtonian" | | viscType_CY | Carreau-Yasuda non-Newtonian model | "Carreau-Yasuda", "CY" | | viscType_Cass | Cassons non-Newtonian model | "Cassons", "Cass" |

  4. Available cardiac electrophysiology models | Abbreviation | Full name | Input keyword | | -------------- | -------------------------------- | ----------------------------- | | cepModel_AP | Aliev-Panfilov model | "AP", "Aliev-Panfilov" | | cepModel_BO | Bueno-Orovio-Cherry-Fenton model | "BO", "Bueno-Orovio" | | cepModel_FN | Fitzhugh-Nagumo model | "FN", "Fitzhugh-Nagumo" | | cepModel_TTP | tenTusscher-Panfilov model | "TTP", "tenTusscher-Panfilov" |

Documentation

More details can be found on the svFSI page, and direct links to the documentation for different functionalities are provided here: - Fluid-Structure Interaction (FSI) - Cardiac electrophysiology modeling - Cardiac mechanics modeling - Prescribed-motion LV modeling

Tutorial

  • SimVascular group uploads hands-on tutorials to our YouTube channel periodically. Here are some for svFSI:
    • Fluid-Structure Interaction (FSI): https://www.youtube.com/watch?v=QIpyThIAD7k
    • Cardiac electrophysiology modeling: https://www.youtube.com/watch?v=TCK3SmGwBa8
    • Cardiac mechanics modeling: https://www.youtube.com/watch?v=Jm3VSi6Aci8
  • We also maintain a large collection of examples that showcase different functionalities of svFSI. You can find them here: https://github.com/SimVascular/svFSI-Tests. Each case includes a README file that explains the problem in hand and some key aspects of the software configuration.

Pre/Post Processing Tool

We are also maintaining a collection of useful pre and post processing tools that are compatible with svFSI: https://github.com/SimVascular/svFSI-Tools

Contribute to svFSI

We welcome and appreciate all types of contributions to svFSI. - Seek support, suggest new features or report bugs, please contact us through GitHub Issues or SimTK forum. - Contribute your code to svFSI, please submit a pull request through GitHub. - Share your novel applications of svFSI with the community, please consider contribute your case to svFSI-Tests.

Citation

You can cite the software using the following: @article{svfsi2022, title={svFSI: a multiphysics package for integrated cardiac modeling}, author={Zhu, Chi and Vedula, Vijay and Parker, Dave and Wilson, Nathan and Shadden, Shawn and Marsden, Alison}, journal={Journal of Open Source Software}, volume={7}, number={78}, pages={4118}, year={2022} }

Owner

  • Name: SimVascular
  • Login: SimVascular
  • Kind: organization

JOSS Publication

svFSI: A Multiphysics Package for Integrated Cardiac Modeling
Published
October 10, 2022
Volume 7, Issue 78, Page 4118
Authors
Chi Zhu ORCID
University of California, Berkeley, United States of America, Peking University, Beijing, People's Republic of China
Vijay Vedula
Columbia University, New York City, United States of America
Dave Parker
Stanford University, Stanford, United States of America
Nathan Wilson
University of California, Los Angeles, United States of America
Shawn Shadden
University of California, Berkeley, United States of America
Alison Marsden
Stanford University, Stanford, United States of America
Editor
Kevin M. Moerman ORCID
Tags
fortran cardiac modeling active contraction fluid-structure interaction finite element method

GitHub Events

Total
  • Issues event: 1
  • Watch event: 12
  • Issue comment event: 1
  • Fork event: 5
Last Year
  • Issues event: 1
  • Watch event: 12
  • Issue comment event: 1
  • Fork event: 5

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 190
  • Total Committers: 12
  • Avg Commits per committer: 15.833
  • Development Distribution Score (DDS): 0.232
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Vijay Vedula v****y@g****m 146
Chi Zhu c****9@j****u 17
LeiShi3374 l****4@c****u 7
CZhu c****u@b****u 7
alexkaiser a****r@g****m 4
mrp089 5****9 2
osmsc n****n@o****m 2
aabrown100-git a****0@h****m 1
Melody Dong m****4@g****m 1
Dave Parker d****x@g****m 1
lucapegolotti l****o@s****u 1
Vijay Vedula v****a@v****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 67
  • Total pull requests: 36
  • Average time to close issues: 3 months
  • Average time to close pull requests: 17 days
  • Total issue authors: 18
  • Total pull request authors: 7
  • Average comments per issue: 4.27
  • Average comments per pull request: 0.44
  • Merged pull requests: 27
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • mrp089 (16)
  • vvedula22 (10)
  • aabrown100-git (9)
  • ktbolt (8)
  • schwarz-e (6)
  • CZHU20 (2)
  • luigamo (2)
  • alexkaiser (2)
  • Panchal1810 (2)
  • Badtreater (1)
  • mrolfpissarczyk (1)
  • baeumler (1)
  • arsh-k (1)
  • menon-karthik (1)
  • LeiShi3374 (1)
Pull Request Authors
  • vvedula22 (14)
  • CZHU20 (13)
  • LeiShi3374 (3)
  • aabrown100-git (2)
  • Kevin-Mattheus-Moerman (2)
  • lucapegolotti (1)
  • schwarz-e (1)
Top Labels
Issue Labels
enhancement (12) bug (10) help wanted (7)
Pull Request Labels

Dependencies

Docker/Dockerfile docker
  • ubuntu 18.04 build