{"id":20848225,"url":"https://github.com/tlcfem/suanpan","last_synced_at":"2025-04-13T06:41:26.726Z","repository":{"id":23766257,"uuid":"328451327","full_name":"TLCFEM/suanPan","owner":"TLCFEM","description":"🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework","archived":false,"fork":false,"pushed_at":"2025-04-11T14:35:27.000Z","size":263590,"stargazers_count":69,"open_issues_count":1,"forks_count":10,"subscribers_count":8,"default_branch":"dev","last_synced_at":"2025-04-11T15:58:37.405Z","etag":null,"topics":["contact","couple-stress","dynamics","earthquake-engineering","fem","frame-structure","hpc","iga","nonlinear-material","nonviscous","phase-field","seismic-engineering","solid-mechanics","structural-engineering"],"latest_commit_sha":null,"homepage":"https://tlcfem.github.io/suanPan-manual/latest/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TLCFEM.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"ko_fi":"suanpan"}},"created_at":"2021-01-10T18:28:01.000Z","updated_at":"2025-04-11T14:35:31.000Z","dependencies_parsed_at":"2023-10-14T16:23:05.242Z","dependency_job_id":"57b84ec8-3a7a-4c90-bd6d-b8af20e13387","html_url":"https://github.com/TLCFEM/suanPan","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLCFEM%2FsuanPan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLCFEM%2FsuanPan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLCFEM%2FsuanPan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TLCFEM%2FsuanPan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TLCFEM","download_url":"https://codeload.github.com/TLCFEM/suanPan/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248675434,"owners_count":21143763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["contact","couple-stress","dynamics","earthquake-engineering","fem","frame-structure","hpc","iga","nonlinear-material","nonviscous","phase-field","seismic-engineering","solid-mechanics","structural-engineering"],"created_at":"2024-11-18T02:25:08.024Z","updated_at":"2025-04-13T06:41:26.712Z","avatar_url":"https://github.com/TLCFEM.png","language":"C++","funding_links":["https://ko-fi.com/suanpan"],"categories":[],"sub_categories":[],"readme":"# suanPan\n\n\u003cimg src=\"Resource/suanPan-qr-ua.svg\" width=\"150\" align=\"middle\"/\u003e\u003cimg src=\"Resource/suanPan-ua.svg\" width=\"150\" align=\"middle\"/\u003e\n\n[![doi](https://zenodo.org/badge/DOI/10.5281/zenodo.1285221.svg)](https://doi.org/10.5281/zenodo.1285221)\n[![license](https://img.shields.io/github/license/TLCFEM/suanPan.svg?color=44cc11)](https://www.gnu.org/licenses/gpl-3.0)\n[![documentation](https://readthedocs.org/projects/suanpan-manual/badge/?version=latest)](https://suanpan-manual.readthedocs.io/?badge=latest)\n[![release](https://img.shields.io/github/release-pre/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan/releases)\n[![suanpan](https://snapcraft.io//suanpan/badge.svg)](https://snapcraft.io/suanpan)\n[![choco](https://img.shields.io/chocolatey/v/suanpan?color=44cc11)](https://chocolatey.org/packages/suanpan)\n[![choco](https://img.shields.io/chocolatey/dt/suanpan?color=44cc11\u0026label=choco%20install)](https://chocolatey.org/packages/suanpan)\n[![flathub](https://img.shields.io/flathub/downloads/io.github.tlcfem.suanPan?label=flathub%20install)](https://flathub.org/apps/io.github.tlcfem.suanPan)\n[![github](https://img.shields.io/github/downloads/TLCFEM/suanPan/total.svg?color=44cc11\u0026label=github%20download)](https://github.com/TLCFEM/suanPan/releases)\n[![docker](https://img.shields.io/docker/pulls/tlcfem/suanpan?color=44cc11)](https://hub.docker.com/r/tlcfem/suanpan/tags)\n[![dev](https://github.com/TLCFEM/suanPan/actions/workflows/dev-all.yml/badge.svg?branch=dev)](https://github.com/TLCFEM/suanPan/actions/workflows/dev-all.yml)\n[![codecov](https://codecov.io/gh/TLCFEM/suanPan/branch/dev/graph/badge.svg?token=65BF9DF697)](https://codecov.io/gh/TLCFEM/suanPan)\n[![codacy](https://app.codacy.com/project/badge/Grade/1ea08c43edf342a8b00b21e585e63503)](https://app.codacy.com/gh/TLCFEM/suanPan/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_grade)\n[![codefactor](https://www.codefactor.io/repository/github/tlcfem/suanpan/badge)](https://www.codefactor.io/repository/github/tlcfem/suanpan)\n[![language](https://img.shields.io/github/languages/count/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan)\n[![language](https://img.shields.io/github/languages/top/TLCFEM/suanPan.svg?color=44cc11\u0026logo=c%2B%2B)](https://github.com/TLCFEM/suanPan)\n[![size](https://img.shields.io/github/languages/code-size/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan)\n[![issues](https://img.shields.io/github/issues/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan/issues)\n[![fossa](https://app.fossa.com/api/projects/git%2Bgithub.com%2FTLCFEM%2FsuanPan.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FTLCFEM%2FsuanPan?ref=badge_shield)\n\n[![gplv3-or-later](https://www.gnu.org/graphics/gplv3-or-later.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html)\n\n[![marketplace](https://img.shields.io/visual-studio-marketplace/v/tlc.suanpan?label=VS%20Code\u0026color=44cc11)](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan)\n\n\u003e [!IMPORTANT]\n\u003e ***Check out the VS Code [extension](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan) for syntax\n\u003e highlighting and autocompletion.***\n\n\u003e [!IMPORTANT]\n\u003e ***Feature requests can be made via creating [new issues](https://github.com/TLCFEM/suanPan/issues/new/choose).***\n\n## Introduction\n\n[🧮 **suanPan**](https://tlcfem.github.io/suanPan/) is a finite element method (FEM) simulation platform for applications\nin fields such as solid mechanics and civil/structural/seismic engineering. **suanPan** is written in modern\nhigh-quality C++ code and is targeted to provide an efficient, concise, flexible and reliable FEM simulation platform.\n\n**suanPan** is partially influenced by popular (non-)commercial FEA packages, such\nas [ABAQUS UNIFIED FEA](https://www.3ds.com/products-services/simulia/products/abaqus/), [ANSYS](http://www.ansys.com/)\nand [OpenSees](http://opensees.berkeley.edu/).\n\n\u003e [!IMPORTANT]\n\u003e Please check the documentation [here](https://tlcfem.github.io/suanPan-manual/latest/) for command references.\n\u003e For a summary of available functionalities, see [this](https://tlcfem.github.io/suanPan-manual/latest/SUMMARY/) page.\n\u003e Please star ⭐ the project!\n\n![repobeats analytics](https://repobeats.axiom.co/api/embed/dc2e0bf6251aec5423157991015e9f2582618226.svg)\n\n## Features\n\nThe highlights of **suanPan** are\n\n- ✅ ***fast***, memory and thread safe\n- ✅ [shared memory](https://en.wikipedia.org/wiki/Shared_memory) parallelism support\n- ✅ [distributed memory](https://en.wikipedia.org/wiki/Distributed_memory) parallelism support\n- ✅ a rich collection of elements, material models, time integration methods, etc.\n- ✅ open source and easy to be extended\n- ✅ modern language features\n\n\u003e [!IMPORTANT]\n\u003e Both `amd64` and `arm64` architectures are supported.\n\u003e Check details on [Docker Hub](https://hub.docker.com/r/tlcfem/suanpan).\n\n## Quick Start\n\nExecute the application out-of-the-box in terminal on Linux using one of the following commands depending on how the\napplication is obtained. See details below.\n\n```bash\n# in folder bin/ for linux portable tarball\n./suanPan.sh\n# for linux packages and snap\nsuanPan\n# for flatpak\nflatpak run io.github.tlcfem.suanPan\n```\n\nOr on Windows,\n\n```powershell\n# in the folder containing suanPan.exe\n.\\suanPan.exe\n```\n\nFirst time users can use `overview` command to go through a quick introduction.\n\n```text\n+--------------------------------------------------------+\n|             ____             suanPan is an open source |\n|   ___ _   _|  _ \\ __ _ _ __     FEM framework (64-bit) |\n|  / __| | | | |_) / _` | '_ \\           Canopus (3.7.0) |\n|  \\__ \\ |_| |  __/ (_| | | | |        by tlc @ c34df242 |\n|  |___/\\__,_|_|   \\__,_|_| |_|      all rights reserved |\n|                                 10.5281/zenodo.1285221 |\n+--------------------------------------------------------+\n|  https://github.com/TLCFEM/suanPan                     |\n|  https://tlcfem.github.io/suanPan-manual/latest        |\n+--------------------------------------------------------+\n|  https://bit.ly/vsc-sp                                 |\n+--------------------------------------------------------+\n\nsuanPan ~\u003c\u003e overview\n```\n\nSample models are available for almost all models/commands. Please check the `Example` folder for details. Further\ndetails can be seen [here](https://tlcfem.gitbook.io/suanpan-manual/tutorial/obtain) regarding how to run model files.\n\n## Installation\n\n\u003e [!WARNING]\n\u003e Only the 64-bit version is compiled.\n\u003e It is assumed that [**AVX2**](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) is available thus if the program\n\u003e fails, please check if your CPU supports AVX2.\n\u003e Alternatively, you can try the `no-avx` version.\n\n### Windows\n\n\u003e [!NOTE]\n\u003e It may be necessary to install the VC++ redistributable [package](https://aka.ms/vs/17/release/vc_redist.x64.exe).\n\u003e If the application prompts that some file, such as `msvcp140.dll`, is missing, please install the redistributable package.\n\n#### Binary Package\n\nThe archives of binaries are released under [Release](https://github.com/TLCFEM/suanPan/releases) page.\n\n1. `suanpan-win-mkl-vtk.zip` is the portable archive.\n2. `suanpan-win-mkl-vtk.exe` is the installer.\n\n#### Chocolatey\n\nThe binaries, which are compiled with Intel MKL and VTK, are available\non [Chocolatey](https://chocolatey.org/packages/suanpan), please use the following command to install the package.\n\n1. Follow the [instructions](https://chocolatey.org/install) to install Chocolatey.\n\n2. Use the following command to install `suanPan`.\n\n   ```ps\n   choco install suanpan\n   ```\n\n3. It is recommended to use a modern terminal such as [Windows Terminal](https://github.com/microsoft/terminal) for better output display.\n\nThe Chocolatey repo available to you may not be up-to-date.\nIf the latest version is not available, please try alternatives, such as portable binaries or scoop.\n\n[![choco](Resource/choco.gif)](https://asciinema.org/a/684063)\n\n#### Scoop\n\nIt is also possible to use [Scoop](https://scoop.sh/) to install the package.\n\n1. Install [Scoop](https://scoop.sh/).\n\n   ```ps\n   Set-ExecutionPolicy RemoteSigned -scope CurrentUser\n   iwr -useb get.scoop.sh | iex\n   ```\n\n2. Install `suanPan`.\n\n   ```ps\n   scoop install suanpan\n   ```\n\n### Linux\n\nLinux users are recommended to obtain the binaries via `snap` or `flatpak`.\n\n#### Snap\n\nThe snap supports visualisation via VTK and uses Intel MKL for linear algebra.\nThe edge channel is in sync with the `dev` branch.\nThe stable channel is in sync with the `master` branch.\n\n[![snap](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/suanpan)\n\n[![snap](Resource/snap.gif)](https://asciinema.org/a/684061)\n\n#### Flatpak\n\nFlatpak is also available if preferred.\nThe beta channel is in sync with the `dev` branch.\nThe stable channel is in sync with the `master` branch.\n\n\u003ca href='https://flathub.org/apps/details/io.github.tlcfem.suanPan'\u003e\u003cimg width='200' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.svg'/\u003e\u003c/a\u003e\n\n```bash\n# add repo\nflatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo\n# or the beta channel\n# flatpak remote-add --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo\n# install\nflatpak install suanPan\n# define alias\necho \"alias suanpan=\\\"flatpak run io.github.tlcfem.suanPan\\\"\" \u003e\u003e ~/.bashrc\n```\n\n### Docker\n\nIt is also possible to compile the package via docker, check the dockerfiles under the `Script` folder, for any\nquestions please open an issue.\n\nOne can directly pull the image.\nUsing [Docker Hub](https://hub.docker.com/r/tlcfem/suanpan),\n\n```bash\ndocker pull tlcfem/suanpan\n```\n\nOr using [GitHub Container Registry](https://github.com/TLCFEM/suanPan/pkgs/container/suanpan),\n\n```bash\ndocker pull ghcr.io/tlcfem/suanpan\n```\n\n### Other Platforms\n\nPrecompiled binaries are provided via CI/CD on macOS, Windows, and Ubuntu.\nPlease download the file from the [release](https://github.com/TLCFEM/suanPan/releases) page.\n\nA few flavors are available:\n\n1. `vtk` --- visualisation support is enabled, with this you can record VTK files for postprocessing, however, OpenGL\n   may be missing on server systems\n2. `mkl` --- linear algebra operations are offloaded to MKL, which gives the optimal performance on Intel chips\n3. `openblas` --- linear algebra operations are offloaded to OpenBLAS, which may outperform MKL on AMD platforms\n4. `no-avx` --- AVX2 support is disabled, useful for older CPUs which do not support AVX2 instructions\n\nAdvanced users can compile the program from source by themselves to enable GPU based solvers which require\nan available [CUDA](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) and/or MAGMA library.\n\nSince CI/CD uses `GCC 11` (on Linux) and `Clang 13.0.1` (on macOS), it may be required to update/install\nproper `libstdc++` (or `libc++`) version.\nThe easiest way is to install the same compiler.\nFor example, on Ubuntu 22.04,\n\n```bash\n# Ubuntu\nsudo apt install gcc g++ gfortran libomp5\n```\n\nFor VTK enabled versions, it may be necessary to install OpenGL.\n\n```bash\n# Ubuntu\nsudo apt install libglvnd-dev\n```\n\n### Automation Related\n\n#### VS Code\n\nThe VS Code extension is available [here](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan).\n\n#### Sublime Text\n\nOn Windows, a batch file named `AddAssociation.bat` is provided in the archive. It provides file associations and\nprepares a proper working environment (build system, autocompletion, highlighting)\nwith [Sublime Text](https://www.sublimetext.com/). It also adds file associations with `.sp` and `.supan` files, please\nrun the `AddAssociation.bat` file with administrator privilege. [Sublime Text](https://www.sublimetext.com/)\nautocompletion and syntax highlighting files are also provided. Please install Sublime Text first and execute the batch\nfile with the administrator privilege.\n\nOn Linux, a script file named as `suanPan.sh` is provided. By executing\n\n```bash\n./suanPan.sh --create-link\n```\n\nIt adds Sublime Text autocompletion and syntax highlighting files to proper location if Sublime Text configuration\nfolder is found. It also adds a command alias `suanpan` to `~/.local/bin` and a desktop file\nto `~/.local/share/applications`.\n\n## Dependency\n\nAdditional libraries used in **suanPan** are listed as follows.\n\n- [**AMD Optimizing CPU Libraries (AOCL)**](https://www.amd.com/en/developer/aocl.html) version 5.0\n- [**ARPACK**](https://github.com/opencollab/arpack-ng)\n- [**Armadillo**](http://arma.sourceforge.net/) version 14.4.1\n- [**CUDA**](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) version 12.5\n- [**Catch2**](https://github.com/catchorg/Catch2) version 3.8.0\n- [**FEAST**](http://www.feast-solver.org/) version 4.0\n- [**HDF5**](https://www.hdfgroup.org/solutions/hdf5/) version 1.14.5\n- [**Lis**](https://www.ssisc.org/lis/) version 2.1.6\n- [**MAGMA**](https://icl.utk.edu/magma/) version 2.8.0\n- [**METIS**](https://github.com/KarypisLab/METIS) version 5.1.0\n- [**MUMPS**](https://mumps-solver.org/) version 5.7.3\n- [**OpenBLAS**](https://github.com/xianyi/OpenBLAS) version 0.3.29\n- [**SPIKE**](http://www.spike-solver.org/) version 1.0\n- [**SuperLU MT**](https://portal.nersc.gov/project/sparse/superlu/) version 4.0.0\n- [**SuperLU**](https://portal.nersc.gov/project/sparse/superlu/) version 6.0.1\n- [**TBB** Threading Building Blocks](https://github.com/oneapi-src/oneTBB) version 2022.1.0\n- [**VTK**](https://vtk.org/) version 9.4\n- [**argparse**](https://github.com/p-ranav/argparse)\n- [**ensmallen**](https://ensmallen.org/) version 2.21.1\n- [**exprtk**](https://github.com/ArashPartow/exprtk) version 0.0.3\n- [**fmt**](https://github.com/fmtlib/fmt) version 10.2.1\n- [**magic_enum**](https://github.com/Neargye/magic_enum) version 0.9.7\n- [**oneMKL**](https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html) version 2025.0.1\n- [**whereami**](https://github.com/gpakosz/whereami)\n- **thread_pool** abridged version of [`thread-pool`](https://github.com/bshoshany/thread-pool)\n\nThose libraries may depend on other libraries such as [zlib](https://zlib.net/)\nand [Szip](https://support.hdfgroup.org/doc_resource/SZIP/). Additional tools may be used by **suanPan**, they are\n\n- [**UPX** the Ultimate Packer for eXecutables](https://upx.github.io/)\n\n## How To Compile\n\nPlease refer to the corresponding [page](https://tlcfem.github.io/suanPan-manual/latest/Basic/Compile/) in\nthe manual for details.\n\n## Happy Modelling\n\n![an example simulation of particle collision](Resource/particle-collision.gif)\n\n## Licence\n\n[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FTLCFEM%2FsuanPan.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2FTLCFEM%2FsuanPan?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlcfem%2Fsuanpan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftlcfem%2Fsuanpan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftlcfem%2Fsuanpan/lists"}