Boundary conditions for the `testXY`

case are specified by ensuring that
all boundary markers are no-slip boundary conditions of type `4`

. The
`testXZ`

case is somewhat more complicated, as the western and eastern-most
edge is of type `4`

with the channel sides parallel to the flow closed with
type `1`

. No-slip top and bottom boundary conditions are specified by
setting `CdT -1`

and `CdB -1`

in `suntans.dat`

. Deflection of
the free surface, as would be expected to be developed in response to flows, is
controlled via the rigid lid approximation by setting `grav=9.81e6`

in
`suntans.dat`

.

For the `testXY`

case all boundary velocities are 0 except the lid
as specified in BoundaryVelocities() of `boundariesXY.c`

via

for(jptr=grid->edgedist[4];jptr<grid->edgedist[5];jptr++) { j = grid->edgep[jptr]; ib=grid->grad[2*j]; boundary_index = jptr-grid->edgedist[2]; for(k=grid->ctop[ib];k<grid->Nk[ib];k++) { if(grid->ye[j]<0.000010) phys->boundary_u[boundary_index][k]= 1.0; else phys->boundary_u[boundary_index][k] = 0.0; phys->boundary_v[boundary_index][k] = 0.0; phys->boundary_w[boundary_index][k] = 0.0; } }Observe that this function specifies the boundary value for each edge of type

`4`

, where the lid (located at the southern end of
the domain) is driven by a constant flow towards the east.
The boundary conditions for `testXZ`

are somewhat similar, but have the
driven lid on the western most end of the domain with flow towards the
south. Their specification in BoundaryVelocities() in `boundariesXZ.c`

follows.

for(jptr=grid->edgedist[4];jptr<grid->edgedist[5];jptr++) { j = grid->edgep[jptr]; ib=grid->grad[2*j]; boundary_index = jptr-grid->edgedist[2]; for(k=grid->ctop[ib];k<grid->Nk[ib];k++) { if(grid->xe[j]<0.5) phys->boundary_w[boundary_index][k]= -1.0; else phys->boundary_w[boundary_index][k]=0.0; phys->boundary_v[boundary_index][k] = 0.0; phys->boundary_u[boundary_index][k] = 0.0; } }The lid velocity for both cases is unity to allow easy specification of Reynolds numbers via .