Adding tides to EAS5 System.. 1) Run settings 2) First results 3) Harmonic analysis tools
Adding tides to EAS5 System..
1) Run settings
2) First results
3) Harmonic analysis tools
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 150s
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .FALSE. !*jc Forward integration of barotropic equationsnn_baro = 50 !*jc Number of iterations of barotropic modenn_bt_flt = 1 !*jc Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2)
Control RUN (2015-2017)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 240s
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .TRUE. ! Forward integration of barotropic equationsnn_baro = 100 ! Number of iterations of barotropic modenn_bt_flt = 2 ! Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro
!-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 2.5e-3 !*jc bottom turbulent kinetic energy background (m3/s2)
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 150s
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .FALSE. !*jc Forward integration of barotropic equationsnn_baro = 50 !*jc Number of iterations of barotropic modenn_bt_flt = 1 !*jc Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2)
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 150s
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .FALSE. !*jc Forward integration of barotropic equationsnn_baro = 50 !*jc Number of iterations of barotropic modenn_bt_flt = 1 !*jc Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2)
Control RUN (2015-2017)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 240s
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .TRUE. ! Forward integration of barotropic equationsnn_baro = 100 ! Number of iterations of barotropic modenn_bt_flt = 2 ! Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro
!-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 2.5e-3 !*jc bottom turbulent kinetic energy background (m3/s2)
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Daily fields + Hourly fields: ssh and sea surface velocities => TOT ~ 215 G/yr
Control RUN (2015-2017)
● Modified Bathymetry (Croatian coast)
● Daily fields + Hourly fields: ssh and sea surface velocities => TOT ~ 215 G/yr
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 150s (~5 days/yr)
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .FALSE. !*jc Forward integration of barotropic equationsnn_baro = 50 !*jc Number of iterations of barotropic modenn_bt_flt = 1 !*jc Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2)
Control RUN (2015-2017)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 240s (~4 days/yr)
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .TRUE. ! Forward integration of barotropic equationsnn_baro = 100 ! Number of iterations of barotropic modenn_bt_flt = 2 ! Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro
!-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m3/s2)
Adding tides to EAS5 System..
1) Run settings
2) First results
3) Harmonic analysis tools
First results● GOOD NEWS: clear tidal signal!
May 2015 – TriesteS
SH
[m]
First results● GOOD NEWS: clear tidal signal!
May 2015 – TriesteS
SH
[m]
[Effects of tidal motion on the Mediterranean Sea General Circulation, Valentina Agresti, 2018]
First results● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
May 2015 – (lat: 36.002183 lon:-5.238527)
SS
H [m
]
First results
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
Tarifa
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
Tarifa
● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
May 2015 – Tarifa
SS
H [m
]
First results
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
Tarifa
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
Tarifa
● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
May 2015 - Tarifa
SS
H [m
]
First results
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
Tarifa
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
Algeciras
May 2015 - Algeciras
SS
H [m
]
First results
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
Tarifa
In-situ obsEAS1: RMS=5.83, Bias=-0.01 cmEAS3 : RMS=5.68, Bias=0.01 cm
● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
Algeciras
May 2015 - Algeciras
SS
H [m
]
May 2015 - Algeciras
SS
H [m
]
First results● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
HP: - Boundary conditions (Atlantic tides)
- Time interval (hourly mean Vs hourly snapshot )
Adding tides to EAS5 System..
1) Run settings
2) First results
3) Harmonic analysis tools
Harmonic analysis● key_diaharm (NEMO Harmonic analysis of tidal constituents)
X Restart capability NOT implemented X Problems with output rebuild
Harmonic analysis● Python Tools for Tidal Analysis (Salish Sea MEOPAR Project)
....# function for fitting 8 frequenciesdef octuple(x, M2amp, M2pha, K1amp, K1pha, O1amp, O1pha, S2amp, S2pha, P1amp, P1pha, N2amp, N2pha, Q1amp, Q1pha, K2amp, K2pha): return (M2amp*np.cos(M2freq*x-M2pha*np.pi/180.)+ K1amp*np.cos(K1freq*x-K1pha*np.pi/180.)+ O1amp*np.cos(O1freq*x-O1pha*np.pi/180.)+ S2amp*np.cos(S2freq*x-S2pha*np.pi/180.)+ P1amp*np.cos(P1freq*x-P1pha*np.pi/180.)+ N2amp*np.cos(N2freq*x-N2pha*np.pi/180.)+ Q1amp*np.cos(Q1freq*x-Q1pha*np.pi/180.)+ K2amp*np.cos(K2freq*x-K2pha*np.pi/180.))....fitted, cov = curve_fit(octuple,time[ts:te],ssh[ts:te])
X Nodal corrections required..(found in ocean.output)if fitted[0] < 0: fitted[0] = -fitted[0] fitted[1] = fitted[1]+180 M2_amp.append(fitted[0]*M2ft) pha = fitted[1]+M2uvt if pha > 360: pha=pha-360 elif pha < 0: pha = pha+360 M2_pha.append(pha)
Harmonic analysis● TUGO-m Tidal ToolBox (Allain 2016)
X Installation problems ?
● V. Agresti (2018). “Effects of tidal motion on the Mediterranean Sea General Circulation”.
● Tsimplis, MN, R Proctor, and RA Flather (1995). “A two-dimensional tidal model for the Mediterranean Sea”. Journal of Geophysical Research: Oceans 100.C8, pp. 16223–16239.
● Gurvan Madec and the NEMO team (2016), “NEMO Ocean Engine v3.6”.
● Python Tools for Tidal Analysis (Salish Sea MEOPAR Project):
https://nbviewer.jupyter.org/urls/bitbucket.org/salishsea/analysis/raw/tip/compare_tides/Analysis8Components.ipynb
https://salishsea-meopar-docs.readthedocs.io/en/latest/tidalcurrents/tidal_current_tools.html#python-tools-for-tidal-analysis
● Damien J. Allain (2019), “TUGOm Tidal ToolBox”
References
Run settings● Tides RUN (2015-2017)
● NEMO Namelist:
!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!----------------------------------------------------------------------- ln_bt_fw = .FALSE. !*jc Forward integration of barotropic equations ln_bt_av = .TRUE. ! Time filtering of barotropic variables ln_bt_nn_auto = .FALSE. ! Set nn_baro automatically to be just below ! a user defined maximum courant number (rn_bt_cmax) nn_baro = 50 !*jc Number of iterations of barotropic mode ! during rn_rdt seconds. Only used if ln_bt_nn_auto=F rn_bt_cmax = 0.8 ! Maximum courant number allowed if ln_bt_nn_auto=T nn_bt_flt = 1 !*jc Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro " "/
Control RUN (2015-2017)
● NEMO Namelist:
!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!----------------------------------------------------------------------- ln_bt_fw = .TRUE. ! Forward integration of barotropic equations ln_bt_av = .TRUE. ! Time filtering of barotropic variables ln_bt_nn_auto = .FALSE. ! Set nn_baro automatically to be just below ! a user defined maximum courant number (rn_bt_cmax) nn_baro = 100 ! Number of iterations of barotropic mode ! during rn_rdt seconds. Only used if ln_bt_nn_auto=F rn_bt_cmax = 0.8 ! Maximum courant number allowed if ln_bt_nn_auto=T nn_bt_flt = 2 ! Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro " "/
Run settings● Tides RUN (2015-2017)
● NEMO Namelist: !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------
nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction ! = 2 : nonlinear friction rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) rn_bfri2 = 1.e-5 ! bottom drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_bfri2_max = 1.e-1 ! max. bottom drag coefficient (non linear case and ln_loglayer=T) rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2) rn_bfrz0 = 1.e-2 ! bottom roughness [m] if ln_loglayer=T ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) rn_tfri1 = 4.e-4 ! top drag coefficient (linear case) rn_tfri2 = 2.5e-3 ! top drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_tfri2_max = 1.e-1 ! max. top drag coefficient (non linear case and ln_loglayer=T) rn_tfeb2 = 0.0 ! top turbulent kinetic energy background (m2/s2) rn_tfrz0 = 3.e-3 ! top roughness [m] if ln_loglayer=T ln_tfr2d = .false. ! horizontal variation of the top friction coef (read a 2D mask file ) rn_tfrien = 50. ! local multiplying factor of tfr (ln_tfr2d=T)
ln_bfrimp = .false. ! implicit bottom friction (requires ln_zdfexp = .false. if true) ln_loglayer = .true. ! logarithmic formulation (non linear case)/
Control RUN (2015-2017)
● NEMO Namelist:!-----------------------------------------------------------------------&nambfr ! bottom friction!----------------------------------------------------------------------- nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction ! = 2 : nonlinear friction rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) rn_bfri2 = 1.e-5 ! bottom drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_bfri2_max = 1.e-1 ! max. bottom drag coefficient (non linear case and ln_loglayer=T) rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) rn_bfrz0 = 1.e-2 ! bottom roughness [m] if ln_loglayer=T ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) rn_tfri1 = 4.e-4 ! top drag coefficient (linear case) rn_tfri2 = 2.5e-3 ! top drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_tfri2_max = 1.e-1 ! max. top drag coefficient (non linear case and ln_loglayer=T) rn_tfeb2 = 0.0 ! top turbulent kinetic energy background (m2/s2) rn_tfrz0 = 3.e-3 ! top roughness [m] if ln_loglayer=T ln_tfr2d = .false. ! horizontal variation of the top friction coef (read a 2D mask file ) rn_tfrien = 50. ! local multiplying factor of tfr (ln_tfr2d=T)
ln_bfrimp = .false. ! implicit bottom friction (requires ln_zdfexp = .false. if true) ln_loglayer = .true. ! logarithmic formulation (non linear case)/
First results● GOOD NEWS: clear tidal signal!● BAD NEWS: Amplitude is too small...
HP: - Boundary conditions (Atlantic tides)
- Time interval (hourly mean Vs hourly snapshot )
01 May 2015 - MonacoS
SH
[m]
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Daily fields + Hourly fields: ssh and sea surface velocities => TOT ~ 215 G/yr
Control RUN (2015-2017)
● Modified Bathymetry (Croatian coast)
● Daily fields + Hourly fields: ssh and sea surface velocities => TOT ~ 215 G/yr
Run settingsTides RUN (2015-2017)
● key_tide (M2, S2, N2, K1, O1, Q1, K2, P1)
● Modified Bathymetry (Croatian coast)
● Hourly fields: ssh and sea surface velocities
● Timestep: 150s
● NEMO Namelist:!-----------------------------------------------------------------------&namsplit ! time splitting parameters ("key_dynspg_ts")!-----------------------------------------------------------------------ln_bt_fw = .FALSE. !*jc Forward integration of barotropic equationsnn_baro = 50 !*jc Number of iterations of barotropic modenn_bt_flt = 1 !*jc Time filter choice ! = 0 None ! = 1 Boxcar over nn_baro barotropic steps ! = 2 Boxcar over 2*nn_baro !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2)
Control RUN (2015-2017)
● Modified Bathymetry (Croatian coast)
Run settings● Tides RUN (2015-2017)
● NEMO Namelist: !-----------------------------------------------------------------------&nambfr ! bottom friction!-----------------------------------------------------------------------
nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction ! = 2 : nonlinear friction rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) rn_bfri2 = 1.e-5 ! bottom drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_bfri2_max = 1.e-1 ! max. bottom drag coefficient (non linear case and ln_loglayer=T) rn_bfeb2 = 0. !*jc bottom turbulent kinetic energy background (m3/s2) rn_bfrz0 = 1.e-2 ! bottom roughness [m] if ln_loglayer=T ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) rn_tfri1 = 4.e-4 ! top drag coefficient (linear case) rn_tfri2 = 2.5e-3 ! top drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_tfri2_max = 1.e-1 ! max. top drag coefficient (non linear case and ln_loglayer=T) rn_tfeb2 = 0.0 ! top turbulent kinetic energy background (m2/s2) rn_tfrz0 = 3.e-3 ! top roughness [m] if ln_loglayer=T ln_tfr2d = .false. ! horizontal variation of the top friction coef (read a 2D mask file ) rn_tfrien = 50. ! local multiplying factor of tfr (ln_tfr2d=T)
ln_bfrimp = .false. ! implicit bottom friction (requires ln_zdfexp = .false. if true) ln_loglayer = .true. ! logarithmic formulation (non linear case)/
Control RUN (2015-2017)
● NEMO Namelist:!-----------------------------------------------------------------------&nambfr ! bottom friction!----------------------------------------------------------------------- nn_bfr = 2 ! type of bottom friction : = 0 : free slip, = 1 : linear friction ! = 2 : nonlinear friction rn_bfri1 = 4.e-4 ! bottom drag coefficient (linear case) rn_bfri2 = 1.e-5 ! bottom drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_bfri2_max = 1.e-1 ! max. bottom drag coefficient (non linear case and ln_loglayer=T) rn_bfeb2 = 2.5e-3 ! bottom turbulent kinetic energy background (m2/s2) rn_bfrz0 = 1.e-2 ! bottom roughness [m] if ln_loglayer=T ln_bfr2d = .false. ! horizontal variation of the bottom friction coef (read a 2D mask file ) rn_bfrien = 50. ! local multiplying factor of bfr (ln_bfr2d=T) rn_tfri1 = 4.e-4 ! top drag coefficient (linear case) rn_tfri2 = 2.5e-3 ! top drag coefficient (non linear case). Minimum coeft if ln_loglayer=T rn_tfri2_max = 1.e-1 ! max. top drag coefficient (non linear case and ln_loglayer=T) rn_tfeb2 = 0.0 ! top turbulent kinetic energy background (m2/s2) rn_tfrz0 = 3.e-3 ! top roughness [m] if ln_loglayer=T ln_tfr2d = .false. ! horizontal variation of the top friction coef (read a 2D mask file ) rn_tfrien = 50. ! local multiplying factor of tfr (ln_tfr2d=T)
ln_bfrimp = .false. ! implicit bottom friction (requires ln_zdfexp = .false. if true) ln_loglayer = .true. ! logarithmic formulation (non linear case)/