3次元のPDE系でpdeCoefficientsToDouble関数を使うと、2次元と認識されてしまう
Show older comments
3次元のPDE系についてpdeCoefficientsToDouble関数を使用したのですが、次元が2次元と認識され、その後のc Coefficientを変形する部分でエラーが出ます(下記のエラーメッセージが表示されます)。
使い方によるエラー mat2cell
入力引数D1からD2は、合計するとそれぞれの入力行列のサイズの次元[9 9]にならなければなりません。
エラー:pdeCoefficientsToDouble(行73)
blocks=mat2cell(S.c, repmat(dimen, 1, nequations), repmat(dimen, 1, nvars));
pdeCoefficientsToDouble関数のスクリプトを見ると、
% get dimen (2 or 3)
allSyms = struct2cell(S); %質問者注:SはpdeCoefficients関数で作成された構造体
dimen = 2;
for k = 1:numel(allSyms)
if has(allSyms{k}, sym('z'))
dimen = 3;
end
end
という方法で次元を判定しており、pdeCoefficientsのいずれかにシンボリック変数'z'が含まれないと次元が2から変更されないことになりますが、3次元PDEのpdeCoefficientsに'z'が含まれるとは限らないのではないでしょうか。
Answers (0)
Categories
Find more on Boundary Conditions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!