数学とか語学とか楽しいよね

フランス語、ドイツ語、ロシア語、オランダ語、英語、スペイン語、ラテン語とか数学とか数値計算(有限要素法、有限体積法、差分法、格子ボルツマン法、C++コード付き)とか勉強したことをまとめます。右のカテゴリーから興味のある記事を探してください。最近はクラシックの名演も紹介しています。noteにも書いています。https://note.mu/kumag_min

数値計算

【数値流体力学】勾配を制限するか、それとも流束を制限するか

MUSCL法など勾配制限関数(slope limiter)を用いる方法は、再構築した単調な値を用いて数値流束を計算するので単調な流束(1次風上差分、HLLなど)を使う必要があります。一方、高次の流束を使う場合は、解の単調性を保つために、流束自体を流束制限関数で…

【有限体積法】1次元移流方程式をMUSCL法で解く C++コード付き

今回は1次元移流方程式を1次の風上差分+MUSCL法で解いていきます。MUSCL法とは、セル内で一定だった未知数のプロファイルを1次以上の関数で補外しセル界面での値を計算し、その値を用いて数値流速を計算することによって高次精度を達成する方法です。その際…

【浅水流方程式】MUSCL-Hancock法とHLL法でダム崩壊問題を解いてみました 動画とC++コード付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650 今回は、HLL法にMUSCL-Hancock法を組み合わせて高次精度化したスキームでダム崩壊問題を解きました。普通のHLL法が時間・空間方向に対…

【浅水流方程式】HLLC法でダム崩壊問題を解いてみました(wet bedとdry bed) 動画とC++コード付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650 今回は、HLLC法(Harten, Lax, van Leer, Contact surface法)を用いてダム崩壊問題(dam break problem)を解いてみました。HLLC法と…

【浅水流方程式】溶質の濃度を考えた場合の浅水流方程式

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650溶質の濃度を考えた場合の浅水流方程式は以下のようになります。ここで はpassiveな溶質の濃度です。参考文献はLeVequeの"Finite Volum…

【浅水流方程式】Roe法でダム崩壊問題を解いてみました(wet bedとdry bed) 動画とC++コード付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650 今回は、Roe法を用いてダム崩壊問題(dam break problem)を解いてみました。Roe法とは、ヤコビアンを固有値の正負によって分割し、Ro…

【数物リンク】Roe法の解説資料まとめ

浅水流方程式に対する数値計算手法であるRoe法の日本語で読める解説資料まとめです。Roe法は"Flux Difference Splitting"(FDS)とも呼ばれています。http://www.astro.phys.s.chiba-u.ac.jp/netlab/summer-school_2004/TEXTBOOK/text2.pdfhttp://th.nao.ac.…

【浅水流方程式】HLL法で周期境界条件の場合のダム崩壊問題を解きます 動画とC++コード付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650 今回は、HLL法(Harten, Lax, van Leer法)を用いて周期境界条件でダム崩壊問題を解いてみました。解いている方程式は、摩擦、勾配を…

【浅水流方程式】HLL法でバンプ周りの流れを解いてみました 動画とC++コード付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650 今回は、HLL法(Harten, Lax, van Leer法)を用いてバンプ周りの流れを解いてみました。解いている方程式は、摩擦、勾配を考慮した1次…

【数物リンク】HLL法とHLLC法の解説資料まとめ

浅水流方程式に対する数値計算手法であるHLL法とHLLC法の日本語で読める解説資料まとめです。9.5にHLLとHLLCの解説 http://www2.yukawa.kyoto-u.ac.jp/~akira.mizuta/Mizuta_lecture2_euc_v4.pdf2にHLL https://www.jstage.jst.go.jp/article/jscejhe/69/4/6…

【浅水流方程式】HLL法でダム崩壊問題を解いてみました(wet bedとdry bed) 動画とC++コード付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) http://mathlang.hatenablog.com/entry/2018/12/18/213650 今回は、HLL法(Harten, Lax, van Leer法)を用いてダム崩壊問題(dam break problem)を解いてみました。HLL法とは、波速が最大のも…

【数物リンク】WENO法

WENO法の係数が載っている論文です。2.1にあります。ちなみに、2.2に3次精度TVDルンゲ・クッタ法も載っています。https://www.jstage.jst.go.jp/article/jsces/2010/0/2010_0_20100018/_pdf

【有限要素法】特性曲線有限要素法のアイディア

前から特性曲線有限要素法に興味があったのですが、なんだか難しいそうと敬遠していました。しかし、勉強してみるとそんなに難しいものではない、ということがわかりました。まとめると特性曲線有限要素法=特性曲線法+有限要素法です。そのままと言われれば…

【数値計算】境界適合座標での移流項の離散化

最近、境界適合座標やってみようと思い、色々実験しています。ひとつわからなかったのが座標変換後の移流項の離散化です。もとの移流項由来の項のみに風上化をかければよいのか、それとも変換後の一階微分項に対して風上化をかけるべきなのか。結論から言う…

【数物リンク】3次精度TVDルンゲ・クッタ法

3次精度TVDルンゲ・クッタ法がまとめられているページです。これは、ルンゲ・クッタ法においてTVD条件を満たすようにしたスキームです。http://www-space.eps.s.u-tokyo.ac.jp/~hirako/memo9-tvdrk.html

【数物リンク】片側差分のまとめ

