Hello,
The principle of Thompson is that you give all what you know on boundaries. When a data is known, you declare it as prescribed : 5 for depth or 6 for velocities, in the boundary conditions file (be it depth or velocities) and you give the values in subroutine bord.f. When a data is unknown you declare it as free (4). If you declare everything as known it is overconstrained and Thompson will select what is necessary. In the result you will not get exactly all the prescribed values.
If you look at the test case called Thompson, all values at boundaries are declared as free : 4 4 4 in the boundary conditions file, the result is a free exit of waves.
With best regards,
Jean-Michel Hervouet