Intranet
Norsk

CBC Software

A key mission of the Center is to developme useful and accessible tools to computational scientists and engineers at large through professional, open source software. This original software can help advancing many other scientific fields dealing with complex multi-physics problems.

 

Featured software

These are some of the main software productions from the Center for Biomedical Computing.

FEniCS

The FEniCS Project is a collection of free software with an extensive list of features for automated, efficient solution of differential equations. Navier Stokes Solution

dolfin-adjoint

The dolfin-adjoint project automatically derives the discrete adjoint and tangent linear models from a forward model written in the Python interface to DOLFIN. These adjoint and tangent linear models are key ingredients in many important algorithms, such as data assimilation, optimal control, sensitivity analysis, design optimisation, and error estimation. Such models have made an enormous impact in fields such as meteorology and oceanography, but their use in other scientific fields has been hampered by the great practical difficulty of their derivation and implementation. Dolfin-adjoint solves this problem by recording the sequence of forward model equations solved and using this to symbolically derive the corresponding adjoint model equations to be solved.
The CBC researchers Marie E. Rognes, Simon W. Funke and Patrick E. Farrell were together with Professor David Ham awarded the 2015 Wilkinson Prize for their development of dolphin-adjoint.
Illustration

hashdist

Complex scientific software is often built on "distributions", or "stacks", of software. Particulary as scientists and engineers work toward more integrated, and therefore more interdependennt, scientific software, they need the ability to setup scientific stacks in many different user and hardware environments and hardware. Scientific stacks must be reproducible in the sense that "regular" users should be able to install them and have them work as advertised. These stacks also need to work in challenging environments like cutting edge high performance commputers and handheld devices. Due to the authors« separate but similar ex- periences of the difficulty of buiding and maintaining scientific software stacks to support our own work, we worked together to build Hashdist, which is a a tool for building and managing custom software distributions based on a functional approach. It employs cryptographic hashing methods related to what are used in highly successful software source version control system to bring the same robust- ness to building and developing complex scientific software stacks.

cbcbeat

cbcbeat is a Python module providing a problem and solver collection for cardiac electrophysiology models. The module combines core FEniCS functionality with dolfin-adjoint and the code generation tool Gotran. As such, it provides efficient forward solvers for all cardiac cell models available via CellML and the monodomain and the bidomain equations. Moreover consistent discrete adjoints are available for all its solvers. Ultimately, the software aims at being a top quality software framework for forward and backward electrophysiology simulations. Screenshot from cbcbeat

cbcflow

Wall Shear Stress in aneurysm modelled by cbcflow
cbcflow is a set of Navier-Stokes solvers with boundary conditions and postprocessing features motivated by blood flow applications.

cbcpost

A framework for postprocessing in time dependent FEniCS programs.

Oasis

A fractional step Navier-Stokes solver with performance exceeding OpenFOAM and CDP.

 

Other CBC software

Researchers supported by CBC have produced a large number of open source software packages, many of them are listed here. Some focus on a particular method and others are application specific.

CamFIN

A framework for the simulation and optimization of the mechanical activity of the heart. Screenshot from CamFIN

chaospy

Polynomial Chaos Expansion in Python
Chaospy is a numerical tool for performing uncertainty quantification using polynomial chaos expansions and advanced Monte Carlo methods. (Formerly PolyChaos and RoseDist.)
Chaospy is a flexible and easy-to-use software library for quantifying stochastic uncertainty in computational science models. The library offers a high-level application programming interface where users can in a few lines of Python code implement non-intrusive, tailored Monte Carlo or polynomial chaos algorithms for any particular forward model.
The software contains a range of state-of-the-art tools for this purpose, like variance reduction techniques and full Rosenblatt transformation for dependency handling. It is designed for ease of use, large collection of tools, and high flexibility when doing custom implementation.
Caospy logo

cbc.block

cbc.block is a python library for block linear algebra operations in DOLFIN.

cutfem

cutFEM is a project which aims at providing tools for cut finite element method for multi-physics problems built upon the FEniCS project. The main focus lies at developing cutFEM methods where the boundary or interface is described by a (set of) level-set function(s). Here, possible applications areas are two-phase flows, flows in fractured media, fluid-structure interaction with embedded thin structures etc. At the moment cutFEM has successfully been applied to PDE problems with embedded unfitted boundaries and interfaces, surface PDEs and surface-bulk coupling problems.

DocOnce

DocOnce is a modestly tagged (Markdown-like) markup language targeting web pages, scientific reports, software documentation, books, and slides involving much math and code in the text. From DocOnce source you can generate LaTeX, Sphinx, HTML, IPython notebooks, Markdown, MediaWiki, and other formats.

dolfin-adjoint

The dolfin-adjoint project automatically derives the discrete adjoint and tangent linear models from a forward model written in the Python interface to DOLFIN. These adjoint and tangent linear models are key ingredients in many important algorithms, such as data assimilation, optimal control, sensitivity analysis, design optimisation, and error estimation. Such models have made an enormous impact in fields such as meteorology and oceanography, but their use in other scientific fields has been hampered by the great practical difficulty of their derivation and implementation. Dolfin-adjoint solves this problem by recording the sequence of forward model equations solved and using this to symbolically derive the corresponding adjoint model equations to be solved.

fenicstools

Tools for postprocessing in FEniCS based solvers.

GAMer

GAMer (Geometry-preserving Adaptive MeshER) is mesh generation tool that produces high-quality simplex meshes of surfaces and volumes.

GillStep

A tool to define and solve discrete and stochastic Markov models using a modified Gillespie solver.

GOSS

A General ODE System Solver fro solving ODEs.

Gotran

A General ODE TRanslator for easy definition of ODE systems.

Mint

Mint is a source-to-source code translator and optimizer targeting stencil methods. As input, a user only needs to provide a serial C code, which is annotated with a small number of pragmas. As output, CUDA code is automatically generated, which is also optimized with respect to using registers and shared memory of a GPU's on-chip resources. In addition, granularity of the CUDA threads can be automatically adjusted. Therefore, domain scientists can enjoy the performance benefits of GPUs without learning the details of GPU programming.

SciTools

SciTools is a Python package containing many useful tools for scientific computing in Python. The package is built on top of other widely used packages such as NumPy, SciPy, ScientificPython, Matplotlib, Gnuplot, etc.

SubCell

A problem solving environment for subcellular problems.

Tanganyika

Tanganyika implements mono- and multiadaptive Galerkin methods of arbitrary polynomial order for ODEs, ie. finite element time stepping methods. It has support for arbitrary arithmetic floating point precision. By solving an associated dual problem (the adjoint problem), Tanganyika can perform a detailed analysis of an ODE's stability and quantify the computability wrt. errors in the initial data, the discretization scheme or computational (round off) errors. We have used Tanganyika to study how the arithmetic precision limits the computability, defined the time interval on which accurate solutions can be computed.

uflacs

Algorithms for effective translation of symbolic equations with complicated tensor algebra expressions to high performance low level code.

vmtk

The vascular modeling toolkit has received CBC contributions for setting boundary conditions on cerebrospinal fluid flow geometries.