2024年8月18日日曜日

core MP135

core MP135 を購入。
Python コードを動かすまでの手順です。

balena-eacharを管理者モードで起動
microSDにイメージを焼く

USBケーブル接続後、シリアル通信
ID: root
Pass: root
$ passwd root

ユーザー追加
$ adduser "user name"
sudo group に追加
$ gpasswd -a "user name" sudo

root パーティション拡張
$ cd /usr/local/m5stack
$ bash resize_mmc.sh 

LANに接続後、SSH接続
IP確認
$ ifconfig

・自動起動させるプログラムをWinSCPでコピー。
・python3 で稼働確認。
・vimでrc.local を変更し、自動起動設定。


double-layer two-phase formulation その3

double-layer two-phase SPHの実装が概ね完了しました。

実装を通し、理論と実際を理解できました。
現状、2点の問題があるようです。

1つ目は seepage force (drag force) の計算式。

これまでの文献にも、DualSPHysicsでも同じ式が使われています。が、透水係数の大きな場合にしか実用的ではないようです。1e-4㎝/sオーダーだと、γ/kが大きくなりすぎて、少しの速度差が大きな拘束力を生みます。土塊がすべろうとしても、地下水がその動きに追随するまで拘束されるような挙動も見受けられました。

2つ目は密度変化。

土の間隙内の水が地表に浸出した場合、水相の密度は大きく変化しますが、この表現が困難。いえ、pressureの式で参照している基準密度を変更すれば容易に反映できるのですが、粒子が重なり合い、挙動がやや不安定でした。初期配置も面倒で、実用的ではないですね。水収支はともかく、土の動きだけを正しく反映したい、ということであれば計算の軽い single-layer two-phase formulation でよいと思います。

土相側でも層毎に密度を変えている場合、その境界で密度が訛るのは現状では仕方がないと考えています。が、この密度変化の問題は将来的に何とか解決されそうな気がします。たとえば、土層別にフラグを付けて、個別に計算するとか。それが実現象を正しく反映するようになれば、より実務に浸透していくのでしょう。

今年前半より取り組んできた SPH コードの修正と実装は、これで一旦終了です。
結果的には単相での計算はOK、2相は「定性的評価」まで、土木分野の実務で求められる諸問題には適用が難しい場合が多いと判断されます。が、もう少しだと思います。

将来に期待しましょう。

2024年8月13日火曜日

double-layer two-phase formulation その2

振り返ると、double-layer での実装に取り掛かってから1か月以上かかっています。

以下を参考に始めたのですが、試行錯誤の結果、最終的にはPersianSPHの文献と同じような形に落ち着きました。
A coupled fluid-solid SPH approach to modelling flow through deformable porous media - ScienceDirect


2次元、3次元共に土、水の相互作用までは動くのですが、地下水が地上に出た場合の密度変化をうまく表現できません。相互作用の検証も終わっていませんので、まだ時間がかかりそうです。

SPHでの2層2相表現は定性的にとどまると伺ったことがあります。それほど新しいものでもないので、国内でも実装されている方はいらっしゃいます。その先生がおっしゃるのですから、そうなのかもしれません。

まだ1か月。もう少し追いかけてみましょう。

2024年8月6日火曜日

システム修復

片道4時間、日帰りで、観測システムを修復してきました。

Linuxに不慣れだった後輩君が設定していたため細部の設定に漏れがあったこと、私の管理ミスでこれを見逃していたこと、夏場の高温でハードの一部に不具合が発生していたこと、最終的には停電がトリガーとなったこと等、いくつかの要因が重なり問題となりました。で、現場まで赴くことに。

原因を突き止めてしまえばその場で対応できる、比較的簡単なソフト側の対策で済んだのですが、熱だけはハード対策が必要そうでした。が、これは高価な製品を購入しないと対応できません。うーん。


システム修復後、ついでに DNS を設定。GUIからなぜか反映されていなかったので、コマンドで変更。

$ sudo vi /etc/systemd/resolved.conf

[Resolve]
DNS=8.8.8.8

$ sudo systemctl restart systemd-resolved.service


apt update は成功しますが、upgrade で失敗します。古いリストが残ったままなのでしょう。リストを全消ししてから再度 update & upgrade。upgrade には時間がかかりました。

