- Timestamp:
- 2016-10-18T15:32:04+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
r6748 r7037 96 96 IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE. 97 97 ! 98 IF( l_trd ) THEN99 CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz )100 !$OMP PARALLEL WORKSHARE101 ztrdx(:,:,:) = 0._wp ; ztrdy(:,:,:) = 0._wp ; ztrdz(:,:,:) = 0._wp102 !$OMP END PARALLEL WORKSHARE103 ENDIF104 !105 98 ! ! surface & bottom value : flux set to zero one for all 106 99 !$OMP PARALLEL WORKSHARE 107 100 zwz(:,:, 1 ) = 0._wp 108 zwx(:,:,jpk) = 0._wp ; zwy(:,:,jpk) = 0._wp ; zwz(:,:,jpk) = 0._wp 109 ! 101 zwx(:,:,jpk) = 0._wp 102 zwy(:,:,jpk) = 0._wp 103 zwz(:,:,jpk) = 0._wp 110 104 zwi(:,:,:) = 0._wp 111 105 !$OMP END PARALLEL WORKSHARE … … 115 109 ! !== upstream advection with initial mass fluxes & intermediate update ==! 116 110 ! !* 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) 111 !$OMP PARALLEL 112 !$OMP DO schedule(static) private(jk, jj, ji, zfp_vj, zfm_vj, zfp_ui,zfm_ui) 118 113 DO jk = 1, jpkm1 119 114 DO jj = 1, jpjm1 … … 129 124 END DO 130 125 END DO 126 !$OMP END DO NOWAIT 131 127 ! !* upstream tracer flux in the k direction *! 132 !$OMP PARALLELDO schedule(static) private(jk, jj, ji, zfp_wk, zfm_wk)128 !$OMP DO schedule(static) private(jk, jj, ji, zfp_wk, zfm_wk) 133 129 DO jk = 2, jpkm1 ! Interior value ( multiplied by wmask) 134 130 DO jj = 1, jpj … … 140 136 END DO 141 137 END DO 138 !$OMP END DO NOWAIT 139 !$OMP END PARALLEL 142 140 IF( ln_linssh ) THEN ! top ocean value (only in linear free surface as zwz has been w-masked) 143 141 IF( ln_isfcav ) THEN ! top of the ice-shelf cavities and at the ocean surface 142 !$OMP PARALLEL DO schedule(static) private(jj, ji) 144 143 DO jj = 1, jpj 145 144 DO ji = 1, jpi … … 148 147 END DO 149 148 ELSE ! no cavities: only at the ocean surface 149 !$OMP PARALLEL WORKSHARE 150 150 zwz(:,:,1) = pwn(:,:,1) * ptb(:,:,1,jn) 151 !$OMP END PARALLEL WORKSHARE 151 152 ENDIF 152 153 ENDIF … … 170 171 ! 171 172 IF( l_trd ) THEN ! trend diagnostics (contribution of upstream fluxes) 172 !$OMP PARALLEL WORKSHARE 173 ztrdx(:,:,:) = zwx(:,:,:) ; ztrdy(:,:,:) = zwy(:,:,:) ; ztrdz(:,:,:) = zwz(:,:,:) 174 !$OMP END PARALLEL WORKSHARE 173 CALL wrk_alloc( jpi, jpj, jpk, ztrdx, ztrdy, ztrdz ) 174 !$OMP PARALLEL 175 !$OMP WORKSHARE 176 ztrdx(:,:,:) = 0._wp 177 ztrdy(:,:,:) = 0._wp 178 ztrdz(:,:,:) = 0._wp 179 !$OMP END WORKSHARE 180 !$OMP WORKSHARE 181 ztrdx(:,:,:) = zwx(:,:,:) 182 ztrdy(:,:,:) = zwy(:,:,:) 183 ztrdz(:,:,:) = zwz(:,:,:) 184 !$OMP END WORKSHARE 185 !$OMP END PARALLEL 175 186 END IF 176 187 ! ! "Poleward" heat and salt transports (contribution of upstream fluxes) … … 196 207 ! 197 208 CASE( 4 ) !- 4th order centered 198 !$OMP PARALLEL WORKSHARE 209 !$OMP PARALLEL 210 !$OMP WORKSHARE 199 211 zltu(:,:,jpk) = 0._wp ! Bottom value : flux set to zero 200 212 zltv(:,:,jpk) = 0._wp 201 !$OMP END PARALLELWORKSHARE202 !$OMP PARALLELDO schedule(static) private(jk, jj, ji)213 !$OMP END WORKSHARE 214 !$OMP DO schedule(static) private(jk, jj, ji) 203 215 DO jk = 1, jpkm1 ! Laplacian 204 216 DO jj = 1, jpjm1 ! 1st derivative (gradient) … … 215 227 END DO 216 228 END DO 229 !$OMP END DO NOWAIT 230 !$OMP END PARALLEL 217 231 CALL lbc_lnk( zltu, 'T', 1. ) ; CALL lbc_lnk( zltv, 'T', 1. ) ! Lateral boundary cond. (unchanged sgn) 218 232 ! … … 231 245 ! 232 246 CASE( 41 ) !- 4th order centered ==>> !!gm coding attempt need to be tested 233 !$OMP PARALLEL WORKSHARE 247 !$OMP PARALLEL 248 !$OMP WORKSHARE 234 249 ztu(:,:,jpk) = 0._wp ! Bottom value : flux set to zero 235 250 ztv(:,:,jpk) = 0._wp 236 !$OMP END PARALLELWORKSHARE237 !$OMP PARALLELDO schedule(static) private(jk, jj, ji)251 !$OMP END WORKSHARE 252 !$OMP DO schedule(static) private(jk, jj, ji) 238 253 DO jk = 1, jpkm1 ! 1st derivative (gradient) 239 254 DO jj = 1, jpjm1 … … 244 259 END DO 245 260 END DO 261 !$OMP END DO NOWAIT 262 !$OMP END PARALLEL 246 263 CALL lbc_lnk( ztu, 'U', -1. ) ; CALL lbc_lnk( ztv, 'V', -1. ) ! Lateral boundary cond. (unchanged sgn) 247 264 ! … … 290 307 END SELECT 291 308 IF( ln_linssh ) THEN ! top ocean value: high order = upstream ==>> zwz=0 309 !$OMP PARALLEL WORKSHARE 292 310 zwz(:,:,1) = 0._wp ! only ocean surface as interior zwz values have been w-masked 311 !$OMP END PARALLEL WORKSHARE 293 312 ENDIF 294 313 ! … … 649 668 zbig = 1.e+40_wp 650 669 zrtrn = 1.e-15_wp 651 !$OMP PARALLEL WORKSHARE652 zbetup(:,:,:) = 0._wp ; zbetdo(:,:,:) = 0._wp653 !$OMP END PARALLEL WORKSHARE654 670 655 671 ! Search local extrema … … 661 677 & paft * tmask + zbig * ( 1._wp - tmask ) ) 662 678 663 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji, ikm1, zup, zdo, zpos, zneg, zbt) 679 !$OMP PARALLEL 680 !$OMP WORKSHARE 681 zbetup(:,:,:) = 0._wp 682 zbetdo(:,:,:) = 0._wp 683 !$OMP END WORKSHARE 684 !$OMP DO schedule(static) private(jk, jj, ji, ikm1, zup, zdo, zpos, zneg, zbt) 664 685 DO jk = 1, jpkm1 665 686 ikm1 = MAX(jk-1,1) … … 696 717 END DO 697 718 END DO 719 !$OMP END PARALLEL 698 720 CALL lbc_lnk( zbetup, 'T', 1. ) ; CALL lbc_lnk( zbetdo, 'T', 1. ) ! lateral boundary cond. (unchanged sign) 699 721
Note: See TracChangeset
for help on using the changeset viewer.