MathGroup Archive 1997

[Date Index] [Thread Index] [Author Index]

Search the Archive

PDE heat diffusion to sphere

  • To: mathgroup at smc.vnet.net
  • Subject: [mg7735] PDE heat diffusion to sphere
  • From: "w.meeussen" <meeussen.vdmcc at vandemoortele.be>
  • Date: Thu, 3 Jul 1997 01:28:43 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

before I go off on vacation, a query for suggentions on how to clean up my
Mma 3.0 syntax for a problem that "just by the skin of the teeth" works out
right.
I'v got the solution,
I still need the most economical & elegant way to re-produce & generate it.
****************************************************************************
*************
Problem:

Unsteady state heat conduction from a infinite bulk towards a sphere.
Boundary conditions:
Temperature T at infty is 0; T on sphere (radius b) is 1 at all times (t):
****************************************************************************
*************
                 the un-elegant way :

<<Calculus`VectorAnalysis`
SetCoordinates[Spherical[r, th, fi]]
eqn1=dif Laplacian[f[r,t]] == D[f[r,t],t]

<<Calculus`LaplaceTransform`
LaplaceTransform[f[r_,t_],t_,s_]:=U[s][r]
eqn2=LaplaceTransform[eqn1,t,s]
bound={U[s][d]==1/s,U[s][\[Infinity]]==0}
                        (* boundary conditions are a real headache *)
it=Join[{eqn2/.f[r,0]->0},bound]

DSolve[it,U[s][r],r]
                        (* produces warnings & fat output including constant
C[2] *)

{{U[s][r] -> (2*d*E^(d*Sqrt[s/dif]) - 
       (E^(2*d*Sqrt[s/dif]) - E^(2*r*Sqrt[s/dif]))*Sqrt[s/dif]*C[2])/
     (2*E^(r*Sqrt[s/dif])*r*s)}}

                        (* hoping for the best : put C[2] to zero and touch
wood  *)

%/.C[2]->0
{{U[s][r] -> (d*dif*E^(d*Sqrt[s/dif] - r*Sqrt[s/dif] - Log[dif*r]))/s}}

                        (* going for it ...  *)
InverseLaplaceTransform[%,s,t,Assumptions->{Re[(d-r)^2/dif]>0,t>0}]

                        (* this produces something good, packed in FAT If[
.. ]'s *)
                        (* extracting the good part :  *)

 
       d*dif* 
      (dif^((3*-1)/2)*(d - r)*(d - r)^((2*-1)/2)*(-1 + Erf[(d - r)^(2/2)/
      (Sqrt[dif]*2*Sqrt[t])]))/(1/Sqrt[dif])/r 

                        (* massaging produces a good solution:  *)

f[r_,t_]:=1-((d*Erfc[-(d - r)/(2*Sqrt[dif]*Sqrt[t])])/r)

check it by letting the PDE "eqn1" loose on it :

eqn1//Simplify  gives "True".

The limit for t->infty looks like it should:

Limit[f[r,t],t->\[Infinity]]  gives:      1-d/r

conclusion: f[r,t] is a viable solution to the physics problem.
****************************************************************************
********
Mma 3.0 problems: the InverseLaplaceTransform eats up more than my 32 Mbyte
RAM if I don't break up the problem by calculating & saving intermediates,
then restarting Mma from there.

Although I use Assumptions->{Re[(d-r)^2/dif]>0,t>0}
the output still contains an If[..]  like:

If[t > 0 && Re[(d - r)^2/dif] > 0 && 
       Re[-(d^2/(4*dif)) + (d*r)/(2*dif) - r^2/(4*dif)] < 0, ...

which seems un-logical (?)

How should I define boundary conditions for something "un-physical" like U[x][r]
in order to avoid getting a solution containing "C[2]" ?

Anyone with an idea what the InverseLaplaceTransform of the "entire"
solution would look like (not "arbitrarily" setting C[2]->0)?

Yes, I realise that it's risky medling like this with insufficient math
background,
I promis a will by a book one of these days.
If it weren't for the checks using the PDE "eqn1" and
Limit[f[r,t],t->infty], I wouldn't trust it. But how should it be done right?


take your time for answering this,
I'm gone fishing for three weeks,


wouter.

Dr. Wouter L. J. MEEUSSEN
eu000949 at pophost.eunet.be
w.meeussen.vdmcc at vandemoortele.be



  • Prev by Date: Re: Mma 3.0 Font Problems on Notebook
  • Next by Date: Re: LIstIntegrate
  • Previous by thread: spaces between cells
  • Next by thread: WMF export