How to implement irregular, time-dependent boundary condition in PDEPE function?

8 次查看(过去 30 天)
Hi
I am trying to use the MATLAB Partial Differential Equation solver, pdepe, for a simple 1D (one-dimensional) heat transfer in a space shuttle tile using Fourier's equation for heat transfer. All parameters are known, and I have organised the equation according to the MATLAB format.
However, the problem I have encountered is in the Boundary Conditions. For the shuttle tile, the outer surface (right hand boundary condition) varies in a time-dependent manner according to a predefined pattern that cannot be described mathematically. I can store the data in a vector, but I have thus far been unsuccessful in implementing this in the RHS boundary (pr).
Any help at all would be very much appreciated, a sample of my current code can be viewed below.
James
function pde1 % Function to perform parabolic PDE solver on Fourier's Heat transfer % equation in one dimension %
global rho cp k tinitial global n tempdata deltaT timedata
% tile properties
k = 0.141; % W/(m K)
rho = 352; % 22 lb/ft^3
cp = 1255; % 0.252 Btu/lb/F at 500F
n = 500;
tinitial = (60-32)*5/9; % intial temp throughout the tile
% Loads the outer surface temperature data in an array. % This data can then be extracted into a vector. load temp597.mat timedata tempdata
% properties required for Partial Differential Equation input
m = 0; % assume 'slab' shape
xmesh = linspace(0, 0.05, 21); % 21 spatial steps, up to 5cm
t = linspace(0, 4000, 500); % 250 time-steps over 2000 seconds
sol = pdepe(m, @pdef, @pdeic, @pdebc, xmesh, t);
u = sol(:,:,1);
% ========================================================================= % defines the properties of the PDE function
function[c,f,s] = pdef(x, t, u, DuDx)
c = rho*cp;
f = k*DuDx;
s = 0;
end % ========================================================================= % defines the Initial Conditions
function[u0] = pdeic(x)
u0 = tinitial;
end % ========================================================================= % defines the Boundary Conditions
function[pl,ql,pr,qr] = pdebc(xl, ul, xr, ur, t)
pl = 0;
ql = 1;
pr = ???;
qr = 1;
end end
end

采纳的回答

Bill Greene
Bill Greene 2014-4-7
I think that
pr = interp1(timedata, tempdata, t) - ur;
may be what you need. Assuming the lengths of timedata and tempdata are the same, this will do a piecewise linear interpolation for the temperature at time t.
Beyond that, if you want to prescribe the temperatures at the right and left ends to a prescribed value, you want ql and qr equal zero rather than 1.
Bill
  3 个评论
James Fraser
James Fraser 2014-4-7
On further checking through my function, when I output the variable pr, it informs me that, at all points,
pr = NaN

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by