片側差分がまとめられているPDFです。境界適合座標をやる際に、境界で二階微分の片側差分が必要で調べました。https://www.mech.kth.se/~ardeshir/courses/literature/fd.pdf

【格子ボルツマン法】格子ボルツマン法で2次元拡散方程式を解きます(D2Q4) C++コード付き

今回から2次元に入っていきます。2次元拡散方程式を解くC++コードを作りました。D2Q4です。どうやら拡散方程式を解く分にはこれで十分みたいです。参考にしたのは"Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes…

【格子ボルツマン法】格子ボルツマン法で1次元バーガース方程式を解きます(D1Q2) C++コード付き

LBMで1次元バーガース方程式を解くC++コードを作りました。D1Q2でやってます。参考にしたのは"Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes"の2-5章、Appendixのコード(まったく洗練されていないが故に読みや…

【格子ボルツマン法】格子ボルツマン法で1次元移流拡散方程式を解きます(D1Q2) C++コード付き

LBMで1次元移流拡散方程式を解くC++コードを作りました。D1Q2でやってます。参考にしたのは"Lattice Boltzmann Method: Fundamentals and Engineering Applications with Computer Codes"の2-4章、Appendixのコード(まったく洗練されていないが故に読みやす…

【数物リンク】2次元格子ボルツマン法のコードを書くときに参考になりそうなサイト

2次元格子ボルツマン法のコードを書くときに参考になりそうなサイトのリンクです。Fortran 90で書かれた単相流、二相流のコードがあります。 https://www.cis.fukuoka-u.ac.jp/~ymatsukuma/lbm.html D2Q9でキャビティ流れの計算をしているようです。 GPGPU S…

【格子ボルツマン法】格子ボルツマン法で1次元拡散方程式を解きます(D1Q2) C++コード付き

幅を広げようと思い、格子ボルツマン法(Lattice Boltzmann Method, LBM)の勉強を始めました!LBMは流体の方程式に対する離散化手法です。そこで、取りあえず1次元拡散方程式を解くC++コードを作りました。D1Q2というやつです。Dの後の数字が次元で、Qの後…

【Navier-Stokes方程式】SIMPLE法によるNavier-Stokes方程式の離散化

SIMPLE法(Semi-Implicit Method for Pressure. Linked Equations)によるNavier-Stokes方程式の離散化について説明していきます。やっとこさSIMPLE法が理解出来ました。いきなり空間離散化して項を消したりするのでわかりづらいのです。実はこれHSMAC法とほ…

【有限体積法】2次元非構造有限体積法のコードを作ってみました 三次元図付き

2次元非構造有限体積法のコードを作ってみました。cell-centeredと呼ばれる方法を使っています。解く方程式は2次元の定常移流拡散方程式です。流れ場はx方向が 、y方向が と与えます。領域は で、境界条件は・ においてDirichlet条件 ・ においてDirichlet条…

【数値計算】LU分解(Doolittle法)C++コード付き

今回は連立一次方程式に対する直接法である、LU分解(Doolittle法)のC++コードを公開します。今回解く連立一次方程式はとあらわされます。ここで、 は の行列、 と は 次元のベクトルです。 と が既知で、 が未知です。具体的にはであり、これを解くと とな…

【浅水流方程式】ダム崩壊問題におけるDry bedとWet bedの違い 三次元図付き

【浅水流方程式】サイトマップ(ここから関連記事が探せます) 今回は、前に作った浅水流方程式におけるダム崩壊問題(dam break problem)の解析解を計算するコードを用いて、Dry bedの場合とWet bedの場合それぞれの水深の時間変化の三次元図を作りました…

【浅水流方程式】ダム崩壊問題の解析解全パターン!動画付き!

【浅水流方程式】サイトマップ(ここから関連記事が探せます) 前に作った、浅水流方程式におけるダム崩壊問題(dam break problem)の解析解を計算するコードを用いて、水深と流速がどうなるか動画にしていきたいと思います!こういうのは動画のほうがわか…

【浅水流方程式】ダム崩壊問題(dam break problem)の解析解を計算するC++コード

【浅水流方程式】サイトマップ(ここから関連記事が探せます) 浅水流方程式にはいくつか解析解が出る問題があり、テスト問題としてスキームの精度を調べるのに活用されています。その中で一番有名なのがダム崩壊問題(dam break problem)です。真ん中にダ…

【浅水流方程式】1次元浅水流方程式の導出(勾配と摩擦なし)

【浅水流方程式】サイトマップ(ここから関連記事が探せます) 1次元浅水流方程式(Shallow Water Equation, SWE)の導出(勾配と摩擦なし)をします。取りあえず導出すべき1次元浅水流方程式の基本形を書いておきます。要は慣れです。慣れると怖くなくなり…

【浅水流方程式】サイトマップ

今後浅水流方程式(Shallow Water Equation, SWE)に関する記事がどんどん増える予定なので、取りあえずサイトマップのようなものを作っておきます。浅水流方程式は別名サン・ブナン方程式(Saint-Venant equation)ともいいます。基本的にこのページから全…

【浅水流方程式】1次元浅水流方程式の基本形

【浅水流方程式】サイトマップ(ここから関連記事が探せます) 1次元浅水流方程式(Shallow Water Equation, SWE)を勉強していきましょう!そのために、まず1次元浅水流方程式の基本形を書いておきたいと思います。水平な長方形の一様断面を考えることにし…