- Timestamp:
- 2016-12-19T13:15:59+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r7037 r7508 89 89 ! ----------------------------------------------- 90 90 !$OMP PARALLEL 91 !$OMP WORKSHARE 92 ze1(:,:,:) = 0._wp 93 ze2(:,:,:) = 0._wp 94 ze3(:,:,:) = 0._wp 95 !$OMP END WORKSHARE NOWAIT 91 !$OMP DO schedule(static) private(jk,jj,ji) 92 DO jk = 1, jpk 93 DO jj = 1, jpj 94 DO ji = 1, jpi 95 ze1(ji,jj,jk) = 0._wp 96 ze2(ji,jj,jk) = 0._wp 97 ze3(ji,jj,jk) = 0._wp 98 END DO 99 END DO 100 END DO 101 !$OMP END DO NOWAIT 96 102 ! !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 97 103 !$OMP DO schedule(static) private(jk,jj,ji,zchl,irgb) … … 115 121 IF( l_trcdm2dc ) THEN ! diurnal cycle 116 122 ! 1% of qsr to compute euphotic layer 117 !$OMP PARALLEL WORKSHARE 118 zqsr100(:,:) = 0.01 * qsr_mean(:,:) ! daily mean qsr 119 !$OMP END PARALLEL WORKSHARE 123 !$OMP PARALLEL DO schedule(static) private(jj,ji) 124 DO jj = 1, jpj 125 DO ji = 1, jpi 126 zqsr100(ji,jj) = 0.01 * qsr_mean(ji,jj) ! daily mean qsr 127 END DO 128 END DO 120 129 ! 121 130 CALL p4z_opt_par( kt, qsr_mean, ze1, ze2, ze3 ) … … 137 146 ELSE 138 147 ! 1% of qsr to compute euphotic layer 139 !$OMP PARALLEL WORKSHARE 140 zqsr100(:,:) = 0.01 * qsr(:,:) 141 !$OMP END PARALLEL WORKSHARE 148 !$OMP PARALLEL DO schedule(static) private(jj,ji) 149 DO jj = 1, jpj 150 DO ji = 1, jpi 151 zqsr100(ji,jj) = 0.01 * qsr(ji,jj) 152 END DO 153 END DO 142 154 ! 143 155 CALL p4z_opt_par( kt, qsr, ze1, ze2, ze3 ) … … 150 162 ediat(:,:,jk) = 1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 151 163 END DO 152 !$OMP WORKSHARE 153 etot_ndcy(:,:,:) = etot(:,:,:) 154 !$OMP END WORKSHARE NOWAIT 155 !$OMP END PARALLEL 156 ENDIF 157 164 !$OMP DO schedule(static) private(jk,jj,ji) 165 DO jk = 1, jpk 166 DO jj = 1, jpj 167 DO ji = 1, jpi 168 etot_ndcy(ji,jj,jk) = etot(ji,jj,jk) 169 END DO 170 END DO 171 END DO 172 !$OMP END PARALLEL 173 ENDIF 158 174 159 175 IF( ln_qsr_bio ) THEN !* heat flux accros w-level (used in the dynamics) … … 162 178 ! 163 179 !$OMP PARALLEL 164 !$OMP WORKSHARE 165 etot3(:,:,1) = qsr(:,:) * tmask(:,:,1) 166 !$OMP END WORKSHARE 180 !$OMP DO schedule(static) private(jj,ji) 181 DO jj = 1, jpj 182 DO ji = 1, jpi 183 etot3(ji,jj,1) = qsr(ji,jj) * tmask(ji,jj,1) 184 END DO 185 END DO 167 186 !$OMP DO schedule(static) private(jk) 168 187 DO jk = 2, nksrp + 1 169 188 etot3(:,:,jk) = ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 170 189 END DO 171 !$OMP END DO NOWAIT172 190 !$OMP END PARALLEL 173 191 ! ! ------------------------ … … 175 193 ! !* Euphotic depth and level 176 194 !$OMP PARALLEL 177 !$OMP WORKSHARE 178 neln(:,:) = 1 ! ------------------------ 179 heup(:,:) = 300. 180 !$OMP END WORKSHARE 195 !$OMP DO schedule(static) private(jj,ji) 196 DO jj = 1, jpj 197 DO ji = 1, jpi 198 neln(ji,jj) = 1 ! ------------------------ 199 heup(ji,jj) = 300. 200 END DO 201 END DO 181 202 182 203 DO jk = 2, nksrp … … 193 214 END DO 194 215 ! 195 !$OMP PARALLELDO schedule(static) private(jj,ji)216 !$OMP DO schedule(static) private(jj,ji) 196 217 DO jj = 1, jpj 197 218 DO ji = 1, jpi … … 200 221 END DO 201 222 ! !* mean light over the mixed layer 202 !$OMP WORKSHARE 203 zdepmoy(:,:) = 0.e0 ! ------------------------------- 204 zetmp1 (:,:) = 0.e0 205 zetmp2 (:,:) = 0.e0 206 zetmp3 (:,:) = 0.e0 207 zetmp4 (:,:) = 0.e0 208 !$OMP END WORKSHARE 223 !$OMP DO schedule(static) private(jj,ji) 224 DO jj = 1, jpj 225 DO ji = 1, jpi 226 zdepmoy(ji,jj) = 0.e0 ! ------------------------------- 227 zetmp1 (ji,jj) = 0.e0 228 zetmp2 (ji,jj) = 0.e0 229 zetmp3 (ji,jj) = 0.e0 230 zetmp4 (ji,jj) = 0.e0 231 END DO 232 END DO 209 233 210 234 DO jk = 1, nksrp … … 224 248 END DO 225 249 ! 226 !$OMP WORKSHARE 227 emoy(:,:,:) = etot(:,:,:) ! remineralisation 228 zpar(:,:,:) = etot_ndcy(:,:,:) ! diagnostic : PAR with no diurnal cycle 229 !$OMP END WORKSHARE 250 !$OMP DO schedule(static) private(jk,jj,ji) 251 DO jk = 1, jpk 252 DO jj = 1, jpj 253 DO ji = 1, jpi 254 emoy(ji,jj,jk) = etot(ji,jj,jk) ! remineralisation 255 zpar(ji,jj,jk) = etot_ndcy(ji,jj,jk) ! diagnostic : PAR with no diurnal cycle 256 END DO 257 END DO 258 END DO 230 259 ! 231 260 !$OMP DO schedule(static) private(jk,jj,ji,z1_dep) … … 254 283 ELSE 255 284 IF( ln_diatrc ) THEN ! save output diagnostics 256 !$OMP PARALLEL WORKSHARE 257 trc2d(:,:, jp_pcs0_2d + 10) = heup(:,: ) * tmask(:,:,1) 258 trc3d(:,:,:,jp_pcs0_3d + 3) = etot(:,:,:) * tmask(:,:,:) 259 !$OMP END PARALLEL WORKSHARE 285 !$OMP PARALLEL 286 !$OMP DO schedule(static) private(jj,ji) 287 DO jj = 1, jpj 288 DO ji = 1, jpi 289 trc2d(ji,jj, jp_pcs0_2d + 10) = heup(ji,jj ) * tmask(ji,jj,1) 290 END DO 291 END DO 292 !$OMP END DO NOWAIT 293 !$OMP DO schedule(static) private(jk,jj,ji) 294 DO jk = 1, jpk 295 DO jj = 1, jpj 296 DO ji = 1, jpi 297 trc3d(ji,jj,jk,jp_pcs0_3d + 3) = etot(ji,jj,jk) * tmask(ji,jj,jk) 298 END DO 299 END DO 300 END DO 301 !$OMP END PARALLEL 260 302 ENDIF 261 303 ENDIF … … 288 330 ! Real shortwave 289 331 IF( ln_varpar ) THEN 290 !$OMP PARALLEL WORKSHARE 291 zqsr(:,:) = par_varsw(:,:) * pqsr(:,:) 292 !$OMP END PARALLEL WORKSHARE 332 !$OMP PARALLEL DO schedule(static) private(jj,ji) 333 DO jj = 1, jpj 334 DO ji = 1, jpi 335 zqsr(ji,jj) = par_varsw(ji,jj) * pqsr(ji,jj) 336 END DO 337 END DO 293 338 ELSE 294 !$OMP PARALLEL WORKSHARE 295 zqsr(:,:) = xparsw * pqsr(:,:) 296 !$OMP END PARALLEL WORKSHARE 339 !$OMP PARALLEL DO schedule(static) private(jj,ji) 340 DO jj = 1, jpj 341 DO ji = 1, jpi 342 zqsr(ji,jj) = xparsw * pqsr(ji,jj) 343 END DO 344 END DO 297 345 ENDIF 298 346 ! … … 300 348 ! 301 349 !$OMP PARALLEL 302 !$OMP WORKSHARE 303 pe0(:,:,1) = pqsr(:,:) - 3. * zqsr(:,:) ! ( 1 - 3 * alpha ) * q 304 pe1(:,:,1) = zqsr(:,:) 305 pe2(:,:,1) = zqsr(:,:) 306 pe3(:,:,1) = zqsr(:,:) 307 !$OMP END WORKSHARE 350 !$OMP DO schedule(static) private(jj,ji) 351 DO jj = 1, jpj 352 DO ji = 1, jpi 353 pe0(ji,jj,1) = pqsr(ji,jj) - 3. * zqsr(ji,jj) ! ( 1 - 3 * alpha ) * q 354 pe1(ji,jj,1) = zqsr(ji,jj) 355 pe2(ji,jj,1) = zqsr(ji,jj) 356 pe3(ji,jj,1) = zqsr(ji,jj) 357 END DO 358 END DO 308 359 ! 309 360 DO jk = 2, nksrp + 1 … … 379 430 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_par > 1 ) ) THEN 380 431 CALL fld_read( kt, 1, sf_par ) 381 !$OMP PARALLEL WORKSHARE 382 par_varsw(:,:) = ( sf_par(1)%fnow(:,:,1) ) / 3.0 383 !$OMP END PARALLEL WORKSHARE 432 !$OMP PARALLEL DO schedule(static) private(jj,ji) 433 DO jj = 1, jpj 434 DO ji = 1, jpi 435 par_varsw(ji,jj) = ( sf_par(1)%fnow(ji,jj,1) ) / 3.0 436 END DO 437 END DO 384 438 ENDIF 385 439 ENDIF … … 402 456 INTEGER :: ierr 403 457 INTEGER :: ios ! Local integer output status for namelist read 458 INTEGER :: ji, jj, jk ! dummy loop indices 404 459 REAL(wp), DIMENSION(nbtimes) :: zsteps ! times records 405 460 ! … … 457 512 IF(lwp) WRITE(numout,*) ' level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 458 513 ! 459 !$OMP PARALLEL WORKSHARE 460 ekr (:,:,:) = 0._wp 461 ekb (:,:,:) = 0._wp 462 ekg (:,:,:) = 0._wp 463 etot (:,:,:) = 0._wp 464 etot_ndcy(:,:,:) = 0._wp 465 enano (:,:,:) = 0._wp 466 ediat (:,:,:) = 0._wp 467 !$OMP END PARALLEL WORKSHARE 514 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 515 DO jk = 1, jpk 516 DO jj = 1, jpj 517 DO ji = 1, jpi 518 ekr (ji,jj,jk) = 0._wp 519 ekb (ji,jj,jk) = 0._wp 520 ekg (ji,jj,jk) = 0._wp 521 etot (ji,jj,jk) = 0._wp 522 etot_ndcy(ji,jj,jk) = 0._wp 523 enano (ji,jj,jk) = 0._wp 524 ediat (ji,jj,jk) = 0._wp 525 END DO 526 END DO 527 END DO 468 528 IF( ln_qsr_bio ) THEN 469 !$OMP PARALLEL WORKSHARE 470 etot3 (:,:,:) = 0._wp 471 !$OMP END PARALLEL WORKSHARE 529 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 530 DO jk = 1, jpk 531 DO jj = 1, jpj 532 DO ji = 1, jpi 533 etot3 (ji,jj,jk) = 0._wp 534 END DO 535 END DO 536 END DO 472 537 END IF 473 538 !
Note: See TracChangeset
for help on using the changeset viewer.