Good day community, I try to solve the 2D heat equation in cylindrical coordinates. I wanna follow a paper (Selim et al.: Temperature rise in a semi-infinite medium heated by a disc source) and therefore using a Laplace transform and a Hankel transform, subsequently, and there I encountered a problem.

I'll jump right in, my equation is:

eqn = D[T[r, z, t], {r, 2}] + 1/r D[T[r, z, t], r] + 
   D[T[r, z, t], {z, 2}] == 1/[Alpha] D[T[r, z, t], t]

lapl = LaplaceTransform[eqn,t,p] gives me a ,what I understand is a, correct result:

(p LaplaceTransform[T[r,z,t],t,p]-T[r,z,0])/[Alpha]

However, when applying HankelTransform[lapl,r,s,0] the result I'm getting is:

(1/[Alpha])(p HankelTransform[LaplaceTransform[T[r,z,t],t,p],r,s,0]-

while, based on the paper, I'm supposed to get:

$$\frac{\mathrm d^2 \overline{T_0}}{\mathrm dz^2}-\left(s^2+\frac{p}{\alpha}\right)\overline{T_0}=0$$

(In case the output is to tiring to read, as summary: there is no occurrence of s whatsoever, which makes doubt the correctness.)

Do I use the functions in wrong way (which I suppose is more likely) or is Mathematica (11.2) not able to transform this kind of input. Thanks in advance and forgive me my poor formatting skills.


There're 2 issues here. First, currently it seems that all the *Transform function can't recognize variables inside *Transform. A simpler example:

LaplaceTransform[LaplaceTransform[D[u[r1, r2], r1, r2], r1, s1], r2, s2]
(* s1*LaplaceTransform[LaplaceTransform[Derivative[0, 1][u][r1, r2], r1, s1], r2, s2] - 
   s2*LaplaceTransform[u[0, r2], r2, s2] + u[0, 0] *)

This one is easy to circumvent, we just need to make a replacement:

(* T[r, z, 0] -> 0 is the initial condition found from the paper.  *)
lapl = LaplaceTransform[eqn, t, p] /. T[r, z, 0] -> 0
laplmodified = lapl /. HoldPattern@LaplaceTransform[a_, __] :> a

Mathematica graphics

Just keep in mind the T[r, z, t] inside laplmodified actually represents $\bar{T}(r,z,p)$. What's really troublesome is the 2nd issue, that is, currently HankelTransform is too weak. It can recognize Laplacian[T[r], {r, th}, "Polar"]:

HankelTransform[Laplacian[T[r], {r, th}, "Polar"], r, s]
(* -s^2 HankelTransform[T[r], r, s, 0] *)

But cannot recognize Laplacian[T[r, z, t], {r, th}, "Polar"]:

HankelTransform[Laplacian[T[r, z, t], {r, th}, "Polar"], r, s]
(* HankelTransform[Derivative[1, 0, 0][T][r, z, t]/r, r, s, 0] + 
      HankelTransform[Derivative[2, 0, 0][T][r, z, t], r, s, 0] *)

The only workaround I can think out is to build a rule representing this property of HankelTransform all by ourselves:

rule = Rule @@ (HankelTransform[Laplacian[#, {r, th}, "Polar"], r, s] & /@ {T[r, z, t], 
      T[r]}) /. T[r] -> T[r, z, t]
(* HankelTransform[Derivative[1, 0, 0][T][r, z, t]/r, r, s, 0] + 
        HankelTransform[Derivative[2, 0, 0][T][r, z, t], r, s, 0] -> 
      (-s^2)*HankelTransform[T[r, z, t], r, s, 0] *)
HankelTransform[laplmodified, r, s] /. rule /. 
  HoldPattern@HankelTransform[a_, __] :> a /. T -> (Overscript[Subscript[T, 0], _][#2] &)

Mathematica graphics

| improve this answer | |
  • $\begingroup$ Congrats on hitting the differential equations gold badge! $\endgroup$ – Artes Sep 20 '18 at 7:50
  • $\begingroup$ @Artes Thanks! :D $\endgroup$ – xzczd Sep 20 '18 at 7:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.