Hello Steve,
Here is a quick solution:
First, you should format you input file like a LIQUID BOUNDARIES FILE, but with your own header, which I recommend you modify using say ETA(1372) ETA(772) ... where the numbers are your global node numbers (on your boundary), and also add the columns for the U and V in the same way. TELEMAC does not care which column comes first.
Your LIQUID BOUNDARIES FILE would look like:
# starts 21/09/2009 21:30 (time 0), ends 18/11/2009 00:00
# tidal elevations obtained from regional model r2d_Regional92-22sep18nov_v1p238L3ctd3.slf
#
T ETA(14257) ETA(14199) ETA(14206) ETA(14204) .... VIT(14257) VIT(14199) VIT(14206) .... NDU(14162) NDU(14273) NDU(14161) .... NDV(14162) NDV(14273) NDV(14161) NDV(14160) ....
s m m m .... m/s m/s m/s .... m/s m/s m/s .... m/s m/s m/s ....
0 0.1118927 0.1448822 0.13404846 .... -0.771434309 -0.615365748 -0.67209899 .... -0.50572884 -0.50745368 -0.51508558 .... -1.0022132 -0.95926291 -0.94195467 .... 0.90371764 -0.80580246 0.4948312
Note that the line for units is not used by TELEMAC and that the code ETA, or NDU or NDV are really your own. The file should be space delimited. You can setup this file in MS Excel for instance.
Note that the first column has to be your time in second (AT or TIME in TELEMAC)
Don't forget to add the keyword LIQUID BOUNDARIES FILE to your CAS file.
Second, in BORD (and it is the same for 3D users) you have a part that set the free surface level Z (similar for velocities) as follows:
Z = SL(IFRLIQ,NBOR(K))
HBOR(K) = MAX( 0.D0 , Z-ZF(NBOR(K)) )
H%R(NBOR(K))=HBOR(K)
You have to make sure that K is passed as argument, the global node number, so you can get its associated value from your LIQUID BOUNDARIES FILE in the Function SL( ). So in BORD, change Z = SL(IFRLIQ,NBOR(K)) into Z = SL(IFRLIQ,K)
Third, in the Function SL( ), you have to read the ETA(14199) for K = 14199 and return the value interpolated in time. To do this you can just call READ_FIC_FRLIQ, like it does by default, but change the FCT into what you require – as follows, for instance:
K = N
IF (NCSIZE.GT.1) K = MESH2D%KNOLG%I(N)
FCT(1:4)='ETA('
IF(K.LT.10) THEN
WRITE(FCT(5:5),FMT='(I1)') K
FCT(6:11)=') '
ELSEIF(K.LT.100) THEN
...
ELSEIF(K.LT.10000) THEN
...
ELSEIF(K.LT.100000) THEN
WRITE(FCT(5:9),FMT='(I5)') K
FCT(10:11)=') '
Note that thanks to K = MESH2D%KNOLG%I(N), this will also work in parallel.
Finally a few more modifications:
- Do comment the line DEJA=.TRUE. (in the IF(.NOT.DEJA) THEN…) in SL( )
- The FCT variable in SL( ) is CHARACTER*8 by default => make this the size you need, for instance CHARACTER*11 FCT
- You need to modify READ_FIC_FRLIQ, if the lines of your LIQUID BOUNDARIES FILE are too long, in particular
CHARACTER*3440 LIGNE instead of 144
(and track the 144 in the code, 3 places, to change it in 3440, for consistency)
And also the MAXVAR parameter:
INTEGER, PARAMETER :: MAXVAL=500 instead of 50
And also update the WHAT variable as follows:
CHARACTER*11 , INTENT(IN) :: WHAT
according to what you set in SL.
Please note that READ_FIC_FRLIQ is also used for velocities etc, and that if you modify WHAT, you will have to modify the FCT in SL( ) and VIT( ) etc.
Note also that for velocities, you have only an access to VIT( ) for the magnitude and that in BORD it set:
UBOR(K,1) = - XNEBOR(K) * VIT(NUMLIQ(K),NBOR(K))
VBOR(K,1) = - YNEBOR(K) * VIT(NUMLIQ(K),NBOR(K))
You can here create your own VITU( ) and VITV( ) to set UBOR and VBOR, where your VITU( ) and VITV( ) are essentially copies of VIT but modified to set either FCT = you VITU code ...
Obviously we would always be happy to provide you with more detailed support and advanced training if required outside this Forum.
Amicalement,
Sébastien.