InitializeBoundaryConditions::fembderiv
詳細
例題
例
関連項目
NDSolve`FEM`
InitializeBoundaryConditions::fembderiv
詳細
-
- このメッセージは,NeumannValueの代りにDerivativeを使って空間導関数がモデル化された場合に生成される.
- 空間導関数を有限要素法でモデル化するのにDerivativeを使うことは,このバージョンではサポートされていない.
- 「何が有限要素法の使用を促すのか」のセクションに,微分方程式を解く際にいつ有限要素法が自動的に選ばれるのかが説明されている.
- Off[message]はメッセージを非表示にし,On[message]はメッセージを表示させる.例えば,Off[InitializeBoundaryConditions::fembdderiv]のように使う.
例題
例 (2)
有限要素の空間離散化導関数は,NeumannValueを使ってモデル化する必要がある:
Needs["NDSolve`FEM`"]InitializeBoundaryConditions::fembderivNDSolve[{Laplacian[c[x, y, z], {x, y, z}] - c[x, y, z] == 0, c[x, y, 0] == 1, Derivative[0, 0, 1][c][x, y, 1] == c[x, y, 1], Derivative[0, 1, 0][c][x, 1, z] == c[x, 1, z], Derivative[1, 0, 0][c][1, y, z] == c[1, y, z], Derivative[0, 1, 0][c][x, 0, z] == c[x, 0, z], Derivative[1, 0, 0][c][0, y, z] == c[0, y, z]}, c, {x, 0, 1}, {y, 0, 1}, {z, 0, 1}]
NeumannValueを使うと問題は回避できる:
NDSolveValue[{Laplacian[c[x, y, z], {x, y, z}] - c[x, y, z] == NeumannValue[c[x, y, z], z == 1 || y == 1 || x == 1 || y == 0 || x == 0], DirichletCondition[c[x, y, z] == 1, z == 0]}, c, {x, 0, 1}, {y, 0, 1}, {z, 0, 1}]DerivativeとNeumannValueの関係の詳細については,「NeumannValueと境界導関数の関係」のセクションに書かれている.
いつNDSolveによって有限要素法が自動的に選ばれるかについての説明は,「何が有限要素法の使用を促すのか」のセクションを参照されたい.
eqns = { D[u[x, y], x, x] + D[u[x, y], y, y] == 0, Derivative[0, 1][u][1, y] == Exp[-10], u[-1, y] == Exp[-10], u[x, 1] == Exp[-10 x ^ 2], u[x, -1] == Exp[-10 x ^ 2]};
NDSolve[eqns, u, {x, -1, 1}, {y, -1, 1}]
NeumannValueで微分境界条件を指定する:
eqns = { D[u[x, y], x, x] + D[u[x, y], y, y] == NeumannValue[Exp[-10], x == 1], u[-1, y] == Exp[-10], u[x, 1] == Exp[-10 x ^ 2], u[x, -1] == Exp[-10 x ^ 2]};
NDSolve[eqns, u, {x, -1, 1}, {y, -1, 1}]いつNDSolveによって有限要素法が自動的に選ばれるかについての説明は,「何が有限要素法の使用を促すのか」のセクションを参照されたい.