Barba、Lorena A.、Forsyth、Gilbert F. (2018) として引用してください。 CFD Python: ナビエ・ストークス方程式への 12 ステップ。オープンソース教育ジャーナル、 1 (9)、21、https://doi.org/10.21105/jose.00021
CFD Python 、別名Navier-Stokes への 12 ステップは、流体の流れの物理学を記述する基本的な偏微分方程式の解をコーディングすることによって、数値流体力学 (CFD) の基礎を学習するための実践的なモジュールです。このモジュールは、2009 年から 2013 年にかけてボストン大学の機械工学科でロレーナ バーバ教授が教えたコースの一部でした (バーバ教授はその後ジョージ ワシントン大学に異動しました)。
このモジュールは、(言語を問わず) 基本的なプログラミング知識と、偏微分方程式と流体力学に関するある程度の背景のみを前提としています。 「ステップ」は、2011 年までバーバ教授の研究室で博士研究員を務めていた横田リオ博士のアイデアからインスピレーションを得たもので、レッスンは、CFD コースを教えるバーバ教授とその生徒たちによって数学期にわたって改良されました。私たちは 2013 年にアルゼンチンのメンドーサで 2 日間の集中コースを教えるために、この一連の Jupyter ノートブックを作成しました。
これらのステップを(スキップせずに)生徒たちをガイドすることで、生徒たちは多くの貴重な教訓を学びます。演習の段階的な性質により、各課題の終了時に達成感が得られ、少ない労力で学習していると感じることができます。進歩するにつれて、コードの再利用を自然に実践し、プログラミングとプロットのテクニックを段階的に学習します。結果を分析しながら、数値の拡散、精度、収束について学びます。定期的にスケジュールされたコースを約 4 週間受講すると、彼らはある程度熟練したプログラマーになり、より理論的な問題について議論し始める意欲が高まります。
大学の定期コースでは、学生はCFD Pythonレッスンを 4 ~ 5 週間で完了できます。このモジュールは集中的なチュートリアルとして、学習者のこれまでの経験に応じて丸 2 日または 3 日で完了できます。レッスンは自習用としてもご利用いただけます。いずれの場合も、学習者は、新しい Jupyter ノートブックにコードを再入力し、実際に試しながらオリジナルのメモを取るなど、各レッスンの実際に実行された例に従う必要があります。
Binder サービスを使用して、このモジュールとの対話型セッションを開始します。
ステップ 1 ~ 4 は 1 つの空間次元内にあります。ステップ 5 ~ 10 は 2 次元 (2D) です。ステップ 11 ~ 12 では、ナビエ・ストークス方程式を 2D で解きます。 3 つの「ボーナス」ノートブックでは、数値安定性のための CFL 条件、NumPy による配列操作、Python での関数の定義について説明します。
これらのレッスンを使用するには、Python 3 と科学 Python の標準スタック (NumPy、Matplotlib、SciPy、Sympy) が必要です。そしてもちろん、Web ブラウザ上で実行される対話型の計算環境である Jupyter が必要です。
このミニコースは、Python コードに関する文書と練り上げられたソリューションを含む Jupyter ノートブックのセットとして構築されています。この教材に取り組むには、新しいノートブックで各レッスンを開始し、コードの各行を入力し (コピーアンドペーストしないでください)、パラメータを変更して何が起こるかを確認しながら進めていくことをお勧めします。
インストール後、パッケージが最新であることを確認するために、ターミナルで次のコマンドを実行します。
conda update conda
conda update jupyter numpy sympy scipy matplotlib
Miniconda (ディスク領域を節約する Anaconda のミニバージョン) を使用する場合は、ターミナルで次のコマンドを実行して、このコースを受講するために必要なライブラリをすべてインストールします。
conda update conda
conda install jupyter
conda install numpy scipy sympy matplotlib
pip install jupyter
また、次のコマンドを実行して、必要なライブラリがインストールされていることを確認してください。
pip install numpy scipy sympy matplotlib
私たちはプル リクエストを通じて貢献を受け付けています。実際、すでに何人かのユーザーが修正や小さな改善を加えたプル リクエストを送信しています。バグを見つけた場合や提案がある場合は、問題をオープンすることもできます。
(c) 2017 ロレーナ A. バーバ、ギルバート F. フォーサイス。すべてのコンテンツはクリエイティブ コモンズ表示 CC-BY 4.0 に基づいており、すべてのコードは BSD-3 条項に基づいています (以前は MIT に基づいていましたが、2018 年 3 月 8 日に変更されました)。
コンテンツを何らかの形で再利用していただければ幸いです。