Tips for Gfs tide modelling

plot_bathy.sh for checking the bathymetry input

#!/bin/sh
infn=bathymetry   # xyz file
psfn=bathy
region=156.75/210/-65/-23.75/-9500/5
gmt psxyz $infn -JQ180/15 -JZ5c -Bx5+llong -By5+llat -Bz2500+lbathymetry -B+t"3D bathymetry" -R$region -Sc0.025 -Ggray -p135/70 -W -P -V > $psfn.eps
gs $psfn.eps

plot_tide.sh for checking the M2 tide amplitude and phase

#!/bin/sh
infn=coefficients
psfn=amplitude
region=168.3/179.6/-45.1/-36.5
rm -f $psfn.eps
# Amplitude
 awk '{print $1,$2,$3}' < $infn | gmt psxy -JQ174/12 -Bx2+llong -By2+llat -BWSne+t"M2 amplitude" -R$region -Sc0.15 -Camp.cpt -P -V -K > $psfn.eps
 gmt psscale -Camp.cpt -DjMR+w7.5c+o-2.5c/0 -R -J -I -Bx0.25+lAmplitude -By+lm -V -O -K >> $psfn.eps
# Phase
awk '{print $1,$2,$4}' < $infn | gmt psxy -JQ174/12 -Bx2+llong -By2+llat -BWSne+t"M2 phase" -R$region -Sc0.15 -Cpha.cpt -V -K -Y13c -O >> $psfn.eps
 gmt psscale -Cpha.cpt -DjMR+w7.5c+o-2.5c/0 -R -J -I -Bx30+lphase -By+ldeg -V -O >> $psfn.eps
 #
 gs $psfn.eps

Tide GTS input files using the Nao Tide dataset

Download the Nao tide dataset and src from

https://www.miz.nao.ac.jp/staffs/nao99/index_En.html

Then, run the following to check the tidal amplitude and phase

$ gfortran -o nao2xyap nao2xyap.f
$./nao2xyap < m2.nao > m2.nao.xyap
$ gmt info m2.nao.xyap    # to check the xyap file and get the attribute for domain

Then, run the following script, plot_tide.sh, to plot the tidal charts

#!/bin/sh
infn=o1.nao.xyap
psfn=o1tide.nao
region=0/360/-90/90
rm -f $psfn.ps
 # Amplitude (centi-metre:cm)
 gmt makecpt -Ccool -T0/100/20 -V > amp.cpt
 awk '{print $1,$2,$3}' < $infn | gmt psxy -JQ180/14 -Bx60+llong -By30+llat -BWSne+t"NaoTide O1 amplitude" -R$region -Sc0.015 -Camp.cpt -P -V -K > $psfn.ps
 gmt psscale -Camp.cpt -DjMR+w7.0c+o-2.5c/0+e -R -J -I -Bx20+lAmplitude -By+lcm -V -O -K >> $psfn.ps
# Phase (degree)
 gmt makecpt -Ccool -T0/360/30 -V > pha.cpt
 awk '{print $1,$2,$4}' < $infn | gmt psxy -JQ180/14 -Bx60+llong -By30+llat -BWSne+t"NaoTide O1 phase" -R$region -Sc0.015 -Cpha.cpt -V -K -Y12c -O >> $psfn.ps
 gmt psscale -Cpha.cpt -DjMR+w7.0c+o-2.5c/0 -R -J -I -Bx30+lphase -By+ldeg -V -O >> $psfn.ps
 #
 gs $psfn.ps
 ps2epsi $psfn.ps
 convert $psfn.epsi $psfn.png

The resulting $psfn.png (m2tide.nao.png) is like below

Repeat the same process for S2, K1, O1, and so on.

Finally, make the gts files of each tidal constituents for GFS modelling by running nao2gts.sh

## tidal coefficients#
tide=s2
Agtsfn=AS2.gts
Bgtsfn=BS2.gts
infn=$tide.nao.xyap
gmt info $infn
# input file should contain the amplitude and phase of tidal constituents as a function of space i.e. four columns:
# lon (deg) lat (deg) amplitude (m) phase (degree:-180/180)
# therefore, check the units
tmpfn=$infn.new
awk '{if ($4 > 180.0) print $1,$2,$3/100,$4-360; else print $1,$2,$3/100,$4}' $infn > $tmpfn
gmt info $tmpfn
# just counts the number of lines in the input file
lines=wc -l $tmpfn | awk '{print $1}'
echo "lines = " $lines
# Gerris defines the tidal M2,S2,K1,O1 mode as:
# AM2*cos(omega*t) + BM2*sin(omega*t)
## We first compute AM2 from the amplitude and phase.
awk -v lines=$lines '
BEGIN {
  print lines " 0 0"
} {
  print $1 " " $2 " " $3*cos($43.14159265357/180.)
}' < $tmpfn | delaunay > $Agtsfn
#
# Now compute BM2
awk -v lines=$lines '
BEGIN {
  print lines " 0 0"
} {
  print $1 " " $2 " " $3*sin($43.14159265357/180.)
}' < $tmpfn | delaunay > $Bgtsfn