아래의 m 스크립트 코드 스 니펫에 표시된대로 FEATool FEM Matlab Toolbox으로 시간 종속 및 비선형 PDE 계수의 문제를 쉽게 정의하고 해결할 수 있습니다. 참고 단지 t 후에 활성화된다는 것을 의미 열원 (싱크)이라는 용어 F 는 f*(t>2500)
로 스케일링 = 2,500 (스위치 식, 거짓이면 어느 0 또는 1 참이면로 평가) . 용액 중의
% 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
여기에는 상단의 온도가 t 인해 방열판이 활성화 = 2,500까지 하부 경계로부터의 열 확산까지 선형으로 상승 것을 알 수있다.수치 소스 용어와 두 번째 점에 대해서는
Matlab FEATool Nonlinear Time dependent Heat Transfer Solution
,이 경우는
fea.phys.ht.eqn.coef{6,end}{1} = 'my_fun(t)';
같이 보일 것이다이 경우, 만들고 표로하고 데이터를 보간 자신의 외부 함수를 호출 할 수 있습니다 양식의 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를 쉽게 사용할 수 있으며 필요한 경우 m- 스크립트 코드로 GUI 모델을 내보낼 수도 있습니다.
그런 오래된 질문을 되돌아 보니 고맙습니다! 도구 상자는 멋지게 보이고, 나는 언젠가 그것을 시도 할 것입니다. 나는 당신의 대답을 일시적으로 받아들입니다, 단지 제가 확인하는데 약간의 시간이 필요하다는 것을 말하지만 그것은 매우 유망 해 보입니다. – Yvon