New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 5216 for branches/2015/dev_r5151_UKMO_ISF/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90 – NEMO

Ignore:
Timestamp:
2015-04-15T20:54:28+02:00 (9 years ago)
Author:
mathiot
Message:

ISF branch: minor changes in zpshde, sbcisf + bug correction in domzgr (e3wu) only if ice shelf

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5151_UKMO_ISF/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90

    r5200 r5216  
    969969      !! 
    970970      INTEGER  ::   ji, jj, jk       ! dummy loop indices 
    971       INTEGER  ::   ik, it          ! temporary integers 
     971      INTEGER  ::   ik, it, ikb, ikt ! temporary integers 
    972972      LOGICAL  ::   ll_print         ! Allow  control print for debugging 
    973973      REAL(wp) ::   ze3tp , ze3wp    ! Last ocean level thickness at T- and W-points 
     
    10931093         e3vw_0(:,:,jk) = e3w_1d(jk) 
    10941094      END DO 
     1095 
    10951096      DO jk = 1,jpk                         ! Computed as the minimum of neighbooring scale factors 
    10961097         DO jj = 1, jpjm1 
     
    11051106      IF ( ln_isfcav ) THEN 
    11061107      ! (ISF) define e3uw (adapted for 2 cells in the water column) 
    1107       ! Need to test if the modification of only mikt and mbkt levels is enough 
    1108          DO jk = 2,jpk                           
    1109             DO jj = 1, jpjm1  
    1110                DO ji = 1, fs_jpim1   ! vector opt.  
    1111                   e3uw_0(ji,jj,jk) = MIN( gdept_0(ji,jj,jk), gdept_0(ji+1,jj  ,jk) ) & 
    1112                     &   - MAX( gdept_0(ji,jj,jk-1), gdept_0(ji+1,jj  ,jk-1) ) 
    1113                   e3vw_0(ji,jj,jk) = MIN( gdept_0(ji,jj,jk), gdept_0(ji  ,jj+1,jk) ) & 
    1114                     &   - MAX( gdept_0(ji,jj,jk-1), gdept_0(ji  ,jj+1,jk-1) ) 
    1115                END DO  
    1116             END DO  
     1108         DO jj = 2, jpjm1  
     1109            DO ji = 2, fs_jpim1   ! vector opt.  
     1110               ikb = MAX(mbathy (ji,jj),mbathy (ji+1,jj)) 
     1111               ikt = MAX(misfdep(ji,jj),misfdep(ji+1,jj)) 
     1112               IF (ikb == ikt+1) e3uw_0(ji,jj,ikb) =  MIN( gdept_0(ji,jj,ikb  ), gdept_0(ji+1,jj  ,ikb  ) ) & 
     1113                                       &            - MAX( gdept_0(ji,jj,ikb-1), gdept_0(ji+1,jj  ,ikb-1) ) 
     1114               ikb = MAX(mbathy (ji,jj),mbathy (ji,jj+1)) 
     1115               ikt = MAX(misfdep(ji,jj),misfdep(ji,jj+1)) 
     1116               IF (ikb == ikt+1) e3vw_0(ji,jj,ikb) =  MIN( gdept_0(ji,jj,ikb  ), gdept_0(ji  ,jj+1,ikb  ) ) & 
     1117                                       &            - MAX( gdept_0(ji,jj,ikb-1), gdept_0(ji  ,jj+1,ikb-1) ) 
     1118            END DO 
    11171119         END DO 
    11181120      END IF 
    1119        
     1121 
    11201122      CALL lbc_lnk( e3u_0 , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw_0, 'U', 1._wp )   ! lateral boundary conditions 
    11211123      CALL lbc_lnk( e3v_0 , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw_0, 'V', 1._wp ) 
    11221124      ! 
     1125 
    11231126      DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    11241127         WHERE( e3u_0 (:,:,jk) == 0._wp )   e3u_0 (:,:,jk) = e3t_1d(jk) 
     
    12631266         risfdep(:,:) = 0. ; misfdep(:,:) = 1 
    12641267      END WHERE 
     1268 
     1269      ! remove very shallow ice shelf (less than ~ 10m if 75L) 
     1270      IF ( cp_cfg .NE. "isomip" ) THEN 
     1271         WHERE (misfdep(:,:) <= 10 .AND. misfdep(:,:) .GT. 1) 
     1272            misfdep = 0; risfdep = 0.0_wp; 
     1273            mbathy  = 0; bathy   = 0.0_wp; 
     1274         END WHERE 
     1275         WHERE (bathy(:,:) <= 30.0 .AND. gphit < -60) 
     1276            misfdep = 0; risfdep = 0.0_wp; 
     1277            mbathy  = 0; bathy   = 0.0_wp; 
     1278         END WHERE 
     1279      END IF 
    12651280  
    12661281! basic check for the compatibility of bathy and risfdep. I think it should be offline because it is not perfect and cannot solved all the situation 
     
    17871802               ENDIF  
    17881803            !       ... on ik / ik-1  
    1789                e3w_0  (ji,jj,ik  ) = 2._wp * (gdept_0(ji,jj,ik) - gdepw_0(ji,jj,ik))  
     1804               e3w_0  (ji,jj,ik  ) = e3t_0  (ji,jj,ik) !2._wp * (gdept_0(ji,jj,ik) - gdepw_0(ji,jj,ik))  
    17901805               e3t_0  (ji,jj,ik-1) = gdepw_0(ji,jj,ik) - gdepw_1d(ik-1) 
    17911806! The next line isn't required and doesn't affect results - included for consistency with bathymetry code  
Note: See TracChangeset for help on using the changeset viewer.