非線形有限法の検証テスト

このノートブックには,非線形の有限要素法が予期する通りに作動するかどうかを検証するテストが含まれている.すべてのテストを実行する場合には,SelectAllを使い,Shift+Enterを押す.すると結果が 「テスト結果の調査」のセクションに表示される.

テスト中の微分方程式は通常非アクティブな形式で与えられる.場合によっては,微分方程式の非アクティブ形式のみで特定の微分方程式を設定できるということもある.実際にどのような場合に非アクティブな方程式が使われるかについての詳細は,「有限要素法の使用上のヒント」のチュートリアルで説明される. 「形式的な偏微分方程式」「ノイマン値と形式的な偏微分方程式」 aについてのセクションは特に関連している.厳密にはほとんどのテストにおいて非アクティブな形式は必要ではないが,方程式のペアもテストできるように,非アクティブ形式も用意されている.

これらのテストは,独自の微分方程式モデルを開発する基礎ともなるものである.このため,テストは定常(時間に依存する)と非定常(時間に依存しない)のテストにグループ分けされている.次に方程式の数によってグループ分けされている.単一方程式あるいは結合方程式が考慮される.それらのカテゴリでは,一次元と二次元のテストがある.三次元のテストがないのは,有限要素コードの実装による理由からである.すべての次元におけるコードの基本は同じであり,三次元のテストを含むことによる利点はあまりないからである.

実際のテスト内のセルの中には評価できないものもある.これらのセルには主に記号的な微分が含まれ,実行に余分なランタイムとメモリが必要である.本当の解析解が存在する場合には,関数として返される.微分をそこで調査することができる.これらのセルを評価可能にするためには,評価したいセルを選び,セル セルのプロパティを選んでから「評価可能」にチェックマークが入っていることを確かめる.

テストが意図されるように作動するためには,個々のサブテストも評価されなければならない.

最新の有限要素パッケージをロードする.
有限要素法を使うようにオプションを設定する.
多くのメモリを必要とする上の結果が保存されることを避けるために,履歴の長さを0に設定する.

定常テスト

このセクションには,定常の(時間に依存しない)非線形偏微分方程式の例が含まれる.

一次元の単一方程式

このセクションには,方程式が1つである非線形の常微分方程式の例が含まれる.独立変数を1つ含む常微分方程式は,通常2つ以上の独立変数を扱う偏微分方程式の特別な場合である.

拡散FEM-NL-Stationary-1D-Single-Diffusion-0001

テストの参考文献:

[1], chapter 7, page 341.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解析解を設定する.
境界条件:

および

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな偏微分方程式をテストする.
テスト2:
アクティブな偏微分方程式をテストする.
テスト3:
ステップと評価の数をチェックしながら,低レベル関数をテストする.

拡散FEM-NL-Stationary-1D-Single-Diffusion-0002

テストの参考文献:

[4], page 38

方程式:

右辺 f は,解析解から計算される.

方程式を設定する.
解析解:

解のパラメータを設定する.  
解析解を設定する.
右辺 f を設定する.
境界条件:

および

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3:
複数のメッシュブロックで低レベル関数をテストする.

対流FEM-NL-Stationary-1D-Single-Convection-0001

テストの参考文献:

[2], problems: 3.7, page 83.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解析解を設定する.
境界条件:

および

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3:
低レベル関数をテストし,ステップと評価を管理する.

対流FEM-NL-Stationary-1D-Single-Convection-0002

テストの参考文献:

なし

方程式:

非アクティブな形式で方程式を設定する:
解析解:

解析解を設定する.
解析解を確かめる.
境界条件:

および

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3:
低レベル関数をテストし,ステップと評価を管理する.

反応FEM-NL-Stationary-1D-Single-Reaction-0001

テストの参考文献:

[1], problem 7.1, page 383.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

なし

境界条件:

および

境界条件を設定する.
領域:

領域を設定する.
別の数値解:
別の数値解を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3:
低レベル関数をテストし,ステップと評価を管理する.

反応FEM-NL-Stationary-1D-Single-Reaction-0002

テストの参考文献:

[1], problem 7.3, page 384.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

なし

境界条件:

および

境界条件を設定する.
領域:

領域を設定する.
別の数値解:
別の数値解を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3と4:
低レベル関数のデータ構造を設定する.
低レベル関数をテストし,ステップと評価を管理する.
低レベル関数の別の形成をテストする.

反応FEM-NL-Stationary-1D-Single-Reaction-0003

テストの参考文献:

なし

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
領域:

このテストは任意領域を使う.

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3と4:
低レベル関数のデータ構造を設定する.
低レベル関数をテストし,ステップと評価を管理する.
低レベル関数の別の定式化をテストする.

反応FEM-NL-Stationary-1D-Single-Reaction-0004

テストの参考文献:

なし

方程式:

非アクティブな形式で方程式を設定する.
解析解:

-(-1)5/6

