2017-03-02 5 views
0

私の目標は、伝熱問題を解決する際に、時間依存の熱源を適用することです。使用時間依存(熱)ソースは

過渡伝導熱伝達のための偏微分方程式は、次のとおりです。

The partial differential equation for transient conduction heat transfer

とより多くの情報をここで見つけることができます:Solving a Heat Transfer Problem With Temperature-Dependent Properties

すべてのパラメータは、ソース項を除いて、私の場合は定数です、 fは、時間と共に変化する必要がある。

ここでは例のコードに従っています:Nonlinear Heat Transfer In a Thin Plateこれは一時的な問題を解決する方法を示しており、各時点で熱データをプロットすることができます。

私のケースに適用した場合の問題は、ソースが一定の値で、領域全体と時間全体にわたって、放射線と対流に関係していることです(私の場合はすべてゼロでなければなりません)。私は時間依存のソース(時変電流によるジュール加熱)を供給する必要があります。

  1. 分析:そうでなければそのような0 <トン< 1ナノ秒、及び0のような時間ウィンドウ内のこのような1 W/m^2のように正の値、ソースは次のいずれかの形式を有することができます。
  2. 数値:1xNベクトルによってデータが提供されます。ここで、Nは時間ポイントの数です。

とソースは、例えば、特定の地域に限定されています。 0 < x < 1mmおよび0 <y < 1mm。

私は同様の質問が、未回答を見てきました:How to use a variable coefficient in PDE Toolbox to solve a parabolic equation (Matlab)

は、PDEツールボックスでこれを実装する方法はありますか?コードを一から書くことはとても複雑になるでしょう。

答えて

1

ここでは、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スクリプトコードとしてエクスポートすることもできます。

+0

このような古い質問を振り返っていただきありがとうございます。ツールボックスはすばらしそうに見えますが、私はいつかそれを試してみます。私はあなたの答えを一時的に受け入れます。ちょうど私が確認するのに時間が必要だと言っていますが、それは非常に有望です。 – Yvon

関連する問題