Colabでアニメーション作成する。Colabでアニメーション作成する。2021年5月4日こんにちは(@t_kun_kamakiri)。Colabでアニメーション作成を行いました。Colabでアニメーション作成する。今回は、以下のような2次元の拡散方程式をPythonで実装します。今日作成する動画は以下のような感じになります。1次元の拡散方程式については、以前の記事でも書きましたが今回はその2次元バージョンというわけです。カマキリ今日もゆる~く学びます(^^)/本件の基本的な内容はこちらのサイトにそってやっていきます。この記事ではこんな人を対象にしています。本記事シリーズの最終目標は、ナビエストークス方程式をPythonで実装することですが、いきなりナビエストークス方程式を実装するのは難しいので各項の意味を確認しながら進めていきたいと思います。数値流体の書籍2次元の拡散方程式まずは、解くべき方程式の確認を行いましょう。y^2}\tag{1}\end{align*}これを数値計算できるように空間微分に対して2次精度の中心差分を施して以下のように離散化します。y^2}\tag{2}\end{align*}空間微分に対しては、数値計算の安定性のために後退差分で行います。v_{i,j-1}^n)\tag{3}\end{align*}上記のような偏微分方程式の場合は、時々刻々と変化する物理量(今の場合は流速)に対して解くので初期状態を設定しないと解くための種がありません。いうわけで、初期状態を設定します。初期状態を以下のようにします。\text{それ以外}\end{matrix}\end{cases}\tag{4}\end{align*}さらに、数値計算は有限の大きさに対して解くので計算領域の端に対して数値を設けないと問題を解くことができません。以下のように境界条件を設定します。境界条件を以下のようにします。\end{matrix}\end{cases}\end{align*}では、Pythonを使って2次元の移流方程式を解いてみましょう。2次元の拡散方程式をPythonで実装するまずは必要なライブラリをインポートします。animation次に、「条件設定」と「初期状態設定」を行います。2では、初期状態のプロファイルを確認してみましょう!Matplotlibを使って可視化してみます。このようになっています。次にスライスを使って(3)式の偏微分方程式の離散化を数値計算で求めましょう。2.5)ax.set_xlabel('$x$')ax.set_ylabel('$y$')計算時間短縮のためvについては解いていません。メイン部分は関数にまとめておくことにします。することでntを引数に入れることでほしい時間帯(正確にはステップ数)でのuのプロファイルを可視化することができますこちらの記事で扱ったようにスライスを使っています。「nt=10(ステップ数が10)」の場合のuのプロファイルを見てみましょう!Pythondiffuse(10)1diffuse(10)【結果】では、「nt=30(ステップ数が30)」の場合のuのプロファイルは?こんな感じで拡散しているのがわかりますね(^^♪どうせならアニメーションにしたい先ほどのように静止画でuのプロファイルを見るよりも、やっぱりアニメーションにしたいですよね。アニメーションの作成には以下の2つあります。matplotlib.animation.ArtistAnimation:グラフのオブジェクトのリストを格納することでアニメーションを作成する。matplotlib.animation.FuncAnimation:グラフ行進用の関数を用意して逐一更新しながらアニメーションを作成する。今回は、「matplotlib.animation.FuncAnimation」と使ってアニメーションを作成しています。antialiased=True)※計算時間短縮のために、\(y\)方向の速度\(v\)については解かないようにしています。50)HTML(ani.to_html5_video())【結果】https://takun-physics.net/wp-content/uploads/2020/05/20200531_141415.mp4じゃっかん残像を残しながらアニメーションが進みますが・・・・アニメーションは完成です。まとめ今回は、2次元の拡散方程式をPythonで実装してアニメーション作成を行いました。前回の記事の内容とあまり変わらず復習程度のないようになりましたが、本記事のシリーズを読むことでPythonを使ったナビエストークス方程式の実装まではいけると思いますので、是非最後までお付き合いくださいm(__)mおすすめの書籍紹介ネット上には無料で多くのことが学べるのですが、ネット情報だけだと情報が偏ったりします。書籍を手に取って体系だって学んだ方が良い場合も多いです。初心者でもので体系だって学ぶことができる、且つあまり難しすぎない書籍をここで紹介しておきます。Pythonの完全初心者は書籍で学ぶとよいPython自体が不安だという方は、こちらの書籍から勉強しても良いかも知れません。☟こちらの本がPython初心者が挫折することなく勉強できる本です。04:45時点)Amazon楽天市場YahooAmazonの情報を掲載しています僕自身もこの書籍ではじめは勉強しました。小難しい余計なことが書いていないし、年末の一週間くらいで読むことができたので、初心者の方にはとてもお勧めです。流体の数値計算以前に、流体力学を勉強しないと!!って思っている方は以下の参考書からはじめてみるのが良いと思います。09:20時点)Amazon楽天市場YahooAmazonの情報を掲載しています工学よりに書かれていて実用的な内容も触れながら、流体の理論的な内容も易しく書かれていますので大学1年生で偏微分を学んだ方にとってはちょうどよい参考書です。本記事で紹介している数値計算手法は、多くの数値解法のごく一部です。非線形方程式で記述できる流体現象のようなものは注意深く数値解法を選択しなくてはいけません。以下の書籍は、値段が高いですが有限体積法をメインに数値解法がとても詳しく解説されています。kamakiri宇宙に入ったカマキリPython【Python初心者】クラスの継承の基本定義とコードの書き方を解説する。し」と「値渡し」の違いを理解する。kamakiri宇宙に入ったカマキリPython【数値流体(1次元移流方程式)】ExcelからPythonコードを実行する。関数の基本を理解しよう。kamakiri宇宙に入ったカマキリPython【第1回Python流体の数値計算】目標と環境構築。コメントをキャンセルメールアドレスが公開されることはありません。C...【第13回Python流体の数値計算】2次元バーガース方程式をGoogl...製造業コミュニティ製造業コミュニティは製造業で働く方や製造業へ就職を考えている学生の方が匿名で気軽に情報交換を出来るオンラインコミュニティです。本が聴けるアプリAudible(オーディブル)☟30日間の無料体験(最初の1冊は無料)プロフィールカマキリ(^^)大学の専攻は物性理論で、Fortranを使って数値計算をしていました。CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。CAE解析(流体解析)notenoteで内容は主に「プログラミング言語」の勉強の進捗を書いています。「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。1DCAEの操作方法などを動画にしています。(音声はありません_(._.)_)製造業コミュニティをやっています。Facebookを使った実名登録。製造業ブロガーコミニティ案内オンライン家庭教師のご要望あればご連絡ください。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています。・当メディアはGoogleによるユーザーに合わせた自動広告が表示されます。Twitterカマキリ☟こちら日々の「思ったこと」「勉強している内容」を発信しています。4Pythonを使ってTwitterAPIで自作botを作りました。製造業コミュニティの方々と運営しています。botを作るのかを知りたい方はこちら。【超丁寧に解説】Pythonを使ってTwitterAPIでGoogleスプレッドシートに書いた内容を画像付きでツイート投稿する。Colabでアニメーション作成する。宇宙に入ったカマキリ。