For more information, please visit http://asl.org.il.
ASL
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..
License
ASL is distributed under the free GNU Affero General Public License (AGPLv3) with an optional commercial license.
Support
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
Installation
- Install cmake (>=3.0.2, BSD License) and the required libraries:
- OpenCL (>=1.2, OpenCL Specification License); open or closed source implementation, see deployment information
- boost (>=1.53, Boost Software License)
- VTK (>=6.1, BSD License)
- optional: Matlab support with matio (>=1.5.2, BSD License)
- optional: API documentation with doxygen (preferably with graphviz)
- Download and extract the ASL source code archive.
- Create a build directory:
mkdir build-asl && cd build-asl
- 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
- Run make (as root if installing into default destination
/usr/local
):make install
Running an example
- Go to examples:
cd examples/flow/locomotive
- Download geometry file locomotive.stl from the ASL input data page.
- 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
. - Post-processing: see step by step example and locomotive.pvsm - the ParaView state file.
Writing your own code using ASL
- Take a look on examples and the API documentation, start with examples/flow/locomotive.cc
- ASL installation supplies
ASL.pc
andASLConfig.cmake
files. To build your program using:
pkg-config
:c++ `pkg-config --cflags --libs ASL` -std=c++11 -o flow flow.cc
cmake
: write a basicCMakeLists.txt
file:
project(locomotive)
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")
add_executable(locomotive locomotive.cc)
target_link_libraries(locomotive PRIVATE ASL::aslnum ASL::aslvtk ASL::asl)