Git Product home page Git Product logo

lungsim's Introduction

Pulmonary Simulation Library

The code in this repository is a library written in Fortran with bindings for C and Python for simulating pulmonary function.

Documentation

Documentation for this library is available on readthedocs, and the status of the documentation build is: Documentation Status.

lungsim's People

Contributors

acreegan avatar alysclark avatar annikagspandl avatar behdadebsh avatar haribalan-kumar avatar haribalankumar avatar hsorby avatar joycemol31 avatar tawhai avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

lungsim's Issues

arrays names of consisting data

I think every Lungsim user would highly benefit from if there was some sort of documentation or at least concise commenting on all the arrays defined in "arrays.f90" with what each index of those arrays is for and includes. A full description of each array with order of indices in each.
i.e. elem_cnct_2d( : , : , : ) which is an allocatable integer defined in arrays.f90. What is each index represents and means (like number of node, connected to other elements or the values that it can take, upstream, downstream elements and etc.)

*.ipnode foramtting

In " define_node_geometry " subroutine, when reading the 1D *.ipnode file, for identifying the version for nodes (whether is has more than one version or not) the code checks to find N ( a upper case N ) in the header of the file as " No ". Therefore, unless it is written with " capital N " in the file, the Fortran code expects more than one version for some nodes and is going to look for an integer as number of versions for the first node and can not find one.

Growing into all lobes of the lung using python API

When growing in all the lobes, the first one to grow from has to be RLL (I suspect because it has the most number of nodes/elems). If you try to do it in another way it will crash because of memory mismatch.

*.ipnode & *.ipelem export unavailable

When done with growing tree using our python bindings, the export (node and element) already available writes out an exnode and exelem file. But, for running perfusion and ventilation codes, defining the geometry of the full tree the ipnode & ipelem is needed, therefore, a python bindings to write these files needs to be made.

gfortran on hpc is version 5

gfortran on hpc is version 5, support for %im, and %re are not available until gfortran 9. We need to find a cross-compiler solution for getting the real and imaginary parts of a complex number.

Test running failed on windows

When I tried to run the test on windows I got a fatal exception, probably because the aether.dll could not be loaded by the test application.

numpy.i in the wrong location.

I have noticed that there is a numpy.i file at ./bindings/interface/numpy.i. Why is this file still here and why is it not currently in use?

Not building on windows

Trying to build on windows with Visual Studio 2017 and Intel Studio 2018 and it is failing because of unresolved symbols.

Tree wave propagation.

I have some code on tree wave propagation that has not been merged. Should this be part of the codebase?

Issue building lungsim from subfolders

Lungsim does not build when cloning and building from a subfolder whose total char name (from root) is longer than certain character long. It gives the following error:

tests/lib/CMakeFiles/diagnostics_test.dir/build.make:92: recipe for target 'tests/lib/CMakeFiles/diagnostics_test.dir//pFUnit-3.2.9/include/TestUtil.F90.o' failed
make[2]: *** [tests/lib/CMakeFiles/diagnostics_test.dir/
/pFUnit-3.2.9/include/TestUtil.F90.o] Error 1
make[2]: *** Waiting for unfinished jobs....

Single location for version number.

Currently there are two places that the version number of the library is hardcoded to. There should only be one location to stop the chance of releasing code with different version numbers present.

Clean up geometry module

Geometry module requires a cleanup.
Some basic functions and subroutines need to be moved to mesh_utilities etc.

C bindings src directory.

Currently there is a directory ./src/bindings/c/src where the C wrapping library source files exist. I think it should probably now be ./src/bindings/c. This has possibly been missed from issue #16.

importing terminal_field subroutine missing in imports.f90

For reading back terminal_solution from perfusion model (and time step terminal exports from wave_transmission) and also the flow map intensity and the terminal cluster label, we need to be able to import terminal node values and even an implementation such that the user can read multiple fields from file.

generalised tree growing

adapting the call to grow_tree to give a list of surface elements to grow into (instead of all elements). adding curved surfaces to the triangularisation that is used for make_data_grid and for checking whether a generated branch is inside the surface element list.

SuperLU automatic build

SuperLU solver needs superlu C library to build. Automatic fetching the library needed while building the Aether library. (Satisfying the requirement for the package build)

Add a better FindPython CMake module.

We may need to add a better FindPython module that the one that currently ships with CMake. This will become more evident if we add Python testing into the codebase.

Add pFUnit.

FRUIT is a Fortran testing framework that should be used to develop the code with a test driven development approach. Adding FRUIT would be the start of enabling this.

Tidy GUI.

After the addition of pFUnit the CMake GUI interface has become overrun with new options. Tidying this up would help.

Creating tests for ventilation module

We need to set up tests for the ventilation module (ventilation.f90) so we know that when we make changes our solution is the same, or if it changes we have very good justification that it needs to be changed.

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.