Generic Potential Flows

ClearAll["Global`*"]
U=3;  (* horizontal velocity *)
V=1;  (* vertical velocity *)

k1=0;   (* vortex 1 magnitude *) 
xk1=0; (* vortex 1 x-position *)
yk1=0;  (* vortex 1 y-position *)

k2=0.0;  (* vortex 2 magnitude *)
xk2=0; (* vortex 2 x-position *)
yk2=0; (* vortex 2 y-position *)

m1=0;   (* source 1 magnitude *)
xm1=0; (* source 1 x-position *)
ym1=0;  (* source 1 y-position *)

m2=0;   (* source 2 magnitude *)
xm2=0; (* source 2 x-position *)
ym2=0;  (* source 2 y-position *)

λ=0;   (* doublet magnitude. If λ is imaginary, its axis is along y instead of x *)
xλ=0; (* doublet x-position *)
yλ=0;  (* doublet y-position *)

w1[z_]=(U-I V)z;
w2[z_]=m1 Log[z-(xm1+I ym1)];w3[z_]=m2 Log[z-(xm2+I ym2)];zλ=xλ+I yλ;
w4[z_]=-I k1 Log[z-(xk1+I yk1)];w5[z_]=-I k2 Log[z-(xk2+I yk2)];w6[z_]=(λ/(z-zλ));
w[z_]=w1[z]+w2[z]+w3[z]+w4[z]+w5[z]+w6[z];vtot[z_]=(∂_z)w[z];
u[x_,y_]=Re[vtot[x+I y]];v[x_,y_]=-Im[vtot[x+I y]];
ϕ[x_,y_]=Re[w[x+I y]];ψ[x_,y_]=Im[w[x+I y]];

Results

plot1=ContourPlot[ϕ[x,y],{x,-5,5},{y,-5,5},Contours->21,ColorFunction->"Rainbow",Exclusions-> None,MaxRecursion->3];
plot2=ContourPlot[ψ[x,y],{x,-5,5},{y,-5,5},Contours->21, ContourShading-> None,Exclusions->None,MaxRecursion->3];
plot3 = StreamPlot[{u[x,y],v[x,y]},{x,-5,5},{y,-5,5}];

Show[plot1,plot2]
Show[plot3]