Giter Club home page Giter Club logo

openbf's People

Contributors

alemelis avatar ibenemerito88 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

openbf's Issues

Outlet node used as sn: no error

openBF does not give error when an outlet node is used as sn for another vessel. Implement check that if a node is an outlet is can be used as sn.

Calculation stuck at solving bifurcation vessel

Dear @alemelis,
First of all, I would like to thank for sharing this software to solve 1D modelling problems.
I have some issues with the software, especially when simulating baseline model with slight variation in the input flow.
In the latest release (v1.5) the simulation is stuck at Solving cardiac cycle: 01. I tried to investigate the source of the problem, and it comes from the newtonRaphson function when solving bifurcation vessel. The function seems cannot find the solution which stuck at giving NaN value for the output.

I checked the same model with the latest openBF model (v2 from the branch), and it gives this error LinearAlgebra.SingularException(5) at the newtonRaphson function.

Could you please give some advice how to solve this problem?
Thank you in advance.

Inlet number

Add check to ensure that two different inlets are not numbered in the same way

[BUG]

Dear Alemelis, to begin with thanks so much for OpenBF,
I would like to know since i have tried to use adan56.yaml and run the simulation but unfortunately it is not working.
the error that i encounter is: Newton-Raphson doesn't converge at (subclavian_R_II, axillary_R) junction!
i have tried to modify the main parameters as L,Rp or Rd but it is not working.
do you have any suggestions? P.S. i m using the latest version of openBF .

Road to v0.6.2

  • Eliminate dependency from LightGraphs.
  • Eliminate dependency from ProgressMeter.
  • Add const saving_rate to _constants.jl to select how many points per cardiac cycle to write in the output files.

    openBF/main.jl

    Lines 224 to 227 in c423f06

    if current_time >= timepoints[counter]
    openBF.saveTempData(current_time, vessels)
    counter += 1
    end
  • Check whether ParallelAccelerator.jl may be used. -> No, it speeds up vector array calculations.
  • Update license files.

Autoregulation

Arteries parameters should dynamically change in time

