Flux

Code

graphics:=(

ru=D[r[uVar,vVar],uVar];
rv=D[r[uVar,vVar],vVar];
cross=Cross[ru,rv];
normal[u_,v_]:=Normalize[cross/.{uVar->u,vVar->v}];
flux[u_,v_]:=f@@r[u,v].normal[u,v] normal[u,v];

xLeft=NMinimize[{r[u,v][[1]],0≤u≤1,0≤v≤1},{u,v}][[1]];
xRight=NMaximize[{r[u,v][[1]],0≤u≤1,0≤v≤1},{u,v}][[1]];
yLeft=NMinimize[{r[u,v][[2]],0≤u≤1,0≤v≤1},{u,v}][[1]];
yRight=NMaximize[{r[u,v][[2]],0≤u≤1,0≤v≤1},{u,v}][[1]];zLeft=NMinimize[{r[u,v][[3]],0≤u≤1,0≤v≤1},{u,v}][[1]];
zRight=NMaximize[{r[u,v][[3]],0≤u≤1,0≤v≤1},{u,v}][[1]];

vectorField=If[showField,VectorPlot3D[f[x,y,z],{x,xLeft,xRight},{y,yLeft,yRight},{z,zLeft,zRight},VectorPoints->6,VectorStyle->{RGBColor[1,.5,.5],Thickness[0.008],Arrowheads[0.025],Opacity[.5]}],{}];
surface=If[showSurface,ParametricPlot3D[r[u,v],{u,0,1},{v,0,1},PlotStyle->{RGBColor[0,.75,0],Opacity[1]}],{}];

fluxVectors=If[showAllFluxVectors,Graphics3D[{RGBColor[.5,.5,1],Thickness[0.008],Arrowheads[0.025],Opacity[.5],Arrow[Join@@Table[{r[u,v],r[u,v]+flux[u,v]},{u,0,1,.2},{v,0,1,.2}]]}],{}];

highlightedVector=Graphics3D[{Red,Thickness[0.01],Arrowheads[0.03],Arrow[{r@@highlightAt,r@@highlightAt+f@@r@@highlightAt}]}];
highlightedFlux=Graphics3D[{Blue,Thickness[0.01],Arrowheads[0.03],Arrow[{r@@highlightAt,r@@highlightAt+flux@@highlightAt}]}];

Show[surface,vectorField,fluxVectors,highlightedVector,highlightedFlux,Axes->Automatic,AxesLabel->{x,y,z},PlotRange->All,BoxRatios->{2,2,3},ViewPoint->{8,4,4},Lighting->{{"Ambient",White}}]
)

Graphics

r[u_,v_]:={Cos[Pi u],Sin[Pi u],v};
f[x_,y_,z_]:={y/3,z/3,x/3};

showField = True;
showSurface=True;
showAllFluxVectors = True;
highlightAt={.3,.8};

graphics