Point Vortex Flow Around a Cylinder

    The vector field
        Overscript[v, ⇀] = γ/(2π) (-y/(x^2 + y^2), x/(x^2 + y^2)) defined for (x^2 + y^2)^(1/2) ≥R
represents point vortex flow around a cylinder. It is simple to check that ∂v_1/∂y = ∂v_2/∂x however, Overscript[v, ⇀] cannot be generated by a single-valued potential in the entire region  (x^2 + y^2)^(1/2) ≥R. On the other hand, Overscript[v, ⇀] can be generated by a potential in any simply connected region. For example, in the region -π<θ<π, we can set
        ϕ(x, y) = -γ/(2π) tan^(-1) (x/y)              if y>0,
        ϕ(x, y) = -γ/4                               if y = 0, x>0,
        ϕ(x, y) = -γ/(2π) tan^(-1) (x/y) - γ/2      if y<0.
    We can verify that ϕ is a potential for Overscript[v, ⇀] indeed;

Clear[R, γ] ; ϕ[x_, y_] := Which[y >0, -γ/(2π) ArcTan[x/y],  ... >0, Limit[ϕ[x, y], y0, Direction1]]]                  -       y 0

    lim      ϕ(x,y) =  -γ/4            + y 0

    lim      ϕ(x,y) =  -γ/4            - y 0

so that ϕ(x, y) is continuous.

Clear[R, γ] ; ϕ[x_, y_] := Which[y >0, -γ/(2π) ArcTan[x/y],  ... ], ,, Assuming[y<0, Simplify[GradPhi[x, y] - v[x, y]]], ,,  , " for y < 0"}], ]}]

RowBox[{RowBox[{Cell[v(x,y)-∇ϕ(x,y) =],  }], , {0, 0}, ,  for y > 0}]

RowBox[{RowBox[{Cell[v(x,y)-∇ϕ(x,y) =],  }], , {0, 0}, ,  for y < 0}]

so that Overscript[v, ⇀] and ∇ϕ agree for y≠0. When y = 0, we resort to the definition to calculate ∇φ;

Clear[R, γ] ; ϕ[x_, y_] := Which[y >0, -γ/(2π) ArcTan[x/y],  ... ]}], " for x > 0"] Print[" v(x,0) = ", v[x, 0], " for x > 0"]

∇ϕ(x,0) =  {0, γ/(2 π x)}  for x > 0

 v(x,0) =  {0, γ/(2 π x)}  for x > 0

which proves that ϕ is a potential for Overscript[v, ⇀].

    Here is a graph of this potential, at least for γ = 4 and R = 1.

Off[Plot3D :: "plnc"] ;            ... ;                

[Graphics:../HTMLFiles/index_161.gif]

We clearly see the discontinuity in the potential near θ = -π.

    We can plot the vector field, together with a selection of equipotential curves as follows.

Needs["Graphics`PlotField`"] Needs["Graphics`ImplicitPlot`"] γ = 4 ;  ... 2371;PlotRange {{-3R, 3R}, {-3R, 3R}}] ;         

[Graphics:../HTMLFiles/index_164.gif]