趣味で計算流砂水理

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

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

MENU

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

どう思いますか?

ライセンス

ライセンスについて

もし、ソフトウェアとして組み込む予定があるのならMITがよろしいかと思います。

なければGPLで良いかと。

何を目的にするかということもありますが、あのプログラムは非常に勉強になると思います。 また、世の中の河川の計算のほとんどは、ソースを見たことがありません。 もちろん、よくわからない人があーだ、こーだ言う可能性があるので、晒せないのはわかりますが・・・。

それでも、みんなが勉強する意味で公開するのは良いかなと。

あまり考えていないのであれば、MITですかね。

VBA

以前、2007と2013で差があることを知りました。 関数が変わっているのですかね・・・。グラフに関する関数だったと記憶しています。

正直、VBAは生き残るとは思いますが、MSがVBに力を入れているとは思えません。。。

最近、可視化についてはgnuplotとRを使ってます。 (なぜmatplotlibではないのかはさておき)

ただ、ここら辺は時事刻々と変化することを受け入れないと、 プログラムは書けないと感じてます。

pythonは最たるものだと思いますが(笑)。

EXCELのVBAが。。。

ふと気付いたのですが、Excel 2016に変更してからExcel 2007で作っていたマクロの中でユーザーフォームを使ってグラフをコントロールするものがすべて動かないです。

多分描画速度の低下(データ更新時処理のアルゴリズムが変わった?)の影響かと思いますが、いろいろ試しましたが駄目っぽいです。作り込んだものが多いのでショックです。

いっその事、これを気にExcel GUIはやめようかと思い始めました。

グラフを使ったGUIってどうゆうものを使ってますか?

ライセンスの話

例のSection Quasi 2Dモデルについて、Githubで公開しようかなと考えているのですが、そろそろライセンスのことも気にしたほうが良いかもしれないと思ってます。

どうしましょうか。MITかGPLかと思いますが、GPLにするほど大したものじゃないですが悩ましいです。

作者はこのHPにします。ミスがあればその都度gitで直していこうかと思います。

また、jupyterの部分はpythonのコードに変更しようと思います。GUIは作らないです。