openBF.jl |
|
---|---|
openBF is a computational library written in Julia for blood flow simulations in straight elastic arteries. Navier-Stokes equations are reduced to 1D form and solved along the longitudinal direction. Numerical solution is achieved via a first-order finite volume solver based on the Godunov’ method. For an usage example refer to main.jl file and its documentation. |
module openBF
|
Import external library |
|
ProgressMeter provides a simple implementation of a loading bar to be shown while running the solution. |
using ProgressMeter
|
Import openBF’ files |
|
OpenBF’ own types are contained in BTypes.jl where data structures for vessels, blood, and numerical scheme are specified. |
using BTypes
|
Data structures and output files are initialised at the beginning of each simulation. initialise.jl contains all the functions needed to read model description and the global settings. |
include("initialise.jl")
|
Inlet and outlets boundary conditions are applied at each time step, and vessels extremity nodes are updated with functions defined in boundary_conditions.jl. |
include("boundary_conditions.jl")
|
Interface problems (junctions and bifurcations) are solved via the method of characteristics. The function in junctions.jl discriminates between conjunctions, anastomosis, and bifurcations, and calls the appropriate solver. |
include("junctions.jl")
include("conjunctions.jl")
include("bifurcations.jl")
include("anastomosis.jl")
|
godunov.jl contains Godunov’ method functions. |
include("godunov.jl")
|
MUSCL.jl is where the MUSCL method is implemented. |
include("MUSCL.jl")
|
Conversions from pressure to cross-sectional area (and vice versa), or from cross-sectional area to wave speed (and vice versa) are handled by functions in converter.jl; Riemann invariants are computed in the same location as well. |
include("converter.jl")
|
Input and output writing functions are stored defined in IOutils.jl. |
include("IOutils.jl")
|
Convergence check functions are all defined in check_convergence.jl. |
include("check_convergence.jl")
end
|