openBF.jl 


openBF is a computational library written in Julia for blood flow simulations in straight elastic arteries. NavierStokes equations are reduced to 1D form and solved along the longitudinal direction. Numerical solution is achieved via a firstorder 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 crosssectional area (and vice versa), or from crosssectional 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
