procedure 1 to investigate velocity fields: Tangential form of Greens theorem.

This procedure takes a vector field  F1  (a list of two expressions in x and y), a radius R, and a center P and draws the circle C of radius R centered at P.  Then it draws the the red graph of the tangential component of F over the curve and shades vertically the red fence trapped between the graph and the  circle C.  This enables you to estimate the net circulation of fluid around C. Then it also draws the graph of the curl of F over a square containg D and draw the blue projection of C up onto that graph together with a blue fence.  This enables you to visually estimate the net curl of F over D.  Green's theorem says that these two quantities are equal numerically.

>    with(plots):
greenpic1:=proc(R,P,F1)
#R=radius of D, P=center of D, F1=[y,-x] velocity field
local xrng,yrng,trng,rp,F,Fdr,QP,r,wrk,Rd,crl;
use  plottools in
 F:=unapply([F1[1],F1[2],0],x,y):  
xrng:=(P[1]-1.1*R)..(P[1]+1.1*R): yrng:=(P[2]-1.1*R)..(P[2]+1.1*R):trng:=0..2*Pi:
r:=[P[1]+R*cos(t),P[2]+R*sin(t),0]:
  
rp:= [diff(r[1],t),diff(r[2],t),0]:
Fdr := F(r[1],r[2])[1]*rp[1]+F(r[1],r[2])[2]*rp[2]:
QP := diff(F(x,y)[2],x)-diff(F(x,y)[1],y):
wrk:=evalf(Int(Fdr,t=trng),6):
crl:=evalf(Int(Int(subs({x=P[1]+Rd*cos(theta),y=P[2]+Rd*sin(theta)},QP*Rd),Rd=0..R),theta=0..2*Pi),6);

>    display(
plot3d(QP,x=xrng,y=yrng,style=wireframe,color=blue),
fieldplot3d(F(x,y),x=xrng,y=yrng,z=0..(.01),arrows=SLIM),
seq(line([P[1]+R*cos(i*op(trng)[2]/36),P[2]+R*sin(i*op(trng)[2]/36),0],[P[1]+R*cos(i*op(trng)[2]/36),P[2]+R*sin(i*op(trng)[2]/36),subs(t=i*op(trng)[2]/36,Fdr)],color=red),i=0..36),
rotate(display(seq(line([P[1]+R*cos(i*op(trng)[2]/36),P[2]+R*sin(i*op(trng)[2]/36),0],[P[1]+R*cos(i*op(trng)[2]/36),P[2]+R*sin(i*op(trng)[2]/36),subs(t=i*op(trng)[2]/36,subs({x=r[1],y=r[2]},QP))],color=blue),i=0..36)),Pi/36,[[P[1],P[2],0],[P[1],P[2],1]]),
spacecurve([r[1],r[2],Fdr],t=trng,color=red),
spacecurve([r[1],r[2],subs({x=r[1],y=r[2]},QP)],t=trng,thickness=1,color=blue),
spacecurve(r,t=trng),color=black,axes=boxed,labels=[x,y,z],title=cat("net circulation (red area) = ",convert(wrk,string)," and net curl(blue volume) = ",convert(crl,string)));
end use;

>    end: