2026年5月6日水曜日

文献:A multi-layer SPH method for generic water–soil dynamic coupling problems

A multi-layer SPH method for generic water–soil dynamic coupling problems. Part I: Revisit, theory, and validation - ScienceDirect

AI要約

1. 背景
水と土砂の動的な相互作用は、地滑りや土石流といった自然現象から、防波堤やダムの浸透流といった工学的問題まで、幅広く存在します。これらの現象を数値シミュレーションで扱うには、土砂の大きな変形、水面の自由表面流、そして両相間の複雑な相互作用を同時に扱う必要があります。従来の格子法(有限要素法など)では、大きな変形によるメッシュの歪みや自由表面の追跡が困難でした。一方、SPH法(粒子法)はメッシュフリーであるため、これらの問題に適しています。しかし、従来のマルチレイヤーSPHモデルの多くは、空隙率(porosity)の時間・空間的な変化を正確に考慮していなかったり、流体の体積保存に欠陥があったりするなどの課題がありました。
本研究は、混合体理論に基づき、これらの課題を克服した包括的な3次元数値フレームワークを提案することを目的としています。

2. 手法
本研究で提案された手法の核心は、混合体理論(Mixture Theory)マルチレイヤー(多層)粒子で表現するSPHの実装にあります。
数学的定式化(ADFとIDF): 以下の2つのモデルが提案されました。

  • 仮密度ベース定式化 (ADF): 混合体単位体積あたりの質量(仮密度)を用いる手法。
  • 真密度ベース定式化 (IDF): 各相の実際の材料密度(真密度)を用いる手法。

特にIDFは、空隙率の空間的・時間的な変化を厳密に考慮できるよう、本研究で新たに質量保存則が導出されました。

支配方程式と構成則:

  • 水相: 弱圧縮性ニュートン流体としてモデル化され、状態方程式(EOS)を用いて圧力を算出します。
  • 土砂相: 弾塑性構成則(Drucker-Prager降伏基準)を用い、土砂骨格の変形と有効応力を扱います。
  • 相互作用力: 浮力(buoyancy force)と粘性抗力(viscous drag force)を考慮します。抗力には、層流から乱流まで対応可能なErgunの式に基づいた2次形式が採用されています。

数値的な工夫:

  • 粒子体積の補正: 流体粒子が土砂領域に出入りする際、空隙率の変化に応じて粒子の体積を適切に調整することで、流体の体積保存を確実にします。
  • 補正シェパードフィルタ (CSDF): 粒子の一貫性を確保し、自由表面付近のノイズを低減しつつ滑らかな圧力分布を得るための新しいフィルタ手法が導入されました。
  • 境界条件: 壁面における粒子の貫通防止と、フリーシップ(自由滑り)/ノンスリップ条件を適切に扱うための一般化境界粒子法が実装されました。

3. 結果
提案されたモデルの妥当性は、複数の検証ケースを通じて確認されました。

  • 体積保存の検証: 水が土砂領域に流れ込む単純な崩壊試験において、粒子体積を補正する手法(VA)が正確な水深を再現できることを示しました。一方で、補正を行わない従来の手法では、流体体積が保存されず不正確な結果となりました。
  • U字管内の浸透流: 空間的に空隙率が変化する土砂を通る水の流れをシミュレーションし、解析解と非常によく一致することを確認しました。また、CSDFの導入により、長時間のシミュレーションでも自由表面の乱れが抑えられることが実証されました。
  • 重力下での沈下: 水中に沈められた土砂に重力が加わる動的な過程を扱い、水圧と土砂の有効応力が最終的に理論的な静水圧分布に収束することを確認しました。
  • 水中地滑りの再現: 実験スケールの水中地滑りをシミュレートし、土砂の堆積形状や、地滑りによって誘発される波(impulsive wave)の形状が実験データと良好に一致しました。

4. 考察
本研究の結果から、以下の点が考察されています。

  • ADFとIDFの比較: 両モデルは数学的には等価ですが、SPHの実装においてはIDFの方が数値的に安定し、精度が高いことが判明しました。これは、ADFが空隙率の変化に対して敏感すぎ、圧力計算にノイズが乗りやすいためです。
  • 統一的なフレームワーク: 提案手法は、純粋な水領域、乾燥した土砂領域、およびそれらが混合した飽和領域を、単一の方程式系で統一的に扱える点が強力です。
  • 今後の課題: 3次元シミュレーションは計算負荷が高いため、GPUによる加速が不可欠です。また、水中地滑りの実験で見られた土砂の急激な体積膨張(細粒分の拡散など)を完全に再現するには、単なる構成則を超えた、水と土砂のより高度な界面混合モデルが必要であることも示唆されました。

