|
Spacetime1 |
Top Previous Next |
|
{ SPACETIME1.PDE }
{ **************************************************************
This example illustrates the use of FlexPDE to solve an initial value problem of 1-D transient heatflow as a boundary-value problem. (In most cases, a true initial-value solution is preferable; see problem SPACETIME2.PDE).
Here the spatial coordinate is represented by X, the time coordinate by Y, and the temperature by u(x,y).
With these symbols, the transient heatflow equation is:
dy(u) = D*dxx(u),
where D is the diffusivity, given by
D = K/s*rho,
K is the conductivity, s is the specific heat, and rho is the density.
The problem domain is taken to be the unit square.
We specify the initial value of u(x,0) along y=0, as well as the time history along the sides x=0 and x=1.
The value of u is thus assigned everywhere on the boundary except along the segment y=1, 0<x<1. Along that boundary, we use the natural boundary condition,
natural(u) = 0,
since this corresponds to the application of no boundary sources on this boundary segment and hence implies a free segment. This builds in the assumption that y = 1 (and hence t = 1) is sufficiently large for steady state to have been reached. [Note that since the only y-derivative term is first order, the default procedure of FlexPDE does not integrate this term by parts, and the Natural(u) BC does not correspond to a surface flux, functioning only as a source or sink.]
This problem can be solved analytically, so we can plot the deviation of the FlexPDE solution from the exact answer.
*************************************************************** }
title "1-D Transient Heatflow as a Boundary-Value problem" select alias(x) "distance" alias(y) "time"
variables u
definitions diffusivity = 0.06 { pick a diffusivity that gives a nice graph } frequency = 2 { frequency of initial sinusoid } fpi = frequency*pi ut0 = sin(fpi*x) { define initial distribution of temperature } u0 = exp(-fpi**2 *diffusivity*y)*ut0 { define exact solution }
Initial values u = ut0 { initialize all time to t=0 value }
equations dy(u) = diffusivity*dxx(u) { define the heatflow equation }
boundaries Region 1 start(0,0) value(u)=ut0 { set the t=0 temperature } line to (1,0)
value(u) = 0 { always cold at x=1 } line to (1,1)
natural(u) = 0 { no sources at t=1 } line to (0,1)
value(u) = 0 { always cold at x=0 } line to close
monitors contour(u)
plots contour(u) surface(u) contour(u-u0) as "error"
end |