ブシネスク問題(半無限弾性体の点荷重)
理論と物理
概要
先生、Boussinesqの半無限体問題って、地盤工学の教科書で見かけたんですけど、V&Vのベンチマークとしても使えるんですか?
3Dソリッド要素の検証に非常に有用な古典的問題だ。弾性半無限体の表面に集中荷重 $P$ を加えたときの応力と変位の厳密解を1885年にBoussinesqが導出した。3D場の$1/r$特異性を含むから、要素の精度や特異点近傍のメッシュ設計を評価するのに最適だ。
どういう場面で使われるんですか?
主に2つ。ひとつはFEAの3Dソリッド要素のCode Verification。もうひとつはHertz接触解析の前段検証だ。Hertz接触理論はBoussinesq解の重ね合わせ(面圧分布の畳み込み積分)として導出されるから、Boussinesq問題をクリアできないソルバーで接触解析をやるのは危険だ。
支配方程式
具体的な解析解を教えてください。
荷重点を原点、荷重方向を$z$軸正方向とした円筒座標$(r, z)$で表す。$R = \sqrt{r^2 + z^2}$ として、変位場は
ここで $G = E/[2(1+\nu)]$ はせん断弾性係数。応力場で最も重要な$z$軸上の鉛直応力は
$r = 0$, $z \to 0$ で発散しますよね。FEAでこれをどう扱うんですか?
核心的な問いだ。FEAの離散化では特異点を正確に再現できない。だからこそ、荷重点から十分離れた位置で理論値との比較を行う。評価点は $z > 5h_{elem}$($h_{elem}$は荷重点近傍の要素サイズ)を目安にする。荷重点での応力値はメッシュ依存で意味がないから評価対象外だ。
有限モデルでの近似
半無限体をFEAの有限モデルでどう表現するんですか?
十分大きなモデル寸法を取ればよい。着目領域の最大距離を $L_{eval}$ とすると、モデルの外形は $R_{model} \geq 10 L_{eval}$、深さ $D_{model} \geq 10 L_{eval}$ にする。遠方の境界条件は底面を$z$方向固定、側面を半径方向ローラーにするのが標準だ。
軸対称性を活かしてCAX8要素(Abaqus)や2D軸対称要素で解くのが計算効率的だ。3D検証が必要なら1/4対称の3Dモデルを使う。
無限要素を使う方法もありますか?
AbaqusのCINAX4(軸対称無限要素)やCIN3D8(3D無限要素)を外縁に配置すれば、モデルサイズを$R_{model} \geq 3 L_{eval}$程度まで縮小できる。計算コストが大幅に下がるから、パラメトリックスタディでは無限要素の活用を推奨する。
ベンチマーク検証データ
具体的な数値で検証したいです。
標準パラメータ: $P = 1$ MN、$E = 200$ GPa、$\nu = 0.3$。評価点は荷重点直下 $z = 0.1$ m。
| 物理量 | 理論値 | Abaqus CAX8R | Nastran CHEXA-20 | 誤差(Abaqus) |
|---|---|---|---|---|
| $\sigma_{zz}$ [MPa] | -47.75 | -47.61 | -47.53 | 0.29% |
| $u_z$ [mm] | 0.00249 | 0.00248 | 0.00248 | 0.40% |
メッシュサイズ5mmで1%以内の精度が得られる。3水準のメッシュでGCIを算出すると0.5%程度になり、十分に収束していることが確認できる。
各項の物理的意味
- 保存量の時間変化項:対象とする物理量の時間的変化率を表す。定常問題では零となる。【イメージ】浴槽にお湯を張るとき、水位が時間と共に上がる——この「時間あたりの変化速度」が時間変化項。バルブを閉じて水位が一定になった状態が「定常」であり、時間変化項はゼロ。
- フラックス項(流束項):物理量の空間的な輸送・拡散を記述する。対流と拡散の2種類に大別される。【イメージ】対流は「川の流れがボートを運ぶ」ように流れに乗って物が運ばれること。拡散は「インクが静止した水中で自然に広がる」ように濃度差で物が移動すること。この2つの輸送メカニズムの競合が多くの物理現象を支配する。
- ソース項(生成・消滅項):物理量の局所的な生成または消滅を表す外力・反応項。【イメージ】部屋の中でヒーターをつけると、その場所に熱エネルギーが「生成」される。化学反応で燃料が消費されると質量が「消滅」する。外部から系に注入される物理量を表す項。
仮定条件と適用限界
- 連続体仮定が成立する空間スケールであること
- 材料・流体の構成則(応力-歪み関係、ニュートン流体則等)が適用範囲内であること
- 境界条件が物理的に妥当かつ数学的に適切に定義されていること
次元解析と単位系
| 変数 | SI単位 | 注意点・換算メモ |
|---|---|---|
| 代表長さ $L$ | m | CADモデルの単位系と一致させること |
| 代表時間 $t$ | s | 過渡解析の時間刻みはCFL条件・物理的時定数を考慮 |
数値解法と実装
メッシュ設計戦略
荷重点周りのメッシュはどう設計すべきですか?
$1/r^2$の応力勾配に対応するバイアスメッシュが必須だ。荷重点を中心とした放射状メッシュ(スパイダーウェブメッシュ)が最適で、幾何級数的に要素サイズを増大させる。
- 荷重点近傍: $h_{min} = L_{eval}/100$ 程度
- 外縁: $h_{max} = L_{eval}/2$ 程度
- バイアス比: 1.5〜2.0の幾何級数
軸対称の場合は荷重点($r=0$軸上)に縮退した三角形要素を1列配置し、そこから四角形要素を放射状に展開する。
TET10の自動メッシュではダメですか?
精度は出るが、同等精度に必要な要素数がHEX20の3〜5倍になる。検証目的ではマッピングメッシュ(六面体)を推奨する。ただし複雑形状への応用を見据えた自動テトラメッシュの精度検証をこの問題で行うのも有意義だ。
Richardson外挿とGCI
メッシュ収束をGCIで定量評価する手順を教えてください。
荷重点直下$z = 0.1$ mの$\sigma_{zz}$を指標に3水準で計算する。
| メッシュ | $h_{min}$ [mm] | $\sigma_{zz}$ [MPa] | 理論値との差 [%] |
|---|---|---|---|
| 粗 | 20.0 | -44.2 | 7.4 |
| 中 | 10.0 | -46.9 | 1.8 |
| 細 | 5.0 | -47.5 | 0.5 |
観測収束次数: $p = \ln|(44.2-46.9)/(46.9-47.5)| / \ln 2 \approx 2.5$
GCI_fine: $1.25 \times |(-46.9-(-47.5))/(-47.5)| / (2^{2.5}-1) \approx 0.3\%$
観測収束次数が理論値の2を超えていますが、問題ないですか?
特異点近傍では漸近領域に完全には入っていない段階で超収束が見られることがある。4水準目のメッシュ($h_{min} = 2.5$ mm)を追加して$p$が安定しているか確認すべきだ。漸近領域での$p$安定が確認できれば、GCIの信頼性が保証される。
ソルバー別の実装ノート
各ソルバーでの注意点をまとめてもらえますか?
Abaqus: CAX8Rが定番。*CLOAD で軸上節点に荷重印加。底面の無限要素はCINAX4。後処理はPythonスクリプトでODB APIから応力抽出可能。
Nastran: CTRIAX6で軸対称解析可能だが使いにくい。3DモデルでCHEXA-20が実用的。SOL 101、GPSTRESS出力で任意点の応力テンソルを取得。
CalculiX: Abaqus互換のC3D20を使用。軸対称要素はないから3Dモデルで解く。ccx で実行し、.frdをParaViewで可視化。
Code_Aster: MODELISATION='AXIS'で軸対称。QUAD8相当の要素。SALOMEでメッシュ生成、コマンドファイルで境界条件設定。
どのソルバーでも同じ結果が出ますか?
同等のメッシュ密度・要素次数なら変位で4〜5桁、応力で3〜4桁一致する。差異は主に節点外挿アルゴリズムの違いに起因する。積分点での値で比較すれば一致度はさらに向上する。
低次要素
計算コストが低く実装が簡単だが、精度は限定的。粗いメッシュでは大きな誤差が生じる可能性がある。
高次要素
同一メッシュでより高い精度を達成。計算コストは増加するが、必要な要素数は少なくなる場合が多い。
ニュートン・ラフソン法
非線形問題の標準的手法。収束半径内で2次収束。$||R|| < \epsilon$ で収束判定。
時間積分
実践ガイド
V&Vベンチマークへの組み込み
Boussinesq問題を社内のV&V体制に組み込むにはどうすればいいですか?
以下の手順で進める。
1. 参照解プログラムの作成: PythonでBoussinesq解を計算する関数を用意。10行程度で書ける。この関数自体をNumPyの数値微分で検算しておく
2. 標準メッシュテンプレートの作成: 3水準のバイアスメッシュをGmsh等で自動生成するスクリプトを用意
3. 自動比較スクリプト: ソルバー実行→結果抽出→理論解比較→GCI算出→合否判定を一気通貫で行うPythonスクリプト
4. pytestへの統合: pytest test_boussinesq.py で全チェックが走るようにする
判定基準はどう設定しますか?
評価点($z = 0.1$ m)での$\sigma_{zz}$と$u_z$が理論値の1%以内。メッシュ「細」での値を基準にGCI < 5%。この基準は片持ち梁ベンチマークと同じレベルだから、一貫性がある。
接触力学への展開
Boussinesq問題からHertz接触への発展はどう進めるんですか?
Hertz接触理論は、Boussinesq解の面圧分布に対する畳み込み積分として導出される。球と平面の接触で、接触面の半楕円面圧分布
を積分すると接触半径$a$と最大面圧$p_0$が得られる。Boussinesq検証→Hertz接触検証→一般接触問題という段階的Validationがベストプラクティスだ。
なるほど、段階的に信頼性を積み上げていくわけですね。
その通り。V&Vの基本原則は「単純から複雑へ」だ。Boussinesq(線形弾性、軸対称)→Hertz(接触だが解析解あり)→一般接触(非線形、摩擦あり)と進む。各段階で参照解との一致を確認し、次の段階の信頼性基盤とする。
地盤工学での活用
地盤工学の実務でBoussinesq解はどう使われるんですか?
基礎設計の第一近似として使われる。地中の増加応力を計算し、圧密沈下量を推定する。具体的にはNewmarkチャートやFadum積分表を使って矩形分布荷重下の応力増分を求める手法が広く普及している。
FEAとの比較検証にも有用で、特にFEAモデルの境界条件(底面固定深度や側面位置)の妥当性を確認するのにBoussinesq解が参照になる。FEA結果がBoussinesq解から大きく外れている場合、モデル境界が近すぎるか境界条件の設定に問題がある。
地盤は非均質・非線形ですが、弾性解で十分なんですか?
作用応力が地盤の降伏応力に比べて十分小さい領域(常時荷重下の地盤)では弾性近似で実用的な精度が得られる。大変形や液状化を扱う場合は弾塑性モデルや有効応力解析に進む必要がある。その場合でもBoussinesq解は初期応力状態の推定やオーダー推定に使える。
解析フローのたとえ
解析フローは「科学実験」に似ている。仮説(解析モデル)を立て、実験(計算実行)し、結果を検証し、仮説を修正する——このPDCAサイクルが品質の高い解析を生む。
初心者が陥りやすい落とし穴
最もよくある失敗は「結果の検証を怠る」こと。美しいコンター図が得られても、それが物理的に正しいとは限らない。必ず理論解、実験データ、またはベンチマーク問題との比較を行うこと。
境界条件の考え方
境界条件は「実験の治具」に相当する。治具の設計が不適切であれば実験結果が無意味になるように、CAEでも境界条件が現実を正しく表現しているかが最も重要。
ソフトウェア比較
Abaqus での詳細実装
Abaqusでの入力ファイルの具体的なポイントを教えてください。
軸対称CAX8Rモデルの場合の要点はこうだ。
- *NODE で $r \geq 0$ の節点を定義。$r = 0$ の節点は自動的に対称軸として扱われる
- *ELEMENT, TYPE=CAX8R で8節点低減積分の軸対称四角形要素を使用
- *BOUNDARY で底面を YSYMM($u_z = 0$)、側面に無限要素を配置するか $u_r = 0$
- *CLOAD で対称軸上の表面節点に $P/2\pi$(軸対称なので周方向積分分の補正は不要。Abaqusが自動で処理)
Abaqusでの入力ファイルの具体的なポイントを教えてください。
軸対称CAX8Rモデルの場合の要点はこうだ。
注意: 軸対称モデルのCLOADは「単位ラジアンあたりの荷重」ではなく「全周分の荷重」として入力する。これを間違えると$2\pi$倍ずれる。
出力はどう取得しますか?
OUTPUT, HISTORY, VARIABLE=PRESELECT で特定節点の変位を時刻歴出力。応力はEL PRINT で要素積分点値を取得するか、Python ODB APIで座標指定のフィールド出力を抽出する。probeValues メソッドで任意点の補間値を取得できるから、理論値との自動比較に便利だ。
Nastranでの実装
Nastranでは軸対称が使いにくいと聞きましたが。
CTRIAX6は6節点三角形で、四角形にする場合はTRAX3やTRAX6を使うが、Abaqusほど使いやすくはない。実務的には3D 1/4対称モデル(CHEXA-20)で解くことが多い。
SOL 101で解き、GPSTRESS(SORT1,REAL)で応力出力を取得する。特定節点での応力を抽出するにはDMAP ALTER か pyNastran の OP2 読み込みが便利だ。
クロスチェックで注意すべき点は?
Nastranの応力テンソルの出力順序は $\sigma_{xx}, \sigma_{yy}, \sigma_{zz}, \sigma_{xy}, \sigma_{yz}, \sigma_{xz}$ で、Abaqusは $\sigma_{11}, \sigma_{22}, \sigma_{33}, \sigma_{12}, \sigma_{13}, \sigma_{23}$ だ。特にせん断成分の順序が異なる(Nastranは $xy, yz, xz$、Abaqusは $12, 13, 23$)から、比較時に取り違えないように注意すること。
オープンソースソルバーでの実装
CalculiXやCode_Asterでの検証はどう進めますか?
CalculiXはAbaqus互換の.inpファイルがほぼそのまま使える。C3D20要素で3D 1/4モデルを解く。注意点として、CalculiXのC3D20の積分点配置がAbaqusと微妙に異なることがある。結果は有効数字3〜4桁で一致するが、それ以上の精度が必要なら積分スキームの詳細をソースコード(src/e_c3d.f)で確認すべきだ。
Code_Asterは MODELISATION='AXIS' + QUAD8 で軸対称解析。SALOMEのSMESH モジュールでメッシュを生成し、MED形式で出力する。コマンドファイルのAFFE_MODELEとAFFE_MATERIAUで物理設定を定義する。
OSSの結果を信頼できる根拠は何ですか?
ソースコードが公開されているため、要素定式化のアルゴリズムを第三者が直接検証できることだ。実際、CalculiXのC3D20の剛性マトリクス計算はe_c3d.f内のGauss積分で明示されている。商用ソルバーではこの透明性がない。学術論文でOSSベースの検証を行い、その結果を商用ソルバーの独立検証として引用するのは確立された手法だ。
選定で最も重要な3つの問い
- 「何を解くか」:ブシネスク問題(半無限弾性体)に必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
- 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
- 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。
先端技術
多層地盤への拡張(Burmister解)
実際の地盤は一様じゃないですよね。多層の場合の理論解はあるんですか?
Burmister(1945)が二層弾性体の解を導出している。Hankel変換を含む積分形式で、数値積分が必要だが閉じた形の参照解として使える。舗装設計(上層がアスファルト、下層が路盤)のFEA検証に使う。
N層の一般解はTransfer Matrix法で系統的に構成でき、ELSYM5やKENLAYERなどの専用プログラムで計算可能だ。これをFEAの参照値として使い、層界面の処理(共有節点 vs. TIE制約)の精度を検証する。
層界面のモデル化で注意すべきことは?
完全接着条件なら共有節点で十分だが、すべり界面を考慮する場合は接触条件が必要になる。完全接着の検証ではBurmister解が参照になり、すべり界面の検証では別の解析解(層間摩擦なしのBurmister解)が必要だ。段階的に検証することが重要だ。
動的問題への拡張(Lamb問題)
動的荷重の場合はどうなりますか?
Lambの問題(1904)がそれに相当する。半無限体表面にステップ荷重を加えたときの過渡的弾性波伝播を扱い、P波・S波・Rayleigh波の到達時刻と振幅の理論解がある。
陽解法ソルバー(LS-DYNA、Abaqus/Explicit、OpenRadioss)の検証に最適だ。CFL条件 $\Delta t \leq h_{elem} / V_p$($V_p$はP波速度)に基づく時間刻みとメッシュサイズの関係が適切かを、波面到達時刻の精度で確認する。
弾性波解析のメッシュ基準はどうなりますか?
最短波長あたりのノード数が鍵だ。二次要素で1波長あたり5〜6要素、線形要素で10〜12要素が目安。S波の波長 $\lambda_s = V_s / f$ から必要な要素サイズが決まる。数値的な分散(周波数依存の位相速度ずれ)が許容範囲内かを確認するため、異なるメッシュ密度で波形を比較する必要がある。
非線形への拡張
弾塑性地盤の場合はどうアプローチしますか?
弾塑性では厳密解が存在しないから、Boussinesqの弾性解をヤング率に関するパラメトリックスタディの基準として使う。荷重レベルが低い段階では弾性解に一致し、荷重増大に伴って弾塑性解が弾性解から乖離する。その乖離パターンが物理的に合理的か(圧縮降伏→塑性域拡大→支持力限界)を確認する。
Terzaghiの極限支持力理論 $q_u = cN_c + \gamma D_f N_q + 0.5\gamma B N_\gamma$ が弾塑性FEAの別の参照になる。FEA結果と支持力理論の整合性を確認することで、Validationの信頼性を高められる。
結局、Boussinesq問題は「検証の出発点」として使い続けるわけですね。
トラブルシューティング
モデル境界の影響
モデルの外形が小さすぎるとどうなりますか?
固定境界からの反射で応力が過大評価される。底面固定が浅いと、荷重点直下の$\sigma_{zz}$が理論値より20%以上大きくなることもある。症状として、モデルサイズを変えると結果が変動する場合はこの影響を疑うべきだ。
対策:
- モデル寸法を段階的に増大させ、結果が変化しなくなるサイズを採用
- 無限要素で遠方条件を近似
- 経験値として $R_{model} \geq 20 z_{eval}$ を確保
無限要素がうまく機能しない場合はどうしますか?
無限要素の減衰関数が問題の特性と合っていない可能性がある。Abaqusの無限要素は指数減衰を仮定しているが、Boussinesq解は$1/r$減衰だから、厳密にはフィットしない。それでも実用上は十分な精度が得られるが、残差が気になる場合は有限要素領域を大きめに取る(無限要素との境界を遠ざける)のが安全だ。
荷重印加の問題
1節点に集中荷重を与えると、その節点の応力が無意味に大きくなりますよね。
それは正常な挙動だ。荷重点の応力はメッシュを細かくするほど際限なく増大する。これは物理的に正しい特異性の反映であり、FEAのバグではない。
実務的な対処:
1. 荷重点での応力は評価しない。$z > 5h_{elem}$ の位置で評価する
2. 面圧分布として荷重を分散させる場合、半径$a$が評価距離の1/10以下なら理論値との差は1%未満
3. Hertz接触のように物理的に面圧分布が決まる場合は、その分布を直接与えてBoussinesq解の積分と比較する
荷重を分散させる具体的な方法を教えてください。
等価性の確認は反力の合計が印加荷重と一致することで行う。
数値的アーティファクト
結果に変な振動が出ることはありますか?
低次要素(TET4、HEX8)で応力をコンタープロットすると、要素間で応力が不連続になりギザギザに見えることがある。これはC0連続の要素では応力(歪みの微分量)が要素境界で不連続になるためだ。
対処:
- 二次要素(TET10、HEX20)に切り替えると大幅に改善
- 節点平均化(SPR法: Zienkiewicz-Zhu のスーパーコンバージェントパッチリカバリ)で平滑化
- 平滑化前後の差が大きい箇所はメッシュ不足のサイン
SPR法というのは初めて聞きました。
Zienkiewicz and Zhu(1992)が提案した事後誤差推定法だ。各節点のパッチ内の積分点応力から最小二乗法で節点応力を高精度に回復する。回復前後の差が局所的な離散化誤差の推定値になる。多くの商用ソルバーでオプションとして実装されている。Abaqusでは*ERROR INDICATOR で利用可能だ。
「解析が合わない」と思ったら
- まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
- 最小再現ケースを作る——ブシネスク問題(半無限弾性体)の問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
- 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
- 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
関連トピック
なった
詳しく
報告