解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
領域:

このテストは任意領域を使う.

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3と4:
低レベル関数のデータ構造を設定する.
低レベル関数をテストし,ステップと評価を管理する.
低レベル関数の別の定式化をテストする.

負荷FEM-NL-Stationary-1D-Single-Load-0001

テストの参考文献:

[3], Exact Solutions > Ordinary Differential Equations > Second-Order Nonlinear Ordinary Differential Equations; Equation 3.1.1; Autonomous equation.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

このとき,C1 と C2 は任意定数である.

解析解を設定する.
解析解を確かめる.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
領域:

このテストは任意領域を使う.

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3:
低レベル関数をテストし,ステップと評価を管理する.

負荷FEM-NL-Stationary-1D-Single-Load-0002

テストの参考文献:

[2], problem 3.17, page 84.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

このとき λi は方程式の根である.

解析解を設定する.
境界条件:

および

境界条件を設定する.
領域:

このテストは任意領域を使う.

領域を設定する.
テスト1:
初期シード値で非アクティブな偏微分方程式をテストし,解を1つ得る.
テスト2:
別の初期シード値で非アクティブな偏微分方程式をテストし,別の解を1つ得る.
テスト3:
偏微分方程式をテストする.
テスト4:
別の初期シード値でアクティブな偏微分方程式をテストし,別の解を1つ得る.

放射境界条件FEM-NL-Stationary-1D-Single-Radiation-0001

テストの参考文献:

[1], problem 7.13, page 385.

モデル問題を修正し,比較のために解析解が使えるようにし,非線形境界条件のテストを拡張する.

方程式:

[1]で与えられたパラメータを2つの点において変更する.まず,T に非零の値を与えて,テストのスコープを拡張する.次に,P を0に設定して解析解が使えるようにする.

パラメータを指定する.
非アクティブな形式で方程式を設定する.
解析解:

位置 L では,u の解は以下のように求まる(その下に微分を示す).

L の解.

以下は,L における解の微分である.テストの実行時に時間がかからないように,セルは評価できないようになっている.

一般解の構造は以下の通りである.
以下に注意する.
x=0においてDirichletConditionによって示唆される第1制約条件を指定する.
c2から示唆される第2制約条件を指定する.
一般化されたノイマン値の定義を使い,制約条件を挿入する.
Reduceを使って正の実根を求める.
境界条件:

および

境界条件を設定する.
領域:

このテストは任意領域を使う.

領域を設定する.
テスト1:
初期シード値で非アクティブな偏微分方程式をテストし,解を1つ得る.
テスト2:
初期シード値でアクティブな偏微分方程式をテストし,解を1つ得る.
テスト3:
低レベル関数をテストし,ステップと評価を管理する.

一次元方程式系

このセクションには,非線形の常微分方程式系の例が含まれる.

反応FEM-NL-Stationary-1D-System-Reaction-0001

テストの参考文献:

[3], Exact Solutions > Systems of Ordinary Differential Equations > Nonlinear Systems of Two Ordinary Differential Equations, 3.2.7

方程式:

f と g の特定値について方程式を設定する.
解析解:

解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3と4:
低レベル関数のデータ構造を設定する.
低レベル関数をテストし,ステップと評価を管理する.
低レベル関数の別の定式化をテストする.

二次元の単一方程式

このセクションには,単一方程式を含む非線形の偏微分方程式の例が含まれる.

拡散FEM-NL-Stationary-2D-Single-Diffusion-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations > Other Second-Order Partial Differential Equations; Equation 4.1.2; Equation of steady transonic gas flow.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

任意定数 C[1],C[2],C[3],C[4],a, b で解析解を設定する.
解析解を検証する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:

アクティベートされたものの場合は,線形化の結果,偏微分方程式の係数で一次微分よりも高次の微分になり,これは処理することができない.

偏微分方程式をテストする.
テスト3:
低レベル関数のデータ構造を設定する.
低レベル関数をテストし,ステップと評価を管理する.

反応FEM-NL-Stationary-2D-Single-Reaction-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations > Second-Order Elliptic Partial Differential Equations; Equation 3.1.2;

方程式:

非アクティブな形式で方程式を設定する.
解析解:

任意定数 C[1]と C[1]で解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

境界条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.
テスト3と4:
低レベル関数のデータ構造を設定する.
低レベル関数をテストし,ステップと評価を管理する.
低レベル関数の別の定式化をテストする.

非定常テスト

このセクションには,テストに使うための,時間に依存する非線形偏微分方程式が含まれる.

一次元の単一方程式

このセクションには,単一方程式を含む時間依存の非線形常微分方程式の例が含まれる.独立変数が1つである常微分方程式は,通常は2つ以上の独立変数を扱う偏微分方程式の特別な場合である.

拡散FEM-NL-Transient-1D-Single-Diffusion-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Parabolic Partial Differential Equations > Heat Equation with a Power-Law Nonlinearity; Equation 1.2.1; Heat equation with a power-law nonlinearity.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