Wishlist

  • Heart model
  • Multiple inlets (#10)
  • Bifurcation angle
  • Bends
  • Autoregulation
  • Visco-elasticity
  • Non-parabolic profile
  • Annular flow loss coefficient

Use `Int` for machine integers instead of `Int64`

Right now there are a lot of functions which are restricted to 64-bit integers, even on 32-bit machines. This is likely why the 32-bit Windows tests fail on AppVeyor. However, note that the type assertions in the function signatures are only for function syntax anyways (and don't effect performance), so I would recommend just duck typing anyways.

Travic-ci update

Since June 15th, 2021, the building on travis-ci.org is ceased. Please use travis-ci.com from now on.

Clean up after running a simulation

when not re-importing openBF, the same simulation returns different results. There must be some variables re-used/not deallocated properly
Screenshot 2022-09-30 at 12 58 03

Screenshot 2022-09-30 at 12 56 14

Add entry in orda.shef.ac.uk (FigShare) to make citable

@alemelis The University of Sheffield Library (specifically @jezcope) would like to increase the number of software items in orda.shef.ac.uk (FigShare). Would you want to create an entry for openBF? If you don't have time I could do this on behalf if you let me know which version(s) it makes most sense to take snapshots of.

Unable to make the documentation

Hi,

I am experimenting an issue when running julia make.jl and I do not understand what is causing this.
Would you have an idea?

Here the error message:

ERROR: LoadError: MethodError: Cannot `convert` an object of type Symbol to an object of type Documenter.Writer
Closest candidates are:
  convert(::Type{T}, ::T) where T at Base.jl:61
Stacktrace:
 [1] setindex!(A::Vector{Documenter.Writer}, x::Symbol, i1::Int64)
   @ Base ./array.jl:966
 [2] getindex(#unused#::Type{Documenter.Writer}, vals::Symbol)
   @ Base ./array.jl:407
 [3] Documenter.Documents.Document(plugins::Tuple{}; root::String, source::String, build::String, workdir::Symbol, format::Symbol, clean::Bool, doctest::Bool, linkcheck::Bool, linkcheck_ignore::Vector{Any}, linkcheck_timeout::Int64, checkdocs::Symbol, doctestfilters::Vector{Regex}, strict::Bool, modules::Vector{Module}, pages::Vector{Pair{String, Any}}, expandfirst::Vector{String}, repo::String, sitename::String, authors::String, version::String, highlightsig::Bool, draft::Bool, others::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ Documenter.Documents ~/.julia/packages/Documenter/yf96B/src/Documents.jl:316
 [4] makedocs(; debug::Bool, format::Symbol, kwargs::Base.Pairs{Symbol, Any, Tuple{Symbol, Symbol}, NamedTuple{(:sitename, :pages), Tuple{String, Vector{Pair{String, Any}}}}})
   @ Documenter ~/.julia/packages/Documenter/yf96B/src/Documenter.jl:267
 [5] top-level scope
   @ ~/Downloads/openBF/docs/make.jl:3

Thanks in advance,

Antoine Wehenkel

Multiple inlets

Allow the user to specify more than one inlet.

This can be implemented by exploiting the already existing wkn parameter. A pseudo-code version could be

   if wkn == 0:
        #this is a normal vessel

   elseif wkn == 'Qi':
       #this vessel has a flow inlet

   elseif wkn == 'Pi':
       #this vessel has a pressure inlet

This would be used in

openBF/src/godunov.jl

Lines 528 to 530 in d89a300

if size(find(edge_list[:,3] .== s))[1] == 0
openBF.setInletBC(current_time, dt, v, heart)
end

For each inlet vessel, an _inlet-#.dat must be specified in the project folder

Road to v0.7

  • replace three input files with a JSON/YAML configuration file (discussion)
  • play with Dagger.jl
  • args parse for output flags
  • AOT compilation
  • Replace appender.sh with Julia code (related to #7 )
  • openBF badge openBF
  • Tests and coverage (need to fix #11 first)
  • Windows compatibility (#7)
  • Installation scripts
  • Singularity container
  • Bug #5 fix
  • Try NLsolve.jl to solve bifurcation system; any speedup? nope
  • Multiple inlets (#10 )
  • Warm-up solver and IO functions
  • Support for Julia v0.7 -> v1.0 (check YAML.jl and ArgParse.jl compat)

Pext type

ERROR: LoadError: MethodError: no method matching pressure(::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Int64, ::Array{Float64,1})
Closest candidates are:
  pressure(::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, !Matched::Float64, ::Array{Float64,1})

this is raised when zero external pressure is an integer instead of float

Non constant Young Modulus + arteries disco-elasticity

Hi there,

Thanks for this great library!

It seems that currently configuration files can only take a constant/linear Young's modulus.
Do you think adding non-linearity to the modulus would be feasible? Would the solver react properly to this?
In addition, arteries have also a viscous component, is this something you are planning to add?

If you believe these additional modelling capabilities would work well with the current solver, I would be happy to help implementing them.

Cheers,

Antoine

upgrade to julia 0.6

openBF currently runs on julia 0.3.x
when using julia 0.6, most of the type definitions are obsolete.

Input files

@alemelis ....Is there any resource available for generating the input .yml file from the geometry data available in a (say) CSV file?

openBF-hub

Dr. Melis:

I want to study the code in openBF-hub (https://github.com/alemelis/openBF-hub), such as 'models/boilleau2015benchmark/adan56'. However, the code cannot run successfully on openBF v1.4.0 because of the change in input file format (.csv -> .yaml). Could you please help me convert the input file of adan56 to fit the format requirement of openBF (v1.4.0) ? I believe it could also help me study further openBF.

Add .jl to the name

Julia packages have .jl on the end. In fact, you can't register into METADATA unless this holds, so it's probably wise to follow the convention.

Check conjunction direction

Two joined vessels should defined as

v1:
  sn: 1
  tn: 2
v2:
  sn: 2
  tn: 3

whereas

v1:
  sn: 1
  tn: 2
v2:
  sn: 3
  tn: 2

shouldn't be allowed

Replace plot.py

Get rid of plot.py in tests folder and replace it with a Julia script

change Error norm indication

Please change 'ERROR norm > 100.00 mmHg ' to its actual numeric value. This way we can follow if the solver is converging or diverging.

Documentation improvemnt

Hey team ,
Just a suggestion for the docs to do with the installation. None of what was there worked for me, as I kept on getting the error:

[xxx@node002 [stanage] SHEF24038067]$ add https://github.com/INSIGNEO/openBF
bash: add: command not found

and

julia> add https://github.com/INSIGNEO/openBF
ERROR: syntax: extra token "https" after end of expression
Stacktrace:
 [1] top-level scope
   @ none:1

in the end I ended up using:

using pkg
Pkg.add(url="https://github.com/INSIGNEO/openBF")

output[BUG]

Hello, I'd like to understand why there are five columns of data in the saved result file. Are these data representing specific positions along a segment of blood vessel? Where are the specific parameters defined?Thank you very much for taking the time to answer.

Logging

Automatically log info, warnings, and errors

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.