Hello,
Sorry for the bother but I have a simple question to ask.  
I am currently developing some code to solve for wind-driven gyres and basin modes using QG and SW.  My question is how is it best to impose no-normal flow BCs,
$$\vec u \cdot \hat n = 0$$
for any boundary.  I found this in the Navier-Stokes example which says that we should impose zero on particular boundaries.  I guess that would work but if one had a more complicated geometry I imagine that would have it's problems.
bcs = [DirichletBC(Z.sub(0), Constant((1, 0)), (4,)),
       DirichletBC(Z.sub(0), Constant((0, 0)), (1, 2, 3))]