COMPUTATIONAL FLUID DYNAMICS - Help with SIMPLE algorithm implementation

I have the following program (by some standards, it might be called
long). I want any advice as how to better understand it. For those in
the know, it is meant to implement the SIMPLE algorithm for horizontal
channel flow. It uses a mesh/grid system for this. I will try to
offer explanations to anyone who is interested in offering help.

Here's the program. I would very much like to know how to modify it
for horizontal and vertical fluid flow, and how to deal with a channel
that looks like what I am about to draw (the third channel):

Horizontal Channel:



Boundary Conditions/Initial Conditions.

On the LHS of the channel, the velocity is given by:

On the walls of the channel, the velocity is given by:

At the RHS of the channel, the velocity derivative is given by:
du/dx=0, dv/dx=0

The pressure is given by p = -0.12x

Vertical Channel:

| | /\
| |
| |
| |
| | 10m
| |
| |
| |
| | \/

Here, the outlet is the top part and we have the analogous boundary

Channel With 'Bump':



/\ |
1m |
< 2m > < 15m

Here, we have the same boundary conditions (inlet, outlet and wall

I know what the is given by roughly, but would like to know what
adaptations it would be wise to make to the below program to get it to
work.......ESPECIALLY for the third case.

Thanks for any help!