This is a textbook problem, however, I'm having a hard time getting MMA to reproduce the result. The problem is a plane, incompressible flow around a circle. I am solving for the stream function, and the fluid is inviscid. As long as the flow is uniform, far away from the circle the vorticity vanishes, leaving the governing equation as simply Laplace's equation in polar coordinates

eq = Laplacian[\[Psi][r, \[Theta]], {r, \[Theta]}, "Polar"] == 0;

The boundary conditions are:

bc1 = \[Psi][\[Infinity], \[Theta]] == U r Sin[\[Theta]];
bc2 = \[Psi][a, \[Theta]] == 0;

And to rule out circulation, symmetry is imposed about \[Theta]==0 by:

bc3 = \[Psi][r, \[Theta]] == -\[Psi][r, -\[Theta]];

However, DSolve doesn't like this system of equations because of the symmetry condition (specifically, I don't think it likes this term: -\[Psi][r, -\[Theta]].)

Running this command:

DSolve[{eq, bc1, bc2, bc3}, {\[Psi], \[Phi]}, {r, \[Theta]}]

gives the following error: DSolve::litarg: To avoid possible ambiguity, the arguments of the dependent variable in {((\[Psi]^(0,2))[r,\[Theta]]/r+(\[Psi]^(1,0))[r,\[Theta]])/r+(\[Psi]^(2,0))[r,\[Theta]]==0,\[Psi][r,\[Theta]]==-\[Psi][r,-\[Theta]]} should literally match the independent variables.

I found a similar problem occurring when a negative sign appeared in the function discussed here: Why Can't DSolve Find a Solution for this ODE with y[-x]. I tried replace the third condition, bc3, with a new function bcSym, similar to the solution discussed in that thread, i.e.

bcSym = \[Psi][r, \[Theta]] == -\[Phi][r, \[Theta]];

but MMA simply returned my equations without solution (or error) when bcSym was used.

An analytical solution exists, for example on Wikipedia however I'm following Milton van Dyke's book, which yields: $$ \psi = U \left(r-\frac{a^2}{r}\right)\sin \theta $$ Can you help me get MMA to find this solution? Is there a better way to implement the symmetry condition?

  • $\begingroup$ I'm not sure that DSolve can analytically solve PDEs where the boundaries are given by symbolic quantities (particularly $\infty$) rather than numerical quantities. For example, if you put in the boundary conditions infinity = 100; a = 1; bc1 = \[Psi][infinity, \[Theta]] == U infinity Sin[\[Theta]]; bc2 = \[Psi][a, \[Theta]] == 0; then Mathematica spits out an answer that's proportional to yours (scaled by a factor of infinity^2/(infinity^2 - 1), which will approach 1 as infinity -> ∞.) $\endgroup$ Sep 30, 2021 at 20:56
  • $\begingroup$ Also note that DSolve does not require the symmetry condition to return the "correct" result in this case. I can't immediately see what solutions would be allowed if it wasn't there, given the BCs; and given that solutions to Laplace's equation are unique given a set of Dirichlet boundary conditions (as you have), I strongly suspect that it's unnecessary. $\endgroup$ Sep 30, 2021 at 21:12
  • $\begingroup$ Your boundary condition bc1seems to be wrong: Left side r->Infinity, right side r! $\endgroup$ Oct 12, 2021 at 10:20

1 Answer 1


You could try to reduce the pde to an ode using the approach

\[Psi] -> Function[{r, \[Theta]}, Sin[\[Theta]] psi[r]] (* in german "Produktansatz" *)

This gives the ode

ode=eq /. \[Psi] -> Function[{r, \[Theta]}, Sin[\[Theta]] psi[r]] //Simplify[#, Sin[\[Theta]] != 0] &
(*Derivative[1][psi][r] + r (psi^\[Prime]\[Prime])[r] == psi[r]/r*)  

and transformed boundary conditions

bc = {\[Psi][ri, \[Theta]] ==U ri Sin[\[Theta]] , \[Psi][a, \[Theta]] == 0} /. \[Psi] -> Function[{r, \[Theta]}, Sin[\[Theta]] psi[r]] //Simplify[#, Sin[\[Theta]] != 0] &
(*{ri U == psi[ri], psi[a] == 0}*)

which might be solved analytically

PSI = DSolveValue[{Expand[ (-psi[r] +r (Derivative[1][psi][r] + r (psi^\[Prime]\[Prime])[r]))/r] ==0, bc}, psi, r]    
(*Function[{r}, ((a^2 - r^2) ri^2 U)/(r (a^2 - ri^2))]*)

The solution follows to

\[Psi][r, \[Theta]]:= Sin[\[Theta]] Limit[((a^2 - r^2) ri^2 U)/(r (a^2 - ri^2)),ri->Infinity]  //Simplify
(*((-a^2 + r^2) U Sin[\[Theta]])/r*)   
  • $\begingroup$ Thank you. Very clear, very helpful. $\endgroup$
    – dpholmes
    Oct 12, 2021 at 21:00
  • $\begingroup$ You're welcome! $\endgroup$ Oct 13, 2021 at 8:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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