XCALibre.jl

XCALibre.jl: A Julia XPU unstructured finite volume Computational Fluid Dynamics library - Published in JOSS (2025)

https://github.com/mberto79/xcalibre.jl

Science Score: 93.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 7 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Scientific Fields

Mathematics Computer Science - 40% confidence
Last synced: 6 months ago · JSON representation

Repository

Basic Info
Statistics
  • Stars: 20
  • Watchers: 1
  • Forks: 11
  • Open Issues: 3
  • Releases: 11
Created about 4 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License

README.md

XCALibre.jl

XPU CFD Algorithms and libraries

What is XCALibre.jl?

XCALibre.jl (pronounced as the mythical sword Excalibur) is a general purpose Computational Fluid Dynamics (CFD) library for 2D and 3D simulations on structured/unstructured grids using the finite volume method. XCALibre.jl has been designed to act as a platform for developing, testing and using XPU CFD Algorithms and Libraries to give researchers in both academia and industry alike a tool that can be used to test out ideas easily within a framework that offers acceptable performance. To this end, XCALibre.jl has been implemented to offer both CPU multi-threaded capabilities or GPU acceleration using the same codebase (thanks to the unified programming framework provided by KernelAbstractions.jl). XCALibre.jl also offers a friendly API for those users who are interested in running CFD simulations with the existing solvers and models built into XCALibre.jl.

Large Eddy Simulation

Reynolds-Averaged Navier-Stokes Simulation

(mesh file downloaded from FetchCFD)

Installation

First, you need to download and install Julia on your system. Once you have a working installation of Julia, XCALibre.jl can be installed using the built-in package manager.

XCALibre.jl is available directly from the the General Julia Registry. Thus, to install XCALibre.jl open a Julia REPL, press ] to enter the package manager. The REPL prompt icon will change from julia> (green) to pkg> (and change colour to blue) or (myenvironment) pkg> where myenvironment is the name of the currently active Julia environment. Once you have activated the package manager mode enter

julia pkg> add XCALibre

To install XCALibre.jl directly from Github enter the following command (for the latest release)

julia pkg> add XCALibre https://github.com/mberto79/XCALibre.jl.git

A specific branch can be installed by providing the branch name precided by a #, for example, to install the dev-0.3-main branch enter

julia pkg> add XCALibre https://github.com/mberto79/XCALibre.jl.git#dev-0.3-main

Main features

  • Multithreaded or GPU execution with support for multiple GPU backends (NVidia, AMD and Intel) - as supported by KernelAbstractions.jl (except Apple hardware)
  • Ability to import .unv and OpenFOAM grids. Simulation results written in VTK or OpenFOAM file formats, allowing postprocessing in ParaView
  • Incompressible and (weakly) compressible flow solvers
  • RANS and LES turbulence modelling (KOmega and KOmegaLKE for RANS and Smagorinsky for LES, for now!)
  • Energy modelling using Sensible Energy model
  • Classic boundary conditions, including Dirichlet, Neumann, Wall, Symmetry, etc.
  • User-defined boundary conditions as neural networks or user-defined functions (source/sink terms soon)
  • Easy to link with Julia ecosystem - making it easy to embed custom machine learning models, perform optimisation runs, etc. (see examples in the documentation)
  • A good selection of discretisation schemes available e.g. Euler, Upwind, LUST, etc.
  • Simple API for defining new transport equations or solvers

Code example

```julia U_eqn = ( Time{schemes.U.time}(U) + Divergence{schemes.U.divergence}(mdotf, U) - Laplacian{schemes.U.laplacian}(nueff, U) == -Source(∇p.result)

  ) → VectorEquation(mesh)

```

Main dependencies

XCALibre.jl relies on the functionality provided by other packages from the Julia ecosystem. For a full list of direct dependencies please refer to the Project.toml file included with this repository. We are thankful to the teams that have helped develop and maintain every single of our dependencies. Major functionally is provided by the following:

  • KernelAbstractions.jl - provides a unified parallel programming framework for CPUs and GPUs
  • Krylov.jl - provides solvers for linear systems at the heart of XCALibre.jl
  • LinearOperators.jl - wrappers for matrices and linear operators
  • Atomix.jl - enables atomix operations to ensure race conditions are avoided in parallel kernels
  • CUDA.jl, AMD.jl, Metal.jl and OneAPI.jl - not direct dependencies but packages enabling GPU usage in Julia
  • StaticArrays.jl - provides definitions and performant primitives for working with vectors and matrices

