Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

For more information, please visit


Advanced Simulation Library (ASL) is a free and open source hardware accelerated multiphysics simulation platform (and an extensible general purpose tool for solving Partial Differential Equations). Its computational engine is written in OpenCL and utilizes matrix-free solution techniques which enable extraordinarily high performance, memory efficiency and deployability on a variety of massively parallel architectures, ranging from inexpensive FPGAs, DSPs and GPUs up to heterogeneous clusters and supercomputers. The engine is hidden entirely behind simple C++ classes, so that no OpenCL knowledge is required from application programmers. Mesh-free, immersed boundary approach allows one to move from CAD directly to simulation drastically reducing pre-processing efforts and amount of potential errors. ASL can be used to model various coupled physical and chemical phenomena and employed in a multitude of fields: computational fluid dynamics, virtual sensing, industrial process data validation and reconciliation, image-guided surgery, computer-aided engineering, design space exploration, crystallography, etc..


ASL is distributed under the free GNU Affero General Public License (AGPLv3) with an optional commercial license.


Professional consulting, training and integration services are provided by Avtech Scientific, whose team created and continues to extend the library. The company offers innovative R&D solutions and is involved in diverse academic and industrial collaborative projects dealing with complex multidisciplinary problems.

Quick Start


  1. Install cmake (>=3.0.2, BSD License) and the required libraries:
  2. Download and extract the ASL source code archive.
  3. Create a build directory: mkdir build-asl && cd build-asl
  4. Use cmake generator to produce Makefiles: cmake -G "Unix Makefiles" ../ASL or project files for your IDE (Visual Studio, Xcode, Eclipse, etc.): cmake -G "Visual Studio 10" ../ASL
  5. Run make (as root if installing into default destination /usr/local): make install

Running an example

  1. Go to examples: cd examples/flow/locomotive
  2. Download geometry file locomotive.stl from the ASL input data page.
  3. Run: ./asl-locomotive --input locomotive.stl
    Optionally: change parameters ./asl-locomotive --input locomotive.stl --dx 1 --dt 2 or write all of them into a file for later editing/reuse - ./asl-locomotive -g bigGrid.ini. List all available options - ./asl-locomotive -h.
  4. Post-processing: see step by step example and locomotive.pvsm - the ParaView state file.

Writing your own code using ASL

  1. Take a look on examples and the API documentation, start with examples/flow/
  2. ASL installation supplies ASL.pc and ASLConfig.cmake files. To build your program using:
  • pkg-config: c++ `pkg-config --cflags --libs ASL` -std=c++11 -o flow
  • cmake: write a basic CMakeLists.txt file:
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
find_package(ASL 0.1.6 CONFIG REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
target_link_libraries(locomotive PRIVATE ASL::aslnum ASL::aslvtk ASL::asl)