読者です 読者をやめる 読者になる 読者になる

趣味で計算流砂水理

Computational Sediment Hydraulics for Fun

おひさしぶりです。

最近読んでる本

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

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

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

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

植生流れ

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

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

デカルト座標系での平面二次元計算

昨日もお見せしてみましたが、とりあえずチャレンジしてみました。

計算条件

  • 上流端境界に合わせて格子を設定しています。
  • 下流端はあえて、横断方向と直交しないように設定しています。
  • 一部堤防を切っています。これもあえてです。
  • 初期条件は上手に設定できなかったので、ドライベッドです。
  • 下流端境界はdq/dy=0で与えています。
  • 定常になるまで一定流量を流しました。

計算結果

  • なんとなく雰囲気はでていますが、やっぱり駄目です。
  • 下流端付近の左岸側で異常な流速が発生し、そこから変な流れ場が生じています。
  • 下流端が原因なのでしょうか?よくわかりません。
  • 初期条件が設定できないのが非常につらいです。ドライベッドの計算がきついからです。ちょっと考えないと駄目ですね。
  • 次回は下流端を流れの横断方向に合うように設定してみます。

f:id:SedimentHydraulics:20170422124631p:plain

久しぶりになりますが。。。

年度末だったり、河川シンポだったりで疲れました。 いろいろな計算をやってるのですが、まとまっていないので文章だけ書きます。

変分法

  • お見せしているとおり結構良い結果がでたので、今後の展開を考えようかなと思ってます。
  • 今のところは、支川を含む長区間でやってみようかなと思ってますが、何かアイデアがあれば教えてください。
  • 近々このページにも何か上げようと思います。

平面二次元河床変動計算

  • これも実は結構いい感じに進んでいて、もうちょっとな感じです。
  • ずっと上手くいかないところは砂州が形成され始めるときに浮洲が出現しますが、そのときに計算が飛びます。ドライベットの河床変動の処理がどうも上手くないようです。ドライベッドの河床変動の処理の工夫等に関する論文はご存知ですか?
  • なお、流れの計算は、飛ぶ直前のぐちゃぐちゃな河道を条件としてた固定でも問題なく解けているので多分大丈夫です。

ビジュアライズ関係

これは結構面白いのをいっぱい作ってます。GISの処理をpythonでやるようなものです。これもまとまったら報告します。

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限定のところです。

どう思いますか?