- Timestamp:
- 2014-02-04T13:12:04+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r3837 r4406 63 63 USE oce , ONLY: zwd => ta , zws => sa ! (ta,sa) used as 3D workspace 64 64 USE wrk_nemo, ONLY: zwi => wrk_3d_3 ! 3D workspace 65 USE arpdebugging, ONLY: dump_array66 65 !! DCSE_NEMO: need additional directives for renamed module variables 67 66 !FTRANS zwd :I :I :z … … 90 89 z1_p2dt = 1._wp / p2dt ! inverse of the timestep 91 90 92 !CALL dump_array(kt, 'utau_pre_zdf',utau(:,:),withHalos=.TRUE.)93 !CALL dump_array(kt, 'utaub_pre_zdf',utau_b(:,:),withHalos=.TRUE.)94 91 95 92 ! 1. Vertical diffusion on u … … 105 102 DO jj = 2, jpjm1 106 103 DO ji = 2, jpim1 107 DO jk = 1, jpk m1104 DO jk = 1, jpkfm1 108 105 zcoef = - p2dt / fse3u(ji,jj,jk) 109 106 zzwi = zcoef * avmu (ji,jj,jk ) / fse3uw(ji,jj,jk ) … … 119 116 END DO 120 117 #else 121 DO jk = 1, jpk m1 ! Matrix118 DO jk = 1, jpkfm1 ! Matrix 122 119 DO jj = 2, jpjm1 123 120 DO ji = fs_2, fs_jpim1 ! vector opt. … … 160 157 ua(ji,jj,1) = ub(ji,jj,1) + p2dt * ( ua(ji,jj,1) + 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 161 158 & / ( fse3u(ji,jj,1) * rau0 ) ) 162 DO jk = 2, jpk m1159 DO jk = 2, jpkfm1 163 160 zzwibd = zwi(ji,jj,jk) / zwd(ji,jj,jk-1) 164 161 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) == … … 169 166 END DO 170 167 !== third recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk == 171 ua(ji,jj,jpk m1) = ua(ji,jj,jpkm1) / zwd(ji,jj,jpkm1)172 DO jk = jpk -2, 1, -1168 ua(ji,jj,jpkfm1) = ua(ji,jj,jpkfm1) / zwd(ji,jj,jpkfm1) 169 DO jk = jpkf-2, 1, -1 173 170 ua(ji,jj,jk) = ( ua(ji,jj,jk) - zws(ji,jj,jk) * ua(ji,jj,jk+1) ) / zwd(ji,jj,jk) 174 171 END DO 175 172 ! Normalization to obtain the general momentum trend ua 176 DO jk = 1, jpk m1173 DO jk = 1, jpkfm1 177 174 ua(ji,jj,jk) = ( ua(ji,jj,jk) - ub(ji,jj,jk) ) * z1_p2dt 178 175 END DO … … 180 177 END DO 181 178 #else 182 DO jk = 2, jpk m1 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) ==179 DO jk = 2, jpkfm1 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) == 183 180 DO jj = 2, jpjm1 184 181 DO ji = fs_2, fs_jpim1 ! vector opt. … … 194 191 END DO 195 192 END DO 196 DO jk = 2, jpk m1193 DO jk = 2, jpkfm1 197 194 DO jj = 2, jpjm1 198 195 DO ji = fs_2, fs_jpim1 ! vector opt. … … 205 202 DO jj = 2, jpjm1 !== third recurrence : SOLk = ( Lk - Uk * Ek+1 ) / Dk == 206 203 DO ji = fs_2, fs_jpim1 ! vector opt. 207 ua(ji,jj,jpk m1) = ua(ji,jj,jpkm1) / zwd(ji,jj,jpkm1)208 END DO 209 END DO 210 DO jk = jpk -2, 1, -1204 ua(ji,jj,jpkfm1) = ua(ji,jj,jpkfm1) / zwd(ji,jj,jpkfm1) 205 END DO 206 END DO 207 DO jk = jpkf-2, 1, -1 211 208 DO jj = 2, jpjm1 212 209 DO ji = fs_2, fs_jpim1 ! vector opt. … … 216 213 END DO 217 214 ! Normalization to obtain the general momentum trend ua 218 DO jk = 1, jpk m1215 DO jk = 1, jpkfm1 219 216 DO jj = 2, jpjm1 220 217 DO ji = fs_2, fs_jpim1 ! vector opt. … … 237 234 DO jj = 2, jpjm1 238 235 DO ji = 2, jpim1 239 DO jk = 1, jpk m1 ! Matrix236 DO jk = 1, jpkfm1 ! Matrix 240 237 zcoef = -p2dt / fse3v(ji,jj,jk) 241 238 zzwi = zcoef * avmv (ji,jj,jk ) / fse3vw(ji,jj,jk ) … … 251 248 END DO 252 249 #else 253 DO jk = 1, jpk m1 ! Matrix250 DO jk = 1, jpkfm1 ! Matrix 254 251 DO jj = 2, jpjm1 255 252 DO ji = fs_2, fs_jpim1 ! vector opt. … … 292 289 va(ji,jj,1) = vb(ji,jj,1) + p2dt * ( va(ji,jj,1) + 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 293 290 & / ( fse3v(ji,jj,1) * rau0 ) ) 294 DO jk = 2, jpk m1291 DO jk = 2, jpkfm1 295 292 zzwibd = zwi(ji,jj,jk) / zwd(ji,jj,jk-1) 296 293 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) == … … 301 298 END DO 302 299 !== third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk == 303 va(ji,jj,jpk m1) = va(ji,jj,jpkm1) / zwd(ji,jj,jpkm1)304 DO jk = jpk -2, 1, -1300 va(ji,jj,jpkfm1) = va(ji,jj,jpkfm1) / zwd(ji,jj,jpkfm1) 301 DO jk = jpkf-2, 1, -1 305 302 va(ji,jj,jk) = ( va(ji,jj,jk) - zws(ji,jj,jk) * va(ji,jj,jk+1) ) / zwd(ji,jj,jk) 306 303 END DO 307 304 ! Normalization to obtain the general momentum trend va 308 DO jk = 1, jpk m1305 DO jk = 1, jpkfm1 309 306 va(ji,jj,jk) = ( va(ji,jj,jk) - vb(ji,jj,jk) ) * z1_p2dt 310 307 END DO … … 312 309 END DO 313 310 #else 314 DO jk = 2, jpk m1 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) ==311 DO jk = 2, jpkfm1 !== First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 (increasing k) == 315 312 DO jj = 2, jpjm1 316 313 DO ji = fs_2, fs_jpim1 ! vector opt. … … 326 323 END DO 327 324 END DO 328 DO jk = 2, jpk m1325 DO jk = 2, jpkfm1 329 326 DO jj = 2, jpjm1 330 327 DO ji = fs_2, fs_jpim1 ! vector opt. … … 337 334 DO jj = 2, jpjm1 !== third recurrence : SOLk = ( Lk - Uk * SOLk+1 ) / Dk == 338 335 DO ji = fs_2, fs_jpim1 ! vector opt. 339 va(ji,jj,jpk m1) = va(ji,jj,jpkm1) / zwd(ji,jj,jpkm1)340 END DO 341 END DO 342 DO jk = jpk -2, 1, -1336 va(ji,jj,jpkfm1) = va(ji,jj,jpkfm1) / zwd(ji,jj,jpkfm1) 337 END DO 338 END DO 339 DO jk = jpkf-2, 1, -1 343 340 DO jj = 2, jpjm1 344 341 DO ji = fs_2, fs_jpim1 ! vector opt. … … 349 346 350 347 ! Normalization to obtain the general momentum trend va 351 DO jk = 1, jpk m1348 DO jk = 1, jpkfm1 352 349 DO jj = 2, jpjm1 353 350 DO ji = fs_2, fs_jpim1 ! vector opt.
Note: See TracChangeset
for help on using the changeset viewer.