Changeset 2379
- Timestamp:
- 2010-11-12T15:51:18+01:00 (13 years ago)
- Location:
- branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r2287 r2379 160 160 REAL(wp) :: zacr, zdzmin, zhmax ! par_CONFIG_Rxx.h90 161 161 REAL(wp) :: zrefdep ! depth of the reference level (~10m) 162 REAL(wp) :: za2, zkth2, zacr2 ! Values for optional double tanh function set from parameters 162 163 !!---------------------------------------------------------------------- 163 164 … … 166 167 zkth = ppkth ; zacr = ppacr 167 168 zdzmin = ppdzmin ; zhmax = pphmax 169 zkth2 = ppkth2 ; zacr2 = ppacr2 ! optional (ldbletanh=T) double tanh parameters 168 170 169 171 ! If ppa1 and ppa0 and ppsur are et to pp_to_be_computed … … 181 183 ELSE 182 184 za1 = ppa1 ; za0 = ppa0 ; zsur = ppsur 185 za2 = ppa2 ! optional (ldbletanh=T) double tanh parameter 183 186 ENDIF 184 187 … … 203 206 WRITE(numout,*) ' zkth = ', zkth 204 207 WRITE(numout,*) ' zacr = ', zacr 208 IF( ldbletanh ) THEN 209 WRITE(numout,*) ' (Double tanh za2 = ', za2 210 WRITE(numout,*) ' parameters) zkth2= ', zkth2 211 WRITE(numout,*) ' zacr2= ', zacr2 212 ENDIF 205 213 ENDIF 206 214 ENDIF … … 220 228 END DO 221 229 ELSE ! Madec & Imbard 1996 function 222 DO jk = 1, jpk 223 zw = FLOAT( jk ) 224 zt = FLOAT( jk ) + 0.5 225 gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) ) 226 gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) ) 227 e3w_0 (jk) = za0 + za1 * TANH( (zw-zkth) / zacr ) 228 e3t_0 (jk) = za0 + za1 * TANH( (zt-zkth) / zacr ) 229 END DO 230 IF( .NOT. ldbletanh ) THEN 231 DO jk = 1, jpk 232 zw = FLOAT( jk ) 233 zt = FLOAT( jk ) + 0.5 234 gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) ) 235 gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) ) 236 e3w_0 (jk) = za0 + za1 * TANH( (zw-zkth) / zacr ) 237 e3t_0 (jk) = za0 + za1 * TANH( (zt-zkth) / zacr ) 238 END DO 239 ELSE 240 DO jk = 1, jpk 241 zw = FLOAT( jk ) 242 zt = FLOAT( jk ) + 0.5 243 ! Double tanh function 244 gdepw_0(jk) = ( zsur + za0 * zw + za1 * zacr * LOG ( COSH( (zw-zkth) / zacr ) ) & 245 & + za2 * zacr2* LOG ( COSH( (zw-zkth2)/zacr2 ) ) ) 246 gdept_0(jk) = ( zsur + za0 * zt + za1 * zacr * LOG ( COSH( (zt-zkth) / zacr ) ) & 247 & + za2 * zacr2* LOG ( COSH( (zt-zkth2)/zacr2 ) ) ) 248 e3w_0 (jk) = za0 + za1 * TANH( (zw-zkth) / zacr ) & 249 & + za2 * TANH( (zw-zkth2)/zacr2 ) 250 e3t_0 (jk) = za0 + za1 * TANH( (zt-zkth) / zacr ) & 251 & + za2 * TANH( (zt-zkth2)/zacr2 ) 252 END DO 253 ENDIF 230 254 gdepw_0(1) = 0.e0 ! force first w-level to be exactly at zero 231 255 ENDIF 232 256 233 257 !!gm BUG in s-coordinate this does not work! 234 ! deepest/shallowest W level Above/Bel low ~10m258 ! deepest/shallowest W level Above/Below ~10m 235 259 zrefdep = 10. - ( 0.1*MINVAL(e3w_0) ) ! ref. depth with tolerance (10% of minimum layer thickness) 236 nlb10 = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 ) ! shallowest W level Bel low ~10m237 nla10 = nlb10 - 1 ! deepest W level Above 260 nlb10 = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 ) ! shallowest W level Below ~10m 261 nla10 = nlb10 - 1 ! deepest W level Above ~10m 238 262 !!gm end bug 239 263 … … 746 770 INTEGER :: ji, jj, jk ! dummy loop indices 747 771 INTEGER :: ik, it ! temporary integers 772 INTEGER :: nlbelow ! temporary integer 748 773 LOGICAL :: ll_print ! Allow control print for debugging 749 774 REAL(wp) :: ze3tp , ze3wp ! Last ocean level thickness at T- and W-points … … 751 776 REAL(wp) :: zmax, zmin ! Maximum and minimum depth 752 777 REAL(wp) :: zdiff ! temporary scalar 778 REAL(wp) :: zrefdep ! temporary scalar 753 779 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprt ! 3D workspace 754 780 !!--------------------------------------------------------------------- … … 772 798 ! =================== 773 799 zmax = gdepw_0(jpk) + e3t_0(jpk) ! maximum depth (i.e. the last ocean level thickness <= 2*e3t_0(jpkm1) ) 774 zmin = gdepw_0(4) ! minimum depth = 3 levels 800 801 zrefdep = 25. 802 nlbelow = MINLOC( gdepw_0, mask = gdepw_0 > zrefdep, dim = 1 ) ! shallowest W level Below zrefdep 803 IF(lwp) write(numout,*) 'Minimum depth level selected: ', nlbelow 804 zmin = gdepw_0(nlbelow) ! minimum depth = nlbelow-1 levels 775 805 776 806 mbathy(:,:) = jpkm1 ! initialize mbathy to the maximum ocean level available -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_EEL_R2.h90
r2287 r2379 94 94 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 95 95 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 96 LOGICAL, PARAMETER :: & 97 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 98 REAL(wp), PARAMETER :: & 99 & ppa2 = pp_not_used , & !: Double tanh function parameters 100 & ppkth2 = pp_not_used , & !: 101 & ppacr2 = pp_not_used !: 96 102 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_EEL_R5.h90
r2287 r2379 94 94 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 95 95 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 96 LOGICAL, PARAMETER :: & 97 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 98 REAL(wp), PARAMETER :: & 99 & ppa2 = pp_not_used , & !: Double tanh function parameters 100 & ppkth2 = pp_not_used , & !: 101 & ppacr2 = pp_not_used !: 96 102 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_EEL_R6.h90
r2287 r2379 94 94 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 95 95 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 96 LOGICAL, PARAMETER :: & 97 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 98 REAL(wp), PARAMETER :: & 99 & ppa2 = pp_not_used , & !: Double tanh function parameters 100 & ppkth2 = pp_not_used , & !: 101 & ppacr2 = pp_not_used !: 96 102 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_GYRE.h90
r2287 r2379 98 98 & pphmax = pp_not_used !: (meters): maximum depth of the ocean 99 99 ! ! depth of the last "w" level 100 LOGICAL, PARAMETER :: & 101 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 102 REAL(wp), PARAMETER :: & 103 & ppa2 = pp_not_used , & !: Double tanh function parameters 104 & ppkth2 = pp_not_used , & !: 105 & ppacr2 = pp_not_used !: 100 106 101 107 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R025.h90
r2287 r2379 24 24 jpidta = 1442, & !: first horizontal dimension > or = to jpi 25 25 jpjdta = 1021, & !: second > or = to jpj 26 #if key_orca_r025==75 27 jpkdta = 75 , & !: number of levels > or = to jpk 28 #else 26 29 jpkdta = 46 , & !: number of levels > or = to jpk 30 #endif 27 31 ! total domain matrix size 28 32 jpiglo = jpidta, & !: first dimension of global domain --> i … … 68 72 !! Coefficients associated with the vertical coordinate system 69 73 74 #if key_orca_r025==75 70 75 REAL(wp), PARAMETER :: & 71 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 72 & ppa0 = pp_to_be_computed , & !: " " 73 & ppa1 = pp_to_be_computed , & !: " " 74 ! 75 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 76 ! !: layer number above which stretching will 77 ! !: be maximum. Usually of order jpk/2. 78 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 79 ! !: for the grid. The highest zacr, the smallest 80 ! !: the stretching. 81 76 & ppsur = -3958.951371276829_wp , & !: ORCA r025 coefficients 77 & ppa0 = 103.9530096000000_wp , & !: (75 levels case) 78 & ppa1 = 2.415951269000000_wp , & !: 79 & ppkth = 15.35101370000000_wp , & !: (non dimensional): gives the approximate 80 ! !: layer number above which stretching will 81 ! !: be maximum. Usually of order jpk/2. 82 & ppacr = 7.00000000000_wp !: (non dimensional): stretching factor 83 ! !: for the grid. The higher zacr, the smaller 84 ! !: the stretching. 82 85 !! 83 !! If both ppa0 ppa1 and ppsur are specified to 0, then86 !! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 84 87 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 85 88 !! 86 REAL(wp), PARAMETER :: & 87 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 88 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 89 REAL(wp), PARAMETER :: & 90 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 91 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 92 !! 93 LOGICAL, PARAMETER :: & 94 & ldbletanh = .TRUE. !: Use/do not use double tanf function for vertical coordinates 95 REAL(wp), PARAMETER :: & 96 & ppa2 = 100.7609285000000_wp , & !: Double tanh function parameters 97 & ppkth2= 48.02989372000000_wp , & !: 98 & ppacr2= 13.00000000000_wp !: 99 ! 100 #else 101 REAL(wp), PARAMETER :: & 102 & ppsur = pp_to_be_computed , & !: Computed in domzgr, set ppdzmin and pphmax below 103 & ppa0 = pp_to_be_computed , & !: " " 104 & ppa1 = pp_to_be_computed , & !: " " 105 ! 106 & ppkth = 23.563_wp , & !: (non dimensional): gives the approximate 107 ! !: layer number above which stretching will 108 ! !: be maximum. Usually of order jpk/2. 109 & ppacr = 9.00000000000_wp !: (non dimensional): stretching factor 110 ! !: for the grid. The highest zacr, the smallest 111 ! !: the stretching. 112 !! 113 !! If both ppa0 ppa1 and ppsur are specified to pp_to_be_computed, then 114 !! they are computed from ppdzmin, pphmax , ppkth, ppacr in dom_zgr 115 !! 116 REAL(wp), PARAMETER :: & 117 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 118 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 119 !! 120 LOGICAL, PARAMETER :: & 121 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 122 REAL(wp), PARAMETER :: & 123 & ppa2 = pp_not_used , & !: Double tanh function parameters 124 & ppkth2 = pp_not_used , & !: 125 & ppacr2 = pp_not_used !: 126 #endif 89 127 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R05.h90
r2287 r2379 131 131 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 132 132 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 133 LOGICAL, PARAMETER :: & 134 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 135 REAL(wp), PARAMETER :: & 136 & ppa2 = pp_not_used , & !: Double tanh function parameters 137 & ppkth2 = pp_not_used , & !: 138 & ppacr2 = pp_not_used !: 133 139 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R2.h90
r2287 r2379 158 158 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 159 159 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 160 LOGICAL, PARAMETER :: & 161 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 162 REAL(wp), PARAMETER :: & 163 & ppa2 = pp_not_used , & !: Double tanh function parameters 164 & ppkth2 = pp_not_used , & !: 165 & ppacr2 = pp_not_used !: 160 166 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_ORCA_R4.h90
r2287 r2379 87 87 & ppdzmin = pp_not_used , & !: (meters) vertical thickness of the top layer 88 88 & pphmax = pp_not_used !: (meters) Maximum depth of the ocean gdepw(jpk) 89 LOGICAL, PARAMETER :: & 90 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 91 REAL(wp), PARAMETER :: & 92 & ppa2 = pp_not_used , & !: Double tanh function parameters 93 & ppkth2 = pp_not_used , & !: 94 & ppacr2 = pp_not_used !: 89 95 !!--------------------------------------------------------------------- -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/par_POMME_R025.h90
r2287 r2379 97 97 & ppdzmin = 6._wp , & !: (meters) vertical thickness of the top layer 98 98 & pphmax = 5750._wp !: (meters) Maximum depth of the ocean gdepw(jpk) 99 LOGICAL, PARAMETER :: & 100 & ldbletanh = .FALSE. !: Use/do not use double tanf function for vertical coordinates 101 REAL(wp), PARAMETER :: & 102 & ppa2 = pp_not_used , & !: Double tanh function parameters 103 & ppkth2 = pp_not_used , & !: 104 & ppacr2 = pp_not_used !: 99 105 !!---------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.