NDSolve`FEM`
NDSolve`FEM`

InitializePDECoefficients

InitializePDECoefficients[vd,sd,rules]

変数データ vd と解データ sd に従った規則によって指定された係数を初期化し,PDECoefficientDataオブジェクトを生成する.

詳細とオプション

  • 係数は,以下の形式の 個の空間次数における 個の二階偏微分方程式の系からのものであると想定される.
  • InitializePDECoefficients[vd,sd,rules]では,rulesname->coefficient の形式のものでなければならない.可能な係数名は以下の通りである.
  • "LoadCoefficients"{{f1},{f2},}f_(i) はスカラーである
    "LoadDerivativeCoefficients"{{γ1},{γ2},}gamma_(i) は長さ n のベクトルである
    "DiffusionCoefficients"{{-c11,-c12,},{-c21,-c22,},}c_(ij) は,スカラー,長さ n の対角ベクトル,n×n の行列のいずれかとして指定することができる
    "ConservativeConvectionCoefficients"{{-α11,-α12,},{-α21,-α22,},}alpha_(ij) は長さ n のベクトルである
    "ConvectionCoefficients"{{β11,β12,},{β21,β22,},}beta_(ij) は長さ n のベクトルである
    "ReactionCoefficients"{{a11,a12,},{a21,a22,},}a_(ij) はスカラーである
  • 規則がこれらの係数名について指定されていない場合には,そのタイプの係数はすべて0であると想定される.
  • DiscretizePDEは一般化されたPDECoefficientDataオブジェクトを取り,以下のような系の行列を提供する.
  • このとき は剛性行列であり, は荷重ベクトルである.
  • 偏微分方程式の定常系は が一階の時間導関数, が二階の時間導関数として,二階まで指定することができる.
  • 定常係数形式は以下である.
  • DiscretizePDEは一般化されたPDECoefficientDataオブジェクトを取り,以下のような系の行列を提供する.
  • このとき は質量行列, は減衰行列, は剛性行列, は荷重ベクトルである.
  • 可能な減衰係数名は以下の通りである.
  • "DampingDiffusionCoefficients"{{-dc11,-dc12,},{-dc21,-dc22,},}dc_(ij) はスカラー,長さ n の対角ベクトル,n×n 行列のいずれかとして指定できる.
    "DampingConservativeConvectionCoefficients"{{-dα11,-dα12,},{-dα21,-dα22,},}dalpha_(ij) は長さ n のベクトルである
    "DampingConvectionCoefficients"{{dβ11,dβ12,},{dβ21,dβ22,},}dbeta_(ij) は長さ n のベクトルである
    "DampingReactionCoefficients"{{dα11,dα12,},{dα21,dα22,},}dalpha_(ij) はスカラーである
  • 可能な質量係数名は以下の通りである.
  • "MassDiffusionCoefficients"{{-mc11,-mc12,},{-mc21,-mc22,},}mc_(ij) はスカラー,長さ n の対角ベクトル,n×n 行列のいずれかとして指定できる.
    "MassConservativeConvectionCoefficients"{{-mα11,-mα12,},{-mα21,-mα22,},}malpha_(ij) は長さ n のベクトルである
    "MassConvectionCoefficients"{{mβ11,mβ12,},{mβ21,mβ22,},}mbeta_(ij) は長さ n のベクトルである
    "MassReactionCoefficients"{{mα11,mα12,},{mα21,mα22,},}malpha_(ij) はスカラーである
  • "Mass"係数は質量行列 "Damping"係数は減衰行列 ,残りの係数は剛性行列 と荷重ベクトル に貢献する.
  • NDSolveは,非定常系を簡約し,時間において一階であるようにする.
  • 係数は,空間関数,時間関数,パラメータ関数,従属変数関数,従属変数の一次微分の関数のいずれでもよい.
  • 変数データ vd と解データ sd は,変数と値の対応するリストである.vdsd のテンプレートは,NDSolve`VariableDataNDSolve`SolutionDataを使って生成することができ,成分は,NDSolve`SetSolutionDataComponentを使って設定できる.
  • InitializePDECoefficientsは,変数データ vd と解データ sd に従って,係数を確かめ最適化する.
  • vdsd"Space"成分は,それぞれNumericalRegionオブジェクトとして表された空間変数と空間メッシュに設定されなければならない.
  • vd"DependentVariables"成分は,引数を持たない従属変数名のシンボルのリストでなければならない.
  • 時間依存問題については,vdsd"Time"成分は,それぞれ時間変数と初期時間に設定されなければならない.
  • 非線形問題については,sd"DependentVariables"成分は,従属変数の初期シード値に設定されなければならない.
  • パラメトリック問題については,vdsd"Parameters"成分は,それぞれパラメトリック変数と初期パラメトリック値に設定されなければならない.
  • InitializePDECoefficientsには以下のオプションがある.
  • "VerificationData"Automatic偏微分方程式の係数検証データを指定する
  • InitializePDECoefficientsに与えられるオプションは,"InitializePDECoefficientsOptions"を指定することによってNDSolveに与えることができる. »
  • NDSolveおよび関連の関数からオプションを設定することについては,有限要素のためのNDSolveオプションに説明がある.

例題

すべて開くすべて閉じる

  (2)

有限要素法パッケージをロードする:

NumericalRegionを設定する:

変数と解のデータを設定する:

ラプラス(Laplace)方程式を係数に変換する:

ポアソン(Poisson)方程式を係数に変換する:

スコープ  (6)

係数は関数でもよい:

係数は補間関数でもよい:

係数は非線形でもよい:

"DiffusionCoefficient"の入力がベクトルである場合には,これは要求された入力行列の対角要素として解釈される:

"DiffusionCoefficient"の入力がスカラーである場合には,スカラーは,要求された行列の対角要素の場所すべてに置かれる:

偏微分方程式系を初期化する:

オプション  (1)

"VerificationData"  (1)

InitializePDECoefficientsに与えられる偏微分方程式の係数は,評価すると数値入力になるように検証される:

検証は,NumericalRegion内に存在する検定座標を求めることによって行われる.しかし,自動的に選ばれた検定座標あるいは検定のElementMarkerが特異点にある場合もある.

検証データから自動的に求められるものを上書きすることは,"VerificationData"オプションを使って行うことができる:

加えて,自動のElementMarkerも変更することができる:

非線形問題では,従属変数と従属変数の微分についての検証データは,それぞれ"DependentVariables""DependentVariablesDerivative"を使って変更することができる:

従属変数の検証値を初期条件の0から1に変更する:

従属変数の微分係数の値をベクトル{1,1}に変更する.ベクトルの成分は,それぞれの空間方向での微分係数の値である.同時にデフォルトの0.1が使われる:

アプリケーション  (6)

ラプラス方程式のときに であるディリクレ条件と,のときに であるノイマン条件を持つ円板上で指定する:

拡散係数を調べる:

離散化して解き,補間してから解を可視化する:

"LoadCoefficients"係数をNIntegrateで使って,ある領域上で積分する:

NIntegrateを使って結果を確かめる:

"ReactionCoefficients"とし,例として関数 を評価することができる:

評価された関数を可視化する:

"LoadCoefficients"と組み合せた"ReactionCoefficients"を使って関数をスケールすることができる.例えば, が領域上で倍にスケールできる:

スケールされ評価された関数を可視化する:

"ReactionCoefficients""LoadDerivativeCoefficients"と組み合せて使い,領域上で関数の導関数を補間することができる:

数値近似と厳密な導関数の差異を可視化する:

領域内の空間導関数と時間導関数を含む方程式を指定する:

ディリクレ条件 ,および初期条件 を指定する:

変数と解のデータを設定する:

係数を初期化する:

境界条件を初期化する:

メソッドデータを初期化する:

偏微分方程式係数を離散化する.この場合,すべての偏微分方程式係数が時間非依存である:

剛性行列を調べる:

減衰行列を調べる:

境界条件を離散化する:

偏微分方程式の剰余を計算する関数を書く:

初期条件を評価する:

系の行列の疎なパターンの関数を設定する:

疎なパターンを計算する:

方程式を解く:

統合補間関数を作成する:

比較のために,テンソル積格子法で解を計算する:

テンソル積格子法と有限要素法の差をプロットする:

特性と関係  (2)

InitializePDECoefficientsに与えられるオプションは,"InitializePDECoefficientsOptions"を指定することによってNDSolveに与えることができる:

"VerificationData"を指定して,特異点にない座標を渡す:

ポワソン方程式を係数に変換する:

GetInactivePDEを使って,非アクティブなバージョンの入力を作成する:

考えられる問題  (1)

通常NDSolveは,係数を評価したときに正しい次元の数量にならない場合に,これを検知して警告を発する:

それぞれの演算子について与えられた係数が適切であるかどうかを確かめるために,この係数は時間の初期点と領域からの座標を使って評価を試行する.係数と使用された値が相殺される場合には,NDSolveは係数が指定されていないのかどうかを検知することができない.その場合NDSolveは,特定の演算子による要素を計算できなかったというメッセージを返す:

上の例では,t=0x=-π で負荷演算子を評価することによって,負荷演算子が消え,NDSolvek が指定されていないことを検知することができない:

Wolfram Research (2014), InitializePDECoefficients, Wolfram言語関数, https://reference.wolfram.com/language/FEMDocumentation/ref/InitializePDECoefficients.html (2024年に更新).

テキスト

Wolfram Research (2014), InitializePDECoefficients, Wolfram言語関数, https://reference.wolfram.com/language/FEMDocumentation/ref/InitializePDECoefficients.html (2024年に更新).

CMS

Wolfram Language. 2014. "InitializePDECoefficients." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/FEMDocumentation/ref/InitializePDECoefficients.html.

APA

Wolfram Language. (2014). InitializePDECoefficients. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/FEMDocumentation/ref/InitializePDECoefficients.html

BibTeX

@misc{reference.wolfram_2024_initializepdecoefficients, author="Wolfram Research", title="{InitializePDECoefficients}", year="2024", howpublished="\url{https://reference.wolfram.com/language/FEMDocumentation/ref/InitializePDECoefficients.html}", note=[Accessed: 21-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_initializepdecoefficients, organization={Wolfram Research}, title={InitializePDECoefficients}, year={2024}, url={https://reference.wolfram.com/language/FEMDocumentation/ref/InitializePDECoefficients.html}, note=[Accessed: 21-November-2024 ]}