- Timestamp:
- 2017-01-04T17:47:47+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r7513 r7525 132 132 END DO 133 133 END DO 134 !$OMP DO schedule(static) private(jk )134 !$OMP DO schedule(static) private(jk,jj,ji) 135 135 DO jk = 1, jpkm1 136 ua(:,:,jk) = ( ua(:,:,jk) - zue(:,:) * r1_hu_a(:,:) + ua_b(:,:) ) * umask(:,:,jk) 137 va(:,:,jk) = ( va(:,:,jk) - zve(:,:) * r1_hv_a(:,:) + va_b(:,:) ) * vmask(:,:,jk) 136 DO jj = 1, jpj 137 DO ji = 1, jpi 138 ua(ji,jj,jk) = ( ua(ji,jj,jk) - zue(ji,jj) * r1_hu_a(ji,jj) + ua_b(ji,jj) ) * umask(ji,jj,jk) 139 va(ji,jj,jk) = ( va(ji,jj,jk) - zve(ji,jj) * r1_hv_a(ji,jj) + va_b(ji,jj) ) * vmask(ji,jj,jk) 140 END DO 141 END DO 138 142 END DO 139 143 !$OMP END DO NOWAIT … … 145 149 ! In the forward case, this is done below after asselin filtering 146 150 ! so that asselin contribution is removed at the same time 147 !$OMP PARALLEL DO schedule(static) private(jk )151 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 148 152 DO jk = 1, jpkm1 149 un(:,:,jk) = ( un(:,:,jk) - un_adv(:,:) + un_b(:,:) )*umask(:,:,jk) 150 vn(:,:,jk) = ( vn(:,:,jk) - vn_adv(:,:) + vn_b(:,:) )*vmask(:,:,jk) 153 DO jj = 1, jpj 154 DO ji = 1, jpi 155 un(ji,jj,jk) = ( un(ji,jj,jk) - un_adv(ji,jj) + un_b(ji,jj) )*umask(ji,jj,jk) 156 vn(ji,jj,jk) = ( vn(ji,jj,jk) - vn_adv(ji,jj) + vn_b(ji,jj) )*vmask(ji,jj,jk) 157 END DO 158 END DO 151 159 END DO 152 160 ENDIF … … 198 206 zua(ji,jj,jk) = un(ji,jj,jk) ! save the now velocity before the asselin filter 199 207 zva(ji,jj,jk) = vn(ji,jj,jk) ! (caution: there will be a shift by 1 timestep in the 200 END DO201 END DO202 END DO203 ! ! computation of the asselin filter trends)208 ! computation of the asselin filter trends) 209 END DO 210 END DO 211 END DO 204 212 ENDIF 205 213 … … 208 216 IF( neuler == 0 .AND. kt == nit000 ) THEN !* Euler at first time-step: only swap 209 217 !$OMP PARALLEL 210 !$OMP DO schedule(static) private(jk )218 !$OMP DO schedule(static) private(jk,jj,ji) 211 219 DO jk = 1, jpkm1 212 un(:,:,jk) = ua(:,:,jk) ! un <-- ua 213 vn(:,:,jk) = va(:,:,jk) 220 DO jj = 1, jpj 221 DO ji = 1, jpi 222 un(ji,jj,jk) = ua(ji,jj,jk) ! un <-- ua 223 vn(ji,jj,jk) = va(ji,jj,jk) 224 END DO 225 END DO 214 226 END DO 215 227 !$OMP END DO NOWAIT 216 228 IF(.NOT.ln_linssh ) THEN 217 !$OMP DO schedule(static) private(jk )229 !$OMP DO schedule(static) private(jk,jj,ji) 218 230 DO jk = 1, jpkm1 219 e3t_b(:,:,jk) = e3t_n(:,:,jk) 220 e3u_b(:,:,jk) = e3u_n(:,:,jk) 221 e3v_b(:,:,jk) = e3v_n(:,:,jk) 231 DO jj = 1, jpj 232 DO ji = 1, jpi 233 e3t_b(ji,jj,jk) = e3t_n(ji,jj,jk) 234 e3u_b(ji,jj,jk) = e3u_n(ji,jj,jk) 235 e3v_b(ji,jj,jk) = e3v_n(ji,jj,jk) 236 END DO 237 END DO 222 238 END DO 223 239 !$OMP END DO NOWAIT … … 256 272 END DO 257 273 ELSE 258 !$OMP PARALLEL DO schedule(static) private(jk )274 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 259 275 DO jk = 1, jpkm1 260 e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 276 DO jj = 1, jpj 277 DO ji = 1, jpi 278 e3t_b(ji,jj,jk) = e3t_n(ji,jj,jk) + atfp * ( e3t_b(ji,jj,jk) - 2._wp * e3t_n(ji,jj,jk) + e3t_a(ji,jj,jk) ) 279 END DO 280 END DO 261 281 END DO 262 282 ! Add volume filter correction: compatibility with tracer advection scheme … … 365 385 END DO 366 386 END DO 367 !$OMP DO schedule(static) private(jk )387 !$OMP DO schedule(static) private(jk,jj,ji) 368 388 DO jk = 1, jpkm1 369 ub(:,:,jk) = ub(:,:,jk) - (zue(:,:) * r1_hu_n(:,:) - un_b(:,:)) * umask(:,:,jk) 370 vb(:,:,jk) = vb(:,:,jk) - (zve(:,:) * r1_hv_n(:,:) - vn_b(:,:)) * vmask(:,:,jk) 389 DO jj = 1, jpj 390 DO ji = 1, jpi 391 ub(ji,jj,jk) = ub(ji,jj,jk) - (zue(ji,jj) * r1_hu_n(ji,jj) - un_b(ji,jj)) * umask(ji,jj,jk) 392 vb(ji,jj,jk) = vb(ji,jj,jk) - (zve(ji,jj) * r1_hv_n(ji,jj) - vn_b(ji,jj)) * vmask(ji,jj,jk) 393 END DO 394 END DO 371 395 END DO 372 396 !$OMP END DO NOWAIT … … 446 470 ENDIF 447 471 IF( l_trddyn ) THEN ! 3D output: asselin filter trends on momentum 448 !$OMP DO schedule(static) private(jk, jj, ji)472 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 449 473 DO jk = 1, jpkm1 450 474 DO jj = 1, jpj
Note: See TracChangeset
for help on using the changeset viewer.