Changeset 7698 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
- Timestamp:
- 2017-02-18T10:02:03+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso.F90
r7646 r7698 125 125 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 126 126 ! 127 akz (:,:,:) = 0._wp 128 ah_wslp2(:,:,:) = 0._wp 127 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 128 DO jk = 1, jpk 129 DO jj = 1, jpj 130 DO ji = 1, jpi 131 akz (ji,jj,jk) = 0._wp 132 ah_wslp2(ji,jj,jk) = 0._wp 133 END DO 134 END DO 135 END DO 129 136 ENDIF 130 137 ! … … 151 158 IF( kpass == 1 ) THEN !== first pass only ==! 152 159 ! 160 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zmsku, zmskv, zahu_w, zahv_w) 153 161 DO jk = 2, jpkm1 154 162 DO jj = 2, jpjm1 … … 172 180 ! 173 181 IF( ln_traldf_msc ) THEN ! stabilizing vertical diffusivity coefficient 182 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 174 183 DO jk = 2, jpkm1 175 184 DO jj = 2, jpjm1 … … 185 194 ! 186 195 IF( ln_traldf_blp ) THEN ! bilaplacian operator 196 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 187 197 DO jk = 2, jpkm1 188 198 DO jj = 1, jpjm1 … … 194 204 END DO 195 205 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator 206 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ze3w_2, zcoef0) 196 207 DO jk = 2, jpkm1 197 208 DO jj = 1, jpjm1 … … 206 217 ! 207 218 ELSE ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 208 akz(:,:,:) = ah_wslp2(:,:,:) 219 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 220 DO jk = 1, jpk 221 DO jj = 1, jpj 222 DO ji = 1, jpi 223 akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 224 END DO 225 END DO 226 END DO 209 227 ENDIF 210 228 ENDIF … … 218 236 !!---------------------------------------------------------------------- 219 237 !!gm : bug.... why (x,:,:)? (1,jpj,:) and (jpi,1,:) should be sufficient.... 220 zdit (1,:,:) = 0._wp ; zdit (jpi,:,:) = 0._wp 221 zdjt (1,:,:) = 0._wp ; zdjt (jpi,:,:) = 0._wp 238 !$OMP PARALLEL 239 !$OMP DO schedule(static) private(jk, jj) 240 DO jk = 1, jpk 241 DO jj = 1, jpj 242 zdit (1,jj,jk) = 0._wp ; zdit (jpi,jj,jk) = 0._wp 243 zdjt (1,jj,jk) = 0._wp ; zdjt (jpi,jj,jk) = 0._wp 244 END DO 245 END DO 222 246 !!end 223 247 224 248 ! Horizontal tracer gradient 249 !$OMP DO schedule(static) private(jk, jj, ji) 225 250 DO jk = 1, jpkm1 226 251 DO jj = 1, jpjm1 … … 231 256 END DO 232 257 END DO 258 !$OMP END PARALLEL 233 259 IF( ln_zps ) THEN ! botton and surface ocean correction of the horizontal gradient 260 !$OMP PARALLEL DO schedule(static) private(jj, ji) 234 261 DO jj = 1, jpjm1 ! bottom correction (partial bottom cell) 235 262 DO ji = 1, fs_jpim1 ! vector opt. … … 239 266 END DO 240 267 IF( ln_isfcav ) THEN ! first wet level beneath a cavity 268 !$OMP PARALLEL DO schedule(static) private(jj, ji) 241 269 DO jj = 1, jpjm1 242 270 DO ji = 1, fs_jpim1 ! vector opt. … … 252 280 !!---------------------------------------------------------------------- 253 281 ! 282 !$OMP PARALLEL 254 283 DO jk = 1, jpkm1 ! Horizontal slab 255 284 ! 256 285 ! !== Vertical tracer gradient 257 zdk1t(:,:) = ( ptb(:,:,jk,jn) - ptb(:,:,jk+1,jn) ) * wmask(:,:,jk+1) ! level jk+1 258 ! 259 IF( jk == 1 ) THEN ; zdkt(:,:) = zdk1t(:,:) ! surface: zdkt(jk=1)=zdkt(jk=2) 260 ELSE ; zdkt(:,:) = ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) * wmask(:,:,jk) 286 !$OMP DO schedule(static) private(jj, ji) 287 DO jj = 1 , jpj 288 DO ji = 1, jpi 289 zdk1t(ji,jj) = ( ptb(ji,jj,jk,jn) - ptb(ji,jj,jk+1,jn) ) * wmask(ji,jj,jk+1) ! level jk+1 290 END DO 291 END DO 292 ! 293 IF( jk == 1 ) THEN 294 !$OMP DO schedule(static) private(jj, ji) 295 DO jj = 1 , jpj 296 DO ji = 1, jpi 297 zdkt(ji,jj) = zdk1t(ji,jj) ! surface: zdkt(jk=1)=zdkt(jk=2) 298 END DO 299 END DO 300 ELSE 301 !$OMP DO schedule(static) private(jj, ji) 302 DO jj = 1 , jpj 303 DO ji = 1, jpi 304 zdkt(ji,jj) = ( ptb(ji,jj,jk-1,jn) - ptb(ji,jj,jk,jn) ) * wmask(ji,jj,jk) 305 END DO 306 END DO 261 307 ENDIF 308 !$OMP DO schedule(static) private(jj, ji, zmsku, zmskv, zabe1, zabe2, zcof1, zcof2) 262 309 DO jj = 1 , jpjm1 !== Horizontal fluxes 263 310 DO ji = 1, fs_jpim1 ! vector opt. … … 283 330 END DO 284 331 ! 332 !$OMP DO schedule(static) private(jj, ji) 285 333 DO jj = 2 , jpjm1 !== horizontal divergence and add to pta 286 334 DO ji = fs_2, fs_jpim1 ! vector opt. … … 296 344 !!---------------------------------------------------------------------- 297 345 ! 298 ztfw(1,:,:) = 0._wp ; ztfw(jpi,:,:) = 0._wp 346 !$OMP DO schedule(static) private(jk, jj) 347 DO jk = 1, jpk 348 DO jj = 1, jpj 349 ztfw(1,jj,jk) = 0._wp ; ztfw(jpi,jj,jk) = 0._wp 350 END DO 351 END DO 299 352 ! 300 353 ! Vertical fluxes 301 354 ! --------------- 302 355 ! ! Surface and bottom vertical fluxes set to zero 303 ztfw(:,:, 1 ) = 0._wp ; ztfw(:,:,jpk) = 0._wp 356 !$OMP DO schedule(static) private(jj, ji) 357 DO jj = 1, jpj 358 DO ji = 1, jpi 359 ztfw(ji,jj, 1 ) = 0._wp ; ztfw(ji,jj,jpk) = 0._wp 360 END DO 361 END DO 304 362 363 !$OMP DO schedule(static) private(jk, jj, ji, zmsku, zmskv, zahu_w, zahv_w, zcoef3, zcoef4) 305 364 DO jk = 2, jpkm1 ! interior (2=<jk=<jpk-1) 306 365 DO jj = 2, jpjm1 … … 327 386 END DO 328 387 END DO 388 !$OMP END PARALLEL 329 389 ! !== add the vertical 33 flux ==! 330 390 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 391 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 331 392 DO jk = 2, jpkm1 332 393 DO jj = 1, jpjm1 … … 342 403 SELECT CASE( kpass ) 343 404 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 405 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 344 406 DO jk = 2, jpkm1 345 407 DO jj = 1, jpjm1 … … 352 414 END DO 353 415 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on ptb and ptbb gradients, resp. 416 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 354 417 DO jk = 2, jpkm1 355 418 DO jj = 1, jpjm1 … … 364 427 ENDIF 365 428 ! 429 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 366 430 DO jk = 1, jpkm1 !== Divergence of vertical fluxes added to pta ==! 367 431 DO jj = 2, jpjm1
Note: See TracChangeset
for help on using the changeset viewer.