趣味で計算流砂水理

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

gridgen-c

久しぶりにgridgen-cを使ってみました. 同じものですが,githubに上がってました.

その中にpythonのフロントエンドとしてpygridgenというものが追加されておりました.

さらにその中で中段くらいに記載されているadd_focusという機能が追加されています.メッシュを切るときにフォーカスする箇所をしてするようなんですが,イマイチ意味がわかりません.ちなみにドキュメントはこれです.

どうでしょう?理解できますか?

CQ2DF model + vegetation

面白いアイデアですね。 問題があるとしたら、渦動粘性係数の空間分布でしょうか。乱流モデルの影響がどこまで効くかですね。 時間をみてやってみます。

たまたまですが、先日ある方と清水先生の以下の論文を話していました。

https://www.jstage.jst.go.jp/article/prohe1990/41/0/41_0_845/_pdf

植生域の水深平均のLESの計算ですが、面白いところは、植生による乱れの取り扱いです。

1wayモデルなので、植生によって生じる乱れによる流れ場への影響は考慮できないですが、比較的荒いメッシュでLESを計算することにより、生成、消失がコントロールボリューム内で釣り合う、つまり局所平衡を仮定してすることにより、1wayながらも2way的な乱れエネルギーの収支を意識しているとのことを当時話していたらしいです。

逆に、植生の直径程度の小さい格子にした場合、完全な1wayになってしまうので、収支がアンバランスになるということです 。

これって粒子単独運動の計算でも同様で、dt内での粒子の移動距離を考慮した格子サイズにしないと乱れエネルギーの収支がおかしくなるようです。

となるとLES+DEMで粒子径より細かいメッシュで計算している方がいたような。。。

乱流の話はまた後日。

おひさしぶりです。

最近読んでる本

https://www.coronasha.co.jp/np/isbn/9784339046519/

乱流と数値解析の話がされているので、面白いのですが、 1次風上差分が酷評されています(笑)

なかなか1次風上だとダメな場面に出くわすこともないので、 Cross section Quasi 2D Flow Modelを復習しながら、勉強したいものです。

乱流場に応じて解析スキームを選択するのは改めて大事ですね。

植生流れ

鉛直2次元モデルのために 「水工学における計算機利用の講習会」の清水義彦先生のプログラムを読み返していました。

植生の話をCross section Quasi 2D Flow Modelに組み込めないかなと思っています。 何か知見をお持ちでしたら、教えて下さい。

2D Upwind Flux Scheme:Dry-Bed Dam-Break

※前々回の記事がまとまっていなかったので削除しました。

2D Upwind Flux Scheme:Dry-Bed Dam-Break

ほぼ完成しました。一応ちょっとごまかしましたが、乱流項も入れました。 乱流項ありなしのgifを貼っておきます。

粗度・乱流なし f:id:SedimentHydraulics:20170223193617g:plain

粗度・乱流あり f:id:SedimentHydraulics:20170223193700g:plain

ソースコードは、gistに貼っておきます。

gist7465c294cf2dd62ba0e13294982933d9

ついでに1Dに少し間違いがあったのでgistを更新しました。

gist2ff266ef913bcbf3a142a39991e9df81

ただし、2Dの計算は、私のPC(surface)で約1時間かかりますので、現実的には使い物になりません。

そこで次の項目です。

ポインタによる配列結合を用いたFortranの計算

コロケート格子で計算することのメリットである変数の扱いやすさを利用して、以前から考えていたようにセルを全てポインタで結合する計算を書いてみました。

DBに置いておきますのでぜひコードを見てほしいです。

自分で言うのもなんですが、ちょっと芸術的なコードです。fortranなのに2D計算のコードがここまですっきりするとはという感じです。

クラスの定義方法などを次回勉強会で相談させて頂きたいです。

次は河床変動を組み込もうと思ってます。

Cross section Quasi 2D Flow Model

githubに公開しました。

https://github.com/computational-sediment-hyd/CQ2DF

fig

windows+proxy環境下でのSourceTreeによるgithubへのアップロード

やり方がわかれば一瞬ですが、結構大変でした。 忘れないためにもメモ的に置いておきます。

proxyの設定

proxy環境下でのsshは多分難しいです。なのでhttpで。以下のサイトを参考にしました。

http://sushichop.blogspot.jp/2013/09/git.html

gitで設定すれば、SourceTreeに反映されます。

リトポロジの作成⇒クローンの作成⇒コミット

以下を参照しました。

http://qiita.com/naoki85/items/4f44601f1365c18035f4

クローンが上手くいかないとproxyが駄目だと思います。いろいろ試してみて下さい。

その他

  • Git cmd、Git bashUTF-8のため、windows環境だと文字化けしまくりです。UTF-8への変換が必要(chcp 65001)

  • sshは使わないため、鍵は入りませんが一応作ったのでDBに置いておきます。

Cross-sectionQuasi2DFlow

ギッハブ用のモデルとかを整理しました。DBにあるので見て頂けると助かります。windows環境があれば回してもらえるともっと助かります。

READMEとか結構頑張りました。

問題がなければ上げます。

英語にしたときに違和感があり、名前をCross-sectionQuasi2DFlowに変えました。

Section Quasi 2D Model:dll版が良いのか?

ライセンスはMITで行こうと思います。

リリース版として悩んでいるのが、現状のdll版がそうじゃないものかです。

計算の流れは、格子生成(python)⇒流速場の計算(fortran dll)⇒図化(python)ですが、個別の実行ファイルを作成し、テキストファイル経由でやり取りするものも作れます。 でも、dll版だとpython一発でOKです。dll版のデメリットはwindows限定のところです。

どう思いますか?