2020年6月28日日曜日

Blue Kenue

TELEMAC に使える pre-post GUI を2種試しました。

Blue Kenue
カナダ産 Win 用 GUI です。SHP(ライン) を読み込めるので、CAD データを変換すればセンターや盛土位置などを取り込めます。それを利用しオートメッシュ可。やはりこれが便利(ダイアログ表示にはバグがありました)。
境界条件設定位置を指定できるのですが、そのパラメータ等の設定はできません。

SALOME-HYDRO
Linux の GUI です(「SALOME」 なのでフランスでしょうか?)。
メッシュだけでなく設定ファイルも作成できるようです。が、私の環境では SHP 読み込み段階でエラーがかかり先に進めませんでした。

で、Blue Kenue を利用。
設定ファイル(cas)は example から似たケースをコピーし、テキストエディタを使って修正しました。境界条件の時系列ファイルも同様です。これが速いでしょう。

コマンドプロンプトでバッチファイル替わりに py ファイル、そのあとに設定ファイルを指定し、TELEMAC を実行。で、計算が始まります。
流れのみですが、7万メッシュ、0.1秒間隔、24時間の計算が14.5時間かかりました。parallel だともっと早くなるのでしょうか?

で、再び Blue Kenue 。
結果を3次元で可視化します。が、おかしな結果。地形が正しく読めておらず、すべて0mとなっています。
どうも、メッシュに標高を与える際に「Bottom」の名称ではダメで、「BOTTOM」でないと認識してくれないようです。そういえば、設定ファイル内のキーワードはすべて大文字になっていましたね。ルールなのでしょう。

修正し、計算した結果は良好。
これでデータ作成から不定流、可視化まで一通り試すことができました。
残るは河床変動計算です。

2020年6月27日土曜日

TELEMAC-MASCARET インストール

TELEMAC-MASCARET

自由表面流れのソルバーです。フランス産。
マニュアルを見ると、2次元の河床変動計算が可能でした。
支配方程式を河川砂防技術基準と比較すると、連続の式にソースタームを加えて発展させた形です。運動方程式の外力項(風なども含めたソースタームと書かれています)にマニングの式を使えます。
河床変形の式も河川砂防技術基準と一致。
掃流砂量式には日本人の名前が載っていませんでしたが、浮遊砂と共に扱えることを確認できました。
OKです。

ソルバーですので CUI です。Fortran ソースが配布されています。
pre-post の GUI は他サイトのフリー版を活用する方針です。

インストールには SVN クライアントや Fortran コンパイラーが必要です(Delft もそうでしたが、海外の河川・海岸屋さんはこれがデフォなのでしょうか?)。 
さらに Python3 ではなく 2.7 を利用します。Win の環境を汚したくないのですが、conda の仮想環境を利用できそうにありません。Ubuntu の Docker も配布されていません。VS + Intel VF で 個別にコンパイルして構成しようかとも考えましたが、それも難しいというか、説明自体がありません。
結局、新たな PC(Win10) に automatic installer でインストールすることにしました。

順序は Python 2.7 と関連ライブラリのインストール、TortoiseSVN のインストール、gfortranなどコンパイラーのインストール、SVN サーバーに接続してソースをダウンロード、コンパイル、コマンドプロンプトの設定までが一連となっています。この一連作業を automatic installer が実施してくれるのですが、Forum を見ると失敗が続出しています。複雑ですからね。
失敗後のフォローがサイトに掲載されています。私の環境ではそれ以前のソースの DL 段階で躓いたので、そこからやり直しました。

インストール作業は躓き後のフォロー含め2~3時間程度。
automatic installer では v7p0 まででしたので、手動で最新の v8p1r1 も入れました。後者 の parallel の起動方法がわからなかったのですが、single ではどちらも examples の動作を確認。環境構築完了です。

ひとまず先に進むことに。

2020年6月24日水曜日

統計モデリング

先日、以下の図書をベースにした統計モデリングにかかわる話を聞きました。
樋口「予測に生かす統計モデリングの基本」

以前読んだ「地下水モデル」にデータ同化が記載されており、どのようなものかを知りたいと購入していた図書でした。が、意味が分からず寝かせていました。
その後、逆解析に粒子フィルタを利用された方の話を聞いたこともあり、この機会に引っ張り出して読み直しました。

ま、結局、最後まで読んでも具体的にどのように役立つのか、どのようにシミュレーションに組み込めば良いかは、相変わらず理解できませんでした。
基本コードが手元にあるので、いずれ迫られたら読んでみましょう。

以下、備忘録です。6章まで。

*********************************
加法定理の一般化、同時確率から確率変数を1つ取り除く作業が周辺化
→周辺確率を求める作業
P(A1)が周辺確率。
P(A|B)が「Bが所与のもとでのAの」条件付確率

周辺化
P(A)=∑B P(A,B)
書き下すと(加法定理)
P(A1)=P(A1,B1)+P(A1,B0)
P(A0)=P(A0,B1)+P(A0,B0)
全体:100、A1:30、B1:60、A1∩B1:10の時、
P(A1)=10/100+20/100=30/100

乗法定理
P(A,B)=P(A|B)p(B)=P(B|A)p(A)
書き下すと
P(A1,B1)=P(A1|B1)p(B1)=P(B1,A1)P(A1)
10/100=10/60*60/100=10/30*30/100

ベイズの定理(乗法定理を周辺確率で割る)
P(A|B)=p(B|A)p(A)/P(B)
=p(B|A)p(A)/∑A P(B,A)∵周辺化
=p(B|A)p(A)/∑A(P(B|A)p(A))∵乗法定理