拡散FEM-NL-Transient-1D-Single-Diffusion-0002

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Parabolic Partial Differential Equations > Heat Equation with a Exponential Nonlinearity; Equation 1.2.7; Heat Equation with a Exponential Nonlinearity.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

拡散FEM-NL-Transient-1D-Single-Diffusion-0003

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations > Second-Order Hyperbolic Partial Differential Equations; Equation 2.2.1;

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.

対流FEM-NL-Transient-1D-Single-Convection-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Parabolic Partial Differential Equations > Burgers Equation; Equation 1.3.1; Burgers equation.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

対流FEM-NL-Transient-1D-Single-Convection-0002

テストの参考文献:

https://mathematica.stackexchange.com/q/10453/18437

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

反応FEM-NL-Transient-1D-Single-Reaction-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Parabolic Partial Differential Equations > Fisher Equation; Equation 1.1.1; Fisher equation.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

反応FEM-NL-Transient-1D-Single-Reaction-0002

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Hyperbolic Partial Differential Equations > KleinGordon Equation with a Power-Law Nonlinearity; Equation 2.1.1; Klein--Gordon equation with a power-law nonlinearity.

方程式:

非アクティブな形式で方程式を設定する.
解析解:

, ,

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

負荷FEM-NL-Transient-1D-Single-Load-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Parabolic Partial Differential Equations > Equation 1.1.5;

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
偏微分方程式をテストする.

負荷FEM-NL-Transient-1D-Single-Load-0002

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Hyperbolic Partial Differential Equations > Modified Liouville Equation; Equation 2.1.3;

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
テスト2:
偏微分方程式をテストする.
テスト3:

アクティベートされたテスト"FEM-NL-Transient-1D-Single-Load-0002-B"は,非アクティブなテス"FEM-NL-Transient-1D-Single-Load-0002-A"よりも小さなノルムを持つことに注意する.これは,異なる定式化のためであり,アクティベートされた場合には時間積分はより小さな時間ステップを取るからである.これは予想通りの結果である.この動作は,"MaxStepSize"を変更するか,少し異なる非アクティブな定式化を使うかすることによって,変更できる.

時間ステップサイズの極限を低くする.
非アクティブな偏微分方程式を再度定式化する.

反応-拡散FEM-NL-Transient-1D-Single-Reaction-Diffusion-0001

テストの参考文献:

[3], Exact Solutions > Nonlinear Partial Differential Equations >Second-Order Parabolic Partial Differential Equations > Fisher Equation; Equation 1.2.5;

方程式:

非アクティブな形式で方程式を設定する.
解析解:

解のパラメータを設定する.
解析解を設定する.
境界条件:

境界条件は指定されない.境界条件は解析解から推測される.

および

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.
テスト2:
アクティベートされた偏微分方程式をテストする.

二次元の単一方程式

このセクションには,単一方程式を含む時間依存の非線形偏微分方程式の例が含まれる.

拡散FEM-NL-Stationary-2D-Single-Diffusion-0001

テストの参考文献:

[5], Example 6.3.6, page 100

方程式:

非アクティブな形式で方程式を設定する.
解析解:

なし

人工的な解

解析解を設定する.
人工的な解の右辺を構築する.
境界条件:

境界条件を設定する.
初期条件:

初期条件は指定されない.初期条件は解析解から推測される.

初期条件を設定する.
領域:

領域を設定する.
テスト1:
非アクティブな形式の偏微分方程式をテストする.

メッシュの最大セルの大きさを小さくし,最大ステップサイズをより小さくすることによって,より高品質の結果が得られる.ここでそうしなかったのは,テストにより長い時間かかるからである.

テスト結果の調査

このセクションには,実行したテストの評価が含まれる.TestResultObjectのすべてのインスタンスを集め,TestReportを生成する.

ノートブックからTestResultObjectを抽出し,TestReportを生成する.
実行に失敗したテストを調べる.

上の表が空であれば,すべてのテストが成功したということである.

参考文献

[1] Advanced Topics in Finite Element Analysis of Structures; Bhatti, M. Asghar; Wiley; ISBN: 978-81-265-4537-7.

[2] Nonlinear Finite Element Analysis; Reddy, J. N.; Oxford; ISBN: 978-0-19-852529-5.

[3] "EqWorld, The World of Mathematical Equations"; http://eqworld.ipmnet.ru.

[4] Automated Solution of Differential Equations by the Finite Element Method; Logg, A; Mardal, K-A; Wells, G. N.; Springer; ISBN: 978-3-642-23098-1.

[5] "Nonlinear, Transient Conduction Heat Transfer Using a Discontinuous Galerkin Hierarchical Finite Element Method"; Sanders, J. C.; http://www.phys.uconn.edu/~sanders/ThesisMain.pdf.