密度を変更しないと、計算が複雑にならず理解が楽。IDFがADFに比べて安定であることも実感しました。ただ、地中で体積を膨張させるというのは初期配置が面倒。私は粒子分割・統合で対応しました。発表が2022年ですから、改良案は出ているのかもしれません。


文献:3D semantic mapping of surface geological features

3D semantic mapping of surface geological features - ScienceDirect 

AI要約

1. 背景
地学研究(地形学、災害評価、環境モニタリングなど)において、3D空間上のデータに「岩」「断層」などの意味(セマンティクス)を割り当てるセマンティックマッピングは非常に重要です。しかし、以下の課題が大きな障壁となっていました。

  • アノテーションの困難さ: 数百万点におよぶ大規模な3D点群データに、手作業で正確なラベル(注釈)を付けるのは極めて困難で時間がかかります。
  • トレーニングデータの不足: 地質学分野に特化した、機械学習用の汎用的な3Dデータセットが不足しています。
  • 既存モデルの限界: コンピュータビジョン分野の既存3Dセグメンテーションモデルは、構造化されていない屋外の広大な地質データには最適化されていませんでした。
本研究は、これら「学習データの不足」と「大規模データの処理」という2つの大きな課題を解決することを目指しています。

2. 手法:独自の統合アルゴリズム「SegMo3D」
提案手法の核となるのは、既存の大規模視覚モデル(LVM)セグメンテーション・モザイキング・アルゴリズムの統合です。

  • 2Dセグメンテーション(意味の抽出): ドローン画像に対し、学習不要(ゼロショット)で動作するSAM2を適用し、画像内のオブジェクトを自動で切り出します。さらに、Grounding DINOを併用することで、テキスト(例:「rock(岩)」)による検索・抽出を可能にしました。
  • 3D-2D投影(空間の紐付け): SfM(Structure-from-Motion)を用いて、写真から3D点群を生成し、カメラの位置・向きを推定します。この情報を使い、3Dの点を2D画像上に投影することで、どの点群がどの画像ピクセル(およびセグメンテーション)に対応するかを計算します。この際、手前の物体に隠れた点を除去する「デプスフィルタリング」を適用します。
  • セグメンテーション・モザイキング(新規性の核): 異なる角度から撮影された多数の画像による認識結果を、3D空間で一つに繋ぎ合わせます。
  • 投影フィルタリング済み3D IoU: 異なる視点からの認識結果をマージする際、3D点を一度別の画像平面に再投影して重なりを確認する独自の基準を導入し、視点違いによるノイズを排除しました。
  • 確率的投票戦略: 個々の画像の認識結果をそのまま信じるのではなく、複数の画像からの「証拠」を確率的に集計して最終的なラベルを決定します。これにより、一部の画像で認識ミスがあっても、全体として正確な判断が可能になります。
  • 効率化設計: 計算時間が画像数に対して線形に増えるように設計されており、数千万点規模の膨大なデータも現実的な時間で処理できます。

3. 結果
合成データと実世界のUAV(ドローン)データの両方で検証が行われました。

  • 精度の向上: 合成データ(Kubric)を用いたテストでは、既存の最先端手法(SAM3D、SAMPro3D)と比較して、誤検出(false positives)を大幅に減らし、高い平均精度(mAP)を記録しました。
  • 実世界データへの適応: アリゾナ州の岩壁データ(約1,250万点)において、自立した岩の抽出に成功しました。競合手法のSAM3Dが大規模データに対応できず、データを間引く(ダウンサンプリング)必要があったのに対し、SegMo3Dは高解像度のまま処理を完遂しました。
  • ケーススタディ: 抽出した岩の形状から「高さと幅の比率(脆弱性の指標)」を自動計算し、地震発生時に崩落しやすい岩(PBR:不安定な岩)の脆弱性分布マップを作成することに成功しました。

