- Timestamp:
- 2016-12-19T13:15:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
r7037 r7508 129 129 130 130 !$OMP PARALLEL 131 !$OMP WORKSHARE 132 zqnsoce(:,:) = qns(:,:) 133 !$OMP END WORKSHARE NOWAIT 131 !$OMP DO schedule(static) private(jj, ji) 132 DO jj = 1, jpj 133 DO ji = 1, jpi 134 zqnsoce(ji,jj) = qns(ji,jj) 135 END DO 136 END DO 137 !$OMP END DO NOWAIT 134 138 !$OMP DO schedule(static) private(jj,ji,zinda,ifvt,i1mfr,idfr,iflt,ial,iadv,ifral,ifrdv,zqsr,zqns,zqhc,zemp,zemp_snw,zfmm,zfsalt,zcd) 135 139 DO jj = 1, jpj … … 239 243 ! !------------------------------------------! 240 244 IF( nn_ice_embd /= 0 ) THEN ! embedded sea-ice (mass required) 241 !$OMP PARALLEL WORKSHARE 242 snwice_mass_b(:,:) = snwice_mass(:,:) ! save mass from the previous ice time step 245 !$OMP PARALLEL DO schedule(static) private(jj, ji) 246 DO jj = 1, jpj 247 DO ji = 1, jpi 248 snwice_mass_b(ji,jj) = snwice_mass(ji,jj) ! save mass from the previous ice time step 243 249 ! ! new mass per unit area 244 snwice_mass ( :,:) = tms(:,:) * ( rhosn * hsnif(:,:) + rhoic * hicif(:,:) ) * ( 1.0 - frld(:,:) )250 snwice_mass (ji,jj) = tms(ji,jj) * ( rhosn * hsnif(ji,jj) + rhoic * hicif(ji,jj) ) * ( 1.0 - frld(ji,jj) ) 245 251 ! ! time evolution of snow+ice mass 246 snwice_fmass (:,:) = ( snwice_mass(:,:) - snwice_mass_b(:,:) ) / rdt_ice 247 !$OMP END PARALLEL WORKSHARE 252 snwice_fmass (ji,jj) = ( snwice_mass(ji,jj) - snwice_mass_b(ji,jj) ) / rdt_ice 253 END DO 254 END DO 248 255 ENDIF 249 256 … … 261 268 262 269 IF( ln_cpl) THEN 263 !$OMP PARALLEL WORKSHARE 264 tn_ice(:,:,1) = sist(:,:) ! sea-ice surface temperature 265 ht_i(:,:,1) = hicif(:,:) 266 ht_s(:,:,1) = hsnif(:,:) 267 a_i(:,:,1) = fr_i(:,:) 268 !$OMP END PARALLEL WORKSHARE 270 !$OMP PARALLEL DO schedule(static) private(jj, ji) 271 DO jj = 1, jpj 272 DO ji = 1, jpi 273 tn_ice(ji,jj,1) = sist(ji,jj) ! sea-ice surface temperature 274 ht_i(ji,jj,1) = hicif(ji,jj) 275 ht_s(ji,jj,1) = hsnif(ji,jj) 276 a_i(ji,jj,1) = fr_i(ji,jj) 277 END DO 278 END DO 269 279 ! ! Computation of snow/ice and ocean albedo 270 280 CALL albedo_ice( tn_ice, ht_i, ht_s, zalbp, zalb ) 271 !$OMP PARALLEL WORKSHARE 272 alb_ice(:,:,1) = 0.5 * ( zalbp(:,:,1) + zalb (:,:,1) ) ! Ice albedo (mean clear and overcast skys) 273 !$OMP END PARALLEL WORKSHARE 281 !$OMP PARALLEL DO schedule(static) private(jj, ji) 282 DO jj = 1, jpj 283 DO ji = 1, jpi 284 alb_ice(ji,jj,1) = 0.5 * ( zalbp(ji,jj,1) + zalb (ji,jj,1) ) ! Ice albedo (mean clear and overcast skys) 285 END DO 286 END DO 274 287 IF( iom_use('icealb_cea' ) ) CALL iom_put( 'icealb_cea', alb_ice(:,:,1) * fr_i(:,:) ) ! ice albedo 275 288 ENDIF … … 355 368 CALL lbc_lnk( taum, 'T', 1. ) 356 369 ! 357 !$OMP PARALLEL WORKSHARE 358 utau_oce(:,:) = utau(:,:) !* save the air-ocean stresses at ice time-step 359 vtau_oce(:,:) = vtau(:,:) 360 !$OMP END PARALLEL WORKSHARE 370 !$OMP PARALLEL DO schedule(static) private(jj, ji) 371 DO jj = 1, jpj 372 DO ji = 1, jpi 373 utau_oce(ji,jj) = utau(ji,jj) !* save the air-ocean stresses at ice time-step 374 vtau_oce(ji,jj) = vtau(ji,jj) 375 END DO 376 END DO 361 377 ! 362 378 ENDIF … … 418 434 CALL lbc_lnk( taum, 'T', 1. ) ; CALL lbc_lnk( tmod_io, 'T', 1. ) 419 435 ! 420 !$OMP PARALLEL WORKSHARE 421 utau_oce(:,:) = utau(:,:) !* save the air-ocean stresses at ice time-step 422 vtau_oce(:,:) = vtau(:,:) 423 !$OMP END PARALLEL WORKSHARE 436 !$OMP PARALLEL DO schedule(static) private(jj, ji) 437 DO jj = 1, jpj 438 DO ji = 1, jpi 439 utau_oce(ji,jj) = utau(ji,jj) !* save the air-ocean stresses at ice time-step 440 vtau_oce(ji,jj) = vtau(ji,jj) 441 END DO 442 END DO 424 443 ! 425 444 ENDIF … … 475 494 r1_rdtice = 1._wp / rdt_ice 476 495 ! 477 !$OMP PARALLEL WORKSHARE 478 soce_0(:,:) = soce ! constant SSS and ice salinity used in levitating sea-ice case 479 sice_0(:,:) = sice 480 !$OMP END PARALLEL WORKSHARE 496 !$OMP PARALLEL DO schedule(static) private(jj, ji) 497 DO jj = 1, jpj 498 DO ji = 1, jpi 499 soce_0(ji,jj) = soce ! constant SSS and ice salinity used in levitating sea-ice case 500 sice_0(ji,jj) = sice 501 END DO 502 END DO 481 503 ! 482 504 IF( cp_cfg == "orca" ) THEN ! decrease ocean & ice reference salinities in the Baltic sea … … 489 511 ! ! embedded sea ice 490 512 IF( nn_ice_embd /= 0 ) THEN ! mass exchanges between ice and ocean (case 1 or 2) set the snow+ice mass 491 !$OMP PARALLEL WORKSHARE 492 snwice_mass (:,:) = tms(:,:) * ( rhosn * hsnif(:,:) + rhoic * hicif(:,:) ) * ( 1.0 - frld(:,:) ) 493 snwice_mass_b(:,:) = snwice_mass(:,:) 494 !$OMP END PARALLEL WORKSHARE 513 !$OMP PARALLEL DO schedule(static) private(jj, ji) 514 DO jj = 1, jpj 515 DO ji = 1, jpi 516 snwice_mass (ji,jj) = tms(ji,jj) * ( rhosn * hsnif(ji,jj) + rhoic * hicif(ji,jj) ) * ( 1.0 - frld(ji,jj) ) 517 snwice_mass_b(ji,jj) = snwice_mass(ji,jj) 518 END DO 519 END DO 495 520 ELSE 496 !$OMP PARALLEL WORKSHARE 497 snwice_mass (:,:) = 0.e0 ! no mass exchanges 498 snwice_mass_b(:,:) = 0.e0 ! no mass exchanges 499 snwice_fmass (:,:) = 0.e0 ! no mass exchanges 500 !$OMP END PARALLEL WORKSHARE 521 !$OMP PARALLEL DO schedule(static) private(jj, ji) 522 DO jj = 1, jpj 523 DO ji = 1, jpi 524 snwice_mass (ji,jj) = 0.e0 ! no mass exchanges 525 snwice_mass_b(ji,jj) = 0.e0 ! no mass exchanges 526 snwice_fmass (ji,jj) = 0.e0 ! no mass exchanges 527 END DO 528 END DO 501 529 ENDIF 502 530 IF( nn_ice_embd == 2 .AND. & ! full embedment (case 2) & no restart : 503 531 & .NOT.ln_rstart ) THEN ! deplete the initial ssh below sea-ice area 504 !$OMP PARALLEL WORKSHARE 505 sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 506 sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 507 !$OMP END PARALLEL WORKSHARE 532 !$OMP PARALLEL DO schedule(static) private(jj, ji) 533 DO jj = 1, jpj 534 DO ji = 1, jpi 535 sshn(ji,jj) = sshn(ji,jj) - snwice_mass(ji,jj) * r1_rau0 536 sshb(ji,jj) = sshb(ji,jj) - snwice_mass(ji,jj) * r1_rau0 537 END DO 538 END DO 508 539 !!gm I really don't like this staff here... Find a way to put that elsewhere or differently 509 540 !!gm … … 516 547 e3t_b(:,:,jk) = e3t_0(:,:,jk)*( 1._wp + sshb(:,:)*tmask(:,:,1)/(ht_0(:,:) + 1.0 - tmask(:,:,1)) ) 517 548 end do 518 !$OMP WORKSHARE 519 e3t_a(:,:,:) = e3t_b(:,:,:) 520 !$OMP END WORKSHARE NOWAIT 549 !$OMP DO schedule(static) private(jk, jj, ji) 550 DO jk = 1, jpk 551 DO jj = 1, jpj 552 DO ji = 1, jpi 553 e3t_a(ji,jj,jk) = e3t_b(ji,jj,jk) 554 END DO 555 END DO 556 END DO 521 557 !$OMP END PARALLEL 522 558 ! Reconstruction of all vertical scale factors at now and before time steps … … 535 571 ! ! t- and w- points depth 536 572 !$OMP PARALLEL 537 !$OMP WORKSHARE 538 gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 539 gdepw_n(:,:,1) = 0.0_wp 540 gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 541 !$OMP END WORKSHARE 573 !$OMP DO schedule(static) private(jj, ji) 574 DO jj = 1, jpj 575 DO ji = 1, jpi 576 gdept_n(ji,jj,1) = 0.5_wp * e3w_n(ji,jj,1) 577 gdepw_n(ji,jj,1) = 0.0_wp 578 gde3w_n(ji,jj,1) = gdept_n(ji,jj,1) - sshn(ji,jj) 579 END DO 580 END DO 542 581 DO jk = 2, jpk 543 582 !$OMP DO schedule(static) private(jj,ji)
Note: See TracChangeset
for help on using the changeset viewer.