Changeset 13458 for NEMO/trunk/src/SWE/domvvl.F90
- Timestamp:
- 2020-09-11T11:22:24+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/SWE/domvvl.F90
r13295 r13458 276 276 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN 277 277 IF( nn_cfg == 3 ) THEN ! ORCA2: Suppress ztilde in the Foxe Basin for ORCA2 278 ii0 = 103 ; ii1 = 111279 ij0 = 128 ; ij1 = 135 ;278 ii0 = 103 + nn_hls - 1 ; ii1 = 111 + nn_hls - 1 279 ij0 = 128 + nn_hls ; ij1 = 135 + nn_hls 280 280 frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.0_wp 281 281 frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0_wp / rn_Dt … … 415 415 LOGICAL :: ll_do_bclinic ! local logical 416 416 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 417 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 417 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ze3t 418 LOGICAL , DIMENSION(:,:,:), ALLOCATABLE :: llmsk 418 419 !!---------------------------------------------------------------------- 419 420 ! … … 528 529 ! Maximum deformation control 529 530 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 531 ALLOCATE( ze3t(jpi,jpj,jpk), llmsk(jpi,jpj,jpk) ) 530 532 ze3t(:,:,jpk) = 0._wp 531 533 DO jk = 1, jpkm1 532 534 ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 533 535 END DO 534 z_tmax = MAXVAL( ze3t(:,:,:) ) 535 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 536 z_tmin = MINVAL( ze3t(:,:,:) ) 537 CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 536 ! 537 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 538 llmsk(Nie1: jpi,:,:) = .FALSE. 539 llmsk(:, 1:Njs1,:) = .FALSE. 540 llmsk(:,Nje1: jpj,:) = .FALSE. 541 ! 542 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 543 z_tmax = MAXVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 544 z_tmin = MINVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 538 545 ! - ML - test: for the moment, stop simulation for too large e3_t variations 539 546 IF( ( z_tmax > rn_zdef_max ) .OR. ( z_tmin < - rn_zdef_max ) ) THEN 540 IF( lk_mpp ) THEN 541 CALL mpp_maxloc( 'domvvl', ze3t, tmask, z_tmax, ijk_max ) 542 CALL mpp_minloc( 'domvvl', ze3t, tmask, z_tmin, ijk_min ) 543 ELSE 544 ijk_max = MAXLOC( ze3t(:,:,:) ) 545 ijk_max(1) = ijk_max(1) + nimpp - 1 546 ijk_max(2) = ijk_max(2) + njmpp - 1 547 ijk_min = MINLOC( ze3t(:,:,:) ) 548 ijk_min(1) = ijk_min(1) + nimpp - 1 549 ijk_min(2) = ijk_min(2) + njmpp - 1 550 ENDIF 547 CALL mpp_maxloc( 'domvvl', ze3t, llmsk, z_tmax, ijk_max ) 548 CALL mpp_minloc( 'domvvl', ze3t, llmsk, z_tmin, ijk_min ) 551 549 IF (lwp) THEN 552 550 WRITE(numout, *) 'MAX( tilde_e3t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax … … 557 555 ENDIF 558 556 ENDIF 557 DEALLOCATE( ze3t, llmsk ) 559 558 ! - ML - end test 560 559 ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below … … 697 696 LOGICAL :: ll_do_bclinic ! local logical 698 697 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 699 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t700 698 !!---------------------------------------------------------------------- 701 699 !
Note: See TracChangeset
for help on using the changeset viewer.