[🧮 **suanPan**](https://tlcfem.github.io/suanPan/) is a finite element method (FEM) simulation platform for applications in fields such as solid mechanics and civil/structural/seismic engineering. The name **suanPan** (in some places such as suffix it is also abbreviated as **suPan**) comes from the term *Suan Pan* (算盤), which is [Chinese abacus](https://en.wikipedia.org/wiki/Suanpan). **suanPan** is written in modern high quality C++ code and is targeted to provide an efficient, concise, flexible and reliable FEM simulation platform.
**suanPan** is partially influenced by popular (non-)commercial FEA packages, such as [ABAQUS UNIFIED FEA](https://www.3ds.com/products-services/simulia/products/abaqus/), [ANSYS](http://www.ansys.com/) and [OpenSees](http://opensees.berkeley.edu/).
suanPan alternatives and similar libraries
Based on the "Scientific Computing" category.
Alternatively, view suanPan alternatives based on common mentions on social networks and blogs.
7.4 3.2 L4 suanPan VS FFTWDO NOT CHECK OUT THESE FILES FROM GITHUB UNLESS YOU KNOW WHAT YOU ARE DOING. (See below.)
5.1 10.0 suanPan VS Kratos MultiphysicsKratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
4.0 9.5 suanPan VS preCICEA coupling library for partitioned multi-physics simulations, including, but not restricted to fluid-structure interaction and conjugate heat transfer simulations.
2.4 8.9 suanPan VS HELICSHierarchical Engine for Large-scale Infrastructure Co-Simulation (HELICS)
2.2 6.3 suanPan VS UnitsA run-time C++ library for working with units of measurement and conversions between them and with string representations of units and measurements
1.5 0.3 suanPan VS DimwitsA compact C++ header-only library providing compile-time dimensional analysis and unit awareness
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of suanPan or a related project?
🧮 suanPan is a finite element method (FEM) simulation platform for applications in fields such as solid mechanics and civil/structural/seismic engineering. The name suanPan (in some places such as suffix it is also abbreviated as suPan) comes from the term Suan Pan (算盤), which is Chinese abacus. suanPan is written in modern high quality C++ code and is targeted to provide an efficient, concise, flexible and reliable FEM simulation platform.
The highlights of suanPan are
- suanPan is fast, both memory and thread safe.
- suanPan is designed based on the shared memory model and supports parallelism on heterogeneous architectures, for example multi-threaded CPU + optional GPU. The parallelism is available for both element state updating and global matrix assembling.
- suanPan is open source and easy to be expanded to incorporate user-defined elements, materials, etc.
- suanPan separates the FEA model part from the linear algebra operation part, which significantly reduces the complexity of development.
- suanPan utilizes the new language features shipped with the latest standards (C++14, C++17, etc.), such as new STL containers, smart pointers and many others.
- suanPan supports simple visualization supported by VTK.
Sample models are available for almost all models/commands. Please check the
Example folder for details.
Only 64-bit version is compiled. It is assumed that AVX is available thus if the program fails, please check if your CPU supports AVX.
The binaries, which are compiled with Intel MKL and VTK, are available on Chocolatey, please use the following command to install the package.
Follow the instructions to install Chocolatey.
Use the following command to install
choco install suanpan
It is also possible to use Scoop to install the package.
Set-ExecutionPolicy RemoteSigned -scope CurrentUser iwr -useb get.scoop.sh | iex scoop install suanpan
Linux users are recommended to obtain the binaries via snap. The snap supports visualization via VTK and uses Intel MKL for linear algebra.
Precompiled binaries are provided via CI/CD on MacOS, Windows and Ubuntu. Please download the file from the release page.
Advanced users can compile the program from source by themselves in order to enable
- GPU based solvers which require available CUDA library;
- Visualization support provided by VTK library;
- High performing linear algebra provided by Intel MKL library.
On Windows, to add file associations with
.supan files, please run the
AddAssociation.bat file with admin privilege. Sublime Text autocompletion and syntax highlighting files are also provided. Please check the
On Linux, since CI/CD uses
GCC 9.3.0, it may be required to update/install GCC version 9 or above.
sudo apt install gcc-9 g++-9 gfortran-9 libomp5
For VTK enabled versions, it may be necessary to install OpenGL.
sudo apt install libglu1-mesa-dev freeglut3-dev mesa-common-dev
Additional libraries used in suanPan are listed as follows.
- ARPACK version 0.96
- SPIKE version 1.0
- FEAST version 4.0
- SuperLU version 5.3.0 and SuperLU MT version 3.1
- OpenBLAS version 0.3.15
- TBB Threading Building Blocks version 2021.4.0
- HDF5 version 1.10.6
- MUMPS version 5.2.1
- VTK version 8.2
- CUDA version 11.2
- Armadillo version 10.7
- Intel oneAPI Math Kernel Library version 2021.2.0
How To Compile
Please refer to the corresponding page in manual for details.
[an example of simulation of particle collision](Resource/particle-collision.gif)
*Note that all licence references and agreements mentioned in the suanPan README section above are relevant to that project's source code only.