- Timestamp:
- 2021-01-05T19:23:36+01:00 (4 years ago)
- Location:
- NEMO/branches/NERC/NEMO_4.0.4_CO9_package_tides/src/OCE/SBC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/NERC/NEMO_4.0.4_CO9_package_tides/src/OCE/SBC/sbctide.F90
r14075 r14266 16 16 USE ioipsl ! NetCDF IPSL library 17 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 19 USE bdytides ! davbyr - Access to love number 18 20 19 21 IMPLICIT NONE … … 108 110 109 111 DO jk = 1, nb_harmo 110 zcons = 0.7_wp * Wave(ntide(jk))%equitide * ftide(jk) 112 ! davbyr - Insert variable Love number where once was 0.7 113 zcons = dn_love_number * Wave(ntide(jk))%equitide * ftide(jk) 114 ! END davbyr 111 115 DO ji = 1, jpi 112 116 DO jj = 1, jpj … … 119 123 IF ( Wave(ntide(jk))%nutide == 1 ) THEN ; zcs = zcons * SIN( 2._wp*zlat ) 120 124 ELSEIF( Wave(ntide(jk))%nutide == 2 ) THEN ; zcs = zcons * COS( zlat )**2 125 ! davbyr - Include long period tidal forcing 126 ELSEIF( Wave(ntide(jk))%nutide == 0 ) THEN ; zcs = zcons * (0.5_wp-1.5_wp*SIN(zlat)**2._wp) 127 ! END - davbyr 121 128 ELSE ; zcs = 0._wp 122 129 ENDIF -
NEMO/branches/NERC/NEMO_4.0.4_CO9_package_tides/src/OCE/SBC/tide.h90
r14250 r14266 2 2 !! History : 3.2 ! 2007 (O. Le Galloudec) Original code 3 3 !!---------------------------------------------------------------------- 4 4 !! TIDES ADDED ! 2017 (Nico Bruneau) 5 !! Following this document that seems to match implemented code 6 !! https://docs.lib.noaa.gov/rescue/cgs_specpubs/QB275U35no981924.pdf 7 !! see page 189 for some proposed values 8 !! 9 !! The convention which seems to have been chosen is the Shureman one and 10 !! not the Cartwright and Tayer (1971) 11 !! This is probably due to the fact the Schureman has a solar calendar 12 !! while Cartwright and Tayer is based on a lunar calendar 13 !! 14 !! Therefore the coefficient are not the Doodson number but the one 15 !! defined by Schureman. For example : 16 !! M2 : Doodson : 2 0 0 0 0 0 17 !! Schureman : 2 -2 2 0 0 0 18 !! 19 !! Components 1-34 are for FES 2014 20 !! Components >= 35 are the one that were initially present in NEMO and not in FES14 21 !! keep in mind than equitide coefficient have been ajusted for the 22 !! 34 FES 2014 constituents 23 !! 24 !! The different coefficient are as follows 25 !! - nt = T = Number of Julian centuries (36625 days) from Greenwich mean noon on December 31, 1899. 26 !! = Hour angle of mean sun 27 !! - ns = s = mean longitude of the moon 28 !! - nh = h = mean longitude of the sun 29 !! - np = p = mean longitude of the lunar perigee 30 !! - np1 = p1 = mean longitude of the solar perigee 31 !! - shift appears in table as a bias in degree 32 !! - nksi Coefficient for the longitude in moon's orbit of lunar intersection 33 !! - nu0 Coefficient for the right ascension of lunar intersection 34 !! - nu1 Coefficient for the term in argument of lunisolar constituent K1 35 !! - nu2 Coefficient for the term in argument of lunisolar constituent K2 36 !! - R = ??? 37 !! - Formula = Nodal factor function; see the table of Schureman. Implemented in tide_mod.F90 38 !! 39 !! The equitide parameter seems to be the equilibrium tide amplitude corrected 40 !! with the C_n^m coefficient: see Cartwright and Tayer (1971) equation 12 41 !! and Table 2 42 !! As an example in their Table 4c (p66), M2 (200000) has an amplitude of 43 !! around 0.63186 m 44 !! Table 2, give us a correction of m = 2, n = 2 (semi-diurnal) 45 !! 0.63186*3*sqrt( 5 / 96 / pi ) = 0.24407 46 !! very close to the one define originally here : 0.242297 47 !! Third order terms are neglected 48 !! 49 !! So to correct (to match what is implemented in sbctide.F90 - take care CT71 uses co-latitude): 50 !! - long wave : Amplitude from CT71 * [ -1 * sqrt( 5 / 4 / pi ) ] 51 !! - diurnal : Amplitude from CT71 * [ -3/2 * sqrt( 5 / 24 / pi ) ] 52 !! - semi-diur : Amplitude from CT71 * [ 3 * sqrt( 5 / 96 / pi ) ] 53 !! 54 !! ATTENTION: convention seems to be to have a positive coefficient and a 180 shift to 55 !! represent negative value. to be confirmed though. 56 !! 57 !! All equtide were computed using the last epocs from Cartwright and Tayer (1971) multiply by 58 !! the corresponding coefficient of their table 2 59 !! 60 !! nutide is used to compute tide potential - it uses a different formulation depending of nutide 61 !! see sbctide.F90 in function tide_init_potential 62 !! 63 !! Some random note 64 !! in cnes fes tool: 65 !! Msf has nksi = 2 and nnu0 = -2 which is reverse from Schureman (I kept the Schureman one) 66 !! 67 !!---------------------------------------------------------------------- 68 ! 5 69 ! !! name_tide , equitide , nutide , nt , ns , nh , np , np1 , shift , nksi , nnu0 , nnu1 , nnu2 , R , formula !! 6 70 ! !! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !! 7 Wave( 1) = tide( 'M2' , 0.242297 , 2 , 2 , -2 , 2 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )8 Wave( 2) = tide( 'N2' , 0.046313 , 2 , 2 , -3 , 2 , 1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )9 Wave( 3) = tide( '2N2' , 0.006184 , 2 , 2 , -4 , 2 , 2 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )10 Wave( 4) = tide( 'S2' , 0.113572 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )11 Wave( 5) = tide( 'K2' , 0.030875 , 2 , 2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , -2 , 0 , 235 )12 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !13 Wave( 6) = tide( 'K1' , 0.142408 , 1 , 1 , 0 , 1 , 0 , 0 , -90 , 0 , 0 , -1 , 0 , 0 , 227 )14 Wave( 7) = tide( 'O1' , 0.101266 , 1 , 1 , -2 , 1 , 0 , 0 , +90 , 2 , -1 , 0 , 0 , 0 , 75 )15 Wave( 8) = tide( 'Q1' , 0.019387 , 1 , 1 , -3 , 1 , 1 , 0 , +90 , 2 , -1 , 0 , 0 , 0 , 75 )16 Wave( 9) = tide( 'P1' , 0.047129 , 1 , 1 , 0 , -1 , 0 , 0 , +90 , 0 , 0 , 0 , 0 , 0 , 0 )17 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !18 Wave(10) = tide( 'M4' , 0.000000 , 4 , 4 , -4 , 4 , 0 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 1 )19 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !20 Wave(11) = tide( 'Mf' , 0.042017 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 )21 Wave(12) = tide( 'Mm' , 0.022191 , 0 , 0 , 1 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 73 )22 Wave(13) = tide( 'Msqm' , 0.000667 , 0 , 0 , 4 , -2 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 )23 Wave(14) = tide( 'Mtm' , 0.008049 , 0 , 0 , 3 , 0 , -1 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 )24 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !25 Wave(15) = tide( 'S1' , 0.000000 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )26 Wave(16) = tide( 'MU2' , 0.005841 , 2 , 2 , -4 , 4 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )27 Wave(17) = tide( 'NU2' , 0.009094 , 2 , 2 , -3 , 4 , -1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 )28 Wave(18) = tide( 'L2' , 0.006694 , 2 , 2 , -1 , 2 , -1 , 0 , +180 , 2 , -2 , 0 , 0 , 0 , 215 )29 Wave(19) = tide( 'T2' , 0.006614 , 2 , 2 , 0 , -1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 )30 71 ! 31 ! !! name_tide , equitide , nutide , nt , ns , nh , np , np1 , shift , nksi , nnu0 , nnu1 , nnu2 , R , formula !! 32 Wave(20) = tide( 'MNS2' , 0.000000 , 2 , 2 , -5 , 4 , 1 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 6 ) 33 Wave(21) = tide( 'Lam2' , 0.001760 , 2 , 2 , -1 , 0 , 1 , 0 , +180 , 2 , -2 , 0 , 0 , 0 , 78 ) 34 Wave(22) = tide( 'MSN2' , 0.000000 , 2 , 2 , 1 , 0 , 1 , 0 , 0 , 2 , -2 , 0 , 2 , 0 , 6 ) 35 Wave(23) = tide( '2SM2' , 0.000000 , 2 , 2 , 2 , -2 , 0 , 0 , 0 , -2 , 2 , 0 , 0 , 0 , 16 ) 36 Wave(24) = tide( 'MO3' , 0.000000 , 3 , 3 , -4 , 1 , 0 , 0 , +90 , 2 , -2 , 0 , 0 , 0 , 13 ) 37 Wave(25) = tide( 'MK3' , 0.000000 , 3 , 3 , -2 , 3 , 0 , 0 , -90 , 2 , -2 , -1 , 0 , 0 , 10 ) 38 Wave(26) = tide( 'MN4' , 0.000000 , 4 , 4 , -5 , 4 , 1 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 1 ) 39 Wave(27) = tide( 'MS4' , 0.000000 , 4 , 4 , -2 , 2 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 2 ) 40 Wave(28) = tide( 'M6' , 0.000000 , 6 , 6 , -6 , 6 , 0 , 0 , 0 , 6 , -6 , 0 , 0 , 0 , 4 ) 41 Wave(29) = tide( '2MS6' , 0.000000 , 6 , 6 , -4 , 4 , 0 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 6 ) 42 Wave(30) = tide( '2MK6' , 0.000000 , 6 , 6 , -4 , 6 , 0 , 0 , 0 , 4 , -4 , 0 , -2 , 0 , 5 ) 43 Wave(31) = tide( '3M2S2' , 0.000000 , 2 , 2 , -6 , 6 , 0 , 0 , 0 , 6 , -6 , 0 , 0 , 0 , 12 ) 72 ! Long Period Tides 73 Wave( 1) = tide( 'SA' , 0.003103 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) 74 Wave( 2) = tide( 'SSA' , 0.019523 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) 75 Wave( 3) = tide( 'MM' , 0.022191 , 0 , 0 , 1 , 0 , -1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 73 ) 76 Wave( 4) = tide( 'MF' , 0.042023 , 0 , 0 , 2 , 0 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 ) 77 Wave( 5) = tide( 'MTM' , 0.008042 , 0 , 0 , 3 , 0 , -1 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 ) 78 Wave( 6) = tide( 'MSF' , 0.003671 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , -2 , 2 , 0 , 0 , 0 , 78 ) 79 Wave( 7) = tide( 'MSQM' , 0.001293 , 0 , 0 , 4 , -2 , 0 , 0 , 0 , -2 , 0 , 0 , 0 , 0 , 74 ) 80 ! 81 ! Diurnal Tides 82 Wave( 8) = tide( 'K1' ,-0.142442 , 1 , 1 , 0 , 1 , 0 , 0 , -90 , 0 , 0 , -1 , 0 , 0 , 227 ) 83 Wave( 9) = tide( 'O1' , 0.101277 , 1 , 1 , -2 , 1 , 0 , 0 , +90 , 2 , -1 , 0 , 0 , 0 , 75 ) 84 Wave(10) = tide( 'Q1' , 0.019383 , 1 , 1 , -3 , 1 , 1 , 0 , +90 , 2 , -1 , 0 , 0 , 0 , 75 ) 85 Wave(11) = tide( 'P1' , 0.047145 , 1 , 1 , 0 , -1 , 0 , 0 , +90 , 0 , 0 , 0 , 0 , 0 , 0 ) 86 Wave(12) = tide( 'S1' ,-0.001116 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) 87 Wave(13) = tide( 'J1' ,-0.007961 , 1 , 1 , 1 , 1 , -1 , 0 , -90 , 0 , -1 , 0 , 0 , 0 , 76 ) 88 ! 89 ! Semi-Diurnal Tides 90 Wave(14) = tide( 'M2' , 0.244083 , 2 , 2 , -2 , 2 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 91 Wave(15) = tide( 'N2' , 0.046720 , 2 , 2 , -3 , 2 , 1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 92 Wave(16) = tide( 'S2' , 0.113565 , 2 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) 93 Wave(17) = tide( 'K2' , 0.030875 , 2 , 2 , 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , -2 , 0 , 235 ) 94 Wave(18) = tide( 'L2' , 0.006903 , 2 , 2 , -1 , 2 , -1 , 0 , +180 , 2 , -2 , 0 , 0 , 0 , 215 ) 95 Wave(19) = tide( 'T2' , 0.006644 , 2 , 2 , 0 , -1 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) 96 Wave(20) = tide( 'R2' , 0.000950 , 2 , 2 , 0 , 1 , 0 , -1 , +180 , 2 , 0 , 0 , 0 , 0 , 0 ) 97 ! 98 Wave(21) = tide( 'MU2' , 0.007451 , 2 , 2 , -4 , 4 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 99 Wave(22) = tide( 'NU2' , 0.008873 , 2 , 2 , -3 , 4 , -1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 100 Wave(23) = tide( '2N2' , 0.006176 , 2 , 2 , -4 , 2 , 2 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 101 Wave(24) = tide( 'MKS2' , 0.000000 , 2 , 2 , -2 , 4 , 0 , 0 , 0 , 2 , -2 , 0 , -2 , 0 , 4 ) 102 Wave(25) = tide( 'LA2' , 0.001800 , 2 , 2 , -1 , 0 , 1 , 0 , +180 , 2 , -2 , 0 , 0 , 0 , 78 ) 103 Wave(26) = tide( 'EPS2' , 0.001796 , 2 , 2 , -5 , 4 , 1 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 104 ! 105 ! Harmonic and others 106 Wave(27) = tide( 'M3' , 0.000000 , 3 , 3 , -3 , 3 , 0 , 0 , 0 , 3 , -3 , 0 , 0 , 0 , 149 ) 107 Wave(28) = tide( 'M4' , 0.000000 , 4 , 4 , -4 , 4 , 0 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 1 ) 108 Wave(29) = tide( 'M6' , 0.000000 , 6 , 6 , -6 , 6 , 0 , 0 , 0 , 6 , -6 , 0 , 0 , 0 , 18 ) 109 Wave(30) = tide( 'M8' , 0.000000 , 8 , 8 , -8 , 8 , 0 , 0 , 0 , 8 , -8 , 0 , 0 , 0 , 20 ) 110 Wave(31) = tide( 'N4' , 0.000000 , 4 , 4 , -6 , 4 , 2 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 1 ) 111 Wave(32) = tide( 'S4' , 0.000000 , 4 , 4 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) 112 Wave(33) = tide( 'MN4' , 0.000000 , 4 , 4 , -5 , 4 , 1 , 0 , 0 , 4 , -4 , 0 , 0 , 0 , 1 ) 113 Wave(34) = tide( 'MS4' , 0.000000 , 4 , 4 , -2 , 2 , 0 , 0 , 0 , 2 , -2 , 0 , 0 , 0 , 78 ) 114 ! -
NEMO/branches/NERC/NEMO_4.0.4_CO9_package_tides/src/OCE/SBC/tide_mod.F90
r14250 r14266 16 16 PUBLIC tide_init_Wave ! called by tideini and diaharm modules 17 17 18 INTEGER, PUBLIC, PARAMETER :: jpmax_harmo = 31 !: maximum number of harmonic 18 ! davbyr: increase maximum number of harmonics from 19 to 34 19 INTEGER, PUBLIC, PARAMETER :: jpmax_harmo = 34 !: maximum number of harmonic 19 20 20 21 TYPE, PUBLIC :: tide … … 331 332 zf = zf * zf1 * zf1 332 333 ! 334 335 !--- davbyr 11/2017 336 CASE( 20 ) !== formule 20, compound waves ( 78 x 78 x 78 x 78 ) 337 zf1 = nodal_factort(78) 338 zf = zf1 * zf1 * zf1 * zf1 339 !--- END davbyr 333 340 CASE( 73 ) !== formule 73 334 341 zs = sin(sh_I) -
NEMO/branches/NERC/NEMO_4.0.4_CO9_package_tides/src/OCE/SBC/tideini.F90
r14075 r14266 34 34 REAL(wp), PUBLIC :: rdttideramp !: 35 35 REAL(wp), PUBLIC :: rn_scal_load !: 36 ! davbyr - read love number from namelist 37 REAL(wp), PUBLIC :: dn_love_number !: 38 ! END davbyr 36 39 CHARACTER(lc), PUBLIC :: cn_tide_load !: 37 40 … … 54 57 ! 55 58 NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_scal_load, ln_read_load, cn_tide_load, & 56 & ln_tide_ramp, rn_scal_load, rdttideramp, clname59 & ln_tide_ramp, rn_scal_load, rdttideramp, dn_love_number, clname 57 60 !!---------------------------------------------------------------------- 58 61 ! … … 80 83 WRITE(numout,*) ' Fraction of SSH used in scal. approx. rn_scal_load = ', rn_scal_load 81 84 WRITE(numout,*) ' Duration (days) of ramp rdttideramp = ', rdttideramp 85 ! davbyr - Love number (one line) 86 WRITE(numout,*) ' Love Number dn_love_number = ', dn_love_number 82 87 ENDIF 83 88 ELSE
Note: See TracChangeset
for help on using the changeset viewer.