Changeset 7753 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90
- Timestamp:
- 2017-03-03T12:46:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90
r7698 r7753 89 89 ! Initialisation of temprary arrys 90 90 IF( ln_p4z ) THEN 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 zremipoc(ji,jj,jk) = xremip 96 zremigoc(ji,jj,jk) = xremip 97 END DO 98 END DO 99 END DO 91 zremipoc(:,:,:) = xremip 92 zremigoc(:,:,:) = xremip 100 93 ELSE ! ln_p5z 101 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 102 DO jk = 1, jpk 103 DO jj = 1, jpj 104 DO ji = 1, jpi 105 zremipoc(ji,jj,jk) = xremipc 106 zremigoc(ji,jj,jk) = xremipc 107 END DO 108 END DO 109 END DO 94 zremipoc(:,:,:) = xremipc 95 zremigoc(:,:,:) = xremipc 110 96 ENDIF 111 !$OMP PARALLEL 112 !$OMP DO schedule(static) private(jk, jj, ji) 113 DO jk = 1, jpk 114 DO jj = 1, jpj 115 DO ji = 1, jpi 116 zorem3 (ji,jj,jk) = 0. 117 orem (ji,jj,jk) = 0. 118 ztremint(ji,jj,jk) = 0. 119 END DO 120 END DO 97 zorem3(:,:,:) = 0. 98 orem (:,:,:) = 0. 99 ztremint(:,:,:) = 0. 100 101 DO jn = 1, jcpoc 102 alphag(:,:,:,jn) = alphan(jn) 103 alphap(:,:,:,jn) = alphan(jn) 121 104 END DO 122 !OMP END DO NOWAIT123 DO jn = 1, jcpoc124 !$OMP DO schedule(static) private(jk, jj, ji)125 DO jk = 1, jpk126 DO jj = 1, jpj127 DO ji = 1, jpi128 alphag(ji,jj,jk,jn) = alphan(jn)129 alphap(ji,jj,jk,jn) = alphan(jn)130 END DO131 END DO132 END DO133 END DO134 !$OMP END PARALLEL135 105 136 106 ! ----------------------------------------------------------------------- … … 140 110 ! ----------------------------------------------------------------------- 141 111 DO jk = 2, jpkm1 142 !$OMP PARALLEL DO schedule(static) private(jj,ji,zdep,alphat,remint,zsizek1,zsizek,zpoc,jn)143 112 DO jj = 1, jpj 144 113 DO ji = 1, jpi … … 151 120 ! 152 121 IF( gdept_n(ji,jj,jk) > zdep ) THEN 122 alphat = 0. 123 remint = 0. 124 ! 153 125 zsizek1 = e3t_n(ji,jj,jk-1) / 2. / (wsbio4(ji,jj,jk-1) + rtrn) * tgfunc(ji,jj,jk-1) 154 126 zsizek = e3t_n(ji,jj,jk) / 2. / (wsbio4(ji,jj,jk) + rtrn) * tgfunc(ji,jj,jk) … … 183 155 & + prodgoc(ji,jj,jk) * alphan(jn) / tgfunc(ji,jj,jk) / reminp(jn) & 184 156 & * ( 1. - exp( -reminp(jn) * zsizek ) ) * rday / rfact2 185 157 alphat = alphat + alphag(ji,jj,jk,jn) 158 remint = remint + alphag(ji,jj,jk,jn) * reminp(jn) 186 159 END DO 187 160 ELSE … … 201 174 & - exp( -reminp(jn) * zsizek1 ) ) * exp( -reminp(jn) * zsizek ) + prodgoc(ji,jj,jk) & 202 175 & / tgfunc(ji,jj,jk) * ( 1. - exp( -reminp(jn) * zsizek ) ) ) * rday / rfact2 / reminp(jn) 176 alphat = alphat + alphag(ji,jj,jk,jn) 177 remint = remint + alphag(ji,jj,jk,jn) * reminp(jn) 203 178 END DO 204 179 ENDIF 205 !206 alphat = SUM(alphag(ji,jj,jk,:))207 remint = SUM(alphag(ji,jj,jk,:) * reminp(:))208 180 ! 209 181 DO jn = 1, jcpoc … … 221 193 END DO 222 194 223 IF( ln_p4z ) THEN 224 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 225 DO jk = 1, jpk 226 DO jj = 1, jpj 227 DO ji = 1, jpi 228 zremigoc(ji,jj,jk) = MIN( xremip , ztremint(ji,jj,jk) ) 229 END DO 230 END DO 231 END DO 232 ELSE 233 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 234 DO jk = 1, jpk 235 DO jj = 1, jpj 236 DO ji = 1, jpi 237 zremigoc(ji,jj,jk) = MIN( xremipc, ztremint(ji,jj,jk) ) 238 END DO 239 END DO 240 END DO 195 IF( ln_p4z ) THEN ; zremigoc(:,:,:) = MIN( xremip , ztremint(:,:,:) ) 196 ELSE ; zremigoc(:,:,:) = MIN( xremipc, ztremint(:,:,:) ) 241 197 ENDIF 242 198 243 199 IF( ln_p4z ) THEN 244 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremig,zorem2,zofer2,zofer3)245 200 DO jk = 1, jpkm1 246 201 DO jj = 1, jpj … … 266 221 END DO 267 222 ELSE 268 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremig,zopoc2,zofer2,zopon2,zopop2)269 223 DO jk = 1, jpkm1 270 224 DO jj = 1, jpj … … 312 266 ! ------------------------------------------------------------------- 313 267 ! 314 !$OMP PARALLEL 315 !$OMP DO schedule(static) private(jj,ji) 316 DO jj = 1, jpj 317 DO ji = 1, jpi 318 totprod(ji,jj) = 0. 319 totthick(ji,jj) = 0. 320 totcons(ji,jj) = 0. 321 END DO 322 END DO 268 totprod(:,:) = 0. 269 totthick(:,:) = 0. 270 totcons(:,:) = 0. 323 271 ! intregrated production and consumption of POC in the mixed layer 324 272 ! ---------------------------------------------------------------- 325 273 ! 326 274 DO jk = 1, jpkm1 327 !$OMP DO schedule(static) private(jj,ji,zdep)328 275 DO jj = 1, jpj 329 276 DO ji = 1, jpi … … 339 286 END DO 340 287 END DO 341 !$OMP END PARALLEL342 288 343 289 ! Computation of the lability spectrum in the mixed layer. In the mixed 344 290 ! layer, this spectrum is supposed to be uniform. 345 291 ! --------------------------------------------------------------------- 346 !$OMP DO schedule(static) private(jk,jj,ji,zdep,alphat,remint,jn)347 292 DO jk = 1, jpkm1 348 293 DO jj = 1, jpj … … 350 295 IF (tmask(ji,jj,jk) == 1.) THEN 351 296 zdep = hmld(ji,jj) 297 alphat = 0.0 298 remint = 0.0 352 299 IF( gdept_n(ji,jj,jk) <= zdep ) THEN 353 300 DO jn = 1, jcpoc … … 356 303 alphap(ji,jj,jk,jn) = totprod(ji,jj) * alphan(jn) / ( reminp(jn) & 357 304 & * totthick(ji,jj) + totcons(ji,jj) + wsbio + rtrn ) 305 alphat = alphat + alphap(ji,jj,jk,jn) 358 306 END DO 359 alphat = SUM(alphap(ji,jj,jk,:))360 307 DO jn = 1, jcpoc 361 308 alphap(ji,jj,jk,jn) = alphap(ji,jj,jk,jn) / ( alphat + rtrn) 309 remint = remint + alphap(ji,jj,jk,jn) * reminp(jn) 362 310 END DO 363 remint = SUM(alphap(ji,jj,jk,:) * reminp(:))364 311 ! Mean remineralization rate in the mixed layer 365 312 ztremint(ji,jj,jk) = MAX( 0., remint ) … … 370 317 END DO 371 318 ! 372 IF( ln_p4z ) THEN 373 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 374 DO jk = 1, jpk 375 DO jj = 1, jpj 376 DO ji = 1, jpi 377 zremipoc(ji,jj,jk) = MIN( xremip , ztremint(ji,jj,jk) ) 378 END DO 379 END DO 380 END DO 381 ELSE 382 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 383 DO jk = 1, jpk 384 DO jj = 1, jpj 385 DO ji = 1, jpi 386 zremipoc(ji,jj,jk) = MIN( xremipc , ztremint(ji,jj,jk) ) 387 END DO 388 END DO 389 END DO 319 IF( ln_p4z ) THEN ; zremipoc(:,:,:) = MIN( xremip , ztremint(:,:,:) ) 320 ELSE ; zremipoc(:,:,:) = MIN( xremipc, ztremint(:,:,:) ) 390 321 ENDIF 391 322 … … 399 330 ! 400 331 DO jk = 2, jpkm1 401 !$OMP PARALLEL DO schedule(static) private(jj,ji,zdep,alphat,remint,zsizek1,zsizek,zpoc,jn)402 332 DO jj = 1, jpj 403 333 DO ji = 1, jpi … … 405 335 zdep = hmld(ji,jj) 406 336 IF( gdept_n(ji,jj,jk) > zdep ) THEN 337 alphat = 0. 338 remint = 0. 407 339 ! 408 340 ! the scale factors are corrected with temperature … … 430 362 & * zsizek ) ) 431 363 alphap(ji,jj,jk,jn) = MAX( 0., alphap(ji,jj,jk,jn) ) 364 alphat = alphat + alphap(ji,jj,jk,jn) 432 365 END DO 433 366 ELSE … … 452 385 & - exp( -reminp(jn) * zsizek ) ) 453 386 alphap(ji,jj,jk,jn) = max(0., alphap(ji,jj,jk,jn) ) 387 alphat = alphat + alphap(ji,jj,jk,jn) 454 388 END DO 455 389 ENDIF 456 alphat = SUM(alphap(ji,jj,jk,:))457 390 ! Normalization of the lability spectrum so that the 458 391 ! integral is equal to 1 459 392 DO jn = 1, jcpoc 460 393 alphap(ji,jj,jk,jn) = alphap(ji,jj,jk,jn) / ( alphat + rtrn) 394 remint = remint + alphap(ji,jj,jk,jn) * reminp(jn) 461 395 END DO 462 remint = SUM(alphap(ji,jj,jk,:) * reminp(:))463 396 ! Mean remineralization rate in the water column 464 397 ztremint(ji,jj,jk) = MAX( 0., remint ) … … 469 402 END DO 470 403 471 IF( ln_p4z ) THEN 472 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 473 DO jk = 1, jpk 474 DO jj = 1, jpj 475 DO ji = 1, jpi 476 zremipoc(ji,jj,jk) = MIN( xremip , ztremint(ji,jj,jk) ) 477 END DO 478 END DO 479 END DO 480 ELSE 481 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 482 DO jk = 1, jpk 483 DO jj = 1, jpj 484 DO ji = 1, jpi 485 zremipoc(ji,jj,jk) = MIN( xremipc , ztremint(ji,jj,jk) ) 486 END DO 487 END DO 488 END DO 404 IF( ln_p4z ) THEN ; zremipoc(:,:,:) = MIN( xremip , ztremint(:,:,:) ) 405 ELSE ; zremipoc(:,:,:) = MIN( xremipc, ztremint(:,:,:) ) 489 406 ENDIF 490 407 491 408 IF( ln_p4z ) THEN 492 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremip,zorem,zofer)493 409 DO jk = 1, jpkm1 494 410 DO jj = 1, jpj … … 511 427 END DO 512 428 ELSE 513 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji,zremip,zopoc,zopon,zopop,zofer)514 429 DO jk = 1, jpkm1 515 430 DO jj = 1, jpj … … 572 487 !! 573 488 !!---------------------------------------------------------------------- 574 INTEGER :: jn , jk, jj, ji489 INTEGER :: jn 575 490 REAL(wp) :: remindelta, reminup, remindown 576 491 INTEGER :: ifault … … 642 557 643 558 DO jn = 1, jcpoc 644 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 645 DO jk = 1, jpk 646 DO jj = 1, jpj 647 DO ji = 1, jpi 648 alphap(ji,jj,jk,jn) = alphan(jn) 649 END DO 650 END DO 651 END DO 559 alphap(:,:,:,jn) = alphan(jn) 652 560 END DO 653 561
Note: See TracChangeset
for help on using the changeset viewer.