FEMMethodData[…]
有限要素法に使われるデータを表す.
FEMMethodData
FEMMethodData[…]
有限要素法に使われるデータを表す.
詳細とオプション
- FEMMethodData[…]は,InitializePDEMethodDataによって作成される.
- FEMMethodData[…]は,"FiniteElementData"と"MethodData"の特性を使ってNDSolve`ProcessEquationsによって生成される,NDSolve`StateDataオブジェクトから抽出できる.
- 標準の出力形式では,自由度,各変数の補間次数,積分次数のみが示される.
- FEMMethodDataオブジェクトは,DiscretizePDEとDiscretizeBoundaryConditionsの入力として使われる.
- FEMMethodData[…][prop]は,FEMMethodDataオブジェクトの特性 prop を与える.次の特性を与えることができる:
-
"DegreesOfFreedom" 系の行列の自由度 "ElementMesh" 要素メッシュ "IncidentOffsets" 各従属変数についてインシデントが始まるオフセット "Incidents" メッシュインシデント "IntegrationOrder" 各従属変数が積分される次数 "InterpolationOrder" 各従属変数の補間次数 "Properties" 特性のリスト "SolutionData" 解のデータ "TotalDegreesOfFreedom" 自由度,ぶら下がったノードの自由度,追加的な制約条件の合計 "VariableData" 変数データ
例題
すべて開く すべて閉じる例 (1)
Needs["NDSolve`FEM`"]NumericalRegionを設定する:
nr = ToNumericalRegion[Rectangle[{0, 0}, {1, 1 / 2}]]vd = NDSolve`VariableData[{"DependentVariables", "Space"} -> {{u}, {x, y}}];
sd = NDSolve`SolutionData["Space" -> nr];methodData = InitializePDEMethodData[vd, sd]これは,Methodに"FiniteElement"を選ぶことに等しい:
InitializePDEMethodData[vd, sd, Method -> "FiniteElement"]スコープ (14)
"DegreesOfFreedom" (1)
"ElementMesh" (1)
初期化された有限要素法のメソッドデータからElementMeshを抽出する:
methodData["ElementMesh"] === NDSolve`SolutionDataComponent[sd, "Space"]["ElementMesh"]"IncidentOffsets" (3)
methodData["IncidentOffsets"]第1従属変数のインシデントは,第1オフセットに1を足したものから,第2オフセットまでの範囲である.
vd2 = vd;
NDSolve`SetSolutionDataComponent[vd2, "DependentVariables", {u, v}];InitializePDEMethodData[vd2, sd]["IncidentOffsets"]第1従属変数のインシデントは,第1オフセットに1を足したものから,第2オフセットまでの範囲である.第2従属変数のインシデントは,第2オフセットに1を足したものから,第3オフセットまでの範囲である.
vd2 = vd;
NDSolve`SetSolutionDataComponent[vd2, "DependentVariables", {u, v}];sd2 = sd;
nr2 = nr;
NDSolve`SetSolutionDataComponent[sd2, "Space", nr2];各従属変数について明示的な補間次数を持つ偏微分方程式のメソッドデータを初期化する.インシデントのオフセットを抽出する:
InitializePDEMethodData[vd2, sd2, Method -> {"FiniteElement", "InterpolationOrder" -> {u -> 1, v -> 2}}]["IncidentOffsets"]第1従属変数のインシデントは,第1オフセットに1を足したものから,第2オフセットまでの範囲である.第2従属変数のインシデントは,第2オフセットに1を足したものから,第3オフセットまでの範囲である.
"Incidents" (2)
Short[methodData["Incidents"], 2]Max[methodData["Incidents"]] === Last[methodData["IncidentOffsets"]]vd2 = vd;
NDSolve`SetSolutionDataComponent[vd2, "DependentVariables", {u, v}];Short[InitializePDEMethodData[vd2, sd]["Incidents"], 2]"InterpolationOrder" (3)
methodData["InterpolationOrder"]vd2 = vd;
NDSolve`SetSolutionDataComponent[vd2, "DependentVariables", {u, v}];InitializePDEMethodData[vd2, sd]["InterpolationOrder"]vd2 = vd;
NDSolve`SetSolutionDataComponent[vd2, "DependentVariables", {u, v}];sd2 = sd;
nr2 = nr;
NDSolve`SetSolutionDataComponent[sd2, "Space", nr2];各従属変数について,明示的な補間次数を持つ偏微分方程式のメソッドデータを初期化する.補間次数を抽出する:
InitializePDEMethodData[vd2, sd2, Method -> {"FiniteElement", "InterpolationOrder" -> {u -> 1, v -> 2}}]["InterpolationOrder"]"SolutionData" (1)
methodData["SolutionData"] === sdNDSolve`SolutionDataComponent[methodData["SolutionData"], "Space"]PDESolveを使って偏微分方程式を解くと,実際の解のベクトルを含む,更新された解のデータが返される:
pdeData = InitializePDECoefficients[vd, sd, "DiffusionCoefficients" -> {{-IdentityMatrix[2]}}];
bcData = InitializeBoundaryConditions[vd, sd, {{DirichletCondition[u[x, y] == 0., x == 0], DirichletCondition[u[x, y] == 1., x == 1]}}];
sdNew = PDESolve[pdeData, bcData, vd, sd, methodData];
sdNew === sd解のデータ成分を抽出するためには,NDSolve`SolutionDataComponentを使うことができる:
NDSolve`SolutionDataComponent[sdNew, "DependentVariables"]//Short"TotalDegreesOfFreedom" (1)
ElementMeshにぶら下がったノードがある場合には,自由度の合計は,自由度にぶら下がったノードの自由度を足したものである:
methodData["TotalDegreesOfFreedom"]特性と関係 (2)
NDSolve`StateDataオブジェクトから状態データを抽出する:
{state} = NDSolve`ProcessEquations[{-u^(0, 2)[x, y] - u^(2, 0)[x, y] == 1, DirichletCondition[u[x, y] == 0, True]}, u, {x, 0, 1}, {y, 0, 1}]NDSolve`StateDataオブジェクトから有限要素のメソッドデータを抽出する:
state["FiniteElementData"]["FEMMethodData"]vd2 = vd;
NDSolve`SetSolutionDataComponent[vd2, "DependentVariables", {u, v}];各従属変数について明示的な補間次数を持ち,ノードの並替えがオフになっている,偏微分方程式のメソッドデータを初期化する:
incidents = InitializePDEMethodData[vd2, sd, Method -> {"FiniteElement", "InterpolationOrder" -> {u -> 1, v -> 2}, "MeshOptions" -> {"NodeReordering" -> None}}]["Incidents"];SparseArrayをインシデントから作成し,要素が多く存在する位置を可視化する:
MatrixPlot[SparseArray[Flatten[Outer[List, #, #]& /@ incidents[[1]], 2] -> _]]考えられる問題 (1)
PDESolveを使って偏微分方程式を解くと,実際の解のベクトルを含む,更新された解のデータが返される:
pdeData = InitializePDECoefficients[vd, sd, "DiffusionCoefficients" -> {{-IdentityMatrix[2]}}];
bcData = InitializeBoundaryConditions[vd, sd, {{DirichletCondition[u[x, y] == 0., x == 0], DirichletCondition[u[x, y] == 1., x == 1]}}];
sdNew = PDESolve[pdeData, bcData, vd, sd, methodData];
sdNew === sd解のデータ成分を抽出するためには,NDSolve`SolutionDataComponentを使うことができる:
NDSolve`SolutionDataComponent[sdNew, "DependentVariables"]//Shortテクニカルノート
関連するガイド
-
▪
- 有限要素法
テキスト
Wolfram Research (2014), FEMMethodData, Wolfram言語関数, https://reference.wolfram.com/language/FEMDocumentation/ref/FEMMethodData.html (2022年に更新).
CMS
Wolfram Language. 2014. "FEMMethodData." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/FEMDocumentation/ref/FEMMethodData.html.
APA
Wolfram Language. (2014). FEMMethodData. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/FEMDocumentation/ref/FEMMethodData.html
BibTeX
@misc{reference.wolfram_2026_femmethoddata, author="Wolfram Research", title="{FEMMethodData}", year="2022", howpublished="\url{https://reference.wolfram.com/language/FEMDocumentation/ref/FEMMethodData.html}", note=[Accessed: 11-August-2026]}
BibLaTeX
@online{reference.wolfram_2026_femmethoddata, organization={Wolfram Research}, title={FEMMethodData}, year={2022}, url={https://reference.wolfram.com/language/FEMDocumentation/ref/FEMMethodData.html}, note=[Accessed: 11-August-2026]}