Dear Florian,
In order to read elevation and velocities, I had created two separate files for each data set. In the particular case I was working with some modification with the Q function as per the availability of water at intake. In your case may be Q may not be required so you may omit the Q function.
Also the Q values are read from the liquid boundary file, and not from the external which which I am creating.
I am attaching another case where I have read the elevation, and velocities.
The format for elevation is
#First Header
#Second Header
node#1, node#2..... node#n
T S(1) S(2) ..... S(N)
.
.
Similarly for velocities it is
#First Header
#Second Header
node#1, node#2..... node#n
T Vel(1) Mag(1) Vel(2) Mag(2) ..... Vel(N) Mag(N)
.
.
The first two headers are skipped by the programs.
In my case you may see that the velocity file is having velocity and magnitude, in which for you case you will have to modify to read u and v directly. In the program I am calculating the components again, but in yours you may need not calculate.
also in the steering file you will have to mention the following
PRESCRIBED VELOCITIES = 0.;0.
VELOCITY PROFILES = 1;2
OPTION FOR LIQUID BOUNDARIES = 1;1
this is for my case where I had two boundaries, first is the discharge boundary and the second is the open boundary where I am imposing tide and velocities.
You may also modify the program to read data from the single file (.i.e S, U and V), in which case you will have to add an offset which refers to the length of the boundary points. I have use the HASH concept, where the random indexing to boundary point value is used.
There is no need to put sl.f and vit.f subroutine as the function bord.f read the required data values.
You may try running my case and see how it works
Hope so this will help
With Best Regards,
Gourish