*********************************
状態空間モデル:システムモデルと観測モデルの連立
線形:ガウス状態空間モデル
システムモデル(計算更新時のシステム誤差 vt を含む)
xt=Ftxt-1+Gtvt  vt~N(0,Qt)
観測モデル(観測誤差wtを含む)
yt=Htxt+wt  wt~N(0,Rt)

非線形:非線形・非ガウス状態空間モデル(データ同化で利用)
xt=ft(xt-1,vt)  vt~p(v|θsys)
yt=ht(xt,wt)  wt~p(w|θobs)
θは未知→最尤法で推定

マルコフ性1:xt~p(xt|xt-1)
マルコフ性2:yt~p(yt|xt)

*********************************
予測分布:p(xt|y1:t-1)
フィルタ分布:p(xt|y1:t) 
平滑化分布:p(xt|y1:T)

情報処理での「フィルタ」は信号処理のフィルタとは別
情報処理での「平滑化」はデータ解析の平滑化とは別。回顧による知識発見が目的。工学系の応用問題は、リアルタイムに適切な処理を施すことが重要で、平滑化分布から得る意味があまりない。

固定ラグ平滑化
固定点平滑化:データ取得毎に初期分布の改善(データ同化で利用)

※固定点平滑化は地下水シミュよりも、力学シミュで役立ちそうです。が、具体的な処理方法が思い浮かぶまで理解できていません。うーん。

2020年6月23日火曜日

Delft3D GRID

RGFGRID でメッシング。

ひとまずチュートリアルを流してみましたが、イマイチ。切れないわけではないのですが、面倒の一言。いえ、フリー版にしてはよくできていると思うのですが、オートメッシュに慣れてしまうとそれ以外を使えなくなります。

計算機能自体は多いので魅力的なのですが、河床変動の式が見当たらず、pre にも不満。猫に小判+暖衣飽食に慣れすぎ状態です。

結論:残念ですが Delft3D は寝かせ、次のソフトに進みます。

*********************************
20200628追記
TELEMAC のメッシュ(非構造格子)を読み込めましたが、Delft3D 用に書き出すことはできませんでした。構造格子でないとダメなのかな?

2020年6月21日日曜日

Delft3D GUI

GUI は別途申し込みが必要です。

数日でライセンスファイルと DL リンクが送付されてきました。こちらはインストーラーがついており、サクッと入れることができました。

先にコンパイルしていた exe や dll をどこに入れるのかを探せなかったので、エラーが出るまで進めることにしました。
ざっくり、マニュアル3~5章がtutorial、6章が計算、7章が可視化です。
5章の通り flow のチュートを進め、6章で計算。ここで、エラ-が出ました。x64 フォルダ以下にexeが見当たらないとのことです。

場所がわかったので、GUI インストール先の x64 フォルダに先日コンパイルした x64 フォルダの中身をコピー。
そうすると、計算が完了しました。
可視化もOK。
ひとまず環境構築が終了です。

今回のチュートではメッシュの切り方が含まれていませんでした。これは必須なので、あとで見つけねば。

2020年6月19日金曜日

Delft3D インストール

Delft3D のインストールに、思いのほか時間がかかりました。

Win での流れを補足しておきます(プレコンパイル版の配布はありません)。
1. Subversion (ソースコード管理サーバー)から 最新リビジョンを確認して DL (Subversion client を使用)
2. src フォルダ内の prepare_sln.py (Python script) で VS の sln ファイルを作成 (VS、.NET、Intel Parallel Studio XE の Version指定)
3. slnファイルを VS で開いてコンパイル

Subversion を知らなかったのですが、Git よりも古いそうです。
クライアントはサイトに記載のあった TortoiseSVN を使用。適当な場所にフォルダを作成し、右クリックから SVN Checkout。私の場合、必要なユーザー名は Delft3D に登録したメールアドレスの@より前の部分として登録されていました。
DL、コンパイルに必要なソフトはサイトの Prerequisites にまとめられています。Win では VS + IPS XE の指定なので、無償ソフトのみでは対応できません(本体はオープンソースなのに!)。VS でも必用とされるモジュールを指定し、インストール or 追加する必要があります。

examples が動けば成功だそうです。
今回、trunk 版はダメ、リビジョン 65991 の single は動きましたが、parallel はダメでした。 

次に進みましょう。

2020年6月18日木曜日

Delft3D

HEC-RAS が2次元河床変動計算に対応していないため、Delft3D を試そうかとマニュアルを確認。
https://oss.deltares.nl/web/delft3d

日本では、港湾関係で利用されている例がありました。どうも、波の影響を含めた浜?の形成や河口付近の河床変動計算がこのソフトの主目的のようです。なお、RIC の Ver.2ではソルバーとして含まれていたようですが、現行の Ver.3 では見当たりませんでした。

マニュアルVer.3.15 は690ページ。HEC-RAS より薄いのですが、欲しい記述を探すのが大変です。
まずは流体。NS 方程式がベースです(運動量方程式9.7)。連続の式(式9.3)もそうなのですが、球の座標系?のため複雑に見えます。
掃流砂・浮遊砂の区分も取り扱っています。掃流砂量式には芦田-道上が含まれていました(表11.1、式11.183)。
浮遊砂は移流分散方程式で解いています(式11.1)。濃度扱いですね。

あとは河床形状の計算式だけなのですが、これを探せませんでした。
どこに書いてあるのでしょう?これを扱うプロが周りにいないので聞けません。

コチラの文献には見慣れた形の式がありました(式2.35)。これが採用されていることを期待したのですが。3章でも説明されていないということは私のなにか大きな勘違いなのでしょうか?

うーん、ひとまず置いて進めることにしましょう。