2017-03-02 18 views
0

목표는 열 전달 문제를 해결할 때 시간에 따른 열원을 적용하는 것입니다.PDE Toolbox에서 시간 의존 (열) 소스 사용

과도 전도 열전달 편미분 방정식은 :

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은 일시적인 문제를 해결할 수있는 방법을 제공하며 각 시점에서 열 데이터를 플로팅 할 수 있습니다.

내 사례에 적용 할 때 문제는 소스가 상수 값이며 전체 지역과 전체 시간에 걸쳐 방사선 및 대류와 관련된 것입니다 (제 경우에는 모두 0이어야 함). 하지만 시간에 의존하는 소스 (시간에 따라 변화하는 전류에 의한 줄열)를 공급해야합니다. 소스는 다음의 형식 중 하나를 가질 수있다 :

  1. 분석 : 양수 같은 시간대 등 0 <톤 < 1 NS, 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

아래의 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 모델을 내보낼 수도 있습니다.

+0

그런 오래된 질문을 되돌아 보니 고맙습니다! 도구 상자는 멋지게 보이고, 나는 언젠가 그것을 시도 할 것입니다. 나는 당신의 대답을 일시적으로 받아들입니다, 단지 제가 확인하는데 약간의 시간이 필요하다는 것을 말하지만 그것은 매우 유망 해 보입니다. – Yvon