4. 考察

  • 実用性: 専門的な学習データを用意することなく、既存のSfMワークフロー(Agisoft MetashapeやOpenDroneMapなど)に組み込んで、誰でも高精度な3Dセマンティックマップを作成できる道を開きました。
  • 技術的な進歩: 従来の「下から順に繋ぎ合わせる(エラーが蓄積しやすい)」方式から、複数の視点を統合する「確率的決定」方式へと転換したことで、複雑な地質環境での安定性が飛躍的に向上しました。

今後の課題:

  • メモリ消費: 大規模な関連付けデータを保持するために、非常に大きなRAM容量(実験では約40GB)を必要とします。
  • SfM精度への依存: カメラ位置の推定精度が低いと、空間的なズレが生じます。
  • 2Dモデルの限界: 最終的な精度はSAM2などの2D認識能力に依存するため、地質学に特化した2D学習モデルが登場すれば、さらに精度が向上すると期待されます。

UAV画像による点検にも使えそうです。
voting による視点間のセグメンテーション統合という方法は、見たことがありません。素晴らしいですね。

資料では、不安定な岩(PBR: Precariously Balanced Rocks)が転倒するために必要な最小のPGA(PGA overturning)は下式とされています。

PGA  =1.3g・tan(W/H)

g: 重力加速度
W/H: 幅と高さの比(幅を高さで割ったもの)

この関係性は、地震時のハザード分析や落石リスクの評価に直接活用できるとのことですが、どの程度役立つかは未知。スクリーニングに使う程度でしょうか?落石源としての独立性指標も入ると、より実務で使いやすくなるでしょう。


Dtransu + 地表流 +移流分散

Dtransu に地表流を組み込みました。

以前(といっても10年も前になるのですが)、地表の水頭Pを排除しないように改造していました。それを地表流として平面上で散らすだけです。散らす方法はそろっていますので、あとは組むだけでした。それもAIが頑張ってくれるようになったので、重い腰を上げることに。
https://phreeqc.blogspot.com/2020/05/kinematic-wave-diffusion-wave.html

組んでみると、それなりに谷部には水が流れます。が、思ったほど高くなりません。30mメッシュで 1㎞×1㎞ のテストケースを作っていたのですが、もっと谷部を細かく分割しないと高くなりません。また、表層も薄くしないとPが精度よく出ません。つまり、地下水のみの計算よりもメッシュを細かく切る部分が発生するということです。ま、当然なのですが。
計算時間もかかります。地下水の流れは遅いので dt を飛ばせるのですが、地表流はその間にサブステップを回す必要があります。
濃度では、同じPでも地下水からの湧き出し、降雨による希釈を分離する必要がありました。こちらは組んでいる最中に気が付きました。

組んでは見たものの、思ったよりも計算時間がかかるので実用的でないなあと。また寝かせることになりそうです。

2026年5月4日月曜日

地理空間MCP Server

地理空間情報:地理空間MCP Server - MLIT Geospatial MCP Server - (α版) - 国土交通省

国交省さんが公開されたMCPサーバーです。第一印象は「対応が早い」でした。河川砂防技術基準の学習用データセット公開に続き、これです。今後、さらに展開されるのでしょう。

動画では Claude Code を利用されています。これ、かなり使い勝手が良いので私も利用しています。もうChat に戻れません。

私の勤めている会社は Chat 止まりです。MCPサーバーにアクセスするためのツールはホワイトリストに入っていないため利用できません。が、そのうち対応してくれるでしょう。たぶん。
Office365  もMCP 経由で操作できるようになりましたので、早く業務メールも処理できるようにして欲しいのですが。

コード整備 その2

・ボーリングコアから柱状図作成
以前は手抜きで生成AIに丸投げ。そりゃダメよね、という結果でした。
今回は画像認識、評価を正攻法で積み上げる仕様で着手。古典的な画像処理からSAM2, Dino v2, YOLO8など、何を使うか選択させるところから実装、比較、評価、次の方針提案までをAIさんにお任せ。こちらは出てきた結果を見て方針変更の必要性を適時与えるだけ。手がかかりません。
コア、サンプリング箇所くらいは教師ナシでもXMLから判断できるだろうと思いきや、意外と難しい。仕方がないので少ない教師データを与えるとで適切に学習が進みました。教師データ作成のためのセグメント指定アプリもAIさんに作っていただきました。ありがたや。
まだセグメンテーションが完璧ではなく、その後の評価もまだまだですので方針を変える必要ありかもしれません。が、自動で試行を繰り返してくれるのは(時間がかかっても)手がかからないのでうれしい限りです。

