- Timestamp:
- 2016-12-19T13:15:59+01:00 (7 years ago)
- Location:
- branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90
r7037 r7508 63 63 64 64 !$OMP PARALLEL 65 !$OMP WORKSHARE 66 xdiss(:,:,:) = 1. 67 !$OMP END WORKSHARE 65 !$OMP DO schedule(static) private(jk,jj,ji) 66 DO jk = 1, jpk 67 DO jj = 1, jpj 68 DO ji = 1, jpi 69 xdiss(ji,jj,jk) = 1. 70 END DO 71 END DO 72 END DO 68 73 !!gm the use of nmld should be better here? 69 74 !$OMP DO schedule(static) private(jk,jj,ji) -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r7037 r7508 83 83 CALL wrk_alloc( jpi,jpj,jpk, zFe3, zFeL1, zTL1, ztotlig ) 84 84 85 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 86 DO jk = 1, jpk 87 DO jj = 1, jpj 88 DO ji = 1, jpi 89 zFe3 (ji,jj,jk) = 0. 90 zFeL1(ji,jj,jk) = 0. 91 zTL1 (ji,jj,jk) = 0. 92 END DO 93 END DO 94 END DO 85 95 ! Total ligand concentration : Ligands can be chosen to be constant or variable 86 96 ! Parameterization from Tagliabue and Voelker (2011) … … 91 101 DO jj = 1, jpj 92 102 DO ji = 1, jpi 93 zFe3 (ji,jj,jk) = 0.94 zFeL1(ji,jj,jk) = 0.95 zTL1 (ji,jj,jk) = 0.96 103 ztotlig(ji,jj,jk) = 0.09 * trb(ji,jj,jk,jpdoc) * 1E6 + ligand * 1E9 97 104 ztotlig(ji,jj,jk) = MIN( ztotlig(ji,jj,jk), 10. ) … … 100 107 END DO 101 108 ELSE 102 !$OMP PARALLEL WORKSHARE 103 ztotlig(:,:,:) = ligand * 1E9 104 zFe3 (:,:,:) = 0. 105 zFeL1(:,:,:) = 0. 106 zTL1 (:,:,:) = 0. 107 !$OMP END PARALLEL WORKSHARE 109 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 110 DO jk = 1, jpk 111 DO jj = 1, jpj 112 DO ji = 1, jpi 113 ztotlig(ji,jj,jk) = ligand * 1E9 114 END DO 115 END DO 116 END DO 108 117 ENDIF 109 118 … … 116 125 CALL wrk_alloc( jpi,jpj,jpk, zFe2, zFeL2, zTL2, zFeP ) 117 126 !$OMP PARALLEL 118 !$OMP WORKSHARE 119 zFe2 (:,:,:) = 0. 120 zFeL2(:,:,:) = 0. 121 zTL2 (:,:,:) = 0. 122 zFeP (:,:,:) = 0. 123 !$OMP END WORKSHARE 127 !$OMP DO schedule(static) private(jk,jj,ji) 128 DO jk = 1, jpk 129 DO jj = 1, jpj 130 DO ji = 1, jpi 131 zFe2 (ji,jj,jk) = 0. 132 zFeL2(ji,jj,jk) = 0. 133 zTL2 (ji,jj,jk) = 0. 134 zFeP (ji,jj,jk) = 0. 135 END DO 136 END DO 137 END DO 124 138 !$OMP DO schedule(static) private(jk,jj,ji,ztligand,zionic,zph,zoxy,zkox,zkph2,zkph1,ztfe,za,zb,zc,zkappa1,zkappa2,za2,za1,za0,zp,zq,zp3,zq2,zd,zr,zphi,zxs,zfff,zfunc) 125 139 DO jk = 1, jpkm1 -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90
r7037 r7508 71 71 ! 72 72 IF( nday_year == nyear_len(1) ) THEN 73 !$OMP WORKSHARE 74 xksi (:,:) = xksimax(:,:) 75 xksimax(:,:) = 0._wp 76 !$OMP END WORKSHARE NOWAIT 73 !$OMP DO schedule(static) private(jj,ji) 74 DO jj = 1, jpj 75 DO ji = 1, jpi 76 xksi (ji,jj) = xksimax(ji,jj) 77 xksimax(ji,jj) = 0._wp 78 END DO 79 END DO 77 80 ENDIF 78 81 !$OMP END PARALLEL -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r7037 r7508 74 74 75 75 !$OMP PARALLEL 76 !$OMP WORKSHARE 77 zco3 (:,:,:) = 0. 78 zcaldiss(:,:,:) = 0. 79 !$OMP END WORKSHARE 76 !$OMP DO schedule(static) private(jk, jj, ji) 77 DO jk = 1, jpk 78 DO jj = 1, jpj 79 DO ji = 1, jpi 80 zco3 (ji,jj,jk) = 0. 81 zcaldiss(ji,jj,jk) = 0. 82 END DO 83 END DO 84 END DO 80 85 ! ------------------------------------------- 81 86 ! COMPUTE [CO3--] and [H+] CONCENTRATIONS -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r7037 r7508 89 89 IF( lk_iomput ) THEN 90 90 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 91 !$OMP PARALLEL WORKSHARE 92 zgrazing(:,:,:) = 0._wp 93 !$OMP END PARALLEL WORKSHARE 91 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 92 DO jk = 1, jpk 93 DO jj = 1, jpj 94 DO ji = 1, jpi 95 zgrazing(ji,jj,jk) = 0._wp 96 END DO 97 END DO 98 END DO 94 99 ENDIF 95 100 … … 252 257 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 253 258 IF( iom_use( "GRAZ2" ) ) THEN 254 !$OMP PARALLEL WORKSHARE 255 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 256 !$OMP END PARALLEL WORKSHARE 259 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 260 DO jk = 1, jpk 261 DO jj = 1, jpj 262 DO ji = 1, jpi 263 zw3d(ji,jj,jk) = zgrazing(ji,jj,jk) * 1.e+3 * rfact2r * tmask(ji,jj,jk) ! Total grazing of phyto by zooplankton 264 END DO 265 END DO 266 END DO 257 267 CALL iom_put( "GRAZ2", zw3d ) 258 268 ENDIF 259 269 IF( iom_use( "PCAL" ) ) THEN 260 !$OMP PARALLEL WORKSHARE 261 zw3d(:,:,:) = prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Calcite production 262 !$OMP END PARALLEL WORKSHARE 270 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 271 DO jk = 1, jpk 272 DO jj = 1, jpj 273 DO ji = 1, jpi 274 zw3d(ji,jj,jk) = prodcal(ji,jj,jk) * 1.e+3 * rfact2r * tmask(ji,jj,jk) ! Calcite production 275 END DO 276 END DO 277 END DO 263 278 CALL iom_put( "PCAL", zw3d ) 264 279 ENDIF -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r7037 r7508 192 192 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 193 193 IF( iom_use( "GRAZ1" ) ) THEN 194 !$OMP PARALLEL WORKSHARE 195 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 196 !$OMP END PARALLEL WORKSHARE 194 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 195 DO jk = 1, jpk 196 DO jj = 1, jpj 197 DO ji = 1, jpi 198 zw3d(ji,jj,jk) = zgrazing(ji,jj,jk) * 1.e+3 * rfact2r * tmask(ji,jj,jk) ! Total grazing of phyto by zooplankton 199 END DO 200 END DO 201 END DO 197 202 CALL iom_put( "GRAZ1", zw3d ) 198 203 ENDIF -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90
r7037 r7508 80 80 ! 81 81 !$OMP PARALLEL 82 !$OMP WORKSHARE 83 prodcal(:,:,:) = 0. !: calcite production variable set to zero 84 !$OMP END WORKSHARE 82 !$OMP DO schedule(static) private(jk,jj,ji) 83 DO jk = 1, jpk 84 DO jj = 1, jpj 85 DO ji = 1, jpi 86 prodcal(ji,jj,jk) = 0. !: calcite production variable set to zero 87 END DO 88 END DO 89 END DO 85 90 !$OMP DO schedule(static) private(jk,jj,ji,zcompaph,zstep,zsizerat,zrespp,ztortp,zmortp,zfactfe,zfactch,zprcaca,zfracal) 86 91 DO jk = 1, jpkm1 -
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 ! -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r7037 r7508 94 94 CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 95 95 ! 96 !$OMP PARALLEL WORKSHARE 97 zprorca (:,:,:) = 0._wp 98 zprorcad(:,:,:) = 0._wp 99 zprofed (:,:,:) = 0._wp 100 zprofen (:,:,:) = 0._wp 101 zprochln(:,:,:) = 0._wp 102 zprochld(:,:,:) = 0._wp 103 zpronew (:,:,:) = 0._wp 104 zpronewd(:,:,:) = 0._wp 105 zprdia (:,:,:) = 0._wp 106 zprbio (:,:,:) = 0._wp 107 zprdch (:,:,:) = 0._wp 108 zprnch (:,:,:) = 0._wp 109 zysopt (:,:,:) = 0._wp 96 !$OMP PARALLEL 97 !$OMP DO schedule(static) private(jk,jj,ji) 98 DO jk = 1, jpk 99 DO jj = 1, jpj 100 DO ji = 1, jpi 101 zprorca (ji,jj,jk) = 0._wp 102 zprorcad(ji,jj,jk) = 0._wp 103 zprofed (ji,jj,jk) = 0._wp 104 zprofen (ji,jj,jk) = 0._wp 105 zprochln(ji,jj,jk) = 0._wp 106 zprochld(ji,jj,jk) = 0._wp 107 zpronew (ji,jj,jk) = 0._wp 108 zpronewd(ji,jj,jk) = 0._wp 109 zprdia (ji,jj,jk) = 0._wp 110 zprbio (ji,jj,jk) = 0._wp 111 zprdch (ji,jj,jk) = 0._wp 112 zprnch (ji,jj,jk) = 0._wp 113 zysopt (ji,jj,jk) = 0._wp 110 114 111 115 ! Computation of the optimal production 112 prmax(:,:,:) = 0.6_wp * r1_rday * tgfunc(:,:,:) 116 prmax(ji,jj,jk) = 0.6_wp * r1_rday * tgfunc(ji,jj,jk) 117 END DO 118 END DO 119 END DO 113 120 114 121 ! day length in hours 115 zstrn(:,:) = 0. 116 !$OMP END PARALLEL WORKSHARE 122 !$OMP DO schedule(static) private(jj,ji) 123 DO jj = 1, jpj 124 DO ji = 1, jpi 125 zstrn(ji,jj) = 0. 126 END DO 127 END DO 128 !$OMP END PARALLEL 117 129 118 130 IF( lk_degrad ) THEN 119 !$OMP PARALLEL WORKSHARE 120 prmax(:,:,:) = prmax(:,:,:) * facvol(:,:,:) 121 !$OMP END PARALLEL WORKSHARE 131 !$OMP DO schedule(static) private(jk,jj,ji) 132 DO jk = 1, jpk 133 DO jj = 1, jpj 134 DO ji = 1, jpi 135 prmax(ji,jj,jk) = prmax(ji,jj,jk) * facvol(ji,jj,jk) 136 END DO 137 END DO 138 END DO 122 139 END IF 123 140 … … 153 170 154 171 ! Maximum light intensity 155 !$OMP WORKSHARE 156 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 157 zstrn(:,:) = 24. / zstrn(:,:) 158 !$OMP END WORKSHARE NOWAIT 172 !$OMP DO schedule(static) private(jj,ji) 173 DO jj = 1 ,jpj 174 DO ji = 1, jpi 175 IF( zstrn(ji,jj) < 1.e0 ) zstrn(ji,jj) = 24. 176 zstrn(ji,jj) = 24. / zstrn(ji,jj) 177 END DO 178 END DO 159 179 !$OMP END PARALLEL 160 180 … … 433 453 ! 434 454 IF( iom_use( "PPPHY" ) .OR. iom_use( "PPPHY2" ) ) THEN 435 !$OMP PARALLEL WORKSHARE 436 zw3d(:,:,:) = zprorca (:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 437 !$OMP END PARALLEL WORKSHARE 455 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 456 DO jk = 1, jpk 457 DO jj = 1, jpj 458 DO ji = 1, jpi 459 zw3d(ji,jj,jk) = zprorca (ji,jj,jk) * zfact * tmask(ji,jj,jk) ! primary production by nanophyto 460 END DO 461 END DO 462 END DO 438 463 CALL iom_put( "PPPHY" , zw3d ) 464 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 465 DO jk = 1, jpk 466 DO jj = 1, jpj 467 DO ji = 1, jpi 468 zw3d(ji,jj,jk) = zprorcad (ji,jj,jk) * zfact * tmask(ji,jj,jk) ! primary production by nanophyto 469 END DO 470 END DO 471 END DO 439 472 ! 440 !$OMP PARALLEL WORKSHARE441 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes442 !$OMP END PARALLEL WORKSHARE443 473 CALL iom_put( "PPPHY2" , zw3d ) 444 474 ENDIF 445 475 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) ) THEN 446 !$OMP PARALLEL WORKSHARE 447 zw3d(:,:,:) = zpronew (:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 448 !$OMP END PARALLEL WORKSHARE 476 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 477 DO jk = 1, jpk 478 DO jj = 1, jpj 479 DO ji = 1, jpi 480 zw3d(ji,jj,jk) = zpronew (ji,jj,jk) * zfact * tmask(ji,jj,jk) ! new primary production by nanophyto 481 END DO 482 END DO 483 END DO 449 484 CALL iom_put( "PPNEWN" , zw3d ) 450 485 ! 451 !$OMP PARALLEL WORKSHARE 452 zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:) ! new primary production by diatomes 453 !$OMP END PARALLEL WORKSHARE 486 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 487 DO jk = 1, jpk 488 DO jj = 1, jpj 489 DO ji = 1, jpi 490 zw3d(ji,jj,jk) = zpronewd (ji,jj,jk) * zfact * tmask(ji,jj,jk) ! new primary production by nanophyto 491 END DO 492 END DO 493 END DO 454 494 CALL iom_put( "PPNEWD" , zw3d ) 455 495 ENDIF 456 496 IF( iom_use( "PBSi" ) ) THEN 457 !$OMP PARALLEL WORKSHARE 458 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 459 !$OMP END PARALLEL WORKSHARE 497 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 498 DO jk = 1, jpk 499 DO jj = 1, jpj 500 DO ji = 1, jpi 501 zw3d(ji,jj,jk) = zprorcad(ji,jj,jk) * zfact * tmask(ji,jj,jk) * zysopt(ji,jj,jk) ! biogenic silica production 502 END DO 503 END DO 504 END DO 460 505 CALL iom_put( "PBSi" , zw3d ) 461 506 ENDIF 462 507 IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) ) THEN 463 !$OMP PARALLEL WORKSHARE 464 zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by nanophyto 465 !$OMP END PARALLEL WORKSHARE 508 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 509 DO jk = 1, jpk 510 DO jj = 1, jpj 511 DO ji = 1, jpi 512 zw3d(ji,jj,jk) = zprofen(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! biogenic iron production by nanophyto 513 END DO 514 END DO 515 END DO 466 516 CALL iom_put( "PFeN" , zw3d ) 467 517 ! 468 !$OMP PARALLEL WORKSHARE 469 zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:) ! biogenic iron production by diatomes 470 !$OMP END PARALLEL WORKSHARE 518 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 519 DO jk = 1, jpk 520 DO jj = 1, jpj 521 DO ji = 1, jpi 522 zw3d(ji,jj,jk) = zprofed(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! biogenic iron production by nanophyto 523 END DO 524 END DO 525 END DO 471 526 CALL iom_put( "PFeD" , zw3d ) 472 527 ENDIF 473 528 IF( iom_use( "Mumax" ) ) THEN 474 !$OMP PARALLEL WORKSHARE 475 zw3d(:,:,:) = prmax(:,:,:) * tmask(:,:,:) ! Maximum growth rate 476 !$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 zw3d(ji,jj,jk) = prmax(ji,jj,jk) * tmask(ji,jj,jk) ! Maximum growth rate 534 END DO 535 END DO 536 END DO 477 537 CALL iom_put( "Mumax" , zw3d ) 478 538 ENDIF 479 539 IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) ) THEN 480 !$OMP PARALLEL WORKSHARE 481 zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ! Realized growth rate for nanophyto 482 !$OMP END PARALLEL WORKSHARE 540 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 541 DO jk = 1, jpk 542 DO jj = 1, jpj 543 DO ji = 1, jpi 544 zw3d(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * tmask(ji,jj,jk) ! Realized growth rate for nanophyto 545 END DO 546 END DO 547 END DO 483 548 CALL iom_put( "MuN" , zw3d ) 484 549 ! 485 !$OMP PARALLEL WORKSHARE 486 zw3d(:,:,:) = zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ! Realized growth rate for diatoms 487 !$OMP END PARALLEL WORKSHARE 550 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 551 DO jk = 1, jpk 552 DO jj = 1, jpj 553 DO ji = 1, jpi 554 zw3d(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * tmask(ji,jj,jk) ! Realized growth rate for diatoms 555 END DO 556 END DO 557 END DO 488 558 CALL iom_put( "MuD" , zw3d ) 489 559 ENDIF 490 560 IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) ) THEN 491 !$OMP PARALLEL WORKSHARE 492 zw3d(:,:,:) = zprbio (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 493 !$OMP END PARALLEL WORKSHARE 561 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 562 DO jk = 1, jpk 563 DO jj = 1, jpj 564 DO ji = 1, jpi 565 zw3d(ji,jj,jk) = zprbio (ji,jj,jk) / (prmax(ji,jj,jk) + rtrn) * tmask(ji,jj,jk) ! light limitation term 566 END DO 567 END DO 568 END DO 494 569 CALL iom_put( "LNlight" , zw3d ) 495 570 ! 496 !$OMP PARALLEL WORKSHARE 497 zw3d(:,:,:) = zprdia (:,:,:) / (prmax(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 498 !$OMP END PARALLEL WORKSHARE 571 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 572 DO jk = 1, jpk 573 DO jj = 1, jpj 574 DO ji = 1, jpi 575 zw3d(ji,jj,jk) = zprdia (ji,jj,jk) / (prmax(ji,jj,jk) + rtrn) * tmask(ji,jj,jk) ! light limitation term 576 END DO 577 END DO 578 END DO 499 579 CALL iom_put( "LDlight" , zw3d ) 500 580 ENDIF 501 581 IF( iom_use( "TPP" ) ) THEN 502 !$OMP PARALLEL WORKSHARE 503 zw3d(:,:,:) = ( zprorca(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production 504 !$OMP END PARALLEL WORKSHARE 582 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 583 DO jk = 1, jpk 584 DO jj = 1, jpj 585 DO ji = 1, jpi 586 zw3d(ji,jj,jk) = ( zprorca(ji,jj,jk) + zprorcad(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! total primary production 587 END DO 588 END DO 589 END DO 505 590 CALL iom_put( "TPP" , zw3d ) 506 591 ENDIF 507 592 IF( iom_use( "TPNEW" ) ) THEN 508 !$OMP PARALLEL WORKSHARE 509 zw3d(:,:,:) = ( zpronew(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production 510 !$OMP END PARALLEL WORKSHARE 593 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 594 DO jk = 1, jpk 595 DO jj = 1, jpj 596 DO ji = 1, jpi 597 zw3d(ji,jj,jk) = ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! total new production 598 END DO 599 END DO 600 END DO 511 601 CALL iom_put( "TPNEW" , zw3d ) 512 602 ENDIF 513 603 IF( iom_use( "TPBFE" ) ) THEN 514 !$OMP PARALLEL WORKSHARE 515 zw3d(:,:,:) = ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:) ! total biogenic iron production 516 !$OMP END PARALLEL WORKSHARE 604 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 605 DO jk = 1, jpk 606 DO jj = 1, jpj 607 DO ji = 1, jpi 608 zw3d(ji,jj,jk) = ( zprofen(ji,jj,jk) + zprofed(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! total biogenic iron production 609 END DO 610 END DO 611 END DO 517 612 CALL iom_put( "TPBFE" , zw3d ) 518 613 ENDIF 519 614 IF( iom_use( "INTPPPHY" ) .OR. iom_use( "INTPPPHY2" ) ) THEN 520 615 !$OMP PARALLEL 521 !$OMP WORKSHARE 522 zw2d(:,:) = 0. 523 !$OMP END WORKSHARE 616 !$OMP DO schedule(static) private(jj,ji) 617 DO jj = 1, jpj 618 DO ji =1 ,jpi 619 zw2d(ji,jj) = 0. 620 END DO 621 END DO 524 622 DO jk = 1, jpkm1 525 623 !$OMP DO schedule(static) private(jj,ji) … … 535 633 ! 536 634 !$OMP PARALLEL 537 !$OMP WORKSHARE 538 zw2d(:,:) = 0. 539 !$OMP END WORKSHARE 635 !$OMP DO schedule(static) private(jj,ji) 636 DO jj = 1, jpj 637 DO ji =1 ,jpi 638 zw2d(ji,jj) = 0. 639 END DO 640 END DO 540 641 DO jk = 1, jpkm1 541 642 !$OMP DO schedule(static) private(jj,ji) … … 552 653 IF( iom_use( "INTPP" ) ) THEN 553 654 !$OMP PARALLEL 554 !$OMP WORKSHARE 555 zw2d(:,:) = 0. 556 !$OMP END WORKSHARE 655 !$OMP DO schedule(static) private(jj,ji) 656 DO jj = 1, jpj 657 DO ji =1 ,jpi 658 zw2d(ji,jj) = 0. 659 END DO 660 END DO 557 661 DO jk = 1, jpkm1 558 662 !$OMP DO schedule(static) private(jj,ji) … … 569 673 IF( iom_use( "INTPNEW" ) ) THEN 570 674 !$OMP PARALLEL 571 !$OMP WORKSHARE 572 zw2d(:,:) = 0. 573 !$OMP END WORKSHARE 675 !$OMP DO schedule(static) private(jj,ji) 676 DO jj = 1, jpj 677 DO ji =1 ,jpi 678 zw2d(ji,jj) = 0. 679 END DO 680 END DO 574 681 DO jk = 1, jpkm1 575 682 !$OMP DO schedule(static) private(jj,ji) … … 586 693 IF( iom_use( "INTPBFE" ) ) THEN ! total biogenic iron production ( vertically integrated ) 587 694 !$OMP PARALLEL 588 !$OMP WORKSHARE 589 zw2d(:,:) = 0. 590 !$OMP END WORKSHARE 695 !$OMP DO schedule(static) private(jj,ji) 696 DO jj = 1, jpj 697 DO ji =1 ,jpi 698 zw2d(ji,jj) = 0. 699 END DO 700 END DO 591 701 DO jk = 1, jpkm1 592 702 !$OMP DO schedule(static) private(jj,ji) … … 603 713 IF( iom_use( "INTPBSI" ) ) THEN ! total biogenic silica production ( vertically integrated ) 604 714 !$OMP PARALLEL 605 !$OMP WORKSHARE 606 zw2d(:,:) = 0. 607 !$OMP END WORKSHARE 715 !$OMP DO schedule(static) private(jj,ji) 716 DO jj = 1, jpj 717 DO ji =1 ,jpi 718 zw2d(ji,jj) = 0. 719 END DO 720 END DO 608 721 DO jk = 1, jpkm1 609 722 !$OMP DO schedule(static) private(jj,ji) … … 626 739 IF( ln_diatrc ) THEN 627 740 zfact = 1.e+3 * rfact2r 628 !$OMP PARALLEL WORKSHARE 629 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zfact * tmask(:,:,:) 630 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zfact * tmask(:,:,:) 631 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zfact * tmask(:,:,:) 632 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zfact * tmask(:,:,:) 633 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 634 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zfact * tmask(:,:,:) 741 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 742 DO jk = 1, jpk 743 DO jj = 1, jpj 744 DO ji = 1, jpi 745 trc3d(ji,jj,jk,jp_pcs0_3d + 4) = zprorca (ji,jj,jk) * zfact * tmask(ji,jj,jk) 746 trc3d(ji,jj,jk,jp_pcs0_3d + 5) = zprorcad(ji,jj,jk) * zfact * tmask(ji,jj,jk) 747 trc3d(ji,jj,jk,jp_pcs0_3d + 6) = zpronew (ji,jj,jk) * zfact * tmask(ji,jj,jk) 748 trc3d(ji,jj,jk,jp_pcs0_3d + 7) = zpronewd(ji,jj,jk) * zfact * tmask(ji,jj,jk) 749 trc3d(ji,jj,jk,jp_pcs0_3d + 8) = zprorcad(ji,jj,jk) * zfact * tmask(ji,jj,jk) * zysopt(ji,jj,jk) 750 trc3d(ji,jj,jk,jp_pcs0_3d + 9) = zprofed (ji,jj,jk) * zfact * tmask(ji,jj,jk) 635 751 # if ! defined key_kriest 636 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zfact * tmask(:,:,:)752 trc3d(ji,jj,jk,jp_pcs0_3d + 10) = zprofen (ji,jj,jk) * zfact * tmask(ji,jj,jk) 637 753 # endif 638 !$OMP END PARALLEL WORKSHARE 754 END DO 755 END DO 756 END DO 639 757 ENDIF 640 758 ENDIF -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
r7037 r7508 90 90 ! Initialisation of temprary arrys 91 91 !$OMP PARALLEL 92 !$OMP WORKSHARE 93 zdepprod(:,:,:) = 1._wp 94 ztempbac(:,:) = 0._wp 95 !$OMP END WORKSHARE 96 92 !$OMP DO schedule(static) private(jk,jj,ji) 93 DO jk = 1, jpk 94 DO jj = 1, jpj 95 DO ji = 1, jpi 96 zdepprod(ji,jj,jk) = 1._wp 97 END DO 98 END DO 99 END DO 100 !$OMP DO schedule(static) private(jj,ji) 101 DO jj = 1, jpj 102 DO ji = 1, jpi 103 ztempbac(ji,jj) = 0._wp 104 END DO 105 END DO 97 106 ! Computation of the mean phytoplankton concentration as 98 107 ! a crude estimate of the bacterial biomass … … 332 341 ! 333 342 IF( iom_use( "REMIN" ) ) THEN 334 !$OMP PARALLEL WORKSHARE 335 zw3d(:,:,:) = zolimi(:,:,:) * tmask(:,:,:) * zfact ! Remineralisation rate 336 !$OMP END PARALLEL WORKSHARE 343 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 344 DO jk = 1, jpk 345 DO jj = 1, jpj 346 DO ji = 1, jpi 347 zw3d(ji,jj,jk) = zolimi(ji,jj,jk) * tmask(ji,jj,jk) * zfact ! Remineralisation rate 348 END DO 349 END DO 350 END DO 337 351 CALL iom_put( "REMIN" , zw3d ) 338 352 ENDIF 339 353 IF( iom_use( "DENIT" ) ) THEN 340 !$OMP PARALLEL WORKSHARE 341 zw3d(:,:,:) = denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zfact ! Denitrification 342 !$OMP END PARALLEL WORKSHARE 354 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 355 DO jk = 1, jpk 356 DO jj = 1, jpj 357 DO ji = 1, jpi 358 zw3d(ji,jj,jk) = denitr(ji,jj,jk) * rdenit * rno3 * tmask(ji,jj,jk) * zfact ! Denitrification 359 END DO 360 END DO 361 END DO 343 362 CALL iom_put( "DENIT" , zw3d ) 344 363 ENDIF … … 376 395 & oxymin 377 396 INTEGER :: ios ! Local integer output status for namelist read 397 INTEGER :: ji, jj, jk ! dummy loop indices 378 398 379 399 REWIND( numnatp_ref ) ! Namelist nampisrem in reference namelist : Pisces remineralization … … 399 419 ENDIF 400 420 ! 401 !$OMP PARALLEL WORKSHARE 402 nitrfac (:,:,:) = 0._wp 403 denitr (:,:,:) = 0._wp 404 denitnh4(:,:,:) = 0._wp 405 !$OMP END PARALLEL WORKSHARE 421 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 422 DO jk = 1, jpk 423 DO jj = 1, jpj 424 DO ji = 1, jpi 425 nitrfac (ji,jj,jk) = 0._wp 426 denitr (ji,jj,jk) = 0._wp 427 denitnh4(ji,jj,jk) = 0._wp 428 END DO 429 END DO 430 END DO 406 431 ! 407 432 END SUBROUTINE p4z_rem_init -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r7037 r7508 278 278 ! online configuration : computed in sbcrnf 279 279 IF( lk_offline ) THEN 280 !$OMP PARALLEL WORKSHARE 281 nk_rnf(:,:) = 1 282 h_rnf (:,:) = gdept_n(:,:,1) 283 !$OMP END PARALLEL WORKSHARE 280 !$OMP PARALLEL DO schedule(static) private(jj, ji) 281 DO jj = 1, jpj 282 DO ji = 1, jpi 283 nk_rnf(ji,jj) = 1 284 h_rnf (ji,jj) = gdept_n(ji,jj,1) 285 END DO 286 END DO 284 287 ENDIF 285 288 … … 482 485 ! Coastal supply of iron 483 486 ! ------------------------- 484 !$OMP WORKSHARE 485 ironsed(:,:,jpk) = 0._wp 486 !$OMP END WORKSHARE 487 !$OMP PARALLEL DO schedule(static) private(jj, ji) 488 DO jj = 1, jpj 489 DO ji = 1, jpi 490 ironsed(ji,jj,jpk) = 0._wp 491 END DO 492 END DO 487 493 !$OMP DO schedule(static) private(jk) 488 494 DO jk = 1, jpkm1 … … 507 513 CALL iom_close( numhydro ) 508 514 ! 509 !$OMP PARALLEL WORKSHARE 510 hydrofe(:,:,:) = ( hydrofe(:,:,:) * hratio ) / ( cvol(:,:,:) * ryyss + rtrn ) / 1000._wp 511 !$OMP END PARALLEL WORKSHARE 515 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 516 DO jk = 1, jpk 517 DO jj = 1, jpj 518 DO ji = 1, jpi 519 hydrofe(ji,jj,jk) = ( hydrofe(ji,jj,jk) * hratio ) / ( cvol(ji,jj,jk) * ryyss + rtrn ) / 1000._wp 520 END DO 521 END DO 522 END DO 512 523 ! 513 524 ENDIF -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r7037 r7508 82 82 CALL wrk_alloc( jpi, jpj, jpk, zsoufer ) 83 83 84 !$OMP PARALLEL WORKSHARE 85 zdenit2d(:,:) = 0.e0 86 zbureff (:,:) = 0.e0 87 zwork1 (:,:) = 0.e0 88 zwork2 (:,:) = 0.e0 89 zwork3 (:,:) = 0.e0 90 !$OMP END PARALLEL WORKSHARE 84 !$OMP PARALLEL DO schedule(static) private(jj,ji) 85 DO jj = 1, jpj 86 DO ji = 1, jpi 87 zdenit2d(ji,jj) = 0.e0 88 zbureff (ji,jj) = 0.e0 89 zwork1 (ji,jj) = 0.e0 90 zwork2 (ji,jj) = 0.e0 91 zwork3 (ji,jj) = 0.e0 92 END DO 93 END DO 91 94 92 95 ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. … … 107 110 END DO 108 111 ! 109 !$OMP WORKSHARE 110 tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:) 111 !$OMP END WORKSHARE NOWAIT 112 !$OMP DO schedule(static) private(jj,ji) 113 DO jj = 1, jpj 114 DO ji = 1, jpi 115 tra(ji,jj,1,jpfer) = tra(ji,jj,1,jpfer) + zironice(ji,jj) 116 END DO 117 END DO 112 118 !$OMP END PARALLEL 113 119 ! … … 127 133 ! ! Iron and Si deposition at the surface 128 134 IF( ln_solub ) THEN 129 !$OMP PARALLEL WORKSHARE 130 zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss 131 !$OMP END PARALLEL WORKSHARE 135 !$OMP PARALLEL DO schedule(static) private(jj,ji) 136 DO jj = 1, jpj 137 DO ji = 1, jpi 138 zirondep(ji,jj,1) = solub(ji,jj) * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 55.85 + 3.e-10 * r1_ryyss 139 END DO 140 END DO 132 141 ELSE 133 !$OMP PARALLEL WORKSHARE 134 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss 135 !$OMP END PARALLEL WORKSHARE 142 !$OMP PARALLEL DO schedule(static) private(jj,ji) 143 DO jj = 1, jpj 144 DO ji = 1, jpi 145 zirondep(ji,jj,1) = dustsolub * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 55.85 + 3.e-10 * r1_ryyss 146 END DO 147 END DO 136 148 ENDIF 137 !$OMP PARALLEL WORKSHARE 138 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1 139 zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r 140 !$OMP END PARALLEL WORKSHARE 149 !$OMP PARALLEL DO schedule(static) private(jj,ji) 150 DO jj = 1, jpj 151 DO ji = 1, jpi 152 zsidep(ji,jj) = 8.8 * 0.075 * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 28.1 153 zpdep (ji,jj) = 0.1 * 0.021 * dust(ji,jj) * mfrac * rfact2 / e3t_n(ji,jj,1) / 31. / po4r 154 END DO 155 END DO 141 156 ! ! Iron solubilization of particles in the water column 142 157 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j 143 158 zwdust = 0.03 * rday / ( wdust * 55.85 ) / ( 270. * rday ) 159 !$OMP PARALLEL 144 160 !$OMP DO schedule(static) private(jk) 145 161 DO jk = 2, jpkm1 … … 147 163 END DO 148 164 ! ! Iron solubilization of particles in the water column 149 !$OMP PARALLEL 150 !$OMP WORKSHARE 151 tra(:,:,1,jppo4) = tra(:,:,1,jppo4) + zpdep (:,:) 152 tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep (:,:) 153 tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + zirondep(:,:,:) 154 !$OMP END WORKSHARE 165 !$OMP DO schedule(static) private(jj,ji) 166 DO jj = 1, jpj 167 DO ji = 1, jpi 168 tra(ji,jj,1,jppo4) = tra(ji,jj,1,jppo4) + zpdep (ji,jj) 169 tra(ji,jj,1,jpsil) = tra(ji,jj,1,jpsil) + zsidep (ji,jj) 170 END DO 171 END DO 172 !$OMP DO schedule(static) private(jk,jj,ji) 173 DO jk = 1, jpk 174 DO jj = 1, jpj 175 DO ji = 1, jpi 176 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zirondep(ji,jj,jk) 177 END DO 178 END DO 179 END DO 155 180 !$OMP END PARALLEL 156 181 ! … … 164 189 ELSE 165 190 IF( ln_diatrc ) THEN 166 !$OMP PARALLEL WORKSHARE 167 trc2d(:,:,jp_pcs0_2d + 11) = zirondep(:,:,1) * 1.e+3 * rfact2r * e3t_n(:,:,1) * tmask(:,:,1) 168 !$OMP END PARALLEL WORKSHARE 191 !$OMP PARALLEL DO schedule(static) private(jj,ji) 192 DO jj = 1, jpj 193 DO ji = 1, jpi 194 trc2d(ji,jj,jp_pcs0_2d + 11) = zirondep(ji,jj,1) * 1.e+3 * rfact2r * e3t_n(ji,jj,1) * tmask(ji,jj,1) 195 END DO 196 END DO 169 197 ENDIF 170 198 ENDIF … … 187 215 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + rivdic(ji,jj) * rfact2 188 216 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 189 END DO190 END DO191 END DO217 END DO 218 END DO 219 END DO 192 220 ENDIF 193 221 … … 195 223 ! ---------------------------------------------------------- 196 224 IF( ln_ndepo ) THEN 197 !$OMP PARALLEL WORKSHARE 198 tra(:,:,1,jpno3) = tra(:,:,1,jpno3) + nitdep(:,:) * rfact2 199 tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * nitdep(:,:) * rfact2 200 !$OMP END PARALLEL WORKSHARE 225 !$OMP PARALLEL DO schedule(static) private(jj,ji) 226 DO jj = 1, jpj 227 DO ji = 1, jpi 228 tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + nitdep(ji,jj) * rfact2 229 tra(ji,jj,1,jptal) = tra(ji,jj,1,jptal) - rno3 * nitdep(ji,jj) * rfact2 230 ENDDO 231 ENDDO 201 232 ENDIF 202 233 … … 204 235 ! ------------------------------------------------------ 205 236 IF( ln_ironsed ) THEN 206 !$OMP PARALLEL WORKSHARE 207 tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2 208 !$OMP END PARALLEL WORKSHARE 237 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 238 DO jk = 1, jpk 239 DO jj = 1, jpj 240 DO ji = 1, jpi 241 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + ironsed(ji,jj,jk) * rfact2 242 END DO 243 END DO 244 END DO 209 245 ! 210 246 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" ) ) & … … 215 251 ! ------------------------------------------------------ 216 252 IF( ln_hydrofe ) THEN 217 !$OMP PARALLEL WORKSHARE 218 tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact2 219 !$OMP END PARALLEL WORKSHARE 253 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 254 DO jk = 1, jpk 255 DO jj = 1, jpj 256 DO ji = 1, jpi 257 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + hydrofe(ji,jj,jk) * rfact2 258 END DO 259 END DO 260 END DO 220 261 ! 221 262 IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "HYDR" ) ) & … … 291 332 END DO 292 333 END DO 293 294 !$OMP SINGLE 334 !$OMP END PARALLEL 335 295 336 zsumsedsi = glob_sum( zwork1(:,:) * e1e2t(:,:) ) * r1_rday 296 337 zsumsedpo4 = glob_sum( zwork2(:,:) * e1e2t(:,:) ) * r1_rday … … 304 345 zrivsil = 1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / ( zsumsedsi + rtrn ) 305 346 #endif 306 !$OMP END SINGLE347 !$OMP PARALLEL 307 348 308 349 !$OMP DO schedule(static) private(jj,ji,ikt,zdep,zws4,zwsc,zsiloss,zcaloss,zfactcal,zrivalk) -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90
r7037 r7508 115 115 116 116 ! limit the values of the sinking speeds to avoid numerical instabilities 117 !$OMP WORKSHARE 118 wsbio3(:,:,:) = wsbio 119 wscal (:,:,:) = wsbio4(:,:,:) 120 !$OMP END WORKSHARE NOWAIT 117 !$OMP DO schedule(static) private(jk, jj, ji) 118 DO jk = 1, jpk 119 DO jj = 1, jpj 120 DO ji = 1, jpi 121 wsbio3(ji,jj,jk) = wsbio 122 wscal (ji,jj,jk) = wsbio4(ji,jj,jk) 123 END DO 124 END DO 125 END DO 121 126 !$OMP END PARALLEL 122 127 ! … … 173 178 ! Initializa to zero all the sinking arrays 174 179 ! ----------------------------------------- 175 !$OMP WORKSHARE 176 sinking (:,:,:) = 0.e0 177 sinking2(:,:,:) = 0.e0 178 sinkcal (:,:,:) = 0.e0 179 sinkfer (:,:,:) = 0.e0 180 sinksil (:,:,:) = 0.e0 181 sinkfer2(:,:,:) = 0.e0 182 !$OMP END WORKSHARE NOWAIT 180 !$OMP DO schedule(static) private(jk, jj, ji) 181 DO jk = 1, jpk 182 DO jj = 1, jpj 183 DO ji = 1, jpi 184 sinking (ji,jj,jk) = 0.e0 185 sinking2(ji,jj,jk) = 0.e0 186 sinkcal (ji,jj,jk) = 0.e0 187 sinkfer (ji,jj,jk) = 0.e0 188 sinksil (ji,jj,jk) = 0.e0 189 sinkfer2(ji,jj,jk) = 0.e0 190 END DO 191 END DO 192 END DO 183 193 !$OMP END PARALLEL 184 194 … … 258 268 ! 259 269 IF( iom_use( "EPC100" ) ) THEN 260 !$OMP PARALLEL WORKSHARE 261 zw2d(:,:) = ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of carbon at 100m 262 !$OMP END PARALLEL WORKSHARE 270 !$OMP DO schedule(static) private(jj, ji) 271 DO jj = 1, jpj 272 DO ji = 1, jpi 273 zw2d(ji,jj) = ( sinking(ji,jj,ik100) + sinking2(ji,jj,ik100) ) * zfact * tmask(ji,jj,1) ! Export of carbon at 100m 274 END DO 275 END DO 263 276 CALL iom_put( "EPC100" , zw2d ) 264 277 ENDIF 265 278 IF( iom_use( "EPFE100" ) ) THEN 266 !$OMP PARALLEL WORKSHARE 267 zw2d(:,:) = ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of iron at 100m 268 !$OMP END PARALLEL WORKSHARE 279 !$OMP DO schedule(static) private(jj, ji) 280 DO jj = 1, jpj 281 DO ji = 1, jpi 282 zw2d(ji,jj) = ( sinkfer(ji,jj,ik100) + sinkfer2(ji,jj,ik100) ) * zfact * tmask(ji,jj,1) ! Export of iron at 100m 283 END DO 284 END DO 269 285 CALL iom_put( "EPFE100" , zw2d ) 270 286 ENDIF 271 287 IF( iom_use( "EPCAL100" ) ) THEN 272 !$OMP PARALLEL WORKSHARE 273 zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 274 !$OMP END PARALLEL WORKSHARE 288 !$OMP DO schedule(static) private(jj, ji) 289 DO jj = 1, jpj 290 DO ji = 1, jpi 291 zw2d(ji,jj) = sinkcal(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of calcite at 100m 292 END DO 293 END DO 275 294 CALL iom_put( "EPCAL100" , zw2d ) 276 295 ENDIF 277 296 IF( iom_use( "EPSI100" ) ) THEN 278 !$OMP PARALLEL WORKSHARE 279 zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 280 !$OMP END PARALLEL WORKSHARE 297 !$OMP DO schedule(static) private(jj, ji) 298 DO jj = 1, jpj 299 DO ji = 1, jpi 300 zw2d(ji,jj) = sinksil(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of bigenic silica at 100m 301 END DO 302 END DO 281 303 CALL iom_put( "EPSI100" , zw2d ) 282 304 ENDIF 283 305 IF( iom_use( "EXPC" ) ) THEN 284 !$OMP PARALLEL WORKSHARE 285 zw3d(:,:,:) = ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of carbon in the water column 286 !$OMP END PARALLEL WORKSHARE 306 !$OMP DO schedule(static) private(jk, jj, ji) 307 DO jk = 1, jpk 308 DO jj = 1, jpj 309 DO ji = 1, jpi 310 zw3d(ji,jj,jk) = ( sinking(ji,jj,jk) + sinking2(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! Export of carbon in the water column 311 END DO 312 END DO 313 END DO 287 314 CALL iom_put( "EXPC" , zw3d ) 288 315 ENDIF 289 316 IF( iom_use( "EXPFE" ) ) THEN 290 !$OMP PARALLEL WORKSHARE 291 zw3d(:,:,:) = ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of iron 292 !$OMP END PARALLEL WORKSHARE 317 !$OMP DO schedule(static) private(jk, jj, ji) 318 DO jk = 1, jpk 319 DO jj = 1, jpj 320 DO ji = 1, jpi 321 zw3d(ji,jj,jk) = ( sinkfer(ji,jj,jk) + sinkfer2(ji,jj,jk) ) * zfact * tmask(ji,jj,jk) ! Export of iron 322 END DO 323 END DO 324 END DO 293 325 CALL iom_put( "EXPFE" , zw3d ) 294 326 ENDIF 295 327 IF( iom_use( "EXPCAL" ) ) THEN 296 !$OMP PARALLEL WORKSHARE 297 zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite 298 !$OMP END PARALLEL WORKSHARE 328 !$OMP DO schedule(static) private(jk, jj, ji) 329 DO jk = 1, jpk 330 DO jj = 1, jpj 331 DO ji = 1, jpi 332 zw3d(ji,jj,jk) = sinkcal(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of calcite 333 END DO 334 END DO 335 END DO 299 336 CALL iom_put( "EXPCAL" , zw3d ) 300 337 ENDIF 301 338 IF( iom_use( "EXPSI" ) ) THEN 302 !$OMP PARALLEL WORKSHARE 303 zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 304 !$OMP END PARALLEL WORKSHARE 339 !$OMP DO schedule(static) private(jk, jj, ji) 340 DO jk = 1, jpk 341 DO jj = 1, jpj 342 DO ji = 1, jpi 343 zw3d(ji,jj,jk) = sinksil(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of bigenic silica 344 END DO 345 END DO 346 END DO 305 347 CALL iom_put( "EXPSI" , zw3d ) 306 348 ENDIF … … 313 355 IF( ln_diatrc ) THEN 314 356 zfact = 1.e3 * rfact2r 315 !$OMP PARALLEL WORKSHARE 316 trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 317 trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 318 trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 319 trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik100) * zfact * tmask(:,:,1) 320 trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 321 trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 322 !$OMP END PARALLEL WORKSHARE 357 !$OMP DO schedule(static) private(jj, ji) 358 DO jj = 1, jpj 359 DO ji = 1, jpi 360 trc2d(ji,jj,jp_pcs0_2d + 4) = sinking (ji,jj,ik100) * zfact * tmask(ji,jj,1) 361 trc2d(ji,jj,jp_pcs0_2d + 5) = sinking2(ji,jj,ik100) * zfact * tmask(ji,jj,1) 362 trc2d(ji,jj,jp_pcs0_2d + 6) = sinkfer (ji,jj,ik100) * zfact * tmask(ji,jj,1) 363 trc2d(ji,jj,jp_pcs0_2d + 7) = sinkfer2(ji,jj,ik100) * zfact * tmask(ji,jj,1) 364 trc2d(ji,jj,jp_pcs0_2d + 8) = sinksil (ji,jj,ik100) * zfact * tmask(ji,jj,1) 365 trc2d(ji,jj,jp_pcs0_2d + 9) = sinkcal (ji,jj,ik100) * zfact * tmask(ji,jj,1) 366 END DO 367 END DO 323 368 ENDIF 324 369 ENDIF … … 394 439 zval3 = 1. + xkr_eta 395 440 !$OMP PARALLEL 396 !$OMP WORKSHARE 397 znum3d(:,:,:) = 0.e0 398 !$OMP END WORKSHARE 441 !$OMP DO schedule(static) private(jk, jj, ji) 442 DO jk = 1, jpk 443 DO jj = 1, jpj 444 DO ji = 1, jpi 445 znum3d(ji,jj,jk) = 0.e0 446 END DO 447 END DO 448 END DO 399 449 ! Computation of the vertical sinking speed : Kriest et Evans, 2000 400 450 ! ----------------------------------------------------------------- … … 438 488 ! INITIALIZE TO ZERO ALL THE SINKING ARRAYS 439 489 ! ----------------------------------------- 440 !$OMP WORKSHARE 441 sinking (:,:,:) = 0.e0 442 sinking2(:,:,:) = 0.e0 443 sinkcal (:,:,:) = 0.e0 444 sinkfer (:,:,:) = 0.e0 445 sinksil (:,:,:) = 0.e0 446 !$OMP END WORKSHARE NOWAIT 490 !$OMP DO schedule(static) private(jk, jj, ji) 491 DO jk = 1, jpk 492 DO jj = 1, jpj 493 DO ji = 1, jpi 494 sinking (ji,jj,jk) = 0.e0 495 sinking2(ji,jj,jk) = 0.e0 496 sinkcal (ji,jj,jk) = 0.e0 497 sinkfer (ji,jj,jk) = 0.e0 498 sinksil (ji,jj,jk) = 0.e0 499 END DO 500 END DO 501 END DO 447 502 !$OMP END PARALLEL 448 503 ! Compute the sedimentation term using p4zsink2 for all the sinking particles … … 576 631 ! 577 632 IF( iom_use( "EPC100" ) ) THEN 578 !$OMP PARALLEL WORKSHARE 579 zw2d(:,:) = sinking(:,:,ik100) * zfact * tmask(:,:,1) ! Export of carbon at 100m 580 !$OMP END PARALLEL WORKSHARE 633 !$OMP DO schedule(static) private(jj, ji) 634 DO jj = 1, jpj 635 DO ji = 1, jpi 636 zw2d(ji,jj) = sinking(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of carbon at 100m 637 END DO 638 END DO 581 639 CALL iom_put( "EPC100" , zw2d ) 582 640 ENDIF 583 641 IF( iom_use( "EPN100" ) ) THEN 584 !$OMP PARALLEL WORKSHARE 585 zw2d(:,:) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) ! Export of number of aggregates ? 586 !$OMP END PARALLEL WORKSHARE 642 !$OMP DO schedule(static) private(jj, ji) 643 DO jj = 1, jpj 644 DO ji = 1, jpi 645 zw2d(ji,jj) = sinking2(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of number of aggregates ? 646 END DO 647 END DO 587 648 CALL iom_put( "EPN100" , zw2d ) 588 649 ENDIF 589 650 IF( iom_use( "EPCAL100" ) ) THEN 590 !$OMP PARALLEL WORKSHARE 591 zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 592 !$OMP END PARALLEL WORKSHARE 651 !$OMP DO schedule(static) private(jj, ji) 652 DO jj = 1, jpj 653 DO ji = 1, jpi 654 zw2d(ji,jj) = sinkcal(ji,jj,ik100) * zfact * tmask(ji,jj,1) !Export of calcite at 100m 655 END DO 656 END DO 593 657 CALL iom_put( "EPCAL100" , zw2d ) 594 658 ENDIF 595 659 IF( iom_use( "EPSI100" ) ) THEN 596 !$OMP PARALLEL WORKSHARE 597 zw2d(:,:) = sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 598 !$OMP END PARALLEL WORKSHARE 660 !$OMP DO schedule(static) private(jj, ji) 661 DO jj = 1, jpj 662 DO ji = 1, jpi 663 zw2d(ji,jj) = sinksil(ji,jj,ik100) * zfact * tmask(ji,jj,1) ! Export of bigenic silica at 100m 664 END DO 665 END DO 599 666 CALL iom_put( "EPSI100" , zw2d ) 600 667 ENDIF 601 668 IF( iom_use( "EXPC" ) ) THEN 602 !$OMP PARALLEL WORKSHARE 603 zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 604 !$OMP END PARALLEL WORKSHARE 669 !$OMP DO schedule(static) private(jk, jj, ji) 670 DO jk = 1, jpk 671 DO jj = 1, jpj 672 DO ji = 1, jpi 673 zw3d(ji,jj,jk) = sinking(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of carbon in the water column 674 END DO 675 END DO 676 END DO 605 677 CALL iom_put( "EXPC" , zw3d ) 606 678 ENDIF 607 679 IF( iom_use( "EXPN" ) ) THEN 608 !$OMP PARALLEL WORKSHARE 609 zw3d(:,:,:) = sinking(:,:,:) * zfact * tmask(:,:,:) ! Export of carbon in the water column 610 !$OMP END PARALLEL WORKSHARE 680 !$OMP DO schedule(static) private(jk, jj, ji) 681 DO jk = 1, jpk 682 DO jj = 1, jpj 683 DO ji = 1, jpi 684 zw3d(ji,jj,jk) = sinking(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of carbon in the water column 685 END DO 686 END DO 687 END DO 611 688 CALL iom_put( "EXPN" , zw3d ) 612 689 ENDIF 613 690 IF( iom_use( "EXPCAL" ) ) THEN 614 !$OMP PARALLEL WORKSHARE 615 zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite 616 !$OMP END PARALLEL WORKSHARE 691 !$OMP DO schedule(static) private(jk, jj, ji) 692 DO jk = 1, jpk 693 DO jj = 1, jpj 694 DO ji = 1, jpi 695 zw3d(ji,jj,jk) = sinkcal(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of calcite 696 END DO 697 END DO 698 END DO 617 699 CALL iom_put( "EXPCAL" , zw3d ) 618 700 ENDIF 619 701 IF( iom_use( "EXPSI" ) ) THEN 620 !$OMP PARALLEL WORKSHARE 621 zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 622 !$OMP END PARALLEL WORKSHARE 702 !$OMP DO schedule(static) private(jk, jj, ji) 703 DO jk = 1, jpk 704 DO jj = 1, jpj 705 DO ji = 1, jpi 706 zw3d(ji,jj,jk) = sinksil(ji,jj,jk) * zfact * tmask(ji,jj,jk) ! Export of bigenic silica 707 END DO 708 END DO 709 END DO 623 710 CALL iom_put( "EXPSI" , zw3d ) 624 711 ENDIF 625 712 IF( iom_use( "XNUM" ) ) THEN 626 !$OMP PARALLEL WORKSHARE 627 zw3d(:,:,:) = znum3d(:,:,:) * tmask(:,:,:) ! Number of particles on aggregats 628 !$OMP END PARALLEL WORKSHARE 713 !$OMP DO schedule(static) private(jk, jj, ji) 714 DO jk = 1, jpk 715 DO jj = 1, jpj 716 DO ji = 1, jpi 717 zw3d(ji,jj,jk) = znum3d(ji,jj,jk) * tmask(ji,jj,jk) ! Number of particles on aggregats 718 END DO 719 END DO 720 END DO 629 721 CALL iom_put( "XNUM" , zw3d ) 630 722 ENDIF 631 723 IF( iom_use( "WSC" ) ) THEN 632 !$OMP PARALLEL WORKSHARE 633 zw3d(:,:,:) = wsbio3(:,:,:) * tmask(:,:,:) ! Sinking speed of carbon particles 634 !$OMP END PARALLEL WORKSHARE 724 !$OMP DO schedule(static) private(jk, jj, ji) 725 DO jk = 1, jpk 726 DO jj = 1, jpj 727 DO ji = 1, jpi 728 zw3d(ji,jj,jk) = wsbio3(ji,jj,jk) * tmask(ji,jj,jk) ! Sinking speed of carbon particles 729 END DO 730 END DO 731 END DO 635 732 CALL iom_put( "WSC" , zw3d ) 636 733 ENDIF 637 734 IF( iom_use( "WSN" ) ) THEN 638 !$OMP PARALLEL WORKSHARE 639 zw3d(:,:,:) = wsbio4(:,:,:) * tmask(:,:,:) ! Sinking speed of particles number 640 !$OMP END PARALLEL WORKSHARE 735 !$OMP DO schedule(static) private(jk, jj, ji) 736 DO jk = 1, jpk 737 DO jj = 1, jpj 738 DO ji = 1, jpi 739 zw3d(ji,jj,jk) = wsbio4(ji,jj,jk) * tmask(ji,jj,jk) ! Sinking speed of particles number 740 END DO 741 END DO 742 END DO 641 743 CALL iom_put( "WSN" , zw3d ) 642 744 ENDIF … … 647 749 IF( ln_diatrc ) THEN 648 750 zfact = 1.e3 * rfact2r 649 !$OMP PARALLEL WORKSHARE 650 trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,ik100) * zfact * tmask(:,:,1) 651 trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,ik100) * zfact * tmask(:,:,1) 652 trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,ik100) * zfact * tmask(:,:,1) 653 trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,ik100) * zfact * tmask(:,:,1) 654 trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,ik100) * zfact * tmask(:,:,1) 655 trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zfact * tmask(:,:,:) 656 trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zfact * tmask(:,:,:) 657 trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:) * zfact * tmask(:,:,:) 658 trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:) * zfact * tmask(:,:,:) 659 trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d (:,:,:) * tmask(:,:,:) 660 trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3 (:,:,:) * tmask(:,:,:) 661 trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) * tmask(:,:,:) 662 !$OMP END PARALLEL WORKSHARE 751 !$OMP PARALLEL 752 !$OMP DO schedule(static) private(jj, ji) 753 DO jj = 1, jpj 754 DO ji = 1, jpi 755 trc2d(ji,jj ,jp_pcs0_2d + 4) = sinking (ji,jj,ik100) * zfact * tmask(ji,jj,1) 756 trc2d(ji,jj ,jp_pcs0_2d + 5) = sinking2(ji,jj,ik100) * zfact * tmask(ji,jj,1) 757 trc2d(ji,jj ,jp_pcs0_2d + 6) = sinkfer (ji,jj,ik100) * zfact * tmask(ji,jj,1) 758 trc2d(ji,jj ,jp_pcs0_2d + 7) = sinksil (ji,jj,ik100) * zfact * tmask(ji,jj,1) 759 trc2d(ji,jj ,jp_pcs0_2d + 8) = sinkcal (ji,jj,ik100) * zfact * tmask(ji,jj,1) 760 END DO 761 END DO 762 !$OMP DO schedule(static) private(jk, jj, ji) 763 DO jk = 1, jpk 764 DO jj = 1, jpj 765 DO ji = 1, jpi 766 trc3d(ji,jj,jk,jp_pcs0_3d + 11) = sinking (ji,jj,jk) * zfact * tmask(ji,jj,jk) 767 trc3d(ji,jj,jk,jp_pcs0_3d + 12) = sinking2(ji,jj,jk) * zfact * tmask(ji,jj,jk) 768 trc3d(ji,jj,jk,jp_pcs0_3d + 13) = sinksil (ji,jj,jk) * zfact * tmask(ji,jj,jk) 769 trc3d(ji,jj,jk,jp_pcs0_3d + 14) = sinkcal (ji,jj,jk) * zfact * tmask(ji,jj,jk) 770 trc3d(ji,jj,jk,jp_pcs0_3d + 15) = znum3d (ji,jj,jk) * tmask(ji,jj,jk) 771 trc3d(ji,jj,jk,jp_pcs0_3d + 16) = wsbio3 (ji,jj,jk) * tmask(ji,jj,jk) 772 trc3d(ji,jj,jk,jp_pcs0_3d + 17) = wsbio4 (ji,jj,jk) * tmask(ji,jj,jk) 773 END DO 774 END DO 775 END DO 776 !$OMP END PARALLEL 663 777 ENDIF 664 778 ENDIF … … 890 1004 891 1005 IF( lk_degrad ) THEN 892 !$OMP PARALLEL WORKSHARE 893 zwsink2(:,:,:) = zwsink2(:,:,:) * facvol(:,:,:) 894 !$OMP END PARALLEL WORKSHARE 1006 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 1007 DO jk = 1, jpk 1008 DO jj = 1, jpj 1009 DO ji = 1, jpi 1010 zwsink2(ji,jj,jk) = zwsink2(ji,jj,jk) * facvol(ji,jj,jk) 1011 END DO 1012 END DO 1013 END DO 895 1014 ENDIF 896 1015 -
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90
r7037 r7508 143 143 ! 144 144 !$OMP PARALLEL 145 !$OMP WORKSHARE 146 xnegtr(:,:,:) = 1.e0 147 !$OMP END WORKSHARE 145 !$OMP DO schedule(static) private(jk, jj, ji) 146 DO jk = 1, jpk 147 DO jj = 1, jpj 148 DO ji = 1, jpi 149 xnegtr(ji,jj,jk) = 1.e0 150 END DO 151 END DO 152 END DO 148 153 DO jn = jp_pcs0, jp_pcs1 149 154 !$OMP DO schedule(static) private(jk, jj, ji, ztra) … … 406 411 CALL iom_get( numrtr, jpdom_autoglo, 'Silicamax' , xksimax(:,:) ) 407 412 ELSE 408 !$OMP PARALLEL WORKSHARE 409 xksimax(:,:) = xksi(:,:) 410 !$OMP END PARALLEL WORKSHARE 413 !$OMP PARALLEL DO schedule(static) private(jj, ji) 414 DO jj = 1, jpj 415 DO ji = 1, jpi 416 xksimax(ji,jj) = xksi(ji,jj) 417 END DO 418 END DO 411 419 ENDIF 412 420 ! … … 462 470 ! set total alkalinity, phosphate, nitrate & silicate 463 471 zarea = 1._wp / glob_sum( cvol(:,:,:) ) * 1e6 464 !$OMP PARALLEL 465 !$OMP DO schedule(static) private(jk,jj,ji)472 473 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 466 474 DO jk = 1, jpk 467 475 DO jj = 1, jpj … … 474 482 END DO 475 483 END DO 476 !$OMP SINGLE 484 477 485 zalksumn = glob_sum( zctrn_jptal(:,:,:) ) * zarea 478 486 zpo4sumn = glob_sum( zctrn_jppo4(:,:,:) ) * zarea * po4r 479 487 zno3sumn = glob_sum( zctrn_jppo3(:,:,:) ) * zarea * rno3 480 488 zsilsumn = glob_sum( zctrn_jpsil(:,:,:) ) * zarea 481 !$OMP END SINGLE 482 483 !$OMP DO schedule(static) private(jk,jj,ji) 489 490 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 484 491 DO jk = 1, jpk 485 492 DO jj = 1, jpj … … 492 499 END DO 493 500 END DO 494 !$OMP END DO NOWAIT495 !$OMP END PARALLEL496 501 497 502 IF(lwp) THEN … … 503 508 ! 504 509 IF( .NOT. ln_top_euler ) THEN 505 !$OMP PARALLEL 506 !$OMP DO schedule(static) private(jk,jj,ji) 510 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 507 511 DO jk = 1, jpk 508 512 DO jj = 1, jpj … … 515 519 END DO 516 520 END DO 517 !$OMP SINGLE 521 518 522 zalksumb = glob_sum( zctrb_jptal(:,:,:) ) * zarea 519 523 zpo4sumb = glob_sum( zctrb_jppo4(:,:,:) ) * zarea * po4r 520 524 zno3sumb = glob_sum( zctrb_jppo3(:,:,:) ) * zarea * rno3 521 zsilsumb = glob_sum( zctrb_jpsil(:,:,:) ) * zarea 522 !$OMP END SINGLE 523 524 !$OMP DO schedule(static) private(jk,jj,ji) 525 zsilsumb = glob_sum( zctrb_jpsil(:,:,:) ) * zarea 526 527 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 525 528 DO jk = 1, jpk 526 529 DO jj = 1, jpj … … 533 536 END DO 534 537 END DO 535 !$OMP END DO NOWAIT536 !$OMP END PARALLEL537 538 538 539 IF(lwp) THEN
Note: See TracChangeset
for help on using the changeset viewer.