Related projects

There are other wonderful fluid simulation packages available in the Julia ecosystem (please let us know if we missed any):

How to Cite

If you have used XCALibre.jl in your work, please cite it using the reference below:

@article{Medina2025, author = {Humberto Medina and Christopher D. Ellis and Tom Mazin and Oscar Osborn and Timothy Ward and Stephen Ambrose and Svetlana Aleksandrova and Benjamin Rothwell and Carol Eastwick}, title = {XCALibre.jl: A Julia XPU unstructured finite volume Computational Fluid Dynamics library}, journal = {Journal of Open Source Software}, publisher = {The Open Journal}, volume = {10}, number = {107}, pages = {7441}, year = {2025}, doi = {10.21105/joss.07441}, url = {https://doi.org/10.21105/joss.07441} }

Owner

  • Name: Humberto Medina
  • Login: mberto79
  • Kind: user

JOSS Publication

XCALibre.jl: A Julia XPU unstructured finite volume Computational Fluid Dynamics library
Published
March 12, 2025
Volume 10, Issue 107, Page 7441
Authors
Humberto Medina ORCID
The University of Nottingham, UK
Christopher D. Ellis ORCID
The University of Nottingham, UK
Tom Mazin
The University of Nottingham, UK
Oscar Osborn
The University of Nottingham, UK
Timothy Ward ORCID
The University of Nottingham, UK
Stephen Ambrose ORCID
The University of Nottingham, UK
Svetlana Aleksandrova ORCID
The University of Leicester, UK
Benjamin Rothwell ORCID
The University of Nottingham, UK
Carol Eastwick ORCID
The University of Nottingham, UK
Editor
Anjali Sandip ORCID
Tags
Computational Fluid Dynamics Finite Volume Method Fluid simulation CFD Solver LES RANS

GitHub Events

Total
  • Create event: 60
  • Commit comment event: 17
  • Issues event: 4
  • Release event: 5
  • Watch event: 20
  • Delete event: 33
  • Issue comment event: 26
  • Push event: 518
  • Pull request review comment event: 17
  • Pull request review event: 34
  • Pull request event: 79
  • Fork event: 7
Last Year
  • Create event: 62
  • Commit comment event: 17
  • Issues event: 4
  • Release event: 5
  • Watch event: 20
  • Delete event: 35
  • Issue comment event: 28
  • Push event: 526
  • Pull request review comment event: 17
  • Pull request review event: 34
  • Pull request event: 79
  • Fork event: 7

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 6
  • Total pull requests: 108
  • Average time to close issues: less than a minute
  • Average time to close pull requests: 2 days
  • Total issue authors: 4
  • Total pull request authors: 11
  • Average comments per issue: 0.83
  • Average comments per pull request: 0.38
  • Merged pull requests: 79
  • Bot issues: 0
  • Bot pull requests: 14
Past Year
  • Issues: 6
  • Pull requests: 99
  • Average time to close issues: less than a minute
  • Average time to close pull requests: 2 days
  • Issue authors: 4
  • Pull request authors: 9
  • Average comments per issue: 0.83
  • Average comments per pull request: 0.29
  • Merged pull requests: 73
  • Bot issues: 0
  • Bot pull requests: 14
Top Authors
Issue Authors
  • mberto79 (2)
  • ztdepztdep (2)
  • simone-silvestri (1)
  • JuliaTagBot (1)
Pull Request Authors
  • mberto79 (58)
  • github-actions[bot] (11)
  • hpayne287 (8)
  • egyaa20 (6)
  • jleylo02 (5)
  • TomMazin (5)
  • kyleniemeyer (4)
  • MichaelU2002 (4)
  • dependabot[bot] (3)
  • OscarOsborn (2)
  • amontoison (2)
Top Labels
Issue Labels
Pull Request Labels
dependencies (3) github_actions (1)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 2 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 9
juliahub.com: XCALibre
  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 2 Total
Rankings
Dependent repos count: 3.2%
Downloads: 4.4%
Average: 8.0%
Dependent packages count: 16.3%
Last synced: 6 months ago