Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

Downloads:

3,031

Downloads of v 3.6.0:

21

Last Update:

08 Feb 2025

Package Maintainer(s):

Software Author(s):

  • Theodore Chang

Tags:

fem hpc iga

suanPan

  • 1
  • 2
  • 3

3.6.0 | Updated: 08 Feb 2025

Downloads:

3,031

Downloads of v 3.6.0:

21

Maintainer(s):

Software Author(s):

  • Theodore Chang

Tags:

fem hpc iga

suanPan 3.6.0

Legal Disclaimer: Neither this package nor Chocolatey Software, Inc. are affiliated with or endorsed by Theodore Chang. The inclusion of Theodore Chang trademark(s), if any, upon this webpage is solely to identify Theodore Chang goods or services and not for commercial purposes.

  • 1
  • 2
  • 3

All Checks are Passing

3 Passing Tests


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Successful:

No detections found in any package files

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install suanPan, run the following command from the command line or from PowerShell:

>

To upgrade suanPan, run the following command from the command line or from PowerShell:

>

To uninstall suanPan, run the following command from the command line or from PowerShell:

>

Deployment Method:

NOTE

This applies to both open source and commercial editions of Chocolatey.

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)


2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Copy Your Script

choco upgrade suanpan -y --source="'INTERNAL REPO URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade suanpan -y --source="'INTERNAL REPO URL'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install suanpan
  win_chocolatey:
    name: suanpan
    version: '3.6.0'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'suanpan' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '3.6.0'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller suanpan
{
    Name     = "suanpan"
    Version  = "3.6.0"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'suanpan':
  ensure   => '3.6.0',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved as a trusted package on 08 Feb 2025.

Description

🧮 suanPan is a finite element method (FEM) simulation platform for applications in fields such as solid mechanics and civil/structural/seismic engineering. suanPan is written in modern high quality C++ code and is targeted to provide an efficient, concise, flexible and reliable FEM simulation platform.


tools\AddAssociation.bat
@echo off

assoc .sp=suanpanmodel
assoc .supan=suanpanmodel

set "program=%~dp0suanPan.exe"

if not exist "%program%" (
    echo suanPan.exe does not exist in current folder
    goto byebye
)

ftype suanpanmodel="%program%" "-f" "%%1"

set "program=%program:\=/%"

set "target=%appdata%\Sublime Text 3\Packages\User\"

if exist "%target%\" goto copyfile

set "target=%appdata%\Sublime Text\Packages\User\"

if exist "%target%\" goto copyfile

set target=

set /p target="Input path contains sublime_text.exe (leave empty to quit): "

if "%target%" == "" goto byebye

if not exist "%target%\sublime_text.exe" (
    echo sublime_text.exe does not exist in the given folder
    goto byebye
)

set "target=%target%\Data\Packages\User\"
set "target=%target:\=/%"

:copyfile

echo {"cmd":["%program%","-nc","-f","$file"],"selector":"source.supan","file_patterns":["*.supan","*.sp"]} > "%~dp0suanPan.sublime-build"
xcopy "%~dp0suanPan.sublime*" "%target%"

:byebye
tools\CHANGELOG.md
# Changelog

## known issues

1. The `MKL` includes outdated `FEAST`, the external names in `FEAST` library are modified to avoid linking error.
2. The `SPIKE` solver may occasionally freeze, to circumvent, try to avoid mixing compilers from different vendors.
3. The `MUMPS` solver throws segfaults with large matrices, appears to be quite slow.
4. The `FGMRES` solver requires refinements.

## version 3.6

1. add `AFCO1D` material with strain memory [#217](https://github.com/TLCFEM/suanPan/pull/217)
2. update `Catch2` to version `3.7.1`
3. add `Subloading1D` material [#219](https://github.com/TLCFEM/suanPan/pull/219)
4. add `Subloading~~Metal~~` material [#221](https://github.com/TLCFEM/suanPan/pull/221)
5. add `arm64` build
6. update `Armadillo` to version `14.2.3`
7. update `VTK` to version `9.4.0`
8. update `HDF5` to version `1.14.5`
9. update `OpenBLAS` to version `0.3.29`
10. revise US and EU section database
11. add support of `AMD Optimizing CPU Libraries (AOCL)` on linux
12. update `TBB` to version `2022.0.0`

## version 3.5

1. add `MaxForce` constraint [#204](https://github.com/TLCFEM/suanPan/pull/204)
2. update `Armadillo` to version `14.0.2`
3. update `OpenBLAS` to version `0.3.28`
4. update `Catch2` to version `3.7.0`
5. revise stiffness matrix formulation in shell elements [#208](https://github.com/TLCFEM/suanPan/pull/208)
6. add dev containers for easier DE setup

## version 3.4

1. update `Armadillo` to version `12.8.2` [#193](https://github.com/TLCFEM/suanPan/pull/193)
2. plane strain Duncan-Selig soil model [#195](https://github.com/TLCFEM/suanPan/pull/195)
3. update `Catch2` to version `3.5.4`
4. update `TBB` to version `2021.12.0` [#199](https://github.com/TLCFEM/suanPan/pull/199)
5. update `MUMPS` to version `5.7.1` [#202](https://github.com/TLCFEM/suanPan/pull/202)

## version 3.3

1. (breaking) revise syntax for `ConcreteTsai`, `Concrete21` and `Concrete22` using a more consistent definition
2. fix tangent stiffness in `ConcreteK4` model [#171](https://github.com/TLCFEM/suanPan/pull/171)
3. update `OpenBLAS` to version `0.3.25`
4. update `SuperLU` to version `6.0.1`
5. better `RCM` algorithm that may result in a smaller bandwidth, thus, potentially more efficient
   solving [#175](https://github.com/TLCFEM/suanPan/pull/175)
6. update `Armadillo` to version `12.6.7` [#180](https://github.com/TLCFEM/suanPan/pull/180)
7. enable lazy evaluation and avoid temporary global matrices, faster dynamic
   analysis [#183](https://github.com/TLCFEM/suanPan/pull/183)
8. bugfixes: [#185](https://github.com/TLCFEM/suanPan/pull/185)
9. update `Catch2` to version `3.5.2`
10. update `fmt` to version `10.2.1`
11. add nonviscous damping: `NonviscousNewmark` (global level integrator), `ElementalNonviscous` (element level
    modifier) and `Nonviscous01` (material level model)

## version 3.2

1. revise uniaxial universal damage models [#153](https://github.com/TLCFEM/suanPan/pull/153)
2. update `OpenBLAS` to version `0.3.24`
3. add a new uniaxial concrete model `ConcreteK4` [#155](https://github.com/TLCFEM/suanPan/pull/155)
4. add beam element for arbitrary thin-/thick-walled open/close section with torsion and
   warping `B31OS` [#159](https://github.com/TLCFEM/suanPan/pull/159)
5. better local iteration convergence criterion [#161](https://github.com/TLCFEM/suanPan/pull/161)
6. `B31OS` and `EB31OS` associated transformations `B3DOSL`, `B3DOSC`; sections, `Fibre3DOS`, `Cell3DOS`; material
   wrappers `OS146`, `OS146S`
7. add elemental damping using Lee's model
8. support Lode angle in CDPM2 [#163](https://github.com/TLCFEM/suanPan/pull/163)
9. add `AICN` cubic Newton solver [#165](https://github.com/TLCFEM/suanPan/pull/165)
10. remove `Bilinear2D` material, use `PlaneStress`/`PlaneStrain` wrapper and `BilinearJ2` 3D model instead

## version 3.1

1. iterative solvers by the Lis library [#145](https://github.com/TLCFEM/suanPan/pull/145)
2. update `Armadillo` to version `12.6.3` [#149](https://github.com/TLCFEM/suanPan/pull/149)
3. add `TimberPD` 3D material for timber [#151](https://github.com/TLCFEM/suanPan/pull/151)

## version 3.0

1. add experimental `MAGMA` based GPU sparse solver [#123](https://github.com/TLCFEM/suanPan/pull/123)
2. add nonlinear transformation for shell elements [#124](https://github.com/TLCFEM/suanPan/pull/124)
3. update `VTK` to version `9.2.6`
4. add `CustomNodeGroup` [#126](https://github.com/TLCFEM/suanPan/pull/126)
5. add `TranslationConnector` [#127](https://github.com/TLCFEM/suanPan/pull/127)
6. add `CustomAmplitude` [#129](https://github.com/TLCFEM/suanPan/pull/129)
7. update `Armadillo` to version `12.2` [#134](https://github.com/TLCFEM/suanPan/pull/134)
8. add `AsymmElastic1D` [#135](https://github.com/TLCFEM/suanPan/pull/135)
9. update `TBB` to version `2021.9.0`
10. update `MUMPS` to version `5.6.0`

## version 2.9

1. matrix optimisation
2. update `Catch2` to version `3.3.1`
3. update `TBB` to version `2021.8.0`
4. add mixed precision algorithm for `MUMPS` solver [#119](https://github.com/TLCFEM/suanPan/pull/119)
5. add `CustomDegradation`, `CustomGurson` and `CustomGurson1D` models
6. update `Armadillo` to version `12.0` [#121](https://github.com/TLCFEM/suanPan/pull/121)

## version 2.8

1. better on screen display with the `fmt` library [#99](https://github.com/TLCFEM/suanPan/pull/99)
2. add command `overview`
3. update `OpenBLAS` to version `0.3.21`
4. add Euler buckling load check for `T2D2` [#104](https://github.com/TLCFEM/suanPan/pull/104)
5. speed-up analysis with visualisation recorder [#102](https://github.com/TLCFEM/suanPan/pull/102)
6. update `VTK` to version `9.2.5`
7. add `Expression` to support custom function definition [#105](https://github.com/TLCFEM/suanPan/pull/105)
8. add `CustomMises1D`, `CustomCC`, `CustomCDP`, `CustomDP`, `CustomJ2` and `CustomHoffman` models

## version 2.7

1. optimise assembling of symmetric global matrices [#79](https://github.com/TLCFEM/suanPan/pull/79)
2. extend `BatheTwoStep` to allow customisation of spectral radius [#81](https://github.com/TLCFEM/suanPan/pull/81) and
   sub-step size [#82](https://github.com/TLCFEM/suanPan/pull/82)
3. update `Catch2` to version `2.13.10`
4. update `Armadillo` to version `11.4`
5. update modern `Arpack` [#94](https://github.com/TLCFEM/suanPan/pull/94)
6. add `Tchamwa` [#88](https://github.com/TLCFEM/suanPan/pull/88),
   `BatheExplicit` [#90](https://github.com/TLCFEM/suanPan/pull/90)
   and `GeneralisedAlphaExplicit` [#93](https://github.com/TLCFEM/suanPan/pull/93) explicit time integration methods
7. add `OALTS` two-step implicit time integration method [#92](https://github.com/TLCFEM/suanPan/pull/92)
8. add `Sinh1D` and `Tanh1D` nonlinear elastic 1D material
9. add `linear_system` flag to speed up linear system analysis

## version 2.6.1

1. add `-nu` (`--noupdate`) flag to skip check of new version on startup
2. fix issue [#74](https://github.com/TLCFEM/suanPan/issues/74)

## version 2.6

1. update `MKL` to version `2022.2.0`
2. update `TBB` to version `2021.7.0`
3. update `VTK` to version `9.2.2`
4. add docker images and docker build scripts
5. add `TabularSpline` amplitude that uses cubic spline interpolation
6. add `upsampling` command to upsample time series data
7. add `sdof_response` command to compute response of single degree of freedom system
8. add `response_spectrum` command to compute response spectrum for given ground motion

## version 2.5

1. reformulate NM sections, add `NMB21E` element with end moment release
2. add couple stress membranes `CST3`, `CST6`, `CSM4-8`
3. add universal iterative solvers `BiCGSTAB` and `GMRES`, and preconditioners `Jacobi` and `ILU`
4. add support for `icx` and `ifx` compilers, add support for `clang` on linux
5. fix a bug in `GSSSS` with loads are applied as support motions, add `GSSSSOptimal` scheme
6. add `MassPoint2D` and `MassPoint3D` elements

## version 2.4

1. add `RestitutionWall` constraint which conserves momentum and energy
2. add `benchmark` command to benchmark platform
3. constraints and loads are processed in a fully parallelized manner
4. add 3D viscous damper `Damper03` and `Damper04`
5. bugfixes

## version 2.3

1. update `Armadillo` to version 11.0
2. relocate history record file under home folder
3. add `GSSSS` integrator
4. `LeeNewmark` now supports `PARDISO`, `CUDA` and `FGMRES` solvers
5. move to `C++20`, need `GCC 10.3.0`, `Clang 13.0.1`, `MSVC 14.31`
6. add `MOMENTUM` to record system momentum
7. use non-iterative algorithm for force based beams `F21`, `F21H` and `F31`

## version 2.2

1. add `example` command to showcase the creation of a simple model
2. update `VTK` to version 9.1.0
3. add `LogicAND`, `LogicOR` and `LogicXOR` convergers to use multiple criteria
4. update `oneMKL` to `2022.0.3` on Windows
5. move to `VS2022`

## version 2.1

1. update `Armadillo` to version 10.8
2. add recorder tag to recorded files, remove timestamp for hdf5 files, easier to manage different recorders
3. several minor bugfixes
4. improve `LeeNewmark` and `LeeNewmarkFull` performance
5. correct multithreaded `SuperLU` implementation, change default number of threads to 10
6. bugfixes regarding sparse matrix representation

## version 2.0

1. fix a bug in elastic stiffness in CDP model
2. add porous media plane strain elements `PCPE4UC`, `PCPE8UC`, `PCPE4DC`, `PCPE8DC`
3. add N-M interaction enabled beam element `NMB31` and `NMB21`
4. add N-M interaction enabled section `NM2D1`, `NM3D1` (elastic) and `NM2D2`, `NM3D2` (inelastic)
5. (breaking) change Rayleigh damping related syntax to include tangent stiffness term
6. add different stiffness types to `LeeNewmarkFull`, add support of geometry nonlinearity
7. revise section definition
8. add `B3DC` corotational formulation support to 3D beams

## version 1.9

1. update `Armadillo` to version 10.7
2. update `TBB` version 2021.4.0
3. add `FGMRES` iterative solver
4. switch to `core20` on snap
5. fix the visualisation bug with installation via snap
6. add `LineUDL2D` and `LineUDL3D` loads

## version 1.8

1. add `PlaneSymmetric13` and `PlaneSymmetric23` wrappers
2. add `CoulombFriction` material
3. update `Armadillo` to version 10.6

## version 1.7

1. revise `SimpleSand` model
2. add `DafaliasManzari` sand model
3. add `materialtestbystrainhistory` and `materialtestbystresshistory` utility functions
4. bugfix: potential racing in initialising reference dof, change to serial initialisation
5. bugfix: wrong update of plastic strain in `CDP` model
6. add `CDPM2` model with isotropic damage

## version 1.6

1. add `terminal` command and `output_folder` setting
2. some minor updates

## version 1.5

1. add `scoop` support
2. add `Contact3D` 3D node-triangular facet contact element
3. add `NodeLine` and `NodeFacet` contact constraint
4. add `Sleeve2D`, `Sleeve3D`, `MaxGap2D` and `MaxGap3D` constraint
5. update `OpenBLAS` to version 0.3.15
6. update `Material` class to accommodate couple stress related quantities

## version 1.4

1. add `R2D2` and `R3D2` alias for fixed length constraint
2. add `MinGap2D` and `MinGap3D` inequality constraints
3. add `SupportMotion` loads, including `SupportDisplacement`, `SupportVelocity` and `SupportAcceleration`
4. update `Armadillo` to version 10.4
5. add functionality to check new version
6. add `FEAST` solver
7. improve mixed precision solver performance
8. add `CUDA` solver for dense matrix

## version 1.3

1. update handling of constraints and loads
2. store commands in backup file in CLI mode
3. add `FixedLength2D` and `FixedLength3D` nonlinear constraints
4. improve handling of constraints in dynamic analysis
5. add `NLE1D01` model
6. minor bugfixes

## version 1.2

1. remove dependency on `MAGMA`, now `CUDA` is directly used as the GPU solver
2. add `PARDISO` sparse solver
3. upgrade to `Intel oneAPI Toolkit`
4. add C interface material model
5. remove all reinforced elements, reinforcement can be handled by material models

## version 1.1

1. add phase field enabled elements: `DCP3`, `DCP4`, `DC3D4`, `DC3D8` elements
2. add support to record nodal damping/inertial force `DF` and `IF`
3. add regularized `Yeoh` model for compressible rubbers
4. improve stability of `RambergOsgood` model
5. add `LeeNewmarkFull` damping model, improve performance of `LeeNewmark` damping model
6. add shared memory `SuperLU` solver
7. add `Spike` solver for banded matrices
8. add displacement based beam element with end moment release: `B21EL` and `B21EH` elements
9. correct name of `Kelvin` model

## version 1.0

1. initial release
tools\libifcoremd.dll
md5: 40BD3D22F7BF75A168F7A2A459CADB9F | sha1: DA82433A6D1BF0119F042626FB279E8D259F441D | sha256: AAA9B0AA477A574EE6587C97A225561FB4247A007D7586CE1B5C5CFB31CDC728 | sha512: 4CC722F37490DABD7B8EF07FD0F8CB875609653FD360E8A1EDE5DA3DF5E6ACCFA4E8D66F0FA2F8813675A848FBEE0B6CD26692CACA5CD502B6B9169541ECED28
tools\libiomp5md.dll
md5: FCF82321A31DAC01DB8C578BDD4DE63B | sha1: 8BF9FEF3000DBCB1866B85EA5AA23D17CE7AC491 | sha256: F608EEDB25E44DE3DB1D3DB984AC113F3A8406A92EA87061A77F390852FE1174 | sha512: 942729FBE4CF74CFCA2D108A85F5225BAEF1A7FEE383770865A9D661F56541FDE47810A51CC626091B293DB77C2622A349E28420CB16D1D29BBAC1EAC86824F8
tools\libmmd.dll
md5: 14D1C437D435367D79D9242AB63E4612 | sha1: 203B36A74933FCC82BDADAE426348C1F6C43F7AA | sha256: E2B0066F3F4479439D5F008C74482B78ED13203D62C2ECB480CC12B4D78A01FA | sha512: FA578F55975E0566FDCB03185E4ECF95D3AFFB27CE3DC34B56FCBC3C50E6F1EE6010DBE3FDEE2F6CD043181CB8EB18C4ED69D84EF1C94325E212CF18BD4D6F63
tools\LICENSE
 
tools\msvcp140.dll
md5: 72F3D84384E888BF0D38852EB863026B | sha1: 8E6A0257591EB913AE7D0E975C56306B3F680B3F | sha256: A4C2229BDC2A2A630ACDC095B4D86008E5C3E3BC7773174354F3DA4F5BEB9CDE | sha512: 6D53634BC51BD383358E0D55988D70AEE6ED3897BC6AE5E0D2413BED27ECFF4C8092020682CD089859023B02D9A1858AC42E64D59C38BA90FBAF89B656C539A6
tools\README.md
# suanPan

<img src="Resource/suanPan-qr-ua.svg" width="150" align="middle"/><img src="Resource/suanPan-ua.svg" width="150" align="middle"/>

[![doi](https://zenodo.org/badge/DOI/10.5281/zenodo.1285221.svg)](https://doi.org/10.5281/zenodo.1285221)
[![license](https://img.shields.io/github/license/TLCFEM/suanPan.svg?color=44cc11)](https://www.gnu.org/licenses/gpl-3.0)
[![documentation](https://readthedocs.org/projects/suanpan-manual/badge/?version=latest)](https://suanpan-manual.readthedocs.io/?badge=latest)
[![release](https://img.shields.io/github/release-pre/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan/releases)
[![suanpan](https://snapcraft.io//suanpan/badge.svg)](https://snapcraft.io/suanpan)
[![choco](https://img.shields.io/chocolatey/v/suanpan?color=44cc11)](https://chocolatey.org/packages/suanpan)
[![choco](https://img.shields.io/chocolatey/dt/suanpan?color=44cc11&label=choco%20install)](https://chocolatey.org/packages/suanpan)
[![flathub](https://img.shields.io/flathub/downloads/io.github.tlcfem.suanPan?label=flathub%20install)](https://flathub.org/apps/io.github.tlcfem.suanPan)
[![github](https://img.shields.io/github/downloads/TLCFEM/suanPan/total.svg?color=44cc11&label=github%20download)](https://github.com/TLCFEM/suanPan/releases)
[![docker](https://img.shields.io/docker/pulls/tlcfem/suanpan?color=44cc11)](https://hub.docker.com/r/tlcfem/suanpan/tags)
[![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)
[![codecov](https://codecov.io/gh/TLCFEM/suanPan/branch/dev/graph/badge.svg?token=65BF9DF697)](https://codecov.io/gh/TLCFEM/suanPan)
[![codacy](https://app.codacy.com/project/badge/Grade/1ea08c43edf342a8b00b21e585e63503)](https://app.codacy.com/gh/TLCFEM/suanPan/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![codefactor](https://www.codefactor.io/repository/github/tlcfem/suanpan/badge)](https://www.codefactor.io/repository/github/tlcfem/suanpan)
[![language](https://img.shields.io/github/languages/count/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan)
[![language](https://img.shields.io/github/languages/top/TLCFEM/suanPan.svg?color=44cc11&logo=c%2B%2B)](https://github.com/TLCFEM/suanPan)
[![size](https://img.shields.io/github/languages/code-size/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan)
[![issues](https://img.shields.io/github/issues/TLCFEM/suanPan.svg?color=44cc11)](https://github.com/TLCFEM/suanPan/issues)
[![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)

[![gplv3-or-later](https://www.gnu.org/graphics/gplv3-or-later.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html)

[![marketplace](https://img.shields.io/visual-studio-marketplace/v/tlc.suanpan?label=VS%20Code&color=44cc11)](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan)

> [!IMPORTANT]
> ***Check out the VS Code [extension](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan) for syntax
> highlighting and autocompletion.***

> [!IMPORTANT]
> ***Feature requests can be made via creating [new issues](https://github.com/TLCFEM/suanPan/issues/new/choose).***

## Introduction

[🧮 **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. **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/).

> [!IMPORTANT]
> Please check the documentation [here](https://tlcfem.github.io/suanPan-manual/latest/) for command references.
> For a summary of available functionalities, see [this](https://tlcfem.github.io/suanPan-manual/latest/SUMMARY/) page.
> Please star ⭐ the project!

![Alt](https://repobeats.axiom.co/api/embed/dc2e0bf6251aec5423157991015e9f2582618226.svg "Repobeats analytics image")

## Features

The highlights of **suanPan** are

- **suanPan** is *fast*, both memory and thread safe.
- **suanPan** is designed based on the [shared memory](https://en.wikipedia.org/wiki/Shared_memory) model and supports
  parallelism on heterogeneous architectures, for example, multi-core CPU + optional GPU. The parallelism is
  available
  for both element state updating and global matrix assembling.
- **suanPan** is open source and easy to be extended to incorporate user-defined elements, materials, etc.
- **suanPan** separates the FEA model part from the linear algebra operation part, which significantly reduces the
  complexity and cost of development of new models.
- **suanPan** utilizes the new language features shipped with the latest standards (C++11 to C++20), such as new STL
  containers, smart pointers, and many others.
- **suanPan** supports simple visualization supported by [VTK](https://vtk.org/).

> [!IMPORTANT]
> Both `amd64` and `arm64` architectures are supported.
> Check details on [Docker Hub](https://hub.docker.com/r/tlcfem/suanpan).

## Quick Start

Execute the application out-of-the-box in terminal on Linux using one of the following commands depending on how the
application is obtained. See details below.

```bash
# in folder bin/ for linux portable tarball
./suanPan.sh
# for linux packages and snap
suanPan
# for flatpak
flatpak run io.github.tlcfem.suanPan
```

Or on Windows,

```powershell
# in the folder containing suanPan.exe
.\suanPan.exe
```

First time users can use `overview` command to go through a quick introduction.

```text
+-----------------------------------------------------+
|   __        __            suanPan is an open source |
|  /  \      |  \              FEM framework (64-bit) |
|  \__       |__/  __   __         Betelgeuse (2.8.0) |
|     \ |  | |    |  \ |  |         by tlc @ 10fd6147 |
|  \__/ |__| |    |__X |  |       all rights reserved |
|                              10.5281/zenodo.1285221 |
+-----------------------------------------------------+
|  https://github.com/TLCFEM/suanPan                  |
|  https://tlcfem.github.io/suanPan-manual/latest     |
+-----------------------------------------------------+
|  https://gitter.im/suanPan-dev/community            |
+-----------------------------------------------------+

suanPan ~<> overview
```

Sample models are available for almost all models/commands. Please check the `Example` folder for details. Further
details can be seen [here](https://tlcfem.gitbook.io/suanpan-manual/tutorial/obtain) regarding how to run model files.

## Installation

> [!WARNING]
> Only the 64-bit version is compiled.
> It is assumed that [**AVX2**](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) is available thus if the program
> fails, please check if your CPU supports AVX2.
> Alternatively, you can try the `no-avx` version.

### Windows

> [!NOTE]
> It may be necessary to install the VC++ redistributable [package](https://aka.ms/vs/17/release/vc_redist.x64.exe).
> If the application prompts that some file, such as `msvcp140.dll`, is missing, please install the redistributable package.

#### Binary Package

The archives of binaries are released under [Release](https://github.com/TLCFEM/suanPan/releases) page.

1. `suanpan-win-mkl-vtk.zip` is the portable archive.
2. `suanpan-win-mkl-vtk.exe` is the installer.

#### Chocolatey

The binaries, which are compiled with Intel MKL and VTK, are available
on [Chocolatey](https://chocolatey.org/packages/suanpan), please use the following command to install the package.

1. Follow the [instructions](https://chocolatey.org/install) to install Chocolatey.

2. Use the following command to install `suanPan`.

   ```ps
   choco install suanpan
   ```

3. It is recommended to use a modern terminal such as [Windows Terminal](https://github.com/microsoft/terminal) for better output display.

The Chocolatey repo available to you may not be up-to-date.
If the latest version is not available, please try alternatives, such as portable binaries or scoop.

[![choco](Resource/choco.gif)](https://asciinema.org/a/684063)

#### Scoop

It is also possible to use [Scoop](https://scoop.sh/) to install the package.

1. Install [Scoop](https://scoop.sh/).

   ```ps
   Set-ExecutionPolicy RemoteSigned -scope CurrentUser
   iwr -useb get.scoop.sh | iex
   ```

2. Install `suanPan`.

   ```ps
   scoop install suanpan
   ```

### Linux

Linux users are recommended to obtain the binaries via `snap` or `flatpak`.

#### Snap

The snap supports visualisation via VTK and uses Intel MKL for linear algebra.
The edge channel is in sync with the `dev` branch.
The stable channel is in sync with the `master` branch.

[![snap](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/suanpan)

[![snap](Resource/snap.gif)](https://asciinema.org/a/684061)

#### Flatpak

Flatpak is also available if preferred.
The beta channel is in sync with the `dev` branch.
The stable channel is in sync with the `master` branch.

<a href='https://flathub.org/apps/details/io.github.tlcfem.suanPan'><img width='200' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.svg'/></a>

```bash
# add repo
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# or the beta channel
# flatpak remote-add --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo
# install
flatpak install suanPan
# define alias
echo "alias suanpan=\"flatpak run io.github.tlcfem.suanPan\"" >> ~/.bashrc
```

### Docker

It is also possible to compile the package via docker, check the dockerfiles under the `Script` folder, for any
questions please open an issue.

One can directly pull the image.
Using [Docker Hub](https://hub.docker.com/r/tlcfem/suanpan),

```bash
docker pull tlcfem/suanpan
```

Or using [GitHub Container Registry](https://github.com/TLCFEM/suanPan/pkgs/container/suanpan),

```bash
docker pull ghcr.io/tlcfem/suanpan
```

### Other Platforms

Precompiled binaries are provided via CI/CD on macOS, Windows, and Ubuntu.
Please download the file from the [release](https://github.com/TLCFEM/suanPan/releases) page.

A few flavors are available:

1. `vtk` --- visualisation support is enabled, with this you can record VTK files for postprocessing, however, OpenGL
   may be missing on server systems
2. `mkl` --- linear algebra operations are offloaded to MKL, which gives the optimal performance on Intel chips
3. `openblas` --- linear algebra operations are offloaded to OpenBLAS, which may outperform MKL on AMD platforms
4. `no-avx` --- AVX2 support is disabled, useful for older CPUs which do not support AVX2 instructions

Advanced users can compile the program from source by themselves to enable GPU based solvers which require
an available [CUDA](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) and/or MAGMA library.

Since CI/CD uses `GCC 11` (on Linux) and `Clang 13.0.1` (on macOS), it may be required to update/install
proper `libstdc++` (or `libc++`) version.
The easiest way is to install the same compiler.
For example, on Ubuntu 22.04,

```bash
# Ubuntu
sudo apt install gcc g++ gfortran libomp5
```

For VTK enabled versions, it may be necessary to install OpenGL.

```bash
# Ubuntu
sudo apt install libglvnd-dev
```

### Automation Related

#### VS Code

The VS Code extension is available [here](https://marketplace.visualstudio.com/items?itemName=tlc.suanpan).

#### Sublime Text

On Windows, a batch file named `AddAssociation.bat` is provided in the archive. It provides file associations and
prepares a proper working environment (build system, autocompletion, highlighting)
with [Sublime Text](https://www.sublimetext.com/). It also adds file associations with `.sp` and `.supan` files, please
run the `AddAssociation.bat` file with administrator privilege. [Sublime Text](https://www.sublimetext.com/)
autocompletion and syntax highlighting files are also provided. Please install Sublime Text first and execute the batch
file with the administrator privilege.

On Linux, a script file named as `suanPan.sh` is provided. By executing

```bash
./suanPan.sh --create-link
```

It adds Sublime Text autocompletion and syntax highlighting files to proper location if Sublime Text configuration
folder is found. It also adds a command alias `suanpan` to `~/.local/bin` and a desktop file
to `~/.local/share/applications`.

## Dependency

Additional libraries used in **suanPan** are listed as follows.

- [**ARPACK**](https://github.com/opencollab/arpack-ng)
- [**SPIKE**](http://www.spike-solver.org/) version 1.0
- [**FEAST**](http://www.feast-solver.org/) version 4.0
- [**SuperLU**](https://portal.nersc.gov/project/sparse/superlu/) version 6.0.1
- [**SuperLU MT**](https://portal.nersc.gov/project/sparse/superlu/) version 3.1
- [**OpenBLAS**](https://github.com/xianyi/OpenBLAS) version 0.3.29
- [**Lis**](https://www.ssisc.org/lis/) version 2.1.6
- [**TBB** Threading Building Blocks](https://github.com/oneapi-src/oneTBB) version 2022.0.0
- [**HDF5**](https://www.hdfgroup.org/solutions/hdf5/) version 1.14.5
- [**MUMPS**](https://mumps-solver.org/) version 5.7.3
- [**METIS**](http://glaros.dtc.umn.edu/gkhome/metis/metis/overview) version 5.1.0
- [**VTK**](https://vtk.org/) version 9.4
- [**CUDA**](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/) version 12.5
- [**MAGMA**](https://icl.utk.edu/magma/) version 2.8.0
- [**Armadillo**](http://arma.sourceforge.net/) version 14.2.3
- [**ensmallen**](https://ensmallen.org/) version 2.21.1
- [**oneMKL**](https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html) version 2025.0.1
- [**AMD Optimizing CPU Libraries (AOCL)**](https://www.amd.com/en/developer/aocl.html) version 5.0
- [**Catch2**](https://github.com/catchorg/Catch2) version 3.8.0
- [**fmt**](https://github.com/fmtlib/fmt) version 10.2.1
- [**whereami**](https://github.com/gpakosz/whereami)
- [**exprtk**](https://github.com/ArashPartow/exprtk) version 0.0.3
- [**magic_enum**](https://github.com/Neargye/magic_enum) version 0.9.7
- **thread_pool** abridged version of [`thread-pool`](https://github.com/bshoshany/thread-pool)

Those libraries may depend on other libraries such as [zlib](https://zlib.net/)
and [Szip](https://support.hdfgroup.org/doc_resource/SZIP/). Additional tools may be used by **suanPan**, they are

- [**UPX** the Ultimate Packer for eXecutables](https://upx.github.io/)

## How To Compile

Please refer to the corresponding [page](https://tlcfem.github.io/suanPan-manual/latest/Basic/Compile/) in
the manual for details.

## Happy Modelling

![an example simulation of particle collision](Resource/particle-collision.gif)

## Licence

[![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)
tools\suanPan.exe
md5: EA92C1C9534DD0FBB8A5BE53742D3565 | sha1: F746D472636E833A152ECD383E789A4B68233B0D | sha256: C1A6F75FF8B8C40E750A10F4BED694F0C5B2FD3581A2FE6B75883B1DB8945157 | sha512: 46538A7926BAFBDFD59BD5DA12FAF02E664A55384AFCBB9A7106F8411B5A291E8BB798D705003B0F0ADD1DC40B194D7AF0544A7AA167B19507DEABC1F596AADF
tools\suanPan.sublime-completions
 
tools\suanPan.sublime-syntax
 
tools\svml_dispmd.dll
md5: FFE3E9D3164C6BF14D9EACB31F13FE9B | sha1: 8FB1513242D736160CE3E1749833544FC2C61E4A | sha256: 415DBC87FF6328FA45B69CA25A5861E5E25F50B348DF67590ABB99839EFB9A90 | sha512: 78EB072F05BC0280B05DDF4EBB2A9D34CDA0CAEB4064600CDA865FEE87FF6783FA8FDAA8AED46C2A8B95125B8163BEFFB22F397E3A5A4CC256E7614F109E260B
tools\tbb12.dll
md5: 17E55134385C9649E594C9A3B4CD8FBA | sha1: 5168AC4EDF5C90180343F9E6FBFAB34757CA5E65 | sha256: 1B5A8D9CB8EB83B3D40368CF75989C0429ACF361A8BD96B4CFEEFDB8A818646C | sha512: 718C7F475CC912D0637767AF1A9CC65F90107DE46B3C558DEC8C62A2D778210049C6A31134215CC3F3049C15F4C307CAF6E6CAA04EFD8F3B20AB5E6BE4756EE9
tools\tbbmalloc.dll
md5: FF91941347718968D450059516114D75 | sha1: CA573C4BD4863AA0E1FCE2FC9C6D72142594B608 | sha256: 7E4170EE79E514585D3DE5945E76ED9CF04812E60D570D9F00386F5A204F8BD7 | sha512: 7F627E07D36C9EF2914A1FCD3D37C9299F54F5E2F4BCA1A751B37A7969C1973BFE9A0C47CC68BCEAB9AC754DC03A2E3AF1A6EE606F63BD28A5928E3222FD0792
tools\tbbmalloc_proxy.dll
md5: CEFF9D1A3FD7D5C79CF81023F6E29A3F | sha1: FEB762664B211196EAF22C4B69D919A4218443CB | sha256: EFFAD93B2DA0DE4929832374762C86E48B954EDF3F171E46508D7C5996757A6D | sha512: 54CEE161C4CBC6C4167B137F4AE70AF3FFE5A0DAA18F132EADE5E71A31FE4874E4C28D4B301EA5AC443745E2B25A550B19CF307F8B86F77A7E4BC15BA0AAEE84
tools\vcomp140.dll
md5: D1C40897546D939908544241CED181A7 | sha1: 2DF4F5969C1BEEEEF5188145D3A3F9885B214069 | sha256: 48B2CFFA42A5064BA299EFF1733753F4FA042D9D452C49C11D4FAD27360F78AE | sha512: B935CF900B326B55429B1F61583001F1AF13401756950B9237C029A8C9B766525C2015B600A7A9248CA54651D17372E49D721F40A4D21B61A5777237A94655C3
tools\vcruntime140.dll
md5: CAF9EDDED91C1F6C0022B278C16679AA | sha1: 4812DA5EB86A93FB0ADC5BB60A4980EE8B0AD33A | sha256: 02C6AA0E6E624411A9F19B0360A7865AB15908E26024510E5C38A9C08362C35A | sha512: 32AC84642A9656609C45A6B649B222829BE572B5FDEB6D5D93ACEA203E02816CF6C06063334470E8106871BDC9F2F3C7F0D1D3E554DA1832BA1490F644E18362
tools\vcruntime140_1.dll
md5: 2BD576CBC5CB712935EB1B10E4D312F5 | sha1: DFA7A46012483837F47D8C870973A2DEA786D9FF | sha256: 7DD9AA02E271C68CA6D5F18D651D23A15D7259715AF43326578F7DDE27F37637 | sha512: ABBD3EB628D5B7809F49AE08E2436AF3D1B69F8A38DE71EDE3D0CB6E771C7758E35986A0DC0743B763AD91FD8190084EE5A5FBE1AC6159EB03690CCC14C64542
tools\VERIFICATION.txt
VERIFICATION
	To verify, please visit https://github.com/TLCFEM/suanPan/releases where the same archive is uploaded.

DEPENDENCY
	libifcoremd.dll : aaa9b0aa477a574ee6587c97a225561fb4247a007d7586ce1b5c5cfb31cdc728
	libiomp5md.dll : f608eedb25e44de3db1d3db984ac113f3a8406a92ea87061a77f390852fe1174
	libmmd.dll : e2b0066f3f4479439d5f008c74482b78ed13203d62c2ecb480cc12b4d78a01fa
	msvcp140.dll : a4c2229bdc2a2a630acdc095b4d86008e5c3e3bc7773174354f3da4f5beb9cde
	svml_dispmd.dll : 415dbc87ff6328fa45b69ca25a5861e5e25f50b348df67590abb99839efb9a90
	tbb12.dll : 1b5a8d9cb8eb83b3d40368cf75989c0429acf361a8bd96b4cfeefdb8a818646c
	tbbmalloc.dll : 7e4170ee79e514585d3de5945e76ed9cf04812e60d570d9f00386f5a204f8bd7
	tbbmalloc_proxy.dll : effad93b2da0de4929832374762c86e48b954edf3f171e46508d7c5996757a6d
	vcomp140.dll : 48b2cffa42a5064ba299eff1733753f4fa042d9d452c49c11d4fad27360f78ae
	vcruntime140.dll : 02c6aa0e6e624411a9f19b0360a7865ab15908e26024510e5c38a9c08362c35a
	vcruntime140_1.dll : 7dd9aa02e271c68ca6d5f18d651d23a15d7259715af43326578f7dde27f37637

EXECUTABLE
	suanPan.exe : c1a6f75ff8b8c40e750a10f4bed694f0c5b2fd3581a2fe6b75883b1db8945157

TEXT
	AddAssociation.bat
	suanPan.sublime-completions
	suanPan.sublime-syntax
	LICENSE
	CHANGELOG.md
	README.md

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status
suanPan 3.5.0 56 Wednesday, September 11, 2024 Approved
suanPan 3.4.0 62 Saturday, May 11, 2024 Approved
suanPan 3.3.0 78 Tuesday, January 23, 2024 Approved
suanPan 3.2.0 60 Monday, November 6, 2023 Approved
suanPan 3.1.0 73 Sunday, October 1, 2023 Approved
suanPan 3.0 161 Saturday, May 13, 2023 Approved
suanPan 2.9 104 Saturday, February 25, 2023 Approved
suanPan 2.8 102 Friday, January 20, 2023 Approved
suanPan 2.7 108 Wednesday, December 21, 2022 Approved
suanPan 2.6.1 72 Wednesday, November 9, 2022 Approved
suanPan 2.6 80 Saturday, November 5, 2022 Approved
suanPan 2.5 74 Friday, August 12, 2022 Approved
suanPan 2.4 101 Friday, June 17, 2022 Exempted
suanPan 2.3 94 Saturday, May 14, 2022 Approved
suanPan 2.2 150 Tuesday, April 5, 2022 Approved
suanPan 2.1 138 Sunday, February 13, 2022 Approved
suanPan 2.0 111 Wednesday, January 12, 2022 Approved
suanPan 1.9 98 Saturday, November 13, 2021 Approved
suanPan 1.8 99 Saturday, September 25, 2021 Approved
suanPan 1.7 145 Sunday, August 1, 2021 Approved
suanPan 1.6 125 Saturday, June 26, 2021 Approved
suanPan 1.5 139 Wednesday, May 26, 2021 Approved
suanPan 1.4 105 Saturday, April 24, 2021 Approved
suanPan 1.3 155 Saturday, March 20, 2021 Approved
suanPan 1.2 175 Friday, February 12, 2021 Approved
suanPan 1.1 145 Sunday, January 10, 2021 Approved
suanPan 1.0 200 Sunday, October 18, 2020 Approved

This package has no dependencies.

Discussion for the suanPan Package

Ground Rules:

  • This discussion is only about suanPan and the suanPan package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or suanPan, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus