Git Product home page Git Product logo

navierstokes_coupled1d0d's Introduction

1D-0D Vascular Network

Computational models can be used to gain mechanical insight into blood flowing in vessels under healthy and pathophysiological states. However, constructing full subject-specific CFD models of the entire arterial and/or venous vasculature is currently considered impractical, owing to: (1) the time and resources required to identify, segment, and constrain a model of the billions of vessels in a human body and (2) the computational cost such a model would incur.

As a result, the systemic context of a modeled system is often incorporated into definable models through boundary conditions and/or coupled models. These multiscale models restrict higher dimensional (3D/1D) models to a region of interest and rely on simpler, lower dimensional (0D), models to approximate physical behaviour outside the higher-dimensional domain. This involves coupling together of dependent fields (ie pressure and velocity/flow), material fields (eg fluid viscosity and wall compliance), and geometric fields (eg vessel diameter) at the interfaces between 3D, 1D, and/or 0D model domains.

In the following example, a 1D network of 24 major arteries has been constructed from the male Visible Human dataset, as shown below. The resulting mesh contains 135 nodes on 67 quadratic line elements, as shown below.

docs/images/1DVessels.png

docs/images/1DVHMesh.png

Figure: 1D arteries and mesh.

Simple 0D/lumped parameter RCR Windkessel models are coupled to the 1D model at the outlet boundaries. These models use the fluid-electric analog to provide an basic approximation of resistance to flow due to perfusing vascular beds (the R1 and R2 components) and downstream vessel compliance (the C component).

docs/images/RCR.png

Figure: The 3-element RCR Windkessel model

A flow waveform from published data is applied at the aortic root of the model and interpolated in time from tabulated data using cubic splines. Outlet boundary conditions are provided by the 0D solution.

OpenCMISS/CellML field mapping capabilities allow for the coupling of the 1D (OpenCMISS) and 0D (CellML) solvers:

.. literalinclude:: 1DTransientExample.py
   :language: python
   :linenos:
   :start-after: # DOC-START cellml define field maps
   :end-before: # DOC-END cellml define field maps

Snippet: OpenCMISS/CellML field mappings

Flow rate (Q) from the 1D Navier-Stokes/Characteristic solver provides the forcing term for the 0D ODE circuit solver. Pressure (P) is returned from the CellML solver to provide constraints on the Riemann invariants of the 1D system, which translate to area boundary conditions for the 1D FEM solver. At each timestep, the 1D and 0D systems are iteratively coupled until the boundary values converge within a user-specified tolerance at the 1D-0D interfaces. This procedure is outlined in the figure below.

docs/images/1D0DSolver.png

Figure: Overview of the coupled 1D-0D solution process.

Running the example

Python version:

source <path-to-opencmiss>/install/virtaul_environments/oclibs_venv_pyXY_release/bin/activate
cd ./src/python
python Coupled1D0D.py

Results

Results can be visualised by running visualise.cmgui with the Cmgui visualiser.

docs/images/1D0DVHFlowrates.png

Figure: Flow rates from the 1D-0D solution. Vessels shown at peak systole

docs/images/1D0DVHPressures.png

Figure: Pressure from the 1D-0D solution. Vessels shown at peak systole

The expected results from this example are available in expected_results folder.

Prerequisites

There are two files describing the vascular system mesh in the input folder. Also all the terminal models are located in this folder.

License

License applicable to this example is described in LICENSE.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.