・PCからエッジAIへ
PCで作成した巨大モデルをセンサー側に載せようと思い、方針作成をAIさんに指示。実機が手元になかったのテストまではできていませんが、数時間でプログラム作成までたどり着きました。しかも、上記の柱状図作成と並行で進行。部下を2人得たような気分です。

・過去コードのバグフィックス
過去に書いたコードを読ませてバグを調査。それなりに出てきます。もともと、これが目的の一つで有償AIを利用しているのですから、ありがたいと思うべきなのでしょうが。ま、修正もAIさんにお願いするので、それほど手はかからないか。

AIを利用したコーディングには、ある程度の知識やノウハウを有していた方が効率的です。その点、これまでのコーディング経験は役立つだろうと思います。若い方はノウハウなしで作っているので、また違った感性が育つのでしょう。
1年後、どのようにAIが変化して、技術者が対応するようになっているのか、楽しみです。

2026年5月2日土曜日

コード整備

先月、地方への出張が続いたためか、出不精がより落ち着いて家にこもっています。時間のあるうちに、いくつかのコードとマニュアルを整備することにしました。

・機械学習モデルの利用サンプル
お客様のご依頼で、Pythonを触ったことのない方でも使えるようにブラウザ上で判定させるサンプルモデルを作成。Python 環境を Docker file にまとめ、OSに関わらず動くようにしました。

・水文水質データベースのスクレーパー
国土交通省 水文水質データベースから、以下のデータをCSVファイルとして取得できるようにしました。
  • 観測所一覧 雨量・水位流量・ダム堰
  • 時間雨量 指定観測所の任意期間の時間雨量 [mm/h]
  • ダム諸量 指定ダムの任意期間の流域平均雨量・貯水量・流入量・放流量・貯水率
  • 水位・流量 指定観測所の任意期間の水位 [m]・流量 [m³/s]
このスクレーパーは、後輩さんからの依頼です。以前、Python で似たようなスクリプトを作成していましたが、Pythonを知らない方でも簡単に使えるようにC++へ移植・拡張。すべてブラウザのフォーム操作のみで完結するGUIも作成し、コマンドプロンプトでなくとも動かせるようにしました。
リクエスト間隔を2秒に固定しサーバー負荷への配慮しつつ、取得済みデータはローカルにキャッシュして二度取得しないようにしました。どの程度のアクセス頻度がOUTなのか判断できなかったため、公開は控えています。

・SPH 土ー水連成
Drag Force を考慮した2相2層でのコードを整備。もともと書いていたコードに対し、以下の点を変更しました。 
  • IDF(Peng 2022)への移植 — 水相を intrinsic density rho_tilde で記述し、自由水-飽和土界面の数値不整合を解消。ベースライン定式化を置換し、以後の全機能の土台に。
  • 境界条件の刷新 — mDBC(English 2022) へ統一(Shepard ghost + hydrostatic 補正)。
  • 数値安定化レイヤ追加 — Tait γ=7において、Riemann 圧力拡散(Zhang 2017)、δ-SPH 拡散、Bonet-Lok カーネル補正、HHT-α 積分を追加。
最も効いた改編はIDF 移植でした。
上記以外にもAIに多様な文献を集めさせて実装し試しています。便利な時代になったのですが、それら棄却した内容に対する理解が追い付いていません。復習が必要です。

つづきます。

2026年4月27日月曜日

AI コーディング

AIの助けを借りてコーディングし始めたころも「すごい」と思いましたが、今はAI主導でコーディングできるようになっています。あらためて「すごい」。これから何度驚かされるのでしょうか。

1年ほど寝かせていたコードですが、2週間ほどで問題点を見つけ、概ねそれらしく動くようになりました。その間、次々に露呈する問題に対して対策を施した文献を探し、実装し、試行したのはAIさんです。1年前と比べても、文献収集力、試行錯誤の効率が段違いです。仕事で使わない手はありません。

この時代、学生さんから見たら、AIを使ってもプログラムを書けないオジサンは老害に見えるかもしれませんね。経験ベースのオジサンたちが古いやり方を踏襲しようとすると、それだけでハラスメント?になるかもしれません。時代は繰り返す、でしょうか。昔も今も、このような構造は変わらないのでしょう。

さあ、コーディング問題は片付いたも同然です。寝かせていた子たちを起こしていきましょう。