$ sudo rm -r /var/lib/apt/lists/*


ひとまず周辺環境を含め目についた問題は全てつぶしておきました。今回は停電により、隠れていた問題も同時に顕在化しました。最初に見逃さないようにしないと、このように不要な対応が発生します。気を付けましょう。


2024年7月27日土曜日

MEMS Rain Gauge

IOTデバイスを用いて、振動から雨量を推定するプログラムを公開しました。https://github.com/T40O0/ADXL355_SPI_M5_SD_RainGauge/tree/main

約1年間観測して、改良を施し、安定して測定できるようになりました。

ポイントはデジタルフィルターを利用しないことでした。雨滴による衝撃を観測しているので、高周波まで扱えるほうが精度よく雨量を推定できることがわかりました。周波数領域は扱えませんが、ただただ時間軸で衝撃をカウントするという単純な方法が推定には良いようです。

転倒マスとは異なり、構造的に火山灰等で詰まることがなく、メンテナンスの楽な点が長所でしょう。火山灰を被っても、雨で洗い流されます。
安価な点も魅力です。個人で作るなら材料費2万円弱、従来の1/5~1/10の価格ですので、多点に設置できます。近い場所でも雨量は異なりますので、各地すべりブロックに1台、などという計画も可能です。
さらに、1滴の振動から観測できますから、時間方向の解像度が転倒マス型に比べ格段に向上します。

欠点は消費電力。電池のみで数か月持てば理想的なのですが、ソーラー+バッテリーか商用電源が必要です。モバイルバッテリーでも1週間しか持ちません。
また、振動のノイズに弱いことも短所でしょう。雨が降っていなくても、加速度を観測すると微小な雨量としてカウントします。設置場所毎にノイズを除去するための閾値の設定が必要です。

まだまだ改良の余地がありますが、ひとまずここで公開。良いアイデアが浮かべば追加していきましょう。

SPHの水圧計算

前回から約1か月かかりましたが、2相2層での水圧計算に目途が立ちました。

https://www.sciencedirect.com/science/article/pii/S002076831730286X

上記の78-82式を実装することで解けるようにはなったのですが、まだ土層を出た後の水の密度変化までは安定して解けません。最初の含水率のまま解くことはできるのですが、空中でそれは誤りですし、勝手に密度を上昇させることもできません。圧力が下がって自然に密度が上昇する、というように計算させるとすぐに発散します。そのあたり、この論文では明記されていません。土層の計算だけ追うのであれば、1層での計算が良いと思いますが、まだ何か見落としているようです。

ひとまず、次の drag force を安定して解けるか見てみましょう。

2024年7月3日水曜日

double-layer two-phase formulation

SPHにおいて、two-phase を single-layer で実装するか、double-layerにするか?

前者は計算が速い!
でも、水の流れは表現できません。(工夫すればできるのかもしれませんが、single ではなくなります。)

後者は計算が遅い!しかも圧倒的に。
でも、水の流れは表現できます。

考えた結果、もともと計算してみたかった「崩土から水の抜ける表現」が可能な後者を選択しました。既存のプログラムを容易に変更できそうな点も good です。

2相 を double-layer で解く文献はたくさんあります。が、なぜか式が統一されていません。以下が最も詳しく書かれていましたので、これを参考に実装します。
A coupled fluid-solid SPH approach to modelling flow through deformable porous media - ScienceDirect

式を整理しながら不飽和の表現を single-layer の文献からいただきました。これで、飽和・不飽和浸透と力の関係を解けるはずです。

コツコツ、組んでみましょう。

**********************************
20240707追記
地下水の上下で飽和度(水の単体)を変更すると、境界で爆発してしまいます。計算過程を追えば当然なのですが、土層境界よりも挙動が激しいようでした。飽和度を低くするには文献のように水粒子をまばらに配置するしかなさそうです。
似た現象ですが、地表流がある直下で飽和度が過剰に高くなります。透水係数が実際よりも高く計算され、水が入りやすくなります。なかなか難しい。
SPHでは密度変化がないか小さい現象(弱圧縮)を扱うのが前提なので、単体の異なる土層とか飽和‐不飽和‐地表流などを扱うのが難しいのでしょうね。