Awesome Scientific Computing
Scientific Computingを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
目次
基礎線形代数
- BLAS - 基本的なベクトル・行列演算を実行するための標準的な構成要素。 (Fortran、パブリックドメイン、GitHub)
- OpenBLAS - GotoBLAS2を基にした最適化済みBLASライブラリ。 (CおよびAssembly、BSD、GitHub)
- BLIS - 高性能なBLAS風の密行列線形代数ライブラリ。 (C、BSD、GitHub)
- LAPACK - 線形方程式系、線形最小二乗、固有値問題などを解くためのルーチン。 (Fortran、BSD、GitHub)
- Eigen - 線形代数のためのC++テンプレートライブラリ。 (C++、MPL 2、GitLab)
- Ginkgo - 疎行列系に焦点を当てた高性能manycore線形代数ライブラリ。 (C++、BSD、GitHub)
- blaze - 密・疎算術向けの高性能C++数学ライブラリ。 (C++、BSD、Bitbucket)
多目的ツールキット
- PETSc - PDEでモデル化された科学アプリケーションを並列に解くためのツール。 (C、2条項BSD、GitLab)
- DUNE Numerics - 格子ベース手法でPDEを解くためのツールボックス。 (C++、GPL 2、GitLab)
- SciPy - 統計、最適化、積分、線形代数などのPythonモジュール。 (Python、主にBSD、GitHub)
- NumPy - Pythonで科学計算を行うための基礎パッケージ。 (Python、BSD、GitHub)
- DifferentialEquations.jl - さまざまな種類の微分方程式を数値的に解くためのツールボックス。 (Julia、MIT、GitHub)
有限要素
- FEniCS - PythonとC++でPDEを解くための計算プラットフォーム。 (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 - 有限要素法によるPDE解法の自動化システム。 (Python、LGPL 3、GitHub)
- MOOSE - マルチフィジクスのオブジェクト指向シミュレーション環境。 (C++、LGPL 2.1、GitHub)
- MFEM - 有限要素法のための自由で軽量かつスケーラブルなC++ライブラリ。 (C++、BSD-3-Clause、GitHub)
- SfePy - Pythonによるシンプルな有限要素。 (Python、BSD、GitHub)
- FreeFEM - 高水準のマルチフィジクス・マルチメッシュ有限要素言語。 (C++、LGPL、GitHub)
- libceed - 効率的で拡張可能な離散化のためのコード。 (C、2条項BSD、GitHub)
- scikit-fem - シンプルな有限要素アセンブラ。 (Python、BSD/GPL、GitHub)
メッシュ生成
三角形・四面体メッシュ生成
- Gmsh - 前処理・後処理機能を備えた三次元有限要素メッシュジェネレーター。 (C++、GPL、GitLab)
- pygmsh - Gmsh用Pythonインターフェース。 (Python、GPL 3、GitHub)
- MeshPy - 高品質な三角形・四面体メッシュ生成。 (Python、MIT、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 - 水密表面を重視して三角形メッシュを読み込み・使用するライブラリ。 (Python、MIT、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)
四角形・六面体メッシュ生成
- QuadriFlow - 三角分割からスケーラブルかつ堅牢に四角形分割を行う。 (C++、BSD、GitHub)
メッシュツール
- meshio - 各種メッシュ形式のI/Oとファイル変換。 (Python、MIT、GitHub)
- MOAB - メッシュデータの表現と評価。 (C++、主にLGPL 3、Bitbucket)
- optimesh - 三角形メッシュの平滑化。 (Python、プロプライエタリ、GitHub)
- pmp-library - 多角形メッシュ処理ライブラリ。 (C++、雇用主免責付きMIT、GitHub)
- Mmg - 再メッシュのための堅牢なオープンソース・マルチディシプリナリソフトウェア。 (C、LGPL 3、GitHub)
- meshplex - 単体メッシュ向けの高速ツール。 (Python、プロプライエタリ、GitHub)
データ形式
- NetCDF - 配列指向の科学データ向けソフトウェアライブラリおよびデータ形式。 (C/C++/Fortran/Java/Python、カスタムオープンソース ライセンス、 GitHub)
- HDF5 - データを保存・管理するためのデータモデル、ライブラリ、ファイル形式。 (C/Fortran、BSD、GitHub)
- XDMF - 高性能計算コード由来のデータに向けた拡張可能なデータモデル・形式。 (C++、GitLab)
- Zarr - チャンク化・圧縮されたN次元配列を保存する形式。 (Python、MIT、GitHub)
疎行列線形ソルバー
- SuperLU - 大規模・疎・非対称な線形方程式系の直接解法。 (C、主にBSD、GitHub)
- PyAMG - Pythonの代数的マルチグリッドソルバー。 (Python、MIT、GitHub)
- hypre - 高性能な前処理器・ソルバーのライブラリ。 (C、Apache 2.0/MIT、GitHub)
可視化
- ParaView - VTKに基づくマルチプラットフォームのデータ分析・可視化アプリケーション。 (C++、BSD、GitLab)
- VTK - 画像を処理し、3Dコンピューターグラフィックスを作成する。 (C++、BSD、GitLab)
- Mayavi - Pythonで科学データの3D可視化とプロットを行う。 (Python、BSD、GitHub)
- Polyscope - 3D幾何処理用のビューアーおよびユーザーインターフェース。 (C++、MIT、GitHub)
- PyVista - VTK向けの合理化されたインターフェースによる3Dプロットとメッシュ解析。 (Python、MIT、GitHub)
- vedo - VTKに基づく3Dオブジェクト向け科学解析・可視化ライブラリ。 (Python、MIT、GitHub)
- yt - 体積データの解析・可視化ツールキット。 (Python、BSD、GitHub)
- F3D - 科学可視化ツールを備えたクロスプラットフォーム、高速、ミニマルな3Dビューアー。 (C++、BSD、GitHub)
- TTK - 位相データ解析と可視化。 (C++/Python、BSD、GitHub)
- morphologica - 実行時に数値シミュレーションを可視化する、ヘッダーのみのモダンなOpenGLコード。 (C++、Apache 2.0、GitHub)
その他のライブラリとツール
- FFTW - 任意の入力サイズ・実数・複素数に対応する、1次元以上の離散フーリエ変換。 (C、GPL2、GitHub)
- Qhull - 凸包、Delaunay三角分割、Voronoi図、点まわりの半空間交差など。 (C/C++、カスタムオープンソースライセンス、 GitHub)
- GSL - 乱数生成器、特殊関数、最小二乗フィッティングなど。 (C/C++、GPL 3、Savannah)
- OpenFOAM - 自由なオープンソースCFD(計算流体力学)ソフトウェア。 (C++、GPL 3、GitHub)
- quadpy - Pythonで数値積分(求積・多重積分)を行う。 (Python、プロプライエタリ、GitHub)
- FiPy - 有限体積法PDEソルバー。 (Python、カスタムオープンソース ライセンス、 GitHub)
- accupy - Pythonで正確な和と内積を計算する。 (Python、GPL 3、GitHub)
- SLEPc - スケーラブルな固有値問題計算ライブラリ。 (C、2条項BSD、GitLab)
- Chebfun - 約15桁精度で関数を計算する。 (MATLAB、BSD、GitHub)
- pyMOR - Pythonによるモデル次数低減。 (Python、2条項BSD、GitHub)
- cvxpy - 凸最適化問題のモデリング言語。 (Python、Apache 2.0、GitHub)
- PyWavelets - Pythonでウェーブレット変換を行う。 (Python、MIT、GitHub)
- NFFT - 非等間隔高速フーリエ変換。 (C/MATLAB、GPL 2、GitHub)
- preCICE - 分割マルチフィジクスシミュレーション(FSI、CHTなど)の結合ライブラリ。 (C++、LGPL 3、GitHub)
- orthopy - 直交多項式を効率よく計算する。 (Python、プロプライエタリ、GitHub)
- pyGAM - Pythonの一般化加法モデル。 (Python、Apache 2.0、GitHub)
- Dedalus - スペクトル法で偏微分方程式を解く。 (Python、GPL 3、GitHub)
- PyGMO - 大規模並列最適化。 (Python/C++、MPL 2、GitHub)
- shenfun - スペクトルGalerkin法のための高性能Pythonライブラリ。 (Python、BSD-2、GitHub)
- PyDMD - 動的モード分解(DMD)。 (Python、MIT、GitHub)
- HPDDM - 領域分割法のための高性能統合フレームワーク。 (C++、LGPL 3、GitHub)
コミュニティ
- 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 Bluesky - 計算数学について毎日1件投稿。
- Discord: Numerical Software - 数値ソフトウェアに関するDiscordメッセージングサーバー。