- Timestamp:
- 2016-06-28T11:53:56+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r6492 r6748 325 325 ! need to be like this to compute the pressure gradient with ISF. If not, level beneath the ISF are not aligned (sum(e3t) /= depth) 326 326 ! define e3t_0 and e3w_0 as the differences between gdept and gdepw respectively 327 !$OMP PARALLEL DO schedule(static) private(jk) 327 328 DO jk = 1, jpkm1 328 329 e3t_1d(jk) = gdepw_1d(jk+1)-gdepw_1d(jk) 329 330 END DO 330 331 e3t_1d(jpk) = e3t_1d(jpk-1) ! we don't care because this level is masked in NEMO 331 332 !$OMP PARALLEL DO schedule(static) private(jk) 332 333 DO jk = 2, jpk 333 334 e3w_1d(jk) = gdept_1d(jk) - gdept_1d(jk-1) … … 420 421 IF( rn_bathy > 0.01 ) THEN 421 422 IF(lwp) WRITE(numout,*) ' Depth = rn_bathy read in namelist' 423 !$OMP PARALLEL WORKSHARE 422 424 zdta(:,:) = rn_bathy 425 !$OMP END PARALLEL WORKSHARE 423 426 IF( ln_sco ) THEN ! s-coordinate (zsc ): idta()=jpk 427 !$OMP PARALLEL WORKSHARE 424 428 idta(:,:) = jpkm1 429 !$OMP END PARALLEL WORKSHARE 425 430 ELSE ! z-coordinate (zco or zps): step-like topography 431 !$OMP PARALLEL WORKSHARE 426 432 idta(:,:) = jpkm1 433 !$OMP END PARALLEL WORKSHARE 427 434 DO jk = 1, jpkm1 428 435 WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) ) idta(:,:) = jk … … 431 438 ELSE 432 439 IF(lwp) WRITE(numout,*) ' Depth = depthw(jpkm1)' 440 !$OMP PARALLEL WORKSHARE 433 441 idta(:,:) = jpkm1 ! before last level 434 442 zdta(:,:) = gdepw_1d(jpk) ! last w-point depth 443 !$OMP END PARALLEL WORKSHARE 435 444 h_oce = gdepw_1d(jpk) 436 445 ENDIF … … 449 458 IF(lwp) WRITE(numout,*) ' background ocean depth = ', h_oce , ' meters' 450 459 ! 460 !$OMP PARALLEL DO schedule(static) private(jj, ji, zi, zj) 451 461 DO jj = 1, jpjdta ! zdta : 452 462 DO ji = 1, jpidta … … 458 468 ! ! idta : 459 469 IF( ln_sco ) THEN ! s-coordinate (zsc ): idta()=jpk 470 !$OMP PARALLEL WORKSHARE 460 471 idta(:,:) = jpkm1 472 !$OMP END PARALLEL WORKSHARE 461 473 ELSE ! z-coordinate (zco or zps): step-like topography 474 !$OMP PARALLEL WORKSHARE 462 475 idta(:,:) = jpkm1 476 !$OMP END PARALLEL WORKSHARE 463 477 DO jk = 1, jpkm1 464 478 WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) ) idta(:,:) = jk … … 469 483 ! ! Caution : idta on the global domain: use of jperio, not nperio 470 484 IF( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) THEN 485 !$OMP PARALLEL WORKSHARE 471 486 idta( : , 1 ) = -1 ; zdta( : , 1 ) = -1._wp 472 487 idta( : ,jpjdta) = 0 ; zdta( : ,jpjdta) = 0._wp 488 !$OMP END PARALLEL WORKSHARE 473 489 ELSEIF( jperio == 2 ) THEN 490 !$OMP PARALLEL WORKSHARE 474 491 idta( : , 1 ) = idta( : , 3 ) ; zdta( : , 1 ) = zdta( : , 3 ) 475 492 idta( : ,jpjdta) = 0 ; zdta( : ,jpjdta) = 0._wp 476 493 idta( 1 , : ) = 0 ; zdta( 1 , : ) = 0._wp 477 494 idta(jpidta, : ) = 0 ; zdta(jpidta, : ) = 0._wp 495 !$OMP END PARALLEL WORKSHARE 478 496 ELSE 479 497 ih = 0 ; zh = 0._wp 480 498 IF( ln_sco ) ih = jpkm1 ; IF( ln_sco ) zh = h_oce 499 !$OMP PARALLEL WORKSHARE 481 500 idta( : , 1 ) = ih ; zdta( : , 1 ) = zh 482 501 idta( : ,jpjdta) = ih ; zdta( : ,jpjdta) = zh 483 502 idta( 1 , : ) = ih ; zdta( 1 , : ) = zh 484 503 idta(jpidta, : ) = ih ; zdta(jpidta, : ) = zh 504 !$OMP END PARALLEL WORKSHARE 485 505 ENDIF 486 506 487 507 ! ! local domain level and meter bathymetries (mbathy,bathy) 508 !$OMP PARALLEL WORKSHARE 488 509 mbathy(:,:) = 0 ! set to zero extra halo points 489 510 bathy (:,:) = 0._wp ! (require for mpp case) 511 !$OMP END PARALLEL WORKSHARE 512 !$OMP PARALLEL DO schedule(static) private(jj, ji) 490 513 DO jj = 1, nlcj ! interior values 491 514 DO ji = 1, nlci … … 494 517 END DO 495 518 END DO 519 !$OMP PARALLEL WORKSHARE 496 520 risfdep(:,:)=0.e0 497 521 misfdep(:,:)=1 522 !$OMP END PARALLEL WORKSHARE 498 523 ! 499 524 DEALLOCATE( idta, zdta ) … … 507 532 CALL iom_get ( inum, jpdom_data, 'Bathy_level', bathy ) 508 533 CALL iom_close( inum ) 534 !$OMP PARALLEL WORKSHARE 509 535 mbathy(:,:) = INT( bathy(:,:) ) 510 536 ! initialisation isf variables 511 537 risfdep(:,:)=0._wp ; misfdep(:,:)=1 538 !$OMP END PARALLEL WORKSHARE 512 539 ! ! ===================== 513 540 IF( cp_cfg == "orca" .AND. jp_cfg == 2 ) THEN ! ORCA R2 configuration … … 547 574 ! 548 575 ! initialisation isf variables 576 !$OMP PARALLEL WORKSHARE 549 577 risfdep(:,:)=0._wp ; misfdep(:,:)=1 578 !$OMP END PARALLEL WORKSHARE 550 579 ! 551 580 IF ( ln_isfcav ) THEN … … 864 893 mikt(:,:) = MAX( misfdep(:,:) , 1 ) ! top k-index of T-level (=1) 865 894 ! ! top k-index of W-level (=mikt) 895 !$OMP PARALLEL DO schedule(static) private(jj, ji) 866 896 DO jj = 1, jpjm1 ! top k-index of U- (U-) level 867 897 DO ji = 1, jpim1 … … 897 927 IF( nn_timing == 1 ) CALL timing_start('zgr_zco') 898 928 ! 929 !$OMP PARALLEL DO schedule(static) private(jk) 899 930 DO jk = 1, jpk 900 931 gdept_0(:,:,jk) = gdept_1d(jk) … … 996 1027 997 1028 ! Scale factors and depth at T- and W-points 1029 !$OMP PARALLEL DO schedule(static) private(jk) 998 1030 DO jk = 1, jpk ! intitialization to the reference z-coordinate 999 1031 gdept_0(:,:,jk) = gdept_1d(jk) … … 1069 1101 ! 1070 1102 ! Scale factors and depth at U-, V-, UW and VW-points 1103 !$OMP PARALLEL DO schedule(static) private(jk) 1071 1104 DO jk = 1, jpk ! initialisation to z-scale factors 1072 1105 e3u_0 (:,:,jk) = e3t_1d(jk) … … 1076 1109 END DO 1077 1110 1111 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 1078 1112 DO jk = 1,jpk ! Computed as the minimum of neighbooring scale factors 1079 1113 DO jj = 1, jpjm1 … … 1114 1148 1115 1149 ! Scale factor at F-point 1150 !$OMP PARALLEL DO schedule(static) private(jk) 1116 1151 DO jk = 1, jpk ! initialisation to z-scale factors 1117 1152 e3f_0(:,:,jk) = e3t_1d(jk) 1118 1153 END DO 1154 !$OMP PARALLEL DO schedule(static) private(jk, jj, ji) 1119 1155 DO jk = 1, jpk ! Computed as the minimum of neighbooring V-scale factors 1120 1156 DO jj = 1, jpjm1 … … 1131 1167 !!gm bug ? : must be a do loop with mj0,mj1 1132 1168 ! 1169 !$OMP PARALLEL WORKSHARE 1133 1170 e3t_0(:,mj0(1),:) = e3t_0(:,mj0(2),:) ! we duplicate factor scales for jj = 1 and jj = 2 1134 1171 e3w_0(:,mj0(1),:) = e3w_0(:,mj0(2),:) … … 1136 1173 e3v_0(:,mj0(1),:) = e3v_0(:,mj0(2),:) 1137 1174 e3f_0(:,mj0(1),:) = e3f_0(:,mj0(2),:) 1138 1175 !$OMP END PARALLEL WORKSHARE 1139 1176 ! Control of the sign 1140 1177 IF( MINVAL( e3t_0 (:,:,:) ) <= 0._wp ) CALL ctl_stop( ' zgr_zps : e r r o r e3t_0 <= 0' ) … … 1161 1198 gde3w_0(:,:,1) = 0.5_wp * e3w_0(:,:,1) 1162 1199 DO jk = 2, jpk 1163 gde3w_0(:,:,jk) = gde3w_0(:,:,jk-1) + e3w_0(:,:,jk) 1200 !$OMP PARALLEL DO schedule(static) private(jj, ji) 1201 DO jj =1, jpj 1202 DO ji=1, jpi 1203 gde3w_0(ji,jj,jk) = gde3w_0(ji,jj,jk-1) + e3w_0(ji,jj,jk) 1204 END DO 1205 END DO 1164 1206 END DO 1165 1207 END IF
Note: See TracChangeset
for help on using the changeset viewer.