返回 编程语言
Awesome Scientific Computing
Awesome scientific computing
Awesome Scientific Computing
¶
> 科学计算和数值分析的有用资源.
科学计算和数值分析是旨在提供 在科学的帮助下解决来自各个科学领域的大规模问题的方法 电脑. 典型问题是常微分方程和偏微分方程(ODE, PDEs),它们的离散化,以及由以下问题引起的线性代数问题的解 them.
Basic linear algebra¶
- BLAS - 用于执行基本向量和矩阵运算的标准构建块. (Fortran,公共领域, GitHub)
- OpenBLAS - 基于GotoBLAS2优化的BLAS库. (C 和汇编,BSD, GitHub)
- BLIS - 类似于 BLAS 的高性能密集线性代数库. (C, BSD, GitHub)
- LAPACK - 求解线性方程组、线性最小二乘法、特征值问题等的例程. (Fortran, BSD, GitHub)
- Eigen - 用于线性代数的 C++ 模板库. (C++,MPL 2, GitLab)
- Ginkgo - 高性能众核线性代数库,专注于稀疏系统. (C++, BSD, GitHub)
- blaze - 用于密集和稀疏算术的高性能 C++ 数学库. (C++, BSD, 比特桶)
Multi-purpose toolkits¶
- PETSc - 由 PDE 建模的科学应用程序的并行解决方案. (C, 2-clause BSD, GitLab)
- DUNE Numerics - 使用基于网格的方法求解偏微分方程的工具箱. (C++, GPL 2, GitLab)
- SciPy - 用于统计、优化、集成、线性代数等的 Python 模块. (Python,主要是 BSD, GitHub)
- NumPy - 使用 Python 进行科学计算所需的基础包. (蟒蛇,BSD, GitHub)
- DifferentialEquations.jl - 用于数值求解不同类型微分方程的工具箱. (朱莉娅,麻省理工学院, GitHub)
Finite Elements¶
- FEniCS - 用 Python 和 C++ 求解偏微分方程的计算平台. (C++/Python,LGPL 3, GitHub/Bitbucket)
- libMesh - 使用非结构化离散化的 PDE 数值模拟框架. (C++,LGPL 2.1, GitHub)
- deal.II - 支持创建有限元代码的软件库. (C++,LGPL 2.1, GitHub)
- Netgen/NGSolve - 高性能多物理场有限元软件. (C++,LGPL 2.1, GitHub)
- Firedrake - 使用有限元法求解偏微分方程的自动化系统. (蟒蛇,LGPL 3, GitHub)
- MOOSE - 多物理场面向对象仿真环境. (C++,LGPL 2.1, GitHub)
- MFEM - 用于有限元方法的免费、轻量级、可扩展的 C++ 库. (C++, BSD-3-Clause, GitHub)
- SfePy - Python 中的简单有限元. (蟒蛇,BSD, GitHub)
- FreeFEM - 高级多物理场-多网格有限元语言. (C++, LGPL, GitHub)
- libceed - 高效可扩展离散化代码. (C, 2-clause BSD, GitHub)
- scikit-fem - 简单的有限元装配器. (Python、BSD/GPL、GitHub)
Meshing¶
Triangular and tetrahedral meshing¶
- Gmsh - 具有预处理和后处理设施的三维有限元网格生成器. (C++, GPL, GitLab)
- pygmsh - Gmsh 的 Python 接口. (Python、GPL 3、GitHub)
- MeshPy - 优质的三角形和四面体网格生成. (蟒蛇,麻省理工学院, GitHub)
- CGAL - 计算几何算法. (C++,混合 LGPL/GPL, GitHub)
- pygalmesh - 用于 CGAL 的 3D 网格划分功能的 Python 接口. (Python、GPL 3、GitHub)
- TetGen - 优质四面体网格生成器和 3D Delaunay 三角剖分器. (C++,AGPLv3)
- Triangle - 二维质量网格生成器和 Delaunay 三角剖分器. (C,非自由软件)
- distmesh - 用于非结构化三角形和四面体网格的简单生成器. (MATLAB,GPL 3)
- trimesh - 加载和使用三角形网格,重点是水密表面. (蟒蛇,麻省理工学院, GitHub)
- dmsh - 受 distmesh 启发的非结构化三角形网格的简单生成器. (Python,专有,GitHub)
- TetWild - 为三角形表面网格生成四面体网格. (C++, GPL 3, GitHub)
- TriWild - 具有曲线约束的稳健三角测量. (C++,MPL 2, GitHub)
- fTetWild - 与 TetWild 相同,但速度更快. (C++,MPL 2, GitHub)
- SeismicMesh - 平行 2D/3D 三角形/四面体网格生成,去除条子. (Python 和 C++,GPL 3,GitHub)
Quadrilateral and hexahedral meshing¶
- QuadriFlow - 来自三角测量的可扩展且强大的四边形测量. (C++, BSD, GitHub)
Mesh tools¶
- meshio - 各种网格格式的 I/O,文件转换. (Python、麻省理工学院、GitHub)
- MOAB - 表示和评估网格数据. (C++,主要是 LGPL 3, Bitbucket)
- optimesh - 三角网格平滑. (Python,专有,GitHub)
- pmp-library - 多边形网格处理库. (C++,麻省理工学院与雇主免责声明, GitHub)
- Mmg - 用于重新划分网格的强大、开源和多学科软件. (C,LGPL 3, GitHub)
- meshplex - 单纯形网格的快速工具. (Python,专有,GitHub)
Data formats¶
- NetCDF - 面向阵列的科学数据的软件库和数据格式. (C/C++/Fortran/Java/Python,自定义开源 许可, GitHub)
- HDF5 - 用于存储和管理数据的数据模型、库和文件格式. (C/Fortran, BSD, GitHub)
- XDMF - 高性能计算代码数据的可扩展数据模型和格式. (C++, GitLab)
- Zarr - 用于存储分块、压缩、N 维数组的格式. (蟒蛇,麻省理工学院, GitHub)
Sparse linear solvers¶
- SuperLU - 大型、稀疏、非对称线性方程组的直接解. (C,主要是 BSD, GitHub)
- PyAMG - Python 中的代数多重网格求解器. (蟒蛇,麻省理工学院, GitHub)
- hypre - 高性能预调节器和求解器库. (C,Apache 2.0/麻省理工学院, GitHub)
Visualization¶
- ParaView - 基于VTK的多平台数据分析和可视化应用. (C++, BSD, GitLab)
- VTK - 处理图像并创建 3D 计算机图形. (C++, BSD, GitLab)
- Mayavi - Python 中的 3D 科学数据可视化和绘图. (蟒蛇,BSD, GitHub)
- Polyscope - 用于 3D 几何处理的查看器和用户界面. (C++,麻省理工学院, GitHub)
- PyVista - 通过 VTK 的简化界面进行 3D 绘图和网格分析. (蟒蛇,麻省理工学院, GitHub)
- vedo - 基于 VTK 的 3D 对象的科学分析和可视化库. (蟒蛇,麻省理工学院, GitHub)
- yt - 用于体积数据分析和可视化的工具包. (蟒蛇,BSD, GitHub)
- F3D - 具有科学可视化工具的跨平台、快速且简约的 3D 查看器. (C++, BSD, GitHub)
- TTK - 拓扑数据分析和可视化. (C++/Python, BSD, GitHub)
- morphologica - 仅标头的现代 OpenGL 代码可在运行时可视化数值模拟. (C++、阿帕奇 2.0、GitHub)
Other libraries and tools¶
- FFTW - 一维或多维离散傅里叶变换,任意输入大小,实数和复数. (C,GPL2, GitHub)
- Qhull - 凸包、Delaunay 三角剖分、Voronoi 图、关于点的半空间交集等. (C/C++, custom open source license, GitHub)
- GSL - 随机数生成器、特殊函数和最小二乘拟合等. (C/C++,GPL 3, Savannah)
- OpenFOAM - 免费、开源的 CFD(计算流体动力学)软件. (C++, GPL 3, GitHub)
- quadpy - Python 中的数值积分(正交、立方). (Python,专有,GitHub)
- FiPy - 有限体积 PDE 求解器. (Python,[自定义开源 许可证](https://www.nist.gov/open/copyright-fair-use-and-licensing-statements-srd-data-software-and-technical-series-publications), GitHub)
- accupy - Python 的准确求和和点积. (Python、GPL 3、GitHub)
- SLEPc - Scalable Library for Eigenvalue Problem Computations. (C, 2-clause BSD, GitLab)
- Chebfun - 计算精度约为 15 位数字的函数. (MATLAB,BSD, GitHub)
- pyMOR - 使用 Python 减少模型订单. (Python, 2-clause BSD, GitHub)
- cvxpy - 凸优化问题的建模语言. (蟒蛇,阿帕奇2.0, GitHub)
- PyWavelets - Python 中的小波变换. (蟒蛇,麻省理工学院, GitHub)
- NFFT - 非等空间快速傅立叶变换. (C/MATLAB,GPL 2, GitHub)
- preCICE - 用于分区多物理仿真(FSI、CHT 等)的耦合库. (C++,LGPL 3, GitHub)
- orthopy - 有效地计算正交多项式. (Python,专有,GitHub)
- pyGAM - Python 中的广义加法模型. (蟒蛇,阿帕奇2.0, GitHub)
- Dedalus - 用谱法求解偏微分方程. (蟒蛇,GPL 3, GitHub)
- PyGMO - 大规模并行优化. (Python/C++,MPL 2, GitHub)
- shenfun - 用于光谱 Galerkin 方法的高性能 Python 库. (蟒蛇,BSD-2, GitHub)
- PyDMD - Python 中的动态模式分解 (DMD). (Python、麻省理工学院、GitHub)
- HPDDM - 域分解方法的高性能统一框架. (C++,LGPL 3,GitHub)
Community¶
- SciComp StackExchange - StackExchange 网络上的计算科学.
- Wolfgang Bangerth's video class - MATH 676:科学计算中的有限元方法.
- Nick Higham's blog - 主要是关于 MATLAB,一般计算建议.
- Nick Trefethen's Video Lectures - 36 个关于逼近理论/实践和科学计算的视频讲座.
- John D. Cook's blog - 科学计算的壮举.
- Jack Dongarra's software list - 用于解决线性代数问题的免费软件列表.
- NA Digest - 收集与数值分析相关的主题的文章和实践者.
- Gabriel Peyré on Twitter - 每天一条关于计算数学的推文.
- Discord: Numerical Software - 数字软件上的 Discord 消息服务器.
