ここでは、FEATool FEM Matlab Toolboxで時間依存および非線形PDE係数の問題を定義して解決することができます。下記のmスクリプトコードスニペットを参照してください。なお、それだけトン後にアクティブになることを意味熱源(シンク)用語 F がf*(t>2500)
としてスケーリングさ= 2500(スイッチ式がfalseの場合のいずれか又は trueの場合に評価されます) 。あなたは、上端の温度がTヒートシンクが活性化さ= 2500まで下方境界から熱による拡散まで直線的に上昇することを確認することができ、ここで溶液に
% Coefficents and problem definition from https://www.mathworks.com/help/pde/examples/nonlinear-heat-transfer-in-a-thin-plate.html
k=400;rho=8960;specificHeat=386;thick=.01;stefanBoltz=5.670373e-8;hCoeff=1;ta=300;emiss=.5;
% Set up 2D fea struct with geometry and grid.
fea.sdim = {'x' 'y'};
fea.geom = { gobj_rectangle(0, 1, 0, 1) };
fea.grid = rectgrid(10);
% Add heat transfer physics mode.
fea = addphys(fea, @heattransfer);
fea.phys.ht.eqn.coef{1,end}{1} = rho*thick; % Density eqn coefficient.
fea.phys.ht.eqn.coef{2,end}{1} = specificHeat; % C_p eqn coefficient.
fea.phys.ht.eqn.coef{3,end}{1} = k*thick; % Thermal condictivity.
f = sprintf('%g*(%g - T) + %g*(%g^4 - T^4)', ...
2*hCoeff, ta, 2*emiss*stefanBoltz, ta);
fea.phys.ht.eqn.coef{6,end}{1} = ['(',f,')*(t>2500)']; % Heat source term.
fea.phys.ht.bdr.sel(1) = 1; % Set prescribed temperature for boundary 1.
fea.phys.ht.bdr.coef{1,end}{1} = 1000;
fea.phys.ht.bdr.sel(2:4) = 3; % Isolation BCs for boundaries 2-4.
% Check, parse, and solve fea problem.
fea = parsephys(fea);
fea = parseprob(fea);
[fea.sol.u,t] = solvetime(fea, 'tstep', 50, 'tmax', 5000, 'init', {ta});
% Postprocessing and visualization.
for i=1:size(fea.sol.u,2)
T_top(i) = evalexpr('T', [.5;1-sqrt(eps)], fea, i);
end
subplot(1,2,1)
postplot(fea, 'surfexpr', 'T', 'title', 'T @ t=5000')
subplot(1,2,2)
plot(t, T_top, 'r-')
xlabel('t')
ylabel('T(0.5,1) @ t=5000')
grid on
。
Matlab FEATool Nonlinear Time dependent Heat Transfer Solution
数値ソース用語を使用して第二の点については、あなたがこのケースでは、あなたのデータを補間集計し、独自の外部関数を作成して呼び出すことができ、この場合には
fea.phys.ht.eqn.coef{6,end}{1} = 'my_fun(t)';
のようになります。フォームのMatlabのパス上のどこかにアクセスするMATLAB関数
my_fun.m
を持って
function [ val ] = my_fun(t)
data = [7 42 -100 0.1]; % Example data.
times = [0 10 99 5000]; % Time points.
val = interp1(data, times, t); % Interpolate data.
最後に、モデルはStackOverflow上で共有するためのmスクリプトのMatlabコードを使用して定義されていますが、Matlab FEA GUIを簡単に使用でき、必要に応じてGUIコードをmスクリプトコードとしてエクスポートすることもできます。
このような古い質問を振り返っていただきありがとうございます。ツールボックスはすばらしそうに見えますが、私はいつかそれを試してみます。私はあなたの答えを一時的に受け入れます。ちょうど私が確認するのに時間が必要だと言っていますが、それは非常に有望です。 – Yvon