- Timestamp:
- 2016-06-28T11:53:56+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_fct.F90
r6140 r6748 98 98 IF( l_trd ) THEN 99 99 CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 100 !$OMP PARALLEL WORKSHARE 100 101 ztrdx(:,:,:) = 0._wp ; ztrdy(:,:,:) = 0._wp ; ztrdz(:,:,:) = 0._wp 102 !$OMP END PARALLEL WORKSHARE 101 103 ENDIF 102 104 ! 103 105 ! ! surface & bottom value : flux set to zero one for all 106 !$OMP PARALLEL WORKSHARE 104 107 zwz(:,:, 1 ) = 0._wp 105 108 zwx(:,:,jpk) = 0._wp ; zwy(:,:,jpk) = 0._wp ; zwz(:,:,jpk) = 0._wp 106 109 ! 107 110 zwi(:,:,:) = 0._wp 111 !$OMP END PARALLEL WORKSHARE 108 112 ! 109 113 DO jn = 1, kjpt !== loop over the tracers ==! … … 111 115 ! !== upstream advection with initial mass fluxes & intermediate update ==! 112 116 ! !* upstream tracer flux in the i and j direction 117 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zfp_vj, zfm_vj, zfp_ui,zfm_ui) 113 118 DO jk = 1, jpkm1 114 119 DO jj = 1, jpjm1 … … 125 130 END DO 126 131 ! !* upstream tracer flux in the k direction *! 132 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zfp_wk, zfm_wk) 127 133 DO jk = 2, jpkm1 ! Interior value ( multiplied by wmask) 128 134 DO jj = 1, jpj … … 146 152 ENDIF 147 153 ! 154 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ztra) 148 155 DO jk = 1, jpkm1 !* trend and after field with monotonic scheme 149 156 DO jj = 2, jpjm1 … … 163 170 ! 164 171 IF( l_trd ) THEN ! trend diagnostics (contribution of upstream fluxes) 172 !$OMP PARALLEL WORKSHARE 165 173 ztrdx(:,:,:) = zwx(:,:,:) ; ztrdy(:,:,:) = zwy(:,:,:) ; ztrdz(:,:,:) = zwz(:,:,:) 174 !$OMP END PARALLEL WORKSHARE 166 175 END IF 167 176 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) … … 176 185 ! 177 186 CASE( 2 ) !- 2nd order centered 187 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 178 188 DO jk = 1, jpkm1 179 189 DO jj = 1, jpjm1 … … 186 196 ! 187 197 CASE( 4 ) !- 4th order centered 198 !$OMP PARALLEL WORKSHARE 188 199 zltu(:,:,jpk) = 0._wp ! Bottom value : flux set to zero 189 200 zltv(:,:,jpk) = 0._wp 201 !$OMP END PARALLEL WORKSHARE 202 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 190 203 DO jk = 1, jpkm1 ! Laplacian 191 204 DO jj = 1, jpjm1 ! 1st derivative (gradient) … … 204 217 CALL lbc_lnk( zltu, 'T', 1. ) ; CALL lbc_lnk( zltv, 'T', 1. ) ! Lateral boundary cond. (unchanged sgn) 205 218 ! 219 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zC2t_u, zC2t_v) 206 220 DO jk = 1, jpkm1 ! Horizontal advective fluxes 207 221 DO jj = 1, jpjm1 … … 217 231 ! 218 232 CASE( 41 ) !- 4th order centered ==>> !!gm coding attempt need to be tested 233 !$OMP PARALLEL WORKSHARE 219 234 ztu(:,:,jpk) = 0._wp ! Bottom value : flux set to zero 220 235 ztv(:,:,jpk) = 0._wp 236 !$OMP END PARALLEL WORKSHARE 237 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 221 238 DO jk = 1, jpkm1 ! 1st derivative (gradient) 222 239 DO jj = 1, jpjm1 … … 229 246 CALL lbc_lnk( ztu, 'U', -1. ) ; CALL lbc_lnk( ztv, 'V', -1. ) ! Lateral boundary cond. (unchanged sgn) 230 247 ! 248 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, zC2t_u, zC2t_v, zC4t_u, zC4t_v) 231 249 DO jk = 1, jpkm1 ! Horizontal advective fluxes 232 250 DO jj = 2, jpjm1 … … 249 267 ! 250 268 CASE( 2 ) !- 2nd order centered 269 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 251 270 DO jk = 2, jpkm1 252 271 DO jj = 2, jpjm1 … … 260 279 CASE( 4 ) !- 4th order COMPACT 261 280 CALL interp_4th_cpt( ptn(:,:,:,jn) , ztw ) ! zwt = COMPACT interpolation of T at w-point 281 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 262 282 DO jk = 2, jpkm1 263 283 DO jj = 2, jpjm1 … … 282 302 ! !== final trend with corrected fluxes ==! 283 303 ! 304 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 284 305 DO jk = 1, jpkm1 285 306 DO jj = 2, jpjm1 … … 294 315 ! 295 316 IF( l_trd ) THEN ! trend diagnostics (contribution of upstream fluxes) 317 !$OMP PARALLEL WORKSHARE 296 318 ztrdx(:,:,:) = ztrdx(:,:,:) + zwx(:,:,:) ! <<< Add to previously computed 297 319 ztrdy(:,:,:) = ztrdy(:,:,:) + zwy(:,:,:) ! <<< Add to previously computed 298 320 ztrdz(:,:,:) = ztrdz(:,:,:) + zwz(:,:,:) ! <<< Add to previously computed 321 !$OMP END PARALLEL WORKSHARE 299 322 ! 300 323 CALL trd_tra( kt, cdtype, jn, jptra_xad, ztrdx, pun, ptn(:,:,:,jn) ) … … 626 649 zbig = 1.e+40_wp 627 650 zrtrn = 1.e-15_wp 651 !$OMP PARALLEL WORKSHARE 628 652 zbetup(:,:,:) = 0._wp ; zbetdo(:,:,:) = 0._wp 653 !$OMP END PARALLEL WORKSHARE 629 654 630 655 ! Search local extrema … … 636 661 & paft * tmask + zbig * ( 1._wp - tmask ) ) 637 662 663 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ikm1, zup, zdo, zpos, zneg, zbt) 638 664 DO jk = 1, jpkm1 639 665 ikm1 = MAX(jk-1,1) … … 674 700 ! 3. monotonic flux in the i & j direction (paa & pbb) 675 701 ! ---------------------------------------- 702 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, za, zb, zc, zav, zbv, zcv, zau, zbu, zcu) 676 703 DO jk = 1, jpkm1 677 704 DO jj = 2, jpjm1
Note: See TracChangeset
for help on using